diff options
author | rlarocque@chromium.org <rlarocque@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-07 14:25:29 +0000 |
---|---|---|
committer | rlarocque@chromium.org <rlarocque@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-07 14:25:29 +0000 |
commit | 4ae718e2916c224ba4acb8da9b4bc317ad4b018e (patch) | |
tree | 8d182cef38394aab1059b02e6014b4a9bcc45c12 /sync/sessions | |
parent | 3d0febf895ce3a17c40feea34516134f32890c5b (diff) | |
download | chromium_src-4ae718e2916c224ba4acb8da9b4bc317ad4b018e.zip chromium_src-4ae718e2916c224ba4acb8da9b4bc317ad4b018e.tar.gz chromium_src-4ae718e2916c224ba4acb8da9b4bc317ad4b018e.tar.bz2 |
sync: Plumb per-type counter observers to UI
Implements the plumbing to get events from the
DirectoryTypeDebugInfoEmitters in the ModelTypeRegistry, through the
SyncManager, SyncBackendHostCore, and SyncBackendHost to the
ProfileSyncService.
At the moment, there are no observers register and no events
are emitted. Future patches will include logic to update the
counters and to expose their values on the about:sync page.
BUG=328606
Review URL: https://codereview.chromium.org/269543020
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@268747 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync/sessions')
-rw-r--r-- | sync/sessions/model_type_registry.cc | 27 | ||||
-rw-r--r-- | sync/sessions/model_type_registry.h | 8 |
2 files changed, 35 insertions, 0 deletions
diff --git a/sync/sessions/model_type_registry.cc b/sync/sessions/model_type_registry.cc index 2b9e7cb..668f8da 100644 --- a/sync/sessions/model_type_registry.cc +++ b/sync/sessions/model_type_registry.cc @@ -6,6 +6,7 @@ #include "base/bind.h" #include "base/message_loop/message_loop_proxy.h" +#include "base/observer_list.h" #include "sync/engine/directory_commit_contributor.h" #include "sync/engine/directory_update_handler.h" #include "sync/engine/non_blocking_type_processor_core.h" @@ -164,6 +165,32 @@ ModelTypeRegistry::directory_type_debug_info_emitter_map() { return &directory_type_debug_info_emitter_map_; } +void ModelTypeRegistry::RegisterDirectoryTypeDebugInfoObserver( + syncer::TypeDebugInfoObserver* observer) { + if (!type_debug_info_observers_.HasObserver(observer)) + type_debug_info_observers_.AddObserver(observer); +} + +void ModelTypeRegistry::UnregisterDirectoryTypeDebugInfoObserver( + syncer::TypeDebugInfoObserver* observer) { + type_debug_info_observers_.RemoveObserver(observer); +} + +bool ModelTypeRegistry::HasDirectoryTypeDebugInfoObserver( + syncer::TypeDebugInfoObserver* observer) { + return type_debug_info_observers_.HasObserver(observer); +} + +void ModelTypeRegistry::RequestEmitDebugInfo() { + for (DirectoryTypeDebugInfoEmitterMap::iterator it = + directory_type_debug_info_emitter_map_.begin(); + it != directory_type_debug_info_emitter_map_.end(); ++it) { + it->second->EmitCommitCountersUpdate(); + it->second->EmitUpdateCountersUpdate(); + it->second->EmitStatusCountersUpdate(); + } +} + ModelTypeSet ModelTypeRegistry::GetEnabledDirectoryTypes() const { return enabled_directory_types_; } diff --git a/sync/sessions/model_type_registry.h b/sync/sessions/model_type_registry.h index 3ee36c7..20d6d20 100644 --- a/sync/sessions/model_type_registry.h +++ b/sync/sessions/model_type_registry.h @@ -73,6 +73,14 @@ class SYNC_EXPORT_PRIVATE ModelTypeRegistry { CommitContributorMap* commit_contributor_map(); DirectoryTypeDebugInfoEmitterMap* directory_type_debug_info_emitter_map(); + void RegisterDirectoryTypeDebugInfoObserver( + syncer::TypeDebugInfoObserver* observer); + void UnregisterDirectoryTypeDebugInfoObserver( + syncer::TypeDebugInfoObserver* observer); + bool HasDirectoryTypeDebugInfoObserver( + syncer::TypeDebugInfoObserver* observer); + void RequestEmitDebugInfo(); + private: ModelTypeSet GetEnabledNonBlockingTypes() const; ModelTypeSet GetEnabledDirectoryTypes() const; |