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

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

Issue 365123003: Implement midi permissions on top of the new common permission classes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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/services/gcm/permission_context_base.cc b/chrome/browser/content_settings/permission_context_base.cc
similarity index 50%
rename from chrome/browser/services/gcm/permission_context_base.cc
rename to chrome/browser/content_settings/permission_context_base.cc
index f31b77681e28716977b3b129d1d5ee95021c600e..05504c5bed8cdf34c4c32442e50c0fe077303bca 100644
--- a/chrome/browser/services/gcm/permission_context_base.cc
+++ b/chrome/browser/content_settings/permission_context_base.cc
@@ -2,16 +2,16 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/services/gcm/permission_context_base.h"
+#include "chrome/browser/content_settings/permission_context_base.h"
#include "base/logging.h"
#include "base/prefs/pref_service.h"
#include "chrome/browser/content_settings/host_content_settings_map.h"
+#include "chrome/browser/content_settings/permission_bubble_request_impl.h"
#include "chrome/browser/content_settings/permission_queue_controller.h"
#include "chrome/browser/content_settings/permission_request_id.h"
#include "chrome/browser/content_settings/tab_specific_content_settings.h"
#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/services/gcm/permission_bubble_request_impl.h"
#include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
#include "chrome/common/pref_names.h"
#include "content/public/browser/browser_thread.h"
@@ -19,7 +19,6 @@
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
-namespace gcm {
PermissionContextBase::PermissionContextBase(
Profile* profile,
@@ -46,8 +45,8 @@ void PermissionContextBase::RequestPermission(
DecidePermission(web_contents,
id,
- requesting_frame,
- requesting_frame,
+ requesting_frame.GetOrigin(),
+ web_contents->GetLastCommittedURL().GetOrigin(),
user_gesture,
callback);
}
@@ -55,77 +54,81 @@ void PermissionContextBase::RequestPermission(
void PermissionContextBase::DecidePermission(
content::WebContents* web_contents,
const PermissionRequestID& id,
- const GURL& requesting_frame,
- const GURL& embedder,
+ const GURL& requesting_origin,
+ const GURL& embedder_origin,
bool user_gesture,
const BrowserPermissionCallback& callback) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
ContentSetting content_setting =
profile_->GetHostContentSettingsMap()->GetContentSetting(
- requesting_frame, embedder, permission_type_, std::string());
+ requesting_origin, embedder_origin, permission_type_, std::string());
switch (content_setting) {
case CONTENT_SETTING_BLOCK:
- PermissionDecided(id, requesting_frame, embedder, callback, false);
- break;
+ PermissionDecided(
+ id, requesting_origin, embedder_origin, callback, false);
+ return;
case CONTENT_SETTING_ALLOW:
- PermissionDecided(id, requesting_frame, embedder, callback, true);
- break;
+ PermissionDecided(id, requesting_origin, embedder_origin, callback, true);
+ return;
default:
- if (PermissionBubbleManager::Enabled()) {
- PermissionBubbleManager* bubble_manager =
- PermissionBubbleManager::FromWebContents(web_contents);
- DCHECK(bubble_manager);
- scoped_ptr<PermissionBubbleRequest> request_ptr(
- new PermissionBubbleRequestImpl(
- requesting_frame,
- user_gesture,
- permission_type_,
- profile_->GetPrefs()->GetString(prefs::kAcceptLanguages),
- base::Bind(&PermissionContextBase::NotifyPermissionSet,
- weak_factory_.GetWeakPtr(),
- id,
- requesting_frame,
- embedder,
- callback),
- base::Bind(&PermissionContextBase::CleanUpBubble,
- weak_factory_.GetWeakPtr(), id)));
- PermissionBubbleRequest* request = request_ptr.get();
-
- bool inserted = pending_bubbles_.add(
- id.ToString(), request_ptr.Pass()).second;
- DCHECK(inserted) << "Duplicate id " << id.ToString();
- bubble_manager->AddRequest(request);
- return;
- }
-
- // TODO(gbillock): Delete this and the infobar delegate when
- // we're using only bubbles. crbug.com/337458
- GetQueueController()->CreateInfoBarRequest(
- id,
- requesting_frame,
- embedder,
- std::string(),
- base::Bind(&PermissionContextBase::NotifyPermissionSet,
- weak_factory_.GetWeakPtr(),
- id,
- requesting_frame,
- embedder,
- callback,
- // the queue controller takes care of persisting the
- // permission
- false));
+ break;
}
+
+ if (PermissionBubbleManager::Enabled()) {
+ PermissionBubbleManager* bubble_manager =
+ PermissionBubbleManager::FromWebContents(web_contents);
+ DCHECK(bubble_manager);
+ scoped_ptr<PermissionBubbleRequest> request_ptr(
+ new PermissionBubbleRequestImpl(
+ requesting_origin,
+ user_gesture,
+ permission_type_,
+ profile_->GetPrefs()->GetString(prefs::kAcceptLanguages),
+ base::Bind(&PermissionContextBase::NotifyPermissionSet,
+ weak_factory_.GetWeakPtr(),
+ id,
+ requesting_origin,
+ embedder_origin,
+ callback),
+ base::Bind(&PermissionContextBase::CleanUpBubble,
+ weak_factory_.GetWeakPtr(), id)));
+ PermissionBubbleRequest* request = request_ptr.get();
+
+ bool inserted = pending_bubbles_.add(
+ id.ToString(), request_ptr.Pass()).second;
+ DCHECK(inserted) << "Duplicate id " << id.ToString();
+ bubble_manager->AddRequest(request);
+ return;
+ }
+
+ // TODO(gbillock): Delete this and the infobar delegate when
+ // we're using only bubbles. crbug.com/337458
+ GetQueueController()->CreateInfoBarRequest(
+ id,
+ requesting_origin,
+ embedder_origin,
+ std::string(),
+ base::Bind(&PermissionContextBase::NotifyPermissionSet,
+ weak_factory_.GetWeakPtr(),
+ id,
+ requesting_origin,
+ embedder_origin,
+ callback,
+ // the queue controller takes care of persisting the
+ // permission
+ false));
}
void PermissionContextBase::PermissionDecided(
const PermissionRequestID& id,
- const GURL& requesting_frame,
- const GURL& embedder,
+ const GURL& requesting_origin,
+ const GURL& embedder_origin,
const BrowserPermissionCallback& callback,
bool allowed) {
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- NotifyPermissionSet(id, requesting_frame, embedder, callback, false, allowed);
+ NotifyPermissionSet(
+ id, requesting_origin, embedder_origin, callback, false, allowed);
}
PermissionQueueController* PermissionContextBase::GetQueueController() {
@@ -134,43 +137,36 @@ PermissionQueueController* PermissionContextBase::GetQueueController() {
void PermissionContextBase::NotifyPermissionSet(
const PermissionRequestID& id,
- const GURL& requesting_frame,
- const GURL& embedder,
+ const GURL& requesting_origin,
+ const GURL& embedder_origin,
const BrowserPermissionCallback& callback,
bool persist,
bool allowed) {
- if (persist) {
- UpdateContentSetting(requesting_frame, embedder, allowed);
- }
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- UpdateTabContext(id, requesting_frame, allowed);
+ if (persist)
+ UpdateContentSetting(requesting_origin, embedder_origin, allowed);
+ UpdateTabContext(id, requesting_origin, allowed);
callback.Run(allowed);
}
void PermissionContextBase::CleanUpBubble(const PermissionRequestID& id) {
- base::ScopedPtrHashMap<std::string, PermissionBubbleRequest>::iterator it;
- it = pending_bubbles_.find(id.ToString());
- if (it != pending_bubbles_.end()) {
- pending_bubbles_.take_and_erase(it);
- return;
- }
-
- NOTREACHED() << "Missing request";
+ size_t success = pending_bubbles_.erase(id.ToString());
+ DCHECK(success == 1) << "Missing request " << id.ToString();
}
void PermissionContextBase::UpdateContentSetting(
- const GURL& requesting_frame,
- const GURL& embedder,
+ const GURL& requesting_origin,
+ const GURL& embedder_origin,
bool allowed) {
+ DCHECK_EQ(requesting_origin, requesting_origin.GetOrigin());
+ DCHECK_EQ(embedder_origin, embedder_origin.GetOrigin());
ContentSetting content_setting =
allowed ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK;
profile_->GetHostContentSettingsMap()->SetContentSetting(
- ContentSettingsPattern::FromURLNoWildcard(requesting_frame.GetOrigin()),
- ContentSettingsPattern::FromURLNoWildcard(embedder.GetOrigin()),
+ ContentSettingsPattern::FromURLNoWildcard(requesting_origin),
+ ContentSettingsPattern::FromURLNoWildcard(embedder_origin),
permission_type_,
std::string(),
content_setting);
}
-
-} // namespace gcm

Powered by Google App Engine
This is Rietveld 408576698