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

Side by Side Diff: chrome/browser/notifications/desktop_notification_service.cc

Issue 376253005: Migrate the notification permission to the new common permission classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/notifications/desktop_notification_service.h" 5 #include "chrome/browser/notifications/desktop_notification_service.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/metrics/histogram.h" 8 #include "base/metrics/histogram.h"
9 #include "base/prefs/scoped_user_pref_update.h" 9 #include "base/prefs/scoped_user_pref_update.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
11 #include "base/threading/thread.h" 11 #include "base/threading/thread.h"
12 #include "chrome/browser/browser_process.h" 12 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/chrome_notification_types.h" 13 #include "chrome/browser/chrome_notification_types.h"
14 #include "chrome/browser/content_settings/content_settings_details.h" 14 #include "chrome/browser/content_settings/content_settings_details.h"
15 #include "chrome/browser/content_settings/content_settings_provider.h" 15 #include "chrome/browser/content_settings/content_settings_provider.h"
16 #include "chrome/browser/content_settings/host_content_settings_map.h" 16 #include "chrome/browser/notifications/desktop_notification_profile_util.h"
17 #include "chrome/browser/infobars/infobar_service.h"
18 #include "chrome/browser/notifications/desktop_notification_service_factory.h" 17 #include "chrome/browser/notifications/desktop_notification_service_factory.h"
19 #include "chrome/browser/notifications/notification.h" 18 #include "chrome/browser/notifications/notification.h"
20 #include "chrome/browser/notifications/notification_object_proxy.h" 19 #include "chrome/browser/notifications/notification_object_proxy.h"
21 #include "chrome/browser/notifications/notification_ui_manager.h" 20 #include "chrome/browser/notifications/notification_ui_manager.h"
22 #include "chrome/browser/notifications/sync_notifier/chrome_notifier_service.h" 21 #include "chrome/browser/notifications/sync_notifier/chrome_notifier_service.h"
23 #include "chrome/browser/notifications/sync_notifier/chrome_notifier_service_fac tory.h" 22 #include "chrome/browser/notifications/sync_notifier/chrome_notifier_service_fac tory.h"
24 #include "chrome/browser/profiles/profile.h" 23 #include "chrome/browser/profiles/profile.h"
25 #include "chrome/browser/ui/browser.h" 24 #include "chrome/browser/ui/browser.h"
26 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
27 #include "chrome/browser/ui/website_settings/permission_bubble_request.h"
28 #include "chrome/common/content_settings.h"
29 #include "chrome/common/content_settings_pattern.h"
30 #include "chrome/common/pref_names.h" 25 #include "chrome/common/pref_names.h"
31 #include "chrome/common/url_constants.h" 26 #include "chrome/common/url_constants.h"
32 #include "components/infobars/core/confirm_infobar_delegate.h"
33 #include "components/infobars/core/infobar.h"
34 #include "components/pref_registry/pref_registry_syncable.h" 27 #include "components/pref_registry/pref_registry_syncable.h"
35 #include "content/public/browser/browser_thread.h" 28 #include "content/public/browser/browser_thread.h"
36 #include "content/public/browser/notification_service.h" 29 #include "content/public/browser/notification_service.h"
37 #include "content/public/browser/render_frame_host.h" 30 #include "content/public/browser/render_frame_host.h"
38 #include "content/public/browser/render_process_host.h" 31 #include "content/public/browser/render_process_host.h"
39 #include "content/public/browser/render_view_host.h" 32 #include "content/public/browser/render_view_host.h"
40 #include "content/public/browser/web_contents.h" 33 #include "content/public/browser/web_contents.h"
41 #include "content/public/common/show_desktop_notification_params.h" 34 #include "content/public/common/show_desktop_notification_params.h"
42 #include "grit/browser_resources.h" 35 #include "grit/browser_resources.h"
43 #include "grit/chromium_strings.h" 36 #include "grit/chromium_strings.h"
(...skipping 21 matching lines...) Expand all
65 using blink::WebTextDirection; 58 using blink::WebTextDirection;
66 using content::BrowserThread; 59 using content::BrowserThread;
67 using content::RenderViewHost; 60 using content::RenderViewHost;
68 using content::WebContents; 61 using content::WebContents;
69 using message_center::NotifierId; 62 using message_center::NotifierId;
70 63
71 namespace { 64 namespace {
72 65
73 const char kChromeNowExtensionID[] = "pafkbggdmjlpgkdkcbjmhmfcdpncadgh"; 66 const char kChromeNowExtensionID[] = "pafkbggdmjlpgkdkcbjmhmfcdpncadgh";
74 67
75 // NotificationPermissionRequest ---------------------------------------
76
77 class NotificationPermissionRequest : public PermissionBubbleRequest {
78 public:
79 NotificationPermissionRequest(
80 DesktopNotificationService* notification_service,
81 const GURL& origin,
82 base::string16 display_name,
83 const base::Closure& callback);
84 virtual ~NotificationPermissionRequest();
85
86 // PermissionBubbleDelegate:
87 virtual int GetIconID() const OVERRIDE;
88 virtual base::string16 GetMessageText() const OVERRIDE;
89 virtual base::string16 GetMessageTextFragment() const OVERRIDE;
90 virtual bool HasUserGesture() const OVERRIDE;
91 virtual GURL GetRequestingHostname() const OVERRIDE;
92 virtual void PermissionGranted() OVERRIDE;
93 virtual void PermissionDenied() OVERRIDE;
94 virtual void Cancelled() OVERRIDE;
95 virtual void RequestFinished() OVERRIDE;
96
97 private:
98 // The notification service to be used.
99 DesktopNotificationService* notification_service_;
100
101 // The origin we are asking for permissions on.
102 GURL origin_;
103
104 // The display name for the origin to be displayed. Will be different from
105 // origin_ for extensions.
106 base::string16 display_name_;
107
108 // The callback information that tells us how to respond to javascript.
109 base::Closure callback_;
110
111 // Whether the user clicked one of the buttons.
112 bool action_taken_;
113
114 DISALLOW_COPY_AND_ASSIGN(NotificationPermissionRequest);
115 };
116
117 NotificationPermissionRequest::NotificationPermissionRequest(
118 DesktopNotificationService* notification_service,
119 const GURL& origin,
120 base::string16 display_name,
121 const base::Closure& callback)
122 : notification_service_(notification_service),
123 origin_(origin),
124 display_name_(display_name),
125 callback_(callback),
126 action_taken_(false) {}
127
128 NotificationPermissionRequest::~NotificationPermissionRequest() {}
129
130 int NotificationPermissionRequest::GetIconID() const {
131 return IDR_INFOBAR_DESKTOP_NOTIFICATIONS;
132 }
133
134 base::string16 NotificationPermissionRequest::GetMessageText() const {
135 return l10n_util::GetStringFUTF16(IDS_NOTIFICATION_PERMISSIONS,
136 display_name_);
137 }
138
139 base::string16
140 NotificationPermissionRequest::GetMessageTextFragment() const {
141 return l10n_util::GetStringUTF16(IDS_NOTIFICATION_PERMISSIONS_FRAGMENT);
142 }
143
144 bool NotificationPermissionRequest::HasUserGesture() const {
145 // Currently notification permission requests are only issued on
146 // user gesture.
147 return true;
148 }
149
150 GURL NotificationPermissionRequest::GetRequestingHostname() const {
151 return origin_;
152 }
153
154 void NotificationPermissionRequest::PermissionGranted() {
155 action_taken_ = true;
156 UMA_HISTOGRAM_COUNTS("NotificationPermissionRequest.Allowed", 1);
157 notification_service_->GrantPermission(origin_);
158 }
159
160 void NotificationPermissionRequest::PermissionDenied() {
161 action_taken_ = true;
162 UMA_HISTOGRAM_COUNTS("NotificationPermissionRequest.Denied", 1);
163 notification_service_->DenyPermission(origin_);
164 }
165
166 void NotificationPermissionRequest::Cancelled() {
167 }
168
169 void NotificationPermissionRequest::RequestFinished() {
170 if (!action_taken_)
171 UMA_HISTOGRAM_COUNTS("NotificationPermissionRequest.Ignored", 1);
172
173 callback_.Run();
174
175 delete this;
176 }
177
178
179 // NotificationPermissionInfoBarDelegate --------------------------------------
180
181 // The delegate for the infobar shown when an origin requests notification
182 // permissions.
183 class NotificationPermissionInfoBarDelegate : public ConfirmInfoBarDelegate {
184 public:
185 // Creates a notification permission infobar and delegate and adds the infobar
186 // to |infobar_service|.
187 static void Create(InfoBarService* infobar_service,
188 DesktopNotificationService* notification_service,
189 const GURL& origin,
190 const base::string16& display_name,
191 const base::Closure& callback);
192
193 private:
194 NotificationPermissionInfoBarDelegate(
195 DesktopNotificationService* notification_service,
196 const GURL& origin,
197 const base::string16& display_name,
198 const base::Closure& callback);
199 virtual ~NotificationPermissionInfoBarDelegate();
200
201 // ConfirmInfoBarDelegate:
202 virtual int GetIconID() const OVERRIDE;
203 virtual Type GetInfoBarType() const OVERRIDE;
204 virtual base::string16 GetMessageText() const OVERRIDE;
205 virtual base::string16 GetButtonLabel(InfoBarButton button) const OVERRIDE;
206 virtual bool Accept() OVERRIDE;
207 virtual bool Cancel() OVERRIDE;
208
209 // The origin we are asking for permissions on.
210 GURL origin_;
211
212 // The display name for the origin to be displayed. Will be different from
213 // origin_ for extensions.
214 base::string16 display_name_;
215
216 // The notification service to be used.
217 DesktopNotificationService* notification_service_;
218
219 // The callback information that tells us how to respond to javascript.
220 base::Closure callback_;
221
222 // Whether the user clicked one of the buttons.
223 bool action_taken_;
224
225 DISALLOW_COPY_AND_ASSIGN(NotificationPermissionInfoBarDelegate);
226 };
227
228 // static
229 void NotificationPermissionInfoBarDelegate::Create(
230 InfoBarService* infobar_service,
231 DesktopNotificationService* notification_service,
232 const GURL& origin,
233 const base::string16& display_name,
234 const base::Closure& callback) {
235 infobar_service->AddInfoBar(ConfirmInfoBarDelegate::CreateInfoBar(
236 scoped_ptr<ConfirmInfoBarDelegate>(
237 new NotificationPermissionInfoBarDelegate(
238 notification_service, origin, display_name, callback))));
239 }
240
241 NotificationPermissionInfoBarDelegate::NotificationPermissionInfoBarDelegate(
242 DesktopNotificationService* notification_service,
243 const GURL& origin,
244 const base::string16& display_name,
245 const base::Closure& callback)
246 : ConfirmInfoBarDelegate(),
247 origin_(origin),
248 display_name_(display_name),
249 notification_service_(notification_service),
250 callback_(callback),
251 action_taken_(false) {
252 }
253
254 NotificationPermissionInfoBarDelegate::
255 ~NotificationPermissionInfoBarDelegate() {
256 if (!action_taken_)
257 UMA_HISTOGRAM_COUNTS("NotificationPermissionRequest.Ignored", 1);
258
259 callback_.Run();
260 }
261
262 int NotificationPermissionInfoBarDelegate::GetIconID() const {
263 return IDR_INFOBAR_DESKTOP_NOTIFICATIONS;
264 }
265
266 infobars::InfoBarDelegate::Type
267 NotificationPermissionInfoBarDelegate::GetInfoBarType() const {
268 return PAGE_ACTION_TYPE;
269 }
270
271 base::string16 NotificationPermissionInfoBarDelegate::GetMessageText() const {
272 return l10n_util::GetStringFUTF16(IDS_NOTIFICATION_PERMISSIONS,
273 display_name_);
274 }
275
276 base::string16 NotificationPermissionInfoBarDelegate::GetButtonLabel(
277 InfoBarButton button) const {
278 return l10n_util::GetStringUTF16((button == BUTTON_OK) ?
279 IDS_NOTIFICATION_PERMISSION_YES : IDS_NOTIFICATION_PERMISSION_NO);
280 }
281
282 bool NotificationPermissionInfoBarDelegate::Accept() {
283 UMA_HISTOGRAM_COUNTS("NotificationPermissionRequest.Allowed", 1);
284 notification_service_->GrantPermission(origin_);
285 action_taken_ = true;
286 return true;
287 }
288
289 bool NotificationPermissionInfoBarDelegate::Cancel() {
290 UMA_HISTOGRAM_COUNTS("NotificationPermissionRequest.Denied", 1);
291 notification_service_->DenyPermission(origin_);
292 action_taken_ = true;
293 return true;
294 }
295
296 void CancelNotification(const std::string& id) { 68 void CancelNotification(const std::string& id) {
297 g_browser_process->notification_ui_manager()->CancelById(id); 69 g_browser_process->notification_ui_manager()->CancelById(id);
298 } 70 }
299 71
300 } // namespace 72 } // namespace
301 73
302 74
303 // DesktopNotificationService ------------------------------------------------- 75 // DesktopNotificationService -------------------------------------------------
304 76
305 // static 77 // static
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 Notification notification(origin_url, icon, title, message, 152 Notification notification(origin_url, icon, title, message,
381 blink::WebTextDirectionDefault, 153 blink::WebTextDirectionDefault,
382 base::string16(), replace_id, delegate); 154 base::string16(), replace_id, delegate);
383 g_browser_process->notification_ui_manager()->Add(notification, profile); 155 g_browser_process->notification_ui_manager()->Add(notification, profile);
384 return notification.delegate_id(); 156 return notification.delegate_id();
385 } 157 }
386 158
387 DesktopNotificationService::DesktopNotificationService( 159 DesktopNotificationService::DesktopNotificationService(
388 Profile* profile, 160 Profile* profile,
389 NotificationUIManager* ui_manager) 161 NotificationUIManager* ui_manager)
390 : profile_(profile), 162 : PermissionContextBase(profile, CONTENT_SETTINGS_TYPE_NOTIFICATIONS),
163 profile_(profile),
391 ui_manager_(ui_manager), 164 ui_manager_(ui_manager),
392 extension_registry_observer_(this) { 165 extension_registry_observer_(this) {
393 OnStringListPrefChanged( 166 OnStringListPrefChanged(
394 prefs::kMessageCenterDisabledExtensionIds, &disabled_extension_ids_); 167 prefs::kMessageCenterDisabledExtensionIds, &disabled_extension_ids_);
395 OnStringListPrefChanged( 168 OnStringListPrefChanged(
396 prefs::kMessageCenterDisabledSystemComponentIds, 169 prefs::kMessageCenterDisabledSystemComponentIds,
397 &disabled_system_component_ids_); 170 &disabled_system_component_ids_);
398 disabled_extension_id_pref_.Init( 171 disabled_extension_id_pref_.Init(
399 prefs::kMessageCenterDisabledExtensionIds, 172 prefs::kMessageCenterDisabledExtensionIds,
400 profile_->GetPrefs(), 173 profile_->GetPrefs(),
(...skipping 10 matching lines...) Expand all
411 base::Unretained(this), 184 base::Unretained(this),
412 base::Unretained(prefs::kMessageCenterDisabledSystemComponentIds), 185 base::Unretained(prefs::kMessageCenterDisabledSystemComponentIds),
413 base::Unretained(&disabled_system_component_ids_))); 186 base::Unretained(&disabled_system_component_ids_)));
414 extension_registry_observer_.Add( 187 extension_registry_observer_.Add(
415 extensions::ExtensionRegistry::Get(profile_)); 188 extensions::ExtensionRegistry::Get(profile_));
416 } 189 }
417 190
418 DesktopNotificationService::~DesktopNotificationService() { 191 DesktopNotificationService::~DesktopNotificationService() {
419 } 192 }
420 193
421 void DesktopNotificationService::GrantPermission(const GURL& origin) {
422 ContentSettingsPattern primary_pattern =
423 ContentSettingsPattern::FromURLNoWildcard(origin);
424 profile_->GetHostContentSettingsMap()->SetContentSetting(
425 primary_pattern,
426 ContentSettingsPattern::Wildcard(),
427 CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
428 NO_RESOURCE_IDENTIFIER,
429 CONTENT_SETTING_ALLOW);
430 }
431
432 void DesktopNotificationService::DenyPermission(const GURL& origin) {
433 ContentSettingsPattern primary_pattern =
434 ContentSettingsPattern::FromURLNoWildcard(origin);
435 profile_->GetHostContentSettingsMap()->SetContentSetting(
436 primary_pattern,
437 ContentSettingsPattern::Wildcard(),
438 CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
439 NO_RESOURCE_IDENTIFIER,
440 CONTENT_SETTING_BLOCK);
441 }
442
443 ContentSetting DesktopNotificationService::GetDefaultContentSetting(
444 std::string* provider_id) {
445 return profile_->GetHostContentSettingsMap()->GetDefaultContentSetting(
446 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, provider_id);
447 }
448
449 void DesktopNotificationService::SetDefaultContentSetting(
450 ContentSetting setting) {
451 profile_->GetHostContentSettingsMap()->SetDefaultContentSetting(
452 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, setting);
453 }
454
455 void DesktopNotificationService::ResetToDefaultContentSetting() {
456 profile_->GetHostContentSettingsMap()->SetDefaultContentSetting(
457 CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_DEFAULT);
458 }
459
460 void DesktopNotificationService::GetNotificationsSettings(
461 ContentSettingsForOneType* settings) {
462 profile_->GetHostContentSettingsMap()->GetSettingsForOneType(
463 CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
464 NO_RESOURCE_IDENTIFIER,
465 settings);
466 }
467
468 void DesktopNotificationService::ClearSetting(
469 const ContentSettingsPattern& pattern) {
470 profile_->GetHostContentSettingsMap()->SetContentSetting(
471 pattern,
472 ContentSettingsPattern::Wildcard(),
473 CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
474 NO_RESOURCE_IDENTIFIER,
475 CONTENT_SETTING_DEFAULT);
476 }
477
478 void DesktopNotificationService::ResetAllOrigins() {
479 profile_->GetHostContentSettingsMap()->ClearSettingsForOneType(
480 CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
481 }
482
483 ContentSetting DesktopNotificationService::GetContentSetting(
484 const GURL& origin) {
485 return profile_->GetHostContentSettingsMap()
486 ->GetContentSettingAndMaybeUpdateLastUsage(
487 origin,
488 origin,
489 CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
490 NO_RESOURCE_IDENTIFIER);
491 }
492
493 void DesktopNotificationService::RequestPermission(
494 const GURL& origin,
495 content::RenderFrameHost* render_frame_host,
496 const base::Closure& callback) {
497 // If |origin| hasn't been seen before and the default content setting for
498 // notifications is "ask", show an infobar.
499 // The cache can only answer queries on the IO thread once it's initialized,
500 // so don't ask the cache.
501 WebContents* web_contents = WebContents::FromRenderFrameHost(
502 render_frame_host);
503 ContentSetting setting = GetContentSetting(origin);
504 if (setting == CONTENT_SETTING_ASK) {
505 if (PermissionBubbleManager::Enabled()) {
506 PermissionBubbleManager* bubble_manager =
507 PermissionBubbleManager::FromWebContents(web_contents);
508 if (bubble_manager) {
509 bubble_manager->AddRequest(new NotificationPermissionRequest(
510 this,
511 origin,
512 DisplayNameForOriginInProcessId(
513 origin, render_frame_host->GetProcess()->GetID()),
514 callback));
515 }
516 return;
517 }
518
519 // Show an info bar requesting permission.
520 InfoBarService* infobar_service =
521 InfoBarService::FromWebContents(web_contents);
522 // |infobar_service| may be NULL, e.g., if this request originated in a
523 // browser action popup, extension background page, or any HTML that runs
524 // outside of a tab.
525 if (infobar_service) {
526 NotificationPermissionInfoBarDelegate::Create(
527 infobar_service, this, origin,
528 DisplayNameForOriginInProcessId(
529 origin, render_frame_host->GetProcess()->GetID()),
530 callback);
531 return;
532 }
533 }
534
535 // Notify renderer immediately.
536 callback.Run();
537 }
538
539 void DesktopNotificationService::ShowDesktopNotification( 194 void DesktopNotificationService::ShowDesktopNotification(
540 const content::ShowDesktopNotificationHostMsgParams& params, 195 const content::ShowDesktopNotificationHostMsgParams& params,
541 content::RenderFrameHost* render_frame_host, 196 content::RenderFrameHost* render_frame_host,
542 content::DesktopNotificationDelegate* delegate, 197 content::DesktopNotificationDelegate* delegate,
543 base::Closure* cancel_callback) { 198 base::Closure* cancel_callback) {
544 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 199 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
545 const GURL& origin = params.origin; 200 const GURL& origin = params.origin;
546 NotificationObjectProxy* proxy = 201 NotificationObjectProxy* proxy =
547 new NotificationObjectProxy(render_frame_host, delegate); 202 new NotificationObjectProxy(render_frame_host, delegate);
548 203
(...skipping 29 matching lines...) Expand all
578 if (IsNotifierEnabled(notifier_id)) 233 if (IsNotifierEnabled(notifier_id))
579 return base::UTF8ToUTF16((*iter)->name()); 234 return base::UTF8ToUTF16((*iter)->name());
580 } 235 }
581 } 236 }
582 } 237 }
583 #endif 238 #endif
584 239
585 return base::UTF8ToUTF16(origin.host()); 240 return base::UTF8ToUTF16(origin.host());
586 } 241 }
587 242
588 void DesktopNotificationService::NotifySettingsChange() {
589 content::NotificationService::current()->Notify(
590 chrome::NOTIFICATION_DESKTOP_NOTIFICATION_SETTINGS_CHANGED,
591 content::Source<DesktopNotificationService>(this),
592 content::NotificationService::NoDetails());
593 }
594
595 NotificationUIManager* DesktopNotificationService::GetUIManager() { 243 NotificationUIManager* DesktopNotificationService::GetUIManager() {
596 // We defer setting ui_manager_ to the global singleton until we need it 244 // We defer setting ui_manager_ to the global singleton until we need it
597 // in order to avoid UI dependent construction during startup. 245 // in order to avoid UI dependent construction during startup.
598 if (!ui_manager_) 246 if (!ui_manager_)
599 ui_manager_ = g_browser_process->notification_ui_manager(); 247 ui_manager_ = g_browser_process->notification_ui_manager();
600 return ui_manager_; 248 return ui_manager_;
601 } 249 }
602 250
603 bool DesktopNotificationService::IsNotifierEnabled( 251 bool DesktopNotificationService::IsNotifierEnabled(
604 const NotifierId& notifier_id) { 252 const NotifierId& notifier_id) {
605 switch (notifier_id.type) { 253 switch (notifier_id.type) {
606 case NotifierId::APPLICATION: 254 case NotifierId::APPLICATION:
607 return disabled_extension_ids_.find(notifier_id.id) == 255 return disabled_extension_ids_.find(notifier_id.id) ==
608 disabled_extension_ids_.end(); 256 disabled_extension_ids_.end();
609 case NotifierId::WEB_PAGE: 257 case NotifierId::WEB_PAGE:
610 return GetContentSetting(notifier_id.url) == CONTENT_SETTING_ALLOW; 258 return DesktopNotificationProfileUtil::GetContentSetting(
259 profile_, notifier_id.url) == CONTENT_SETTING_ALLOW;
611 case NotifierId::SYSTEM_COMPONENT: 260 case NotifierId::SYSTEM_COMPONENT:
612 #if defined(OS_CHROMEOS) 261 #if defined(OS_CHROMEOS)
613 return disabled_system_component_ids_.find(notifier_id.id) == 262 return disabled_system_component_ids_.find(notifier_id.id) ==
614 disabled_system_component_ids_.end(); 263 disabled_system_component_ids_.end();
615 #else 264 #else
616 // We do not disable system component notifications. 265 // We do not disable system component notifications.
617 return true; 266 return true;
618 #endif 267 #endif
619 } 268 }
620 269
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
727 // Tell the IO thread that this extension's permission for notifications 376 // Tell the IO thread that this extension's permission for notifications
728 // has changed. 377 // has changed.
729 extensions::InfoMap* extension_info_map = 378 extensions::InfoMap* extension_info_map =
730 extensions::ExtensionSystem::Get(profile_)->info_map(); 379 extensions::ExtensionSystem::Get(profile_)->info_map();
731 BrowserThread::PostTask( 380 BrowserThread::PostTask(
732 BrowserThread::IO, FROM_HERE, 381 BrowserThread::IO, FROM_HERE,
733 base::Bind(&extensions::InfoMap::SetNotificationsDisabled, 382 base::Bind(&extensions::InfoMap::SetNotificationsDisabled,
734 extension_info_map, notifier_id.id, !enabled)); 383 extension_info_map, notifier_id.id, !enabled));
735 #endif 384 #endif
736 } 385 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698