| 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 02f8cd776a05ce9df8b71bdb65471af962ddec0f..2cb9ec65b5e6fa2b6ff15a5a4cb52c0fe75919ce 100644 | 
| --- a/chrome/browser/notifications/platform_notification_service_impl.cc | 
| +++ b/chrome/browser/notifications/platform_notification_service_impl.cc | 
| @@ -4,10 +4,10 @@ | 
|  | 
| #include "chrome/browser/notifications/platform_notification_service_impl.h" | 
|  | 
| -#include "base/command_line.h" | 
| #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 "chrome/browser/browser_process.h" | 
| #include "chrome/browser/content_settings/host_content_settings_map_factory.h" | 
| @@ -22,7 +22,6 @@ | 
| #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" | 
| #include "chrome/common/chrome_switches.h" | 
| #include "chrome/common/pref_names.h" | 
| -#include "chrome/grit/generated_resources.h" | 
| #include "components/content_settings/core/browser/host_content_settings_map.h" | 
| #include "components/content_settings/core/common/content_settings.h" | 
| #include "components/content_settings/core/common/content_settings_types.h" | 
| @@ -51,10 +50,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; | 
| @@ -96,7 +91,12 @@ PlatformNotificationServiceImpl::GetInstance() { | 
| } | 
|  | 
| PlatformNotificationServiceImpl::PlatformNotificationServiceImpl() | 
| -    : notification_ui_manager_for_tests_(nullptr) {} | 
| +    : notification_ui_manager_for_tests_(nullptr) { | 
| +#if defined(OS_MACOSX) | 
| +  native_notification_ui_manager_.reset( | 
| +      NotificationUIManager::CreateNativeNotificationManager()); | 
| +#endif | 
| +} | 
|  | 
| PlatformNotificationServiceImpl::~PlatformNotificationServiceImpl() {} | 
|  | 
| @@ -333,12 +333,17 @@ void PlatformNotificationServiceImpl::ClosePersistentNotification( | 
| #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, | 
| +      base::Int64ToString(persistent_notification_id), | 
| NotificationUIManager::GetProfileID(profile)); | 
| #else | 
| +  if (native_notification_ui_manager_ && | 
| +      native_notification_ui_manager_->AcceptNativeNotifications()) { | 
| +    GetNotificationUIManager()->CancelById( | 
| +        base::Int64ToString(persistent_notification_id), | 
| +        NotificationUIManager::GetProfileID(profile)); | 
| +  } | 
| + | 
| auto iter = persistent_notifications_.find(persistent_notification_id); | 
| if (iter == persistent_notifications_.end()) | 
| return; | 
| @@ -423,6 +428,11 @@ PlatformNotificationServiceImpl::GetNotificationUIManager() const { | 
| if (notification_ui_manager_for_tests_) | 
| return notification_ui_manager_for_tests_; | 
|  | 
| +  if (native_notification_ui_manager_ && | 
| +      native_notification_ui_manager_->AcceptNativeNotifications()) { | 
| +    return native_notification_ui_manager_.get(); | 
| +  } | 
| + | 
| return g_browser_process->notification_ui_manager(); | 
| } | 
|  | 
|  |