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

Unified Diff: chrome/browser/notifications/sync_notifier/chrome_notifier_service.cc

Issue 19056002: Enable and disable Synced Notification Client Services (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Enable first notification service: remove bitmaps Created 7 years, 5 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: chrome/browser/notifications/sync_notifier/chrome_notifier_service.cc
diff --git a/chrome/browser/notifications/sync_notifier/chrome_notifier_service.cc b/chrome/browser/notifications/sync_notifier/chrome_notifier_service.cc
index 84643d3ffbba454b18558a3e46e2025a3f699283..d19153b94d4e2f4cbc23bf4cf8596efd116db824 100644
--- a/chrome/browser/notifications/sync_notifier/chrome_notifier_service.cc
+++ b/chrome/browser/notifications/sync_notifier/chrome_notifier_service.cc
@@ -8,12 +8,16 @@
#include "chrome/browser/notifications/sync_notifier/chrome_notifier_service.h"
+#include <string>
+#include <vector>
+
#include "chrome/browser/notifications/desktop_notification_service.h"
#include "chrome/browser/notifications/desktop_notification_service_factory.h"
#include "chrome/browser/notifications/notification.h"
#include "chrome/browser/notifications/notification_ui_manager.h"
#include "chrome/browser/profiles/profile.h"
-#include "grit/ui_strings.h"
+#include "grit/generated_resources.h"
+#include "grit/theme_resources.h"
#include "sync/api/sync_change.h"
#include "sync/api/sync_change_processor.h"
#include "sync/api/sync_error_factory.h"
@@ -21,13 +25,14 @@
#include "sync/protocol/synced_notification_specifics.pb.h"
#include "third_party/WebKit/public/web/WebTextDirection.h"
#include "ui/base/l10n/l10n_util.h"
+#include "ui/base/resource/resource_bundle.h"
#include "ui/message_center/notifier_settings.h"
#include "url/gurl.h"
namespace notifier {
namespace {
-const char kSampleSyncedNotificationServiceId[] = "sample-synced-service";
+const char kFirstSyncedNotificationServiceId[] = "Google+";
}
@@ -35,7 +40,8 @@ bool ChromeNotifierService::avoid_bitmap_fetching_for_test_ = false;
ChromeNotifierService::ChromeNotifierService(Profile* profile,
NotificationUIManager* manager)
- : profile_(profile), notification_manager_(manager) {}
+ : profile_(profile), notification_manager_(manager) {
+}
ChromeNotifierService::~ChromeNotifierService() {}
// Methods from BrowserContextKeyedService.
@@ -270,20 +276,31 @@ void ChromeNotifierService::GetSyncedNotificationServices(
// TODO(mukai|petewil): Check the profile's eligibility before adding the
// sample app.
- // Currently we just use kSampleSyncedNotificationServiceId as a place holder.
- // TODO(petewil): Really obtain the list of apps from the server and create
- // the list of ids here.
+ // TODO(petewil): Really obtain the list of synced notification sending
+ // services from the server and create the list of ids here. Until then, we
+ // are hardcoding the service names. Once that is done, remove this
+ // hardcoding.
+ // crbug.com/248337
DesktopNotificationService* desktop_notification_service =
DesktopNotificationServiceFactory::GetForProfile(profile_);
message_center::NotifierId notifier_id(
message_center::NotifierId::SYNCED_NOTIFICATION_SERVICE,
- kSampleSyncedNotificationServiceId);
- notifiers->push_back(new message_center::Notifier(
+ kFirstSyncedNotificationServiceId);
+ message_center::Notifier* notifier_service = new message_center::Notifier(
notifier_id,
l10n_util::GetStringUTF16(
- IDS_MESSAGE_CENTER_SAMPLE_SYNCED_NOTIFICATION_SERVICE_NAME),
- desktop_notification_service->IsNotifierEnabled(notifier_id)));
- // TODO(mukai): Add icon for the sample app.
+ IDS_FIRST_SYNCED_NOTIFICATION_SERVICE_NAME),
+ desktop_notification_service->IsNotifierEnabled(notifier_id));
+
+ // Add icons for our sending services.
+ // TODO(petewil): Replace this temporary hardcoding with a new sync datatype
+ // to dynamically get the name and icon for each synced notification sending
+ // service. Until then, we use hardcoded service icons for all services.
+ // crbug.com/248337
+ notifier_service->icon = ui::ResourceBundle::GetSharedInstance().
+ GetImageNamed(IDR_TEMPORARY_GOOGLE_PLUS_ICON);
+
+ notifiers->push_back(notifier_service);
}
void ChromeNotifierService::MarkNotificationAsDismissed(
@@ -311,6 +328,15 @@ void ChromeNotifierService::Add(scoped_ptr<SyncedNotification> notification) {
// Take ownership of the object and put it into our local storage.
notification_data_.push_back(notification.release());
+ // If the user is not interested in this type of notification, ignore it.
+ std::vector<std::string>::iterator iter =
+ find(enabled_sending_services_.begin(),
+ enabled_sending_services_.end(),
+ notification_copy->GetSendingServiceId());
+ if (iter == enabled_sending_services_.end()) {
+ return;
+ }
+
Display(notification_copy);
}
@@ -320,6 +346,7 @@ void ChromeNotifierService::AddForTest(
}
void ChromeNotifierService::Display(SyncedNotification* notification) {
+
// Set up to fetch the bitmaps.
notification->QueueBitmapFetchJobs(notification_manager_,
this,
@@ -337,7 +364,23 @@ void ChromeNotifierService::Display(SyncedNotification* notification) {
void ChromeNotifierService::OnSyncedNotificationServiceEnabled(
const std::string& notifier_id, bool enabled) {
- // TODO(petewil): start/stop syncing
+ std::vector<std::string>::iterator iter;
+
+ iter = find(enabled_sending_services_.begin(),
+ enabled_sending_services_.end(),
+ notifier_id);
+
+ // Add the notifier_id if it is enabled and not already there.
+ if (iter == enabled_sending_services_.end() && enabled) {
+ enabled_sending_services_.push_back(notifier_id);
+ // TODO(petewil) Check now for any outstanding notifications.
+ // Remove the notifier_id if it is disabled and present.
+ } else if (iter != enabled_sending_services_.end() && !enabled) {
+ enabled_sending_services_.erase(iter);
+ }
+
+ // Otherwise, nothing to do, we can exit.
+ return;
}
} // namespace notifier

Powered by Google App Engine
This is Rietveld 408576698