Index: chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_service.cc |
diff --git a/chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_service.cc b/chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_service.cc |
index 8f1540deadcc474b0fe9f89a4bfa0c63d57720c8..498c0116060bc7d90738d051777c0396c4c88cc0 100644 |
--- a/chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_service.cc |
+++ b/chrome/browser/enhanced_bookmarks/chrome_bookmark_server_cluster_service.cc |
@@ -33,6 +33,15 @@ ChromeBookmarkServerClusterService::~ChromeBookmarkServerClusterService() { |
sync_service_->RemoveObserver(this); |
} |
+void ChromeBookmarkServerClusterService::AddObserver( |
+ BookmarkServerServiceObserver* observer) { |
+ BookmarkServerClusterService::AddObserver(observer); |
+ if (sync_refresh_skipped_) { |
+ sync_refresh_skipped_ = false; |
+ TriggerTokenRequest(false); |
+ } |
+} |
+ |
void ChromeBookmarkServerClusterService::OnStateChanged() { |
// Do nothing. |
} |
@@ -42,10 +51,14 @@ void ChromeBookmarkServerClusterService::OnSyncCycleCompleted() { |
// cluster request immediately after a bookmark is changed from the bookmark |
// observer notification will yield the wrong results. The request must be |
// delayed until the sync cycle has completed. |
- // TODO(noyau): This might happen too often, need a way to coalesce and delay |
- // the notifications. |
- if (model_->loaded()) |
- TriggerTokenRequest(false); |
+ if (model_->loaded()) { |
+ if (observers_.might_have_observers()) { |
+ TriggerTokenRequest(false); |
+ sync_refresh_skipped_ = false; |
+ } else { |
+ sync_refresh_skipped_ = true; |
+ } |
+ } |
} |
} // namespace enhanced_bookmarks |