Index: chrome/browser/extensions/api/notifications/notifications_api.cc |
diff --git a/chrome/browser/extensions/api/notifications/notifications_api.cc b/chrome/browser/extensions/api/notifications/notifications_api.cc |
index 4897fdf4998830e458c25d0f1549772a30953246..7d04180e57b340984058f050780f8e024f0b0f41 100644 |
--- a/chrome/browser/extensions/api/notifications/notifications_api.cc |
+++ b/chrome/browser/extensions/api/notifications/notifications_api.cc |
@@ -19,9 +19,13 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "base/time/time.h" |
#include "build/build_config.h" |
+#include "chrome/browser/browser_process.h" |
#include "chrome/browser/extensions/api/notifications/extension_notification_display_helper.h" |
#include "chrome/browser/extensions/api/notifications/extension_notification_display_helper_factory.h" |
+#include "chrome/browser/notifications/native_notification_delegate.h" |
#include "chrome/browser/notifications/notification.h" |
+#include "chrome/browser/notifications/notification_common.h" |
+#include "chrome/browser/notifications/notification_delegate.h" |
#include "chrome/browser/notifications/notifier_state_tracker.h" |
#include "chrome/browser/notifications/notifier_state_tracker_factory.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -206,31 +210,6 @@ class ShutdownNotifierFactory |
DISALLOW_COPY_AND_ASSIGN(ShutdownNotifierFactory); |
}; |
-// Temporary native notification api delagate, it is only used |
-// to extract the delegate id. |
-// This is an interim state until the work in |
-// https://bugs.chromium.org/p/chromium/issues/detail?id=720345 |
-// is completed. We need a small delegate shim since the |
-// Notification object has a non virtual method (delegate_id) that is |
-// used all over the place whose implementation returns delegate->id() |
-#if BUILDFLAG(ENABLE_NATIVE_NOTIFICATIONS) |
-class NativeNotificationApiDelegate : public NotificationDelegate { |
- public: |
- NativeNotificationApiDelegate(const std::string& extension_id, |
- const std::string& notification_id) |
- : scoped_notification_id_( |
- CreateScopedIdentifier(extension_id, notification_id)) {} |
- |
- std::string id() const override { return scoped_notification_id_; } |
- |
- private: |
- ~NativeNotificationApiDelegate() override = default; |
- const std::string scoped_notification_id_; |
- |
- DISALLOW_COPY_AND_ASSIGN(NativeNotificationApiDelegate); |
-}; |
-#endif // BUILDFLAG(ENABLE_NATIVE_NOTIFICATIONS) |
- |
// Message center based notification delegate with all the functionality. |
class NotificationApiDelegate : public NotificationDelegate { |
public: |
@@ -520,8 +499,10 @@ bool NotificationsApiFunction::CreateNotification( |
// Create the notification api delegate. Ownership passed to the notification. |
NotificationDelegate* api_delegate; |
#if BUILDFLAG(ENABLE_NATIVE_NOTIFICATIONS) |
- if (base::FeatureList::IsEnabled(features::kNativeNotifications)) { |
- api_delegate = new NativeNotificationApiDelegate(extension_->id(), id); |
+ if (base::FeatureList::IsEnabled(features::kNativeNotifications) && |
+ g_browser_process->notification_platform_bridge()) { |
+ api_delegate = new NativeNotificationDelegate( |
+ CreateScopedIdentifier(extension_->id(), id)); |
} else { |
api_delegate = |
new NotificationApiDelegate(this, GetProfile(), extension_->id(), id); |