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; |
-} |