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

Side by Side Diff: chrome/browser/content_settings/permission_queue_controller.cc

Issue 955383003: ContentBrowserClient::RequestPermission replies with PermissionStatus instead of bool. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/content_settings/permission_queue_controller.h" 5 #include "chrome/browser/content_settings/permission_queue_controller.h"
6 6
7 #include "base/prefs/pref_service.h" 7 #include "base/prefs/pref_service.h"
8 #include "chrome/browser/chrome_notification_types.h" 8 #include "chrome/browser/chrome_notification_types.h"
9 #include "chrome/browser/content_settings/permission_context_uma_util.h" 9 #include "chrome/browser/content_settings/permission_context_uma_util.h"
10 #include "chrome/browser/geolocation/geolocation_infobar_delegate.h" 10 #include "chrome/browser/geolocation/geolocation_infobar_delegate.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 ~PendingInfobarRequest(); 49 ~PendingInfobarRequest();
50 50
51 bool IsForPair(const GURL& requesting_frame, 51 bool IsForPair(const GURL& requesting_frame,
52 const GURL& embedder) const; 52 const GURL& embedder) const;
53 53
54 const PermissionRequestID& id() const { return id_; } 54 const PermissionRequestID& id() const { return id_; }
55 const GURL& requesting_frame() const { return requesting_frame_; } 55 const GURL& requesting_frame() const { return requesting_frame_; }
56 bool has_infobar() const { return !!infobar_; } 56 bool has_infobar() const { return !!infobar_; }
57 infobars::InfoBar* infobar() { return infobar_; } 57 infobars::InfoBar* infobar() { return infobar_; }
58 58
59 void RunCallback(bool allowed); 59 void RunCallback(ContentSetting content_setting);
60 void CreateInfoBar(PermissionQueueController* controller, 60 void CreateInfoBar(PermissionQueueController* controller,
61 const std::string& display_languages); 61 const std::string& display_languages);
62 62
63 private: 63 private:
64 ContentSettingsType type_; 64 ContentSettingsType type_;
65 PermissionRequestID id_; 65 PermissionRequestID id_;
66 GURL requesting_frame_; 66 GURL requesting_frame_;
67 GURL embedder_; 67 GURL embedder_;
68 PermissionDecidedCallback callback_; 68 PermissionDecidedCallback callback_;
69 infobars::InfoBar* infobar_; 69 infobars::InfoBar* infobar_;
(...skipping 18 matching lines...) Expand all
88 PermissionQueueController::PendingInfobarRequest::~PendingInfobarRequest() { 88 PermissionQueueController::PendingInfobarRequest::~PendingInfobarRequest() {
89 } 89 }
90 90
91 bool PermissionQueueController::PendingInfobarRequest::IsForPair( 91 bool PermissionQueueController::PendingInfobarRequest::IsForPair(
92 const GURL& requesting_frame, 92 const GURL& requesting_frame,
93 const GURL& embedder) const { 93 const GURL& embedder) const {
94 return (requesting_frame_ == requesting_frame) && (embedder_ == embedder); 94 return (requesting_frame_ == requesting_frame) && (embedder_ == embedder);
95 } 95 }
96 96
97 void PermissionQueueController::PendingInfobarRequest::RunCallback( 97 void PermissionQueueController::PendingInfobarRequest::RunCallback(
98 bool allowed) { 98 ContentSetting content_setting) {
99 callback_.Run(allowed); 99 callback_.Run(content_setting);
100 } 100 }
101 101
102 void PermissionQueueController::PendingInfobarRequest::CreateInfoBar( 102 void PermissionQueueController::PendingInfobarRequest::CreateInfoBar(
103 PermissionQueueController* controller, 103 PermissionQueueController* controller,
104 const std::string& display_languages) { 104 const std::string& display_languages) {
105 switch (type_) { 105 switch (type_) {
106 case CONTENT_SETTINGS_TYPE_GEOLOCATION: 106 case CONTENT_SETTINGS_TYPE_GEOLOCATION:
107 infobar_ = GeolocationInfoBarDelegate::Create( 107 infobar_ = GeolocationInfoBarDelegate::Create(
108 GetInfoBarService(id_), controller, id_, requesting_frame_, 108 GetInfoBarService(id_), controller, id_, requesting_frame_,
109 display_languages); 109 display_languages);
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 // This infobar is for the same frame/embedder pair, but in a different 228 // This infobar is for the same frame/embedder pair, but in a different
229 // tab. We should remove it now that we've got an answer for it. 229 // tab. We should remove it now that we've got an answer for it.
230 infobars_to_remove.push_back(*i); 230 infobars_to_remove.push_back(*i);
231 } 231 }
232 232
233 // Remove all infobars for the same |requesting_frame| and |embedder|. 233 // Remove all infobars for the same |requesting_frame| and |embedder|.
234 for (PendingInfobarRequests::iterator i = infobars_to_remove.begin(); 234 for (PendingInfobarRequests::iterator i = infobars_to_remove.begin();
235 i != infobars_to_remove.end(); ++i) 235 i != infobars_to_remove.end(); ++i)
236 GetInfoBarService(i->id())->RemoveInfoBar(i->infobar()); 236 GetInfoBarService(i->id())->RemoveInfoBar(i->infobar());
237 237
238 // PermissionContextBase needs to know about the new ContentSetting value,
239 // CONTENT_SETTING_DEFAULT being the value for nothing happened. The callers
240 // of ::OnPermissionSet passes { true, true } for allow, { true, false } for
241 // block and { false, * } for dismissed. The tuple being
242 // { update_content_setting, allowed }.
243 ContentSetting content_setting = CONTENT_SETTING_DEFAULT;
244 if (update_content_setting) {
245 update_content_setting =
246 allowed ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK;
247 }
248
238 // Send out the permission notifications. 249 // Send out the permission notifications.
239 for (PendingInfobarRequests::iterator i = requests_to_notify.begin(); 250 for (PendingInfobarRequests::iterator i = requests_to_notify.begin();
240 i != requests_to_notify.end(); ++i) 251 i != requests_to_notify.end(); ++i)
241 i->RunCallback(allowed); 252 i->RunCallback(content_setting);
242 253
243 // Remove the pending requests in reverse order. 254 // Remove the pending requests in reverse order.
244 for (int i = pending_requests_to_remove.size() - 1; i >= 0; --i) 255 for (int i = pending_requests_to_remove.size() - 1; i >= 0; --i)
245 pending_infobar_requests_.erase(pending_requests_to_remove[i]); 256 pending_infobar_requests_.erase(pending_requests_to_remove[i]);
246 } 257 }
247 258
248 void PermissionQueueController::Observe( 259 void PermissionQueueController::Observe(
249 int type, 260 int type,
250 const content::NotificationSource& source, 261 const content::NotificationSource& source,
251 const content::NotificationDetails& details) { 262 const content::NotificationDetails& details) {
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 ContentSettingsPattern::Wildcard() : 380 ContentSettingsPattern::Wildcard() :
370 ContentSettingsPattern::FromURLNoWildcard(embedder.GetOrigin()); 381 ContentSettingsPattern::FromURLNoWildcard(embedder.GetOrigin());
371 382
372 profile_->GetHostContentSettingsMap()->SetContentSetting( 383 profile_->GetHostContentSettingsMap()->SetContentSetting(
373 ContentSettingsPattern::FromURLNoWildcard(requesting_frame.GetOrigin()), 384 ContentSettingsPattern::FromURLNoWildcard(requesting_frame.GetOrigin()),
374 embedder_pattern, 385 embedder_pattern,
375 type_, 386 type_,
376 std::string(), 387 std::string(),
377 content_setting); 388 content_setting);
378 } 389 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698