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