| 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 4c60c08daae8000ad58f8de373444e782274bc8e..5d82dad0225d0f077297a93443f692ab34ed70c8 100644
|
| --- a/chrome/browser/notifications/platform_notification_service_impl.cc
|
| +++ b/chrome/browser/notifications/platform_notification_service_impl.cc
|
| @@ -15,6 +15,8 @@
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
|
| #include "chrome/browser/engagement/site_engagement_service.h"
|
| +#include "chrome/browser/notifications/native_notification_delegate.h"
|
| +#include "chrome/browser/notifications/notification_common.h"
|
| #include "chrome/browser/notifications/notification_display_service_factory.h"
|
| #include "chrome/browser/notifications/notification_object_proxy.h"
|
| #include "chrome/browser/notifications/persistent_notification_delegate.h"
|
| @@ -27,6 +29,8 @@
|
| #include "chrome/browser/safe_browsing/ping_manager.h"
|
| #include "chrome/browser/safe_browsing/safe_browsing_service.h"
|
| #include "chrome/browser/ui/browser.h"
|
| +#include "chrome/common/chrome_features.h"
|
| +#include "chrome/common/features.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "chrome/grit/generated_resources.h"
|
| #include "components/content_settings/core/browser/host_content_settings_map.h"
|
| @@ -120,6 +124,7 @@ PlatformNotificationServiceImpl::PlatformNotificationServiceImpl()
|
|
|
| PlatformNotificationServiceImpl::~PlatformNotificationServiceImpl() {}
|
|
|
| +// TODO(miguelg): Move this to PersistentNotificationHandler
|
| void PlatformNotificationServiceImpl::OnPersistentNotificationClick(
|
| BrowserContext* browser_context,
|
| const std::string& notification_id,
|
| @@ -165,6 +170,7 @@ void PlatformNotificationServiceImpl::OnPersistentNotificationClick(
|
| base::Unretained(this)));
|
| }
|
|
|
| +// TODO(miguelg): Move this to PersistentNotificationHandler
|
| void PlatformNotificationServiceImpl::OnPersistentNotificationClose(
|
| BrowserContext* browser_context,
|
| const std::string& notification_id,
|
| @@ -311,15 +317,27 @@ void PlatformNotificationServiceImpl::DisplayNotification(
|
| DCHECK_EQ(0u, notification_data.actions.size());
|
| DCHECK_EQ(0u, notification_resources.action_icons.size());
|
|
|
| - NotificationObjectProxy* proxy = new NotificationObjectProxy(
|
| + // Temporary change while the delegates are merged.
|
| + NotificationDelegate* notification_delegate;
|
| +#if BUILDFLAG(ENABLE_NATIVE_NOTIFICATIONS)
|
| + if (base::FeatureList::IsEnabled(features::kNativeNotifications) &&
|
| + g_browser_process->notification_platform_bridge()) {
|
| + notification_delegate = new NativeNotificationDelegate(notification_id);
|
| + } else {
|
| + notification_delegate = new NotificationObjectProxy(
|
| + browser_context, notification_id, origin, std::move(delegate));
|
| + }
|
| +#else
|
| + notification_delegate = new NotificationObjectProxy(
|
| browser_context, notification_id, origin, std::move(delegate));
|
| +#endif // BUILDFLAG(ENABLE_NATIVE_NOTIFICATIONS)
|
| +
|
| Notification notification = CreateNotificationFromData(
|
| profile, GURL() /* service_worker_scope */, origin, notification_data,
|
| - notification_resources, proxy);
|
| + notification_resources, notification_delegate);
|
|
|
| GetNotificationDisplayService(profile)->Display(
|
| - NotificationCommon::NON_PERSISTENT, notification.delegate_id(),
|
| - notification);
|
| + NotificationCommon::NON_PERSISTENT, notification_id, notification);
|
| if (cancel_callback) {
|
| #if defined(OS_WIN)
|
| std::string profile_id =
|
| @@ -327,9 +345,8 @@ void PlatformNotificationServiceImpl::DisplayNotification(
|
| #elif defined(OS_POSIX)
|
| std::string profile_id = profile->GetPath().BaseName().value();
|
| #endif
|
| - *cancel_callback =
|
| - base::Bind(&CancelNotification, notification.delegate_id(), profile_id,
|
| - profile->IsOffTheRecord());
|
| + *cancel_callback = base::Bind(&CancelNotification, notification_id,
|
| + profile_id, profile->IsOffTheRecord());
|
| }
|
| }
|
|
|
| @@ -354,6 +371,7 @@ void PlatformNotificationServiceImpl::DisplayPersistentNotification(
|
| // The notification settings button will be appended after the developer-
|
| // supplied buttons, available in |notification_data.actions|.
|
| int settings_button_index = notification_data.actions.size();
|
| +
|
| PersistentNotificationDelegate* delegate = new PersistentNotificationDelegate(
|
| browser_context, notification_id, origin, settings_button_index);
|
|
|
|
|