Index: chrome/browser/permissions/permission_request_manager.cc |
diff --git a/chrome/browser/permissions/permission_request_manager.cc b/chrome/browser/permissions/permission_request_manager.cc |
index 40fdb5031c0ea5d498ea63f9a43a18bbf4cc2ba6..6915da32f446b54d1e3bb57792e2f6200cd505d3 100644 |
--- a/chrome/browser/permissions/permission_request_manager.cc |
+++ b/chrome/browser/permissions/permission_request_manager.cc |
@@ -7,10 +7,13 @@ |
#include <algorithm> |
#include "base/command_line.h" |
+#include "base/feature_list.h" |
#include "base/metrics/user_metrics_action.h" |
#include "build/build_config.h" |
#include "chrome/browser/permissions/permission_request.h" |
#include "chrome/browser/permissions/permission_uma_util.h" |
+#include "chrome/browser/ui/website_settings/permission_prompt.h" |
+#include "chrome/common/chrome_features.h" |
#include "chrome/common/chrome_switches.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/navigation_details.h" |
@@ -74,15 +77,12 @@ DEFINE_WEB_CONTENTS_USER_DATA_KEY(PermissionRequestManager); |
PermissionRequestManager::PermissionRequestManager( |
content::WebContents* web_contents) |
: content::WebContentsObserver(web_contents), |
-#if !defined(OS_ANDROID) // No bubbles in android tests. |
view_factory_(base::Bind(&PermissionPrompt::Create)), |
-#endif |
view_(nullptr), |
main_frame_has_fully_loaded_(false), |
persist_(true), |
auto_response_for_test_(NONE), |
- weak_factory_(this) { |
-} |
+ weak_factory_(this) {} |
PermissionRequestManager::~PermissionRequestManager() { |
if (view_ != NULL) |
@@ -114,6 +114,7 @@ void PermissionRequestManager::AddRequest(PermissionRequest* request) { |
// Don't re-add an existing request or one with a duplicate text request. |
PermissionRequest* existing_request = GetExistingRequest(request); |
+ |
if (existing_request) { |
// |request| is a duplicate. Add it to |duplicate_requests_| unless it's the |
// same object as |existing_request| or an existing duplicate. |
@@ -149,7 +150,6 @@ void PermissionRequestManager::AddRequest(PermissionRequest* request) { |
base::UserMetricsAction("PermissionBubbleIFrameRequestQueued")); |
queued_frame_requests_.push_back(request); |
} |
- |
ScheduleShowBubble(); |
} |
@@ -237,13 +237,8 @@ void PermissionRequestManager::DisplayPendingRequests() { |
if (IsBubbleVisible()) |
return; |
-#if defined(OS_ANDROID) |
- NOTREACHED(); |
- return; |
-#else |
view_ = view_factory_.Run(web_contents()); |
view_->SetDelegate(this); |
-#endif |
TriggerShowBubble(); |
} |
@@ -257,6 +252,15 @@ bool PermissionRequestManager::IsBubbleVisible() { |
return view_ && view_->IsVisible(); |
} |
+// static |
+bool PermissionRequestManager::IsEnabled() { |
+#if defined(OS_ANDROID) |
+ return base::FeatureList::IsEnabled(features::kUseGroupedPermissionInfobars); |
+#else |
+ return true; |
+#endif |
+} |
+ |
gfx::NativeWindow PermissionRequestManager::GetBubbleWindow() { |
if (view_) |
return view_->GetNativeWindow(); |