OLD | NEW |
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/notifications/platform_notification_service_impl.h" | 5 #include "chrome/browser/notifications/platform_notification_service_impl.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/metrics/histogram_macros.h" | 8 #include "base/metrics/histogram_macros.h" |
9 #include "base/metrics/user_metrics_action.h" | 9 #include "base/metrics/user_metrics_action.h" |
10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 #include "components/url_formatter/url_formatter.h" | 29 #include "components/url_formatter/url_formatter.h" |
30 #include "content/public/browser/browser_thread.h" | 30 #include "content/public/browser/browser_thread.h" |
31 #include "content/public/browser/desktop_notification_delegate.h" | 31 #include "content/public/browser/desktop_notification_delegate.h" |
32 #include "content/public/browser/notification_event_dispatcher.h" | 32 #include "content/public/browser/notification_event_dispatcher.h" |
33 #include "content/public/browser/platform_notification_context.h" | 33 #include "content/public/browser/platform_notification_context.h" |
34 #include "content/public/browser/storage_partition.h" | 34 #include "content/public/browser/storage_partition.h" |
35 #include "content/public/browser/user_metrics.h" | 35 #include "content/public/browser/user_metrics.h" |
36 #include "content/public/common/platform_notification_data.h" | 36 #include "content/public/common/platform_notification_data.h" |
37 #include "ui/base/l10n/l10n_util.h" | 37 #include "ui/base/l10n/l10n_util.h" |
38 #include "ui/base/resource/resource_bundle.h" | 38 #include "ui/base/resource/resource_bundle.h" |
| 39 #include "ui/message_center/notification_types.h" |
39 #include "ui/message_center/notifier_settings.h" | 40 #include "ui/message_center/notifier_settings.h" |
40 #include "ui/resources/grit/ui_resources.h" | 41 #include "ui/resources/grit/ui_resources.h" |
41 #include "url/url_constants.h" | 42 #include "url/url_constants.h" |
42 | 43 |
43 #if defined(ENABLE_EXTENSIONS) | 44 #if defined(ENABLE_EXTENSIONS) |
44 #include "chrome/browser/notifications/notifier_state_tracker.h" | 45 #include "chrome/browser/notifications/notifier_state_tracker.h" |
45 #include "chrome/browser/notifications/notifier_state_tracker_factory.h" | 46 #include "chrome/browser/notifications/notifier_state_tracker_factory.h" |
46 #include "extensions/browser/extension_registry.h" | 47 #include "extensions/browser/extension_registry.h" |
47 #include "extensions/browser/info_map.h" | 48 #include "extensions/browser/info_map.h" |
48 #include "extensions/common/constants.h" | 49 #include "extensions/common/constants.h" |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 Profile* profile, | 349 Profile* profile, |
349 const GURL& origin, | 350 const GURL& origin, |
350 const SkBitmap& icon, | 351 const SkBitmap& icon, |
351 const content::PlatformNotificationData& notification_data, | 352 const content::PlatformNotificationData& notification_data, |
352 NotificationDelegate* delegate) const { | 353 NotificationDelegate* delegate) const { |
353 // TODO(peter): Icons for Web Notifications are currently always requested for | 354 // TODO(peter): Icons for Web Notifications are currently always requested for |
354 // 1x scale, whereas the displays on which they can be displayed can have a | 355 // 1x scale, whereas the displays on which they can be displayed can have a |
355 // different pixel density. Be smarter about this when the API gets updated | 356 // different pixel density. Be smarter about this when the API gets updated |
356 // with a way for developers to specify images of different resolutions. | 357 // with a way for developers to specify images of different resolutions. |
357 Notification notification( | 358 Notification notification( |
358 origin, notification_data.title, notification_data.body, | 359 message_center::NOTIFICATION_TYPE_SIMPLE, notification_data.title, |
359 gfx::Image::CreateFrom1xBitmap(icon), base::UTF8ToUTF16(origin.host()), | 360 notification_data.body, gfx::Image::CreateFrom1xBitmap(icon), |
360 notification_data.tag, delegate); | 361 message_center::NotifierId(origin), base::UTF8ToUTF16(origin.host()), |
| 362 origin, notification_data.tag, message_center::RichNotificationData(), |
| 363 delegate); |
361 | 364 |
362 notification.set_context_message( | 365 notification.set_context_message( |
363 DisplayNameForContextMessage(profile, origin)); | 366 DisplayNameForContextMessage(profile, origin)); |
364 notification.set_vibration_pattern(notification_data.vibration_pattern); | 367 notification.set_vibration_pattern(notification_data.vibration_pattern); |
365 notification.set_silent(notification_data.silent); | 368 notification.set_silent(notification_data.silent); |
366 | 369 |
367 std::vector<message_center::ButtonInfo> buttons; | 370 std::vector<message_center::ButtonInfo> buttons; |
368 | 371 |
369 // Developer supplied buttons. | 372 // Developer supplied buttons. |
370 for (const auto& action : notification_data.actions) | 373 for (const auto& action : notification_data.actions) |
371 buttons.push_back(message_center::ButtonInfo(action.title)); | 374 buttons.push_back(message_center::ButtonInfo(action.title)); |
372 | 375 |
373 // Android always includes the settings button in all notifications, whereas for | 376 // Android always includes the settings button in all notifications, whereas for |
374 // desktop only web (not extensions) notifications do. | 377 // desktop only web (not extensions) notifications do. |
375 #if !defined(OS_ANDROID) | 378 #if !defined(OS_ANDROID) |
376 // The notification Settings button always comes at the end. | 379 // The notification Settings button always comes at the end. |
377 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 380 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
378 switches::kNotificationSettingsButton)) { | 381 switches::kNotificationSettingsButton)) { |
379 message_center::ButtonInfo settings_button = message_center::ButtonInfo( | 382 message_center::ButtonInfo settings_button = message_center::ButtonInfo( |
380 l10n_util::GetStringUTF16(IDS_NOTIFICATION_SETTINGS)); | 383 l10n_util::GetStringUTF16(IDS_NOTIFICATION_SETTINGS)); |
381 settings_button.icon = | 384 settings_button.icon = |
382 ui::ResourceBundle::GetSharedInstance().GetImageNamed( | 385 ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
383 IDR_NOTIFICATION_SETTINGS); | 386 IDR_NOTIFICATION_SETTINGS); |
384 buttons.push_back(settings_button); | 387 buttons.push_back(settings_button); |
385 } | 388 } |
386 #endif // !defined(OS_ANDROID) | 389 #endif // !defined(OS_ANDROID) |
387 | 390 |
388 notification.set_buttons(buttons); | 391 notification.set_buttons(buttons); |
389 | 392 |
390 notification.set_is_web_notification(true); | |
391 | |
392 // On desktop, notifications with require_interaction==true stay on-screen | 393 // On desktop, notifications with require_interaction==true stay on-screen |
393 // rather than minimizing to the notification center after a timeout. | 394 // rather than minimizing to the notification center after a timeout. |
394 // On mobile, this is ignored (notifications are minimized at all times). | 395 // On mobile, this is ignored (notifications are minimized at all times). |
395 if (notification_data.require_interaction) | 396 if (notification_data.require_interaction) |
396 notification.set_never_timeout(true); | 397 notification.set_never_timeout(true); |
397 | 398 |
398 return notification; | 399 return notification; |
399 } | 400 } |
400 | 401 |
401 NotificationUIManager* | 402 NotificationUIManager* |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
438 extensions::ExtensionRegistry::Get(profile)->GetExtensionById( | 439 extensions::ExtensionRegistry::Get(profile)->GetExtensionById( |
439 origin.host(), extensions::ExtensionRegistry::EVERYTHING); | 440 origin.host(), extensions::ExtensionRegistry::EVERYTHING); |
440 DCHECK(extension); | 441 DCHECK(extension); |
441 | 442 |
442 return base::UTF8ToUTF16(extension->name()); | 443 return base::UTF8ToUTF16(extension->name()); |
443 } | 444 } |
444 #endif | 445 #endif |
445 | 446 |
446 return base::string16(); | 447 return base::string16(); |
447 } | 448 } |
OLD | NEW |