summaryrefslogtreecommitdiffstats
path: root/sync/sessions
diff options
context:
space:
mode:
authorrlarocque@chromium.org <rlarocque@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-07 14:25:29 +0000
committerrlarocque@chromium.org <rlarocque@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-07 14:25:29 +0000
commit4ae718e2916c224ba4acb8da9b4bc317ad4b018e (patch)
tree8d182cef38394aab1059b02e6014b4a9bcc45c12 /sync/sessions
parent3d0febf895ce3a17c40feea34516134f32890c5b (diff)
downloadchromium_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.cc27
-rw-r--r--sync/sessions/model_type_registry.h8
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;