Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(109)

Unified Diff: trunk/src/chrome/browser/notifications/message_center_notification_manager.cc

Issue 469313002: Revert 289532 "Route newly created notifications to notification..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
-}

Powered by Google App Engine
This is Rietveld 408576698