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

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

Issue 459953002: Migrate geolocation permissions to the new common permission class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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/content_settings/permission_context_base.cc
diff --git a/chrome/browser/content_settings/permission_context_base.cc b/chrome/browser/content_settings/permission_context_base.cc
index b85f0a77c20f3dd2a6f8968da73dfd920c8c0f0d..f64592c45f7c3d4a0a21ebee38450434713dcaf3 100644
--- a/chrome/browser/content_settings/permission_context_base.cc
+++ b/chrome/browser/content_settings/permission_context_base.cc
@@ -23,13 +23,14 @@ PermissionContextBase::PermissionContextBase(
const ContentSettingsType permission_type)
: profile_(profile),
permission_type_(permission_type),
+ shutting_down_(false),
weak_factory_(this) {
permission_queue_controller_.reset(
new PermissionQueueController(profile_, permission_type_));
}
PermissionContextBase::~PermissionContextBase() {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
}
void PermissionContextBase::RequestPermission(
@@ -38,8 +39,10 @@ void PermissionContextBase::RequestPermission(
const GURL& requesting_frame,
bool user_gesture,
const BrowserPermissionCallback& callback) {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+ if (shutting_down_)
+ return;
DecidePermission(web_contents,
id,
requesting_frame.GetOrigin(),
@@ -48,6 +51,27 @@ void PermissionContextBase::RequestPermission(
callback);
}
+void PermissionContextBase::CancelPermissionRequest(
+ content::WebContents* web_contents,
+ const PermissionRequestID& id) {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
Bernhard Bauer 2014/08/13 21:05:08 Nit: DCHECK_CURRENTLY_ON?
+ if (shutting_down_)
+ return;
+
+ if (PermissionBubbleManager::Enabled()) {
+ PermissionBubbleRequest* cancelling =
+ pending_bubbles_.get(id.ToString());
+ if (cancelling != NULL && web_contents != NULL &&
+ PermissionBubbleManager::FromWebContents(web_contents) != NULL) {
+ PermissionBubbleManager::FromWebContents(web_contents)->
+ CancelRequest(cancelling);
+ }
+ return;
+ }
+
+ GetQueueController()->CancelInfoBarRequest(id);
+}
+
void PermissionContextBase::DecidePermission(
content::WebContents* web_contents,
const PermissionRequestID& id,
@@ -58,7 +82,8 @@ void PermissionContextBase::DecidePermission(
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
ContentSetting content_setting =
- profile_->GetHostContentSettingsMap()->GetContentSetting(
+ profile_->GetHostContentSettingsMap()
+ ->GetContentSettingAndMaybeUpdateLastUsage(
requesting_origin, embedder_origin, permission_type_, std::string());
switch (content_setting) {
case CONTENT_SETTING_BLOCK:
@@ -183,3 +208,8 @@ void PermissionContextBase::UpdateContentSetting(
std::string(),
content_setting);
}
+
+void PermissionContextBase::Shutdown() {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
+ shutting_down_ = true;
+}

Powered by Google App Engine
This is Rietveld 408576698