| Index: trunk/src/chrome/browser/notifications/message_center_notification_manager.cc
|
| ===================================================================
|
| --- trunk/src/chrome/browser/notifications/message_center_notification_manager.cc (revision 289543)
|
| +++ trunk/src/chrome/browser/notifications/message_center_notification_manager.cc (working copy)
|
| @@ -10,28 +10,23 @@
|
| #include "base/prefs/pref_service.h"
|
| #include "base/stl_util.h"
|
| #include "chrome/browser/chrome_notification_types.h"
|
| -#include "chrome/browser/extensions/api/notification_provider/notification_provider_api.h"
|
| #include "chrome/browser/notifications/desktop_notification_service.h"
|
| #include "chrome/browser/notifications/desktop_notification_service_factory.h"
|
| #include "chrome/browser/notifications/fullscreen_notification_blocker.h"
|
| #include "chrome/browser/notifications/message_center_settings_controller.h"
|
| #include "chrome/browser/notifications/notification.h"
|
| -#include "chrome/browser/notifications/notification_conversion_helper.h"
|
| #include "chrome/browser/notifications/screen_lock_notification_blocker.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/browser_finder.h"
|
| #include "chrome/browser/ui/chrome_pages.h"
|
| #include "chrome/browser/ui/host_desktop.h"
|
| -#include "chrome/common/extensions/api/notification_provider.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "content/public/browser/notification_service.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "content/public/common/url_constants.h"
|
| -#include "extensions/browser/extension_registry.h"
|
| #include "extensions/browser/extension_system.h"
|
| #include "extensions/browser/info_map.h"
|
| #include "extensions/common/extension_set.h"
|
| -#include "extensions/common/permissions/permissions_data.h"
|
| #include "ui/gfx/image/image_skia.h"
|
| #include "ui/message_center/message_center_style.h"
|
| #include "ui/message_center/message_center_tray.h"
|
| @@ -122,28 +117,11 @@
|
| DesktopNotificationServiceFactory::GetForProfile(profile)->
|
| ShowWelcomeNotificationIfNecessary(notification);
|
|
|
| - // WARNING: You MUST update the message center via the notification within a
|
| - // ProfileNotification object or the profile ID will not be correctly set for
|
| - // ChromeOS.
|
| - ProfileNotification* profile_notification(
|
| + // WARNING: You MUST use AddProfileNotification or update the message center
|
| + // via the notification within a ProfileNotification object or the profile ID
|
| + // will not be correctly set for ChromeOS.
|
| + AddProfileNotification(
|
| new ProfileNotification(profile, notification, message_center_));
|
| - AddProfileNotification(profile_notification);
|
| -
|
| - // TODO(liyanhou): Change the logic to only send notifications to one party.
|
| - // Currently, if there is an app with notificationProvider permission,
|
| - // notifications will go to both message center and the app.
|
| - // Change it to send notifications to message center only when the user chose
|
| - // default message center (extension_id.empty()).
|
| -
|
| - // If there exist apps/extensions that have notificationProvider permission,
|
| - // route notifications to one of the apps/extensions.
|
| - std::string extension_id = GetExtensionTakingOverNotifications(profile);
|
| - if (!extension_id.empty())
|
| - profile_notification->AddToAlternateProvider(extension_id);
|
| -
|
| - message_center_->AddNotification(make_scoped_ptr(
|
| - new message_center::Notification(profile_notification->notification())));
|
| - profile_notification->StartDownloads();
|
| }
|
|
|
| bool MessageCenterNotificationManager::Update(const Notification& notification,
|
| @@ -177,9 +155,6 @@
|
| new ProfileNotification(profile, notification, message_center_);
|
| profile_notifications_[notification.delegate_id()] = new_notification;
|
|
|
| - // TODO(liyanhou): Add routing updated notifications to alternative
|
| - // providers.
|
| -
|
| // WARNING: You MUST use AddProfileNotification or update the message
|
| // center via the notification within a ProfileNotification object or the
|
| // profile ID will not be correctly set for ChromeOS.
|
| @@ -502,31 +477,23 @@
|
| return std::string();
|
| }
|
|
|
| -void
|
| -MessageCenterNotificationManager::ProfileNotification::AddToAlternateProvider(
|
| - const std::string extension_id) {
|
| - // Convert data from Notification type to NotificationOptions type.
|
| - extensions::api::notifications::NotificationOptions options;
|
| - NotificationConversionHelper::NotificationToNotificationOptions(notification_,
|
| - &options);
|
| -
|
| - // Send the notification to the alternate provider extension/app.
|
| - extensions::NotificationProviderEventRouter event_router(profile_);
|
| - event_router.CreateNotification(extension_id,
|
| - notification_.notifier_id().id,
|
| - notification_.delegate_id(),
|
| - options);
|
| -}
|
| -
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // private
|
|
|
| void MessageCenterNotificationManager::AddProfileNotification(
|
| ProfileNotification* profile_notification) {
|
| - std::string id = profile_notification->notification().delegate_id();
|
| + const Notification& notification = profile_notification->notification();
|
| + std::string id = notification.delegate_id();
|
| // Notification ids should be unique.
|
| DCHECK(profile_notifications_.find(id) == profile_notifications_.end());
|
| profile_notifications_[id] = profile_notification;
|
| +
|
| + // Create the copy for message center, and ensure the extension ID is correct.
|
| + scoped_ptr<message_center::Notification> message_center_notification(
|
| + new message_center::Notification(notification));
|
| + message_center_->AddNotification(message_center_notification.Pass());
|
| +
|
| + profile_notification->StartDownloads();
|
| }
|
|
|
| void MessageCenterNotificationManager::RemoveProfileNotification(
|
| @@ -545,25 +512,3 @@
|
|
|
| return (*iter).second;
|
| }
|
| -
|
| -std::string
|
| -MessageCenterNotificationManager::GetExtensionTakingOverNotifications(
|
| - Profile* profile) {
|
| - // TODO(liyanhou): When additional settings in Chrome Settings is implemented,
|
| - // change choosing the last app with permission to a user selected app.
|
| - extensions::ExtensionRegistry* registry =
|
| - extensions::ExtensionRegistry::Get(profile);
|
| - DCHECK(registry);
|
| - std::string extension_id;
|
| - for (extensions::ExtensionSet::const_iterator it =
|
| - registry->enabled_extensions().begin();
|
| - it != registry->enabled_extensions().end();
|
| - ++it) {
|
| - if ((*it->get()).permissions_data()->HasAPIPermission(
|
| - extensions::APIPermission::ID::kNotificationProvider)) {
|
| - extension_id = (*it->get()).id();
|
| - return extension_id;
|
| - }
|
| - }
|
| - return extension_id;
|
| -}
|
|
|