| Index: chrome/browser/notifications/sync_notifier/synced_notification.cc
|
| diff --git a/chrome/browser/notifications/sync_notifier/synced_notification.cc b/chrome/browser/notifications/sync_notifier/synced_notification.cc
|
| index cddced0d0dc35641cf3f0664cc7febacee87e3db..5d4133018380536904ec7b6bcd71dc323655e5f3 100644
|
| --- a/chrome/browser/notifications/sync_notifier/synced_notification.cc
|
| +++ b/chrome/browser/notifications/sync_notifier/synced_notification.cc
|
| @@ -120,8 +120,6 @@ bool SyncedNotification::AreAllBitmapsFetched() {
|
| // dpi bitmap when appropriate.
|
| void SyncedNotification::OnFetchComplete(const GURL url,
|
| const SkBitmap* bitmap) {
|
| - // TODO(petewil): Add timeout mechanism in case bitmaps take too long. Do we
|
| - // already have one built into URLFetcher?
|
| // Make sure we are on the thread we expect.
|
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
|
|
| @@ -161,23 +159,21 @@ void SyncedNotification::OnFetchComplete(const GURL url,
|
|
|
| // See if all bitmaps are already accounted for, if so call Show.
|
| if (AreAllBitmapsFetched()) {
|
| - Show(notification_manager_, notifier_service_, profile_);
|
| + Show(profile_);
|
| }
|
| }
|
|
|
| void SyncedNotification::QueueBitmapFetchJobs(
|
| - NotificationUIManager* notification_manager,
|
| ChromeNotifierService* notifier_service,
|
| Profile* profile) {
|
| // If we are not using the MessageCenter, call show now, and the existing
|
| // code will handle the bitmap fetch for us.
|
| if (!UseRichNotifications()) {
|
| - Show(notification_manager, notifier_service, profile);
|
| + Show(profile);
|
| return;
|
| }
|
|
|
| // Save off the arguments for the call to Show.
|
| - notification_manager_ = notification_manager;
|
| notifier_service_ = notifier_service;
|
| profile_ = profile;
|
|
|
| @@ -186,26 +182,26 @@ void SyncedNotification::QueueBitmapFetchJobs(
|
| for (unsigned int i = 0; i < GetButtonCount(); ++i) {
|
| button_bitmaps_.push_back(gfx::Image());
|
| button_bitmaps_fetch_pending_.push_back(true);
|
| - AddBitmapToFetchQueue(GetButtonIconUrl(i));
|
| + CreateBitmapFetcher(GetButtonIconUrl(i));
|
| }
|
|
|
| // If there is a profile image bitmap, fetch it
|
| if (GetProfilePictureCount() > 0) {
|
| // TODO(petewil): When we have the capacity to display more than one bitmap,
|
| // modify this code to fetch as many as we can display
|
| - AddBitmapToFetchQueue(GetProfilePictureUrl(0));
|
| + CreateBitmapFetcher(GetProfilePictureUrl(0));
|
| }
|
|
|
| // If the URL is non-empty, add it to our queue of URLs to fetch.
|
| - AddBitmapToFetchQueue(GetAppIconUrl());
|
| - AddBitmapToFetchQueue(GetImageUrl());
|
| + CreateBitmapFetcher(GetAppIconUrl());
|
| + CreateBitmapFetcher(GetImageUrl());
|
|
|
| // Check to see if we don't need to fetch images, either because we already
|
| // did, or because the URLs are empty. If so, we can display the notification.
|
|
|
| // See if all bitmaps are accounted for, if so call Show().
|
| if (AreAllBitmapsFetched()) {
|
| - Show(notification_manager_, notifier_service_, profile_);
|
| + Show(profile_);
|
| }
|
| }
|
|
|
| @@ -217,7 +213,7 @@ void SyncedNotification::StartBitmapFetch() {
|
| }
|
| }
|
|
|
| -void SyncedNotification::AddBitmapToFetchQueue(const GURL& url) {
|
| +void SyncedNotification::CreateBitmapFetcher(const GURL& url) {
|
| // Check for dups, ignore any request for a dup.
|
| ScopedVector<chrome::BitmapFetcher>::iterator iter;
|
| for (iter = fetchers_.begin(); iter != fetchers_.end(); ++iter) {
|
| @@ -231,21 +227,19 @@ void SyncedNotification::AddBitmapToFetchQueue(const GURL& url) {
|
| }
|
| }
|
|
|
| -void SyncedNotification::Show(NotificationUIManager* notification_manager,
|
| - ChromeNotifierService* notifier_service,
|
| - Profile* profile) {
|
| +void SyncedNotification::Show(Profile* profile) {
|
| // Let NotificationUIManager know that the notification has been dismissed.
|
| if (SyncedNotification::kRead == GetReadState() ||
|
| SyncedNotification::kDismissed == GetReadState() ) {
|
| - notification_manager->CancelById(GetKey());
|
| + notification_manager_->CancelById(GetKey());
|
| DVLOG(2) << "Dismissed or read notification arrived"
|
| << GetHeading() << " " << GetText();
|
| return;
|
| }
|
|
|
| // |notifier_service| can be NULL in tests.
|
| - if (UseRichNotifications() && notifier_service) {
|
| - notifier_service->ShowWelcomeToastIfNecessary(this, notification_manager);
|
| + if (UseRichNotifications() && notifier_service_) {
|
| + notifier_service_->ShowWelcomeToastIfNecessary(this, notification_manager_);
|
| }
|
|
|
| // Set up the fields we need to send and create a Notification object.
|
| @@ -264,7 +258,7 @@ void SyncedNotification::Show(NotificationUIManager* notification_manager,
|
| // The delegate will eventually catch calls that the notification
|
| // was read or deleted, and send the changes back to the server.
|
| scoped_refptr<NotificationDelegate> delegate =
|
| - new ChromeNotifierDelegate(GetKey(), notifier_service);
|
| + new ChromeNotifierDelegate(GetKey(), notifier_service_);
|
|
|
| // Some inputs and fields are only used if there is a notification center.
|
| if (UseRichNotifications()) {
|
| @@ -364,7 +358,7 @@ void SyncedNotification::Show(NotificationUIManager* notification_manager,
|
| // has already been shown.
|
| ui_notification.set_shown_as_popup(!toast_state_);
|
|
|
| - notification_manager->Add(ui_notification, profile);
|
| + notification_manager_->Add(ui_notification, profile);
|
| } else {
|
| // In this case we have a Webkit Notification, not a Rich Notification.
|
| Notification ui_notification(GetOriginUrl(),
|
| @@ -376,7 +370,7 @@ void SyncedNotification::Show(NotificationUIManager* notification_manager,
|
| replace_key,
|
| delegate.get());
|
|
|
| - notification_manager->Add(ui_notification, profile);
|
| + notification_manager_->Add(ui_notification, profile);
|
| }
|
|
|
| DVLOG(1) << "Showing Synced Notification! " << heading << " " << text
|
| @@ -386,6 +380,20 @@ void SyncedNotification::Show(NotificationUIManager* notification_manager,
|
| return;
|
| }
|
|
|
| +// Display the notification if it has the specified app_id_name.
|
| +void SyncedNotification::ShowAllForAppId(Profile* profile,
|
| + std::string app_id_name) {
|
| + if (app_id_name == GetAppId())
|
| + Show(profile);
|
| +}
|
| +
|
| +// Remove the notification if it has the specified app_id_name.
|
| +void SyncedNotification::HideAllForAppId(std::string app_id_name) {
|
| + if (app_id_name == GetAppId()) {
|
| + notification_manager_->CancelById(GetKey());
|
| + }
|
| +}
|
| +
|
| // This should detect even small changes in case the server updated the
|
| // notification. We ignore the timestamp if other fields match.
|
| bool SyncedNotification::EqualsIgnoringReadState(
|
| @@ -746,14 +754,6 @@ std::string SyncedNotification::GetContainedNotificationMessage(
|
| collapsed_info(index).simple_collapsed_layout().description();
|
| }
|
|
|
| -std::string SyncedNotification::GetSendingServiceId() const {
|
| - // TODO(petewil): We are building a new protocol (a new sync datatype) to send
|
| - // the service name and icon from the server. For now this method is
|
| - // hardcoded to the name of our first service using synced notifications.
|
| - // Once the new protocol is built, remove this hardcoding.
|
| - return kFirstSyncedNotificationServiceId;
|
| -}
|
| -
|
| const gfx::Image& SyncedNotification::GetAppIcon() const {
|
| return app_icon_bitmap_;
|
| }
|
|
|