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

Side by Side Diff: chrome/browser/permissions/permission_context_base.cc

Issue 1422053004: permissions: remove PermissionQueueController and introduce PermissionInfoBarManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address small issues Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/permissions/permission_context_base.h" 5 #include "chrome/browser/permissions/permission_context_base.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/prefs/pref_service.h" 8 #include "base/prefs/pref_service.h"
9 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" 9 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
10 #include "chrome/browser/permissions/permission_context_uma_util.h" 10 #include "chrome/browser/permissions/permission_context_uma_util.h"
11 #include "chrome/browser/permissions/permission_request_id.h" 11 #include "chrome/browser/permissions/permission_request_id.h"
12 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
13 #include "chrome/common/pref_names.h" 13 #include "chrome/common/pref_names.h"
14 #include "components/content_settings/core/browser/host_content_settings_map.h" 14 #include "components/content_settings/core/browser/host_content_settings_map.h"
15 #include "components/content_settings/core/browser/website_settings_registry.h" 15 #include "components/content_settings/core/browser/website_settings_registry.h"
16 #include "content/public/browser/browser_thread.h" 16 #include "content/public/browser/browser_thread.h"
17 #include "content/public/browser/web_contents.h" 17 #include "content/public/browser/web_contents.h"
18 #include "content/public/common/origin_util.h" 18 #include "content/public/common/origin_util.h"
19 19
20 #if defined(OS_ANDROID) 20 #if defined(OS_ANDROID)
21 #include "chrome/browser/permissions/permission_queue_controller.h" 21 #include "chrome/browser/permissions/permission_infobar_manager.h"
22 #else 22 #else
23 #include "chrome/browser/permissions/permission_bubble_request_impl.h" 23 #include "chrome/browser/permissions/permission_bubble_request_impl.h"
24 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h" 24 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
25 #endif 25 #endif
26 26
27 PermissionContextBase::PermissionContextBase( 27 PermissionContextBase::PermissionContextBase(
28 Profile* profile, 28 Profile* profile,
29 const ContentSettingsType permission_type) 29 const ContentSettingsType permission_type)
30 : profile_(profile), 30 : profile_(profile),
31 permission_type_(permission_type), 31 permission_type_(permission_type),
32 weak_factory_(this) { 32 weak_factory_(this) {
33 #if defined(OS_ANDROID)
34 permission_queue_controller_.reset(
35 new PermissionQueueController(profile_, permission_type_));
36 #endif
37 } 33 }
38 34
39 PermissionContextBase::~PermissionContextBase() { 35 PermissionContextBase::~PermissionContextBase() {
40 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 36 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
41 } 37 }
42 38
43 void PermissionContextBase::RequestPermission( 39 void PermissionContextBase::RequestPermission(
44 content::WebContents* web_contents, 40 content::WebContents* web_contents,
45 const PermissionRequestID& id, 41 const PermissionRequestID& id,
46 const GURL& requesting_frame, 42 const GURL& requesting_frame,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 ContentSettingsPattern::FromURLNoWildcard(requesting_origin), 74 ContentSettingsPattern::FromURLNoWildcard(requesting_origin),
79 ContentSettingsPattern::FromURLNoWildcard(embedding_origin), 75 ContentSettingsPattern::FromURLNoWildcard(embedding_origin),
80 permission_type_, std::string(), CONTENT_SETTING_DEFAULT); 76 permission_type_, std::string(), CONTENT_SETTING_DEFAULT);
81 } 77 }
82 78
83 void PermissionContextBase::CancelPermissionRequest( 79 void PermissionContextBase::CancelPermissionRequest(
84 content::WebContents* web_contents, 80 content::WebContents* web_contents,
85 const PermissionRequestID& id) { 81 const PermissionRequestID& id) {
86 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 82 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
87 83
84 if (!web_contents)
85 return;
86
88 #if defined(OS_ANDROID) 87 #if defined(OS_ANDROID)
89 GetQueueController()->CancelInfoBarRequest(id); 88 if (PermissionInfoBarManager::FromWebContents(web_contents)) {
89 PermissionInfoBarManager::FromWebContents(web_contents)->
90 CancelRequest(id);
91 }
90 #else 92 #else
91 PermissionBubbleRequest* cancelling = pending_bubbles_.get(id.ToString()); 93 PermissionBubbleRequest* cancelling = pending_bubbles_.get(id.ToString());
92 if (cancelling != NULL && web_contents != NULL && 94 if (cancelling != NULL &&
93 PermissionBubbleManager::FromWebContents(web_contents) != NULL) { 95 PermissionBubbleManager::FromWebContents(web_contents) != NULL) {
94 PermissionBubbleManager::FromWebContents(web_contents) 96 PermissionBubbleManager::FromWebContents(web_contents)
95 ->CancelRequest(cancelling); 97 ->CancelRequest(cancelling);
96 } 98 }
97 #endif 99 #endif
98 } 100 }
99 101
100 void PermissionContextBase::DecidePermission( 102 void PermissionContextBase::DecidePermission(
101 content::WebContents* web_contents, 103 content::WebContents* web_contents,
102 const PermissionRequestID& id, 104 const PermissionRequestID& id,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 embedding_origin, callback), 162 embedding_origin, callback),
161 base::Bind(&PermissionContextBase::CleanUpBubble, 163 base::Bind(&PermissionContextBase::CleanUpBubble,
162 weak_factory_.GetWeakPtr(), id))); 164 weak_factory_.GetWeakPtr(), id)));
163 PermissionBubbleRequest* request = request_ptr.get(); 165 PermissionBubbleRequest* request = request_ptr.get();
164 166
165 bool inserted = 167 bool inserted =
166 pending_bubbles_.add(id.ToString(), request_ptr.Pass()).second; 168 pending_bubbles_.add(id.ToString(), request_ptr.Pass()).second;
167 DCHECK(inserted) << "Duplicate id " << id.ToString(); 169 DCHECK(inserted) << "Duplicate id " << id.ToString();
168 bubble_manager->AddRequest(request); 170 bubble_manager->AddRequest(request);
169 #else 171 #else
170 GetQueueController()->CreateInfoBarRequest( 172 PermissionInfoBarManager* infobar_manager =
171 id, requesting_origin, embedding_origin, 173 PermissionInfoBarManager::FromWebContents(web_contents);
174 DCHECK(infobar_manager);
175 infobar_manager->CreateRequest(
176 permission_type_, id,
177 requesting_origin, embedding_origin,
172 base::Bind(&PermissionContextBase::PermissionDecided, 178 base::Bind(&PermissionContextBase::PermissionDecided,
173 weak_factory_.GetWeakPtr(), id, requesting_origin, 179 weak_factory_.GetWeakPtr(), id, requesting_origin,
174 embedding_origin, callback, 180 embedding_origin, callback));
175 // the queue controller takes care of persisting the
176 // permission
177 false));
178 #endif 181 #endif
179 } 182 }
180 183
181 void PermissionContextBase::PermissionDecided( 184 void PermissionContextBase::PermissionDecided(
182 const PermissionRequestID& id, 185 const PermissionRequestID& id,
183 const GURL& requesting_origin, 186 const GURL& requesting_origin,
184 const GURL& embedding_origin, 187 const GURL& embedding_origin,
185 const BrowserPermissionCallback& callback, 188 const BrowserPermissionCallback& callback,
186 bool persist, 189 bool persist,
187 ContentSetting content_setting) { 190 ContentSetting content_setting) {
188 #if !defined(OS_ANDROID)
189 // Infobar persistence and its related UMA is tracked on the infobar
190 // controller directly.
191 if (persist) { 191 if (persist) {
192 DCHECK(content_setting == CONTENT_SETTING_ALLOW || 192 DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
193 content_setting == CONTENT_SETTING_BLOCK); 193 content_setting == CONTENT_SETTING_BLOCK);
194 if (content_setting == CONTENT_SETTING_ALLOW) 194 if (content_setting == CONTENT_SETTING_ALLOW)
195 PermissionContextUmaUtil::PermissionGranted(permission_type_, 195 PermissionContextUmaUtil::PermissionGranted(permission_type_,
196 requesting_origin); 196 requesting_origin);
197 else 197 else
198 PermissionContextUmaUtil::PermissionDenied(permission_type_, 198 PermissionContextUmaUtil::PermissionDenied(permission_type_,
199 requesting_origin); 199 requesting_origin);
200 } else { 200 } else {
201 DCHECK_EQ(content_setting, CONTENT_SETTING_DEFAULT); 201 DCHECK_EQ(content_setting, CONTENT_SETTING_DEFAULT);
202 PermissionContextUmaUtil::PermissionDismissed(permission_type_, 202 PermissionContextUmaUtil::PermissionDismissed(permission_type_,
203 requesting_origin); 203 requesting_origin);
204 } 204 }
205 #endif
206 205
207 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, 206 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
208 persist, content_setting); 207 persist, content_setting);
209 } 208 }
210 209
211 #if defined(OS_ANDROID)
212 PermissionQueueController* PermissionContextBase::GetQueueController() {
213 return permission_queue_controller_.get();
214 }
215 #endif
216
217 Profile* PermissionContextBase::profile() const { 210 Profile* PermissionContextBase::profile() const {
218 return profile_; 211 return profile_;
219 } 212 }
220 213
221 void PermissionContextBase::NotifyPermissionSet( 214 void PermissionContextBase::NotifyPermissionSet(
222 const PermissionRequestID& id, 215 const PermissionRequestID& id,
223 const GURL& requesting_origin, 216 const GURL& requesting_origin,
224 const GURL& embedding_origin, 217 const GURL& embedding_origin,
225 const BrowserPermissionCallback& callback, 218 const BrowserPermissionCallback& callback,
226 bool persist, 219 bool persist,
(...skipping 28 matching lines...) Expand all
255 DCHECK_EQ(requesting_origin, requesting_origin.GetOrigin()); 248 DCHECK_EQ(requesting_origin, requesting_origin.GetOrigin());
256 DCHECK_EQ(embedding_origin, embedding_origin.GetOrigin()); 249 DCHECK_EQ(embedding_origin, embedding_origin.GetOrigin());
257 DCHECK(content_setting == CONTENT_SETTING_ALLOW || 250 DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
258 content_setting == CONTENT_SETTING_BLOCK); 251 content_setting == CONTENT_SETTING_BLOCK);
259 252
260 HostContentSettingsMapFactory::GetForProfile(profile_)->SetContentSetting( 253 HostContentSettingsMapFactory::GetForProfile(profile_)->SetContentSetting(
261 ContentSettingsPattern::FromURLNoWildcard(requesting_origin), 254 ContentSettingsPattern::FromURLNoWildcard(requesting_origin),
262 ContentSettingsPattern::FromURLNoWildcard(embedding_origin), 255 ContentSettingsPattern::FromURLNoWildcard(embedding_origin),
263 permission_type_, std::string(), content_setting); 256 permission_type_, std::string(), content_setting);
264 } 257 }
OLDNEW
« no previous file with comments | « chrome/browser/permissions/permission_context_base.h ('k') | chrome/browser/permissions/permission_context_base_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698