Commit 1dab5af6 authored by lshang's avatar lshang Committed by Commit bot

Use WebContents instead of Browser to construct PermissionPrompt

Currently we use PermissionRequestManager and PermissionPrompt to manage
permission requests on desktop, and PermissionPrompt is constructed using
Browser.

Since now we are going to reuse PermissionPrompt on Android, and Browser
is not for Android, so change to use WebContents for constructor instead.

BUG=606138

Review-Url: https://codereview.chromium.org/2335623002
Cr-Commit-Position: refs/heads/master@{#419634}
parent 9edf1600
...@@ -17,10 +17,6 @@ ...@@ -17,10 +17,6 @@
#include "content/public/browser/user_metrics.h" #include "content/public/browser/user_metrics.h"
#include "url/origin.h" #include "url/origin.h"
#if !defined(OS_ANDROID)
#include "chrome/browser/ui/browser_finder.h"
#endif
namespace { namespace {
class CancelledRequest : public PermissionRequest { class CancelledRequest : public PermissionRequest {
...@@ -245,7 +241,7 @@ void PermissionRequestManager::DisplayPendingRequests() { ...@@ -245,7 +241,7 @@ void PermissionRequestManager::DisplayPendingRequests() {
NOTREACHED(); NOTREACHED();
return; return;
#else #else
view_ = view_factory_.Run(chrome::FindBrowserWithWebContents(web_contents())); view_ = view_factory_.Run(web_contents());
view_->SetDelegate(this); view_->SetDelegate(this);
#endif #endif
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "chrome/browser/ui/website_settings/permission_prompt.h" #include "chrome/browser/ui/website_settings/permission_prompt.h"
#include "ui/base/models/simple_menu_model.h" #include "ui/base/models/simple_menu_model.h"
class Browser;
@class MenuController; @class MenuController;
class PermissionBubbleCocoa; class PermissionBubbleCocoa;
class PermissionRequest; class PermissionRequest;
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "base/memory/ptr_util.h" #include "base/memory/ptr_util.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_dialogs.h" #include "chrome/browser/ui/browser_dialogs.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/browser_window.h"
#import "chrome/browser/ui/cocoa/browser_window_controller.h" #import "chrome/browser/ui/cocoa/browser_window_controller.h"
#import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h" #import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h"
...@@ -32,8 +33,11 @@ views::BubbleBorder::Arrow PermissionPromptImpl::GetAnchorArrow() { ...@@ -32,8 +33,11 @@ views::BubbleBorder::Arrow PermissionPromptImpl::GetAnchorArrow() {
} }
// static // static
std::unique_ptr<PermissionPrompt> PermissionPrompt::Create(Browser* browser) { std::unique_ptr<PermissionPrompt> PermissionPrompt::Create(
content::WebContents* web_contents) {
if (chrome::ToolkitViewsWebUIDialogsEnabled()) if (chrome::ToolkitViewsWebUIDialogsEnabled())
return base::WrapUnique(new PermissionPromptImpl(browser)); return base::WrapUnique(new PermissionPromptImpl(
return base::MakeUnique<PermissionBubbleCocoa>(browser); chrome::FindBrowserWithWebContents(web_contents)));
return base::MakeUnique<PermissionBubbleCocoa>(
chrome::FindBrowserWithWebContents(web_contents));
} }
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include "base/memory/ptr_util.h" #include "base/memory/ptr_util.h"
#include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/views/exclusive_access_bubble_views.h" #include "chrome/browser/ui/views/exclusive_access_bubble_views.h"
#include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/frame/browser_view.h"
...@@ -11,6 +12,7 @@ ...@@ -11,6 +12,7 @@
#include "chrome/browser/ui/views/location_bar/location_bar_view.h" #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
#include "chrome/browser/ui/views/location_bar/location_icon_view.h" #include "chrome/browser/ui/views/location_bar/location_icon_view.h"
#include "chrome/browser/ui/views/website_settings/permission_prompt_impl.h" #include "chrome/browser/ui/views/website_settings/permission_prompt_impl.h"
#include "content/public/browser/web_contents.h"
#include "ui/gfx/geometry/point.h" #include "ui/gfx/geometry/point.h"
#include "ui/gfx/geometry/vector2d.h" #include "ui/gfx/geometry/vector2d.h"
#include "ui/views/controls/image_view.h" #include "ui/views/controls/image_view.h"
...@@ -51,6 +53,8 @@ views::BubbleBorder::Arrow PermissionPromptImpl::GetAnchorArrow() { ...@@ -51,6 +53,8 @@ views::BubbleBorder::Arrow PermissionPromptImpl::GetAnchorArrow() {
} }
// static // static
std::unique_ptr<PermissionPrompt> PermissionPrompt::Create(Browser* browser) { std::unique_ptr<PermissionPrompt> PermissionPrompt::Create(
return base::WrapUnique(new PermissionPromptImpl(browser)); content::WebContents* web_contents) {
return base::WrapUnique(new PermissionPromptImpl(
chrome::FindBrowserWithWebContents(web_contents)));
} }
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "base/stl_util.h" #include "base/stl_util.h"
#include "chrome/browser/permissions/permission_request_manager.h" #include "chrome/browser/permissions/permission_request_manager.h"
#include "chrome/browser/ui/website_settings/mock_permission_prompt.h" #include "chrome/browser/ui/website_settings/mock_permission_prompt.h"
#include "content/public/browser/web_contents.h"
MockPermissionPromptFactory::MockPermissionPromptFactory( MockPermissionPromptFactory::MockPermissionPromptFactory(
PermissionRequestManager* manager) PermissionRequestManager* manager)
...@@ -32,7 +33,7 @@ MockPermissionPromptFactory::~MockPermissionPromptFactory() { ...@@ -32,7 +33,7 @@ MockPermissionPromptFactory::~MockPermissionPromptFactory() {
} }
std::unique_ptr<PermissionPrompt> MockPermissionPromptFactory::Create( std::unique_ptr<PermissionPrompt> MockPermissionPromptFactory::Create(
Browser* browser) { content::WebContents* web_contents) {
MockPermissionPrompt* prompt = new MockPermissionPrompt(this, manager_); MockPermissionPrompt* prompt = new MockPermissionPrompt(this, manager_);
prompt->can_update_ui_ = can_update_ui_; prompt->can_update_ui_ = can_update_ui_;
return base::WrapUnique(prompt); return base::WrapUnique(prompt);
...@@ -74,7 +75,7 @@ void MockPermissionPromptFactory::WaitForPermissionBubble() { ...@@ -74,7 +75,7 @@ void MockPermissionPromptFactory::WaitForPermissionBubble() {
// static // static
std::unique_ptr<PermissionPrompt> MockPermissionPromptFactory::DoNotCreate( std::unique_ptr<PermissionPrompt> MockPermissionPromptFactory::DoNotCreate(
Browser* browser) { content::WebContents* web_contents) {
NOTREACHED(); NOTREACHED();
return base::WrapUnique(new MockPermissionPrompt(nullptr, nullptr)); return base::WrapUnique(new MockPermissionPrompt(nullptr, nullptr));
} }
......
...@@ -14,6 +14,10 @@ class Browser; ...@@ -14,6 +14,10 @@ class Browser;
class MockPermissionPrompt; class MockPermissionPrompt;
class PermissionPrompt; class PermissionPrompt;
namespace content {
class WebContents;
}
// Provides a skeleton class for both unit and browser testing when trying to // Provides a skeleton class for both unit and browser testing when trying to
// test the bubble manager logic. Should not be used for anything that requires // test the bubble manager logic. Should not be used for anything that requires
// actual UI. // actual UI.
...@@ -25,7 +29,7 @@ class MockPermissionPromptFactory { ...@@ -25,7 +29,7 @@ class MockPermissionPromptFactory {
~MockPermissionPromptFactory(); ~MockPermissionPromptFactory();
// Create method called by the PBM to show a bubble. // Create method called by the PBM to show a bubble.
std::unique_ptr<PermissionPrompt> Create(Browser* browser); std::unique_ptr<PermissionPrompt> Create(content::WebContents* web_contents);
void SetCanUpdateUi(bool can_update_ui); void SetCanUpdateUi(bool can_update_ui);
...@@ -53,7 +57,8 @@ class MockPermissionPromptFactory { ...@@ -53,7 +57,8 @@ class MockPermissionPromptFactory {
// This shouldn't be called. Is here to fail tests that try to create a bubble // This shouldn't be called. Is here to fail tests that try to create a bubble
// after the factory has been destroyed. // after the factory has been destroyed.
static std::unique_ptr<PermissionPrompt> DoNotCreate(Browser* browser); static std::unique_ptr<PermissionPrompt> DoNotCreate(
content::WebContents* web_contents);
void UpdateResponseType(); void UpdateResponseType();
void ShowView(MockPermissionPrompt* view); void ShowView(MockPermissionPrompt* view);
......
...@@ -11,10 +11,13 @@ ...@@ -11,10 +11,13 @@
#include "base/callback.h" #include "base/callback.h"
#include "ui/gfx/native_widget_types.h" #include "ui/gfx/native_widget_types.h"
class Browser;
class PermissionRequestManager; class PermissionRequestManager;
class PermissionRequest; class PermissionRequest;
namespace content {
class WebContents;
}
// This class is the platform-independent interface through which the permission // This class is the platform-independent interface through which the permission
// request managers (which are one per tab) communicate to the UI surface. // request managers (which are one per tab) communicate to the UI surface.
// When the visible tab changes, the UI code must provide an object of this type // When the visible tab changes, the UI code must provide an object of this type
...@@ -34,10 +37,13 @@ class PermissionPrompt { ...@@ -34,10 +37,13 @@ class PermissionPrompt {
virtual void Closing() = 0; virtual void Closing() = 0;
}; };
typedef base::Callback<std::unique_ptr<PermissionPrompt>(Browser*)> Factory; typedef base::Callback<std::unique_ptr<PermissionPrompt>(
content::WebContents*)>
Factory;
// Create a platform specific instance. // Create a platform specific instance.
static std::unique_ptr<PermissionPrompt> Create(Browser* browser); static std::unique_ptr<PermissionPrompt> Create(
content::WebContents* web_contents);
virtual ~PermissionPrompt() {} virtual ~PermissionPrompt() {}
// Sets the delegate which will receive UI events forwarded from the prompt. // Sets the delegate which will receive UI events forwarded from the prompt.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment