Index: chrome/browser/invalidation/invalidation_logger.cc |
diff --git a/chrome/browser/invalidation/invalidation_logger.cc b/chrome/browser/invalidation/invalidation_logger.cc |
index 19bdf9d2464409600d139744fe6d3b5bc7336797..6910810b13c313af0e0643cbb5d45b45c35ea649 100644 |
--- a/chrome/browser/invalidation/invalidation_logger.cc |
+++ b/chrome/browser/invalidation/invalidation_logger.cc |
@@ -7,10 +7,7 @@ |
#include "base/memory/scoped_ptr.h" |
#include "base/values.h" |
#include "chrome/browser/invalidation/invalidation_logger_observer.h" |
- |
-namespace syncer { |
-class ObjectIdInvalidationMap; |
-} |
+#include "sync/notifier/invalidation_handler.h" |
namespace invalidation { |
class InvalidationLoggerObserver; |
@@ -43,9 +40,22 @@ void InvalidationLogger::EmitState() { |
OnStateChange(last_invalidator_state_)); |
} |
-void InvalidationLogger::OnUpdateIds(const base::DictionaryValue& details) { |
- FOR_EACH_OBSERVER( |
- InvalidationLoggerObserver, observer_list_, OnUpdateIds(details)); |
+void InvalidationLogger::OnUpdateIds( |
+ std::map<std::string, syncer::ObjectIdSet> updated_ids) { |
+ for (std::map<std::string, syncer::ObjectIdSet>::const_iterator it = |
+ updated_ids.begin(); it != updated_ids.end(); ++it) { |
+ latest_ids_[it->first] = syncer::ObjectIdSet(it->second); |
+ } |
+ EmitUpdatedIds(); |
+} |
+ |
+void InvalidationLogger::EmitUpdatedIds() { |
+ for (std::map<std::string, syncer::ObjectIdSet>::const_iterator it = |
+ latest_ids_.begin(); it != latest_ids_.end(); ++it) { |
+ FOR_EACH_OBSERVER(InvalidationLoggerObserver, |
+ observer_list_, |
+ OnUpdateIds(it->first, it->second)); |
+ } |
} |
void InvalidationLogger::OnDebugMessage(const base::DictionaryValue& details) { |
@@ -60,22 +70,23 @@ void InvalidationLogger::OnInvalidation( |
} |
void InvalidationLogger::EmitContent() { |
- // Here we add content to send to the observers not via real time push |
- // but on explicit request. |
EmitState(); |
+ EmitUpdatedIds(); |
} |
-// Obtain a target object to call whenever we have |
-// debug messages to display |
-void InvalidationLogger::RegisterForDebug( |
+void InvalidationLogger::RegisterObserver( |
InvalidationLoggerObserver* debug_observer) { |
observer_list_.AddObserver(debug_observer); |
} |
-// Removes the target object to call whenever we have |
-// debug messages to display |
-void InvalidationLogger::UnregisterForDebug( |
+void InvalidationLogger::UnregisterObserver( |
InvalidationLoggerObserver* debug_observer) { |
observer_list_.RemoveObserver(debug_observer); |
} |
+ |
+bool InvalidationLogger::IsObserverRegistered( |
+ InvalidationLoggerObserver* debug_observer) { |
+ return observer_list_.HasObserver(debug_observer); |
+} |
+ |
} // namespace invalidation |