Index: chrome/browser/notifications/platform_notification_service_impl.cc |
diff --git a/chrome/browser/notifications/platform_notification_service_impl.cc b/chrome/browser/notifications/platform_notification_service_impl.cc |
index 6a28a84f962924ea2b99752549571da507af4a8a..7995511b55b7130f53f54c8fe8c1586c302451a3 100644 |
--- a/chrome/browser/notifications/platform_notification_service_impl.cc |
+++ b/chrome/browser/notifications/platform_notification_service_impl.cc |
@@ -10,6 +10,7 @@ |
#include "base/metrics/histogram_macros.h" |
#include "base/metrics/user_metrics_action.h" |
#include "base/prefs/pref_service.h" |
+#include "base/strings/string_number_conversions.h" |
#include "base/strings/utf_string_conversions.h" |
#include "build/build_config.h" |
#include "chrome/browser/browser_process.h" |
@@ -54,10 +55,6 @@ |
#include "extensions/common/permissions/permissions_data.h" |
#endif |
-#if defined(OS_ANDROID) |
-#include "base/strings/string_number_conversions.h" |
-#endif |
- |
using content::BrowserContext; |
using content::BrowserThread; |
using content::PlatformNotificationContext; |
@@ -99,7 +96,9 @@ PlatformNotificationServiceImpl::GetInstance() { |
} |
PlatformNotificationServiceImpl::PlatformNotificationServiceImpl() |
- : notification_ui_manager_for_tests_(nullptr) {} |
+ : native_notification_ui_manager_( |
+ NotificationUIManager::CreateNativeNotificationManager()), |
+ notification_ui_manager_for_tests_(nullptr) {} |
PlatformNotificationServiceImpl::~PlatformNotificationServiceImpl() {} |
@@ -334,14 +333,19 @@ void PlatformNotificationServiceImpl::ClosePersistentNotification( |
DCHECK(profile); |
#if defined(OS_ANDROID) |
- // TODO(peter): Remove this conversion when the notification ids are being |
- // generated by the caller of this method. |
- std::string textual_persistent_notification_id = |
- base::Int64ToString(persistent_notification_id); |
- GetNotificationUIManager()->CancelById( |
- textual_persistent_notification_id, |
- NotificationUIManager::GetProfileID(profile)); |
+ bool cancel_by_persistent_id = true; |
#else |
+ bool cancel_by_persistent_id = (native_notification_ui_manager_ != nullptr); |
+#endif |
+ |
+ if (cancel_by_persistent_id) { |
+ // TODO(peter): Remove this conversion when the notification ids are being |
+ // generated by the caller of this method. |
+ GetNotificationUIManager()->CancelById( |
+ base::Int64ToString(persistent_notification_id), |
+ NotificationUIManager::GetProfileID(profile)); |
+ } |
+ |
auto iter = persistent_notifications_.find(persistent_notification_id); |
if (iter == persistent_notifications_.end()) |
return; |
@@ -350,7 +354,6 @@ void PlatformNotificationServiceImpl::ClosePersistentNotification( |
iter->second, NotificationUIManager::GetProfileID(profile)); |
persistent_notifications_.erase(iter); |
-#endif |
} |
bool PlatformNotificationServiceImpl::GetDisplayedPersistentNotifications( |
@@ -426,6 +429,10 @@ PlatformNotificationServiceImpl::GetNotificationUIManager() const { |
if (notification_ui_manager_for_tests_) |
return notification_ui_manager_for_tests_; |
+ if (native_notification_ui_manager_) { |
+ return native_notification_ui_manager_.get(); |
+ } |
+ |
return g_browser_process->notification_ui_manager(); |
} |