Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3217)

Unified Diff: chrome/browser/permissions/permission_context_base.cc

Issue 1337903002: permissions: remove PermissionQueueController and introduce PermissionInfoBarManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@callbacks-delegates
Patch Set: Rewrite to allowing infobar queuing and non-prompting of allowed/denied permisisons Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/permissions/permission_context_base.cc
diff --git a/chrome/browser/permissions/permission_context_base.cc b/chrome/browser/permissions/permission_context_base.cc
index 09747e13bd128d2df5072d8715a747d7e10eb8de..fbd4cf42f7a94e801c283e55e752a6d4b1b17cab 100644
--- a/chrome/browser/permissions/permission_context_base.cc
+++ b/chrome/browser/permissions/permission_context_base.cc
@@ -8,7 +8,7 @@
#include "base/prefs/pref_service.h"
#include "chrome/browser/permissions/permission_bubble_request_impl.h"
#include "chrome/browser/permissions/permission_context_uma_util.h"
-#include "chrome/browser/permissions/permission_queue_controller.h"
+#include "chrome/browser/permissions/permission_infobar_manager.h"
#include "chrome/browser/permissions/permission_request_id.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
@@ -25,8 +25,6 @@ PermissionContextBase::PermissionContextBase(
: profile_(profile),
permission_type_(permission_type),
weak_factory_(this) {
- permission_queue_controller_.reset(
- new PermissionQueueController(profile_, permission_type_));
}
PermissionContextBase::~PermissionContextBase() {
@@ -75,10 +73,13 @@ void PermissionContextBase::CancelPermissionRequest(
const PermissionRequestID& id) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ if (web_contents == nullptr)
mlamouri (slow - plz ping) 2015/09/16 16:21:00 style: this isn't Java :) you can do if (!web_cont
Lalit Maganti 2015/09/16 17:28:37 Yeah my life has too much Java :P Done.
+ return;
+
if (PermissionBubbleManager::Enabled()) {
PermissionBubbleRequest* cancelling =
pending_bubbles_.get(id.ToString());
- if (cancelling != NULL && web_contents != NULL &&
+ if (cancelling != NULL &&
PermissionBubbleManager::FromWebContents(web_contents) != NULL) {
PermissionBubbleManager::FromWebContents(web_contents)->
CancelRequest(cancelling);
@@ -86,7 +87,10 @@ void PermissionContextBase::CancelPermissionRequest(
return;
}
- GetQueueController()->CancelInfoBarRequest(id);
+ if (PermissionInfoBarManager::FromWebContents(web_contents) != NULL) {
+ PermissionInfoBarManager::FromWebContents(web_contents)->
+ CancelInfoBarRequest(id);
+ }
}
void PermissionContextBase::DecidePermission(
@@ -158,16 +162,18 @@ void PermissionContextBase::DecidePermission(
return;
}
- // TODO(gbillock): Delete this and the infobar delegate when
- // we're using only bubbles. crbug.com/337458
- GetQueueController()->CreateInfoBarRequest(
- id, requesting_origin, embedding_origin,
+ PermissionInfoBarManager* infobar_manager =
+ PermissionInfoBarManager::FromWebContents(web_contents);
+ DCHECK(infobar_manager);
+ infobar_manager->CreateInfoBarRequest(
+ permission_type_, id,
+ requesting_origin, embedding_origin,
base::Bind(&PermissionContextBase::PermissionDecided,
weak_factory_.GetWeakPtr(), id, requesting_origin,
- embedding_origin, callback,
- // the queue controller takes care of persisting the
- // permission
- false));
+ embedding_origin, callback),
+ base::Bind(&PermissionContextBase::NotifyPermissionSet,
+ weak_factory_.GetWeakPtr(), id, requesting_origin,
+ embedding_origin, callback));
}
void PermissionContextBase::PermissionDecided(
@@ -177,33 +183,25 @@ void PermissionContextBase::PermissionDecided(
const BrowserPermissionCallback& callback,
bool persist,
ContentSetting content_setting) {
- // Infobar persistance and its related UMA is tracked on the infobar
- // controller directly.
- if (PermissionBubbleManager::Enabled()) {
- if (persist) {
- DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
- content_setting == CONTENT_SETTING_BLOCK);
- if (content_setting == CONTENT_SETTING_ALLOW)
- PermissionContextUmaUtil::PermissionGranted(permission_type_,
- requesting_origin);
- else
- PermissionContextUmaUtil::PermissionDenied(permission_type_,
- requesting_origin);
- } else {
- DCHECK_EQ(content_setting, CONTENT_SETTING_DEFAULT);
- PermissionContextUmaUtil::PermissionDismissed(permission_type_,
- requesting_origin);
- }
+ if (persist) {
+ DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
+ content_setting == CONTENT_SETTING_BLOCK);
+ if (content_setting == CONTENT_SETTING_ALLOW)
+ PermissionContextUmaUtil::PermissionGranted(permission_type_,
+ requesting_origin);
+ else
+ PermissionContextUmaUtil::PermissionDenied(permission_type_,
+ requesting_origin);
+ } else {
+ DCHECK_EQ(content_setting, CONTENT_SETTING_DEFAULT);
+ PermissionContextUmaUtil::PermissionDismissed(permission_type_,
+ requesting_origin);
}
NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
persist, content_setting);
}
-PermissionQueueController* PermissionContextBase::GetQueueController() {
- return permission_queue_controller_.get();
-}
-
Profile* PermissionContextBase::profile() const {
return profile_;
}

Powered by Google App Engine
This is Rietveld 408576698