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

Unified Diff: chrome/browser/services/gcm/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/services/gcm/permission_context_base.cc
diff --git a/chrome/browser/services/gcm/permission_context_base.cc b/chrome/browser/services/gcm/permission_context_base.cc
deleted file mode 100644
index f31b77681e28716977b3b129d1d5ee95021c600e..0000000000000000000000000000000000000000
--- a/chrome/browser/services/gcm/permission_context_base.cc
+++ /dev/null
@@ -1,176 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// 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 "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_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"
-#include "content/public/browser/web_contents.h"
-#include "grit/generated_resources.h"
-#include "grit/theme_resources.h"
-
-namespace gcm {
-
-PermissionContextBase::PermissionContextBase(
- Profile* profile,
- const ContentSettingsType permission_type)
- : profile_(profile),
- permission_type_(permission_type),
- weak_factory_(this) {
- permission_queue_controller_.reset(
- new PermissionQueueController(profile_, permission_type_));
-}
-
-PermissionContextBase::~PermissionContextBase() {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
-}
-
-void PermissionContextBase::RequestPermission(
- content::WebContents* web_contents,
- const PermissionRequestID& id,
- const GURL& requesting_frame,
- bool user_gesture,
- const BrowserPermissionCallback& callback) {
- // TODO(miguelg): Add UMA instrumentation.
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
-
- DecidePermission(web_contents,
- id,
- requesting_frame,
- requesting_frame,
- user_gesture,
- callback);
-}
-
-void PermissionContextBase::DecidePermission(
- content::WebContents* web_contents,
- const PermissionRequestID& id,
- const GURL& requesting_frame,
- const GURL& embedder,
- 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());
- switch (content_setting) {
- case CONTENT_SETTING_BLOCK:
- PermissionDecided(id, requesting_frame, embedder, callback, false);
- break;
- case CONTENT_SETTING_ALLOW:
- PermissionDecided(id, requesting_frame, embedder, callback, true);
- break;
- 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));
- }
-}
-
-void PermissionContextBase::PermissionDecided(
- const PermissionRequestID& id,
- const GURL& requesting_frame,
- const GURL& embedder,
- const BrowserPermissionCallback& callback,
- bool allowed) {
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
- NotifyPermissionSet(id, requesting_frame, embedder, callback, false, allowed);
-}
-
-PermissionQueueController* PermissionContextBase::GetQueueController() {
- return permission_queue_controller_.get();
-}
-
-void PermissionContextBase::NotifyPermissionSet(
- const PermissionRequestID& id,
- const GURL& requesting_frame,
- const GURL& embedder,
- 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);
-
- 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";
-}
-
-void PermissionContextBase::UpdateContentSetting(
- const GURL& requesting_frame,
- const GURL& embedder,
- bool allowed) {
- ContentSetting content_setting =
- allowed ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK;
- profile_->GetHostContentSettingsMap()->SetContentSetting(
- ContentSettingsPattern::FromURLNoWildcard(requesting_frame.GetOrigin()),
- ContentSettingsPattern::FromURLNoWildcard(embedder.GetOrigin()),
- permission_type_,
- std::string(),
- content_setting);
-}
-
-} // namespace gcm
« no previous file with comments | « chrome/browser/services/gcm/permission_context_base.h ('k') | chrome/browser/services/gcm/permission_infobar_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698