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 @@
#include "content/public/browser/user_metrics.h"
#include "url/origin.h"
#if !defined(OS_ANDROID)
#include "chrome/browser/ui/browser_finder.h"
#endif
namespace {
class CancelledRequest : public PermissionRequest {
......@@ -245,7 +241,7 @@ void PermissionRequestManager::DisplayPendingRequests() {
NOTREACHED();
return;
#else
view_ = view_factory_.Run(chrome::FindBrowserWithWebContents(web_contents()));
view_ = view_factory_.Run(web_contents());
view_->SetDelegate(this);
#endif
......
......@@ -9,6 +9,7 @@
#include "chrome/browser/ui/website_settings/permission_prompt.h"
#include "ui/base/models/simple_menu_model.h"
class Browser;
@class MenuController;
class PermissionBubbleCocoa;
class PermissionRequest;
......
......@@ -5,6 +5,7 @@
#include "base/memory/ptr_util.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_dialogs.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_window.h"
#import "chrome/browser/ui/cocoa/browser_window_controller.h"
#import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h"
......@@ -32,8 +33,11 @@ views::BubbleBorder::Arrow PermissionPromptImpl::GetAnchorArrow() {
}
// static
std::unique_ptr<PermissionPrompt> PermissionPrompt::Create(Browser* browser) {
std::unique_ptr<PermissionPrompt> PermissionPrompt::Create(
content::WebContents* web_contents) {
if (chrome::ToolkitViewsWebUIDialogsEnabled())
return base::WrapUnique(new PermissionPromptImpl(browser));
return base::MakeUnique<PermissionBubbleCocoa>(browser);
return base::WrapUnique(new PermissionPromptImpl(
chrome::FindBrowserWithWebContents(web_contents)));
return base::MakeUnique<PermissionBubbleCocoa>(
chrome::FindBrowserWithWebContents(web_contents));
}
......@@ -4,6 +4,7 @@
#include "base/memory/ptr_util.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/views/exclusive_access_bubble_views.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
......@@ -11,6 +12,7 @@
#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/website_settings/permission_prompt_impl.h"
#include "content/public/browser/web_contents.h"
#include "ui/gfx/geometry/point.h"
#include "ui/gfx/geometry/vector2d.h"
#include "ui/views/controls/image_view.h"
......@@ -51,6 +53,8 @@ views::BubbleBorder::Arrow PermissionPromptImpl::GetAnchorArrow() {
}
// static
std::unique_ptr<PermissionPrompt> PermissionPrompt::Create(Browser* browser) {
return base::WrapUnique(new PermissionPromptImpl(browser));
std::unique_ptr<PermissionPrompt> PermissionPrompt::Create(
content::WebContents* web_contents) {
return base::WrapUnique(new PermissionPromptImpl(
chrome::FindBrowserWithWebContents(web_contents)));
}
......@@ -10,6 +10,7 @@
#include "base/stl_util.h"
#include "chrome/browser/permissions/permission_request_manager.h"
#include "chrome/browser/ui/website_settings/mock_permission_prompt.h"
#include "content/public/browser/web_contents.h"
MockPermissionPromptFactory::MockPermissionPromptFactory(
PermissionRequestManager* manager)
......@@ -32,7 +33,7 @@ MockPermissionPromptFactory::~MockPermissionPromptFactory() {
}
std::unique_ptr<PermissionPrompt> MockPermissionPromptFactory::Create(
Browser* browser) {
content::WebContents* web_contents) {
MockPermissionPrompt* prompt = new MockPermissionPrompt(this, manager_);
prompt->can_update_ui_ = can_update_ui_;
return base::WrapUnique(prompt);
......@@ -74,7 +75,7 @@ void MockPermissionPromptFactory::WaitForPermissionBubble() {
// static
std::unique_ptr<PermissionPrompt> MockPermissionPromptFactory::DoNotCreate(
Browser* browser) {
content::WebContents* web_contents) {
NOTREACHED();
return base::WrapUnique(new MockPermissionPrompt(nullptr, nullptr));
}
......
......@@ -14,6 +14,10 @@ class Browser;
class MockPermissionPrompt;
class PermissionPrompt;
namespace content {
class WebContents;
}
// 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
// actual UI.
......@@ -25,7 +29,7 @@ class MockPermissionPromptFactory {
~MockPermissionPromptFactory();
// 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);
......@@ -53,7 +57,8 @@ class MockPermissionPromptFactory {
// This shouldn't be called. Is here to fail tests that try to create a bubble
// 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 ShowView(MockPermissionPrompt* view);
......
......@@ -11,10 +11,13 @@
#include "base/callback.h"
#include "ui/gfx/native_widget_types.h"
class Browser;
class PermissionRequestManager;
class PermissionRequest;
namespace content {
class WebContents;
}
// This class is the platform-independent interface through which the permission
// 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
......@@ -34,10 +37,13 @@ class PermissionPrompt {
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.
static std::unique_ptr<PermissionPrompt> Create(Browser* browser);
static std::unique_ptr<PermissionPrompt> Create(
content::WebContents* web_contents);
virtual ~PermissionPrompt() {}
// 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