Index: chrome/browser/invalidation/invalidation_logger.h |
diff --git a/chrome/browser/invalidation/invalidation_logger.h b/chrome/browser/invalidation/invalidation_logger.h |
index 0d80b9a2b69763c57c522b5d69275d9e6b53bcd1..7a4d67ceb062549cb3733a6c9fb269a265faec77 100644 |
--- a/chrome/browser/invalidation/invalidation_logger.h |
+++ b/chrome/browser/invalidation/invalidation_logger.h |
@@ -5,8 +5,10 @@ |
#ifndef CHROME_BROWSER_INVALIDATION_INVALIDATION_LOGGER_H_ |
#define CHROME_BROWSER_INVALIDATION_INVALIDATION_LOGGER_H_ |
+#include <map> |
#include "base/memory/scoped_ptr.h" |
#include "base/observer_list.h" |
+#include "sync/notifier/invalidation_util.h" |
#include "sync/notifier/invalidator_state.h" |
namespace base { |
@@ -14,38 +16,71 @@ class DictionaryValue; |
} // namespace base |
namespace syncer { |
+class InvalidationHandler; |
class ObjectIdInvalidationMap; |
-} |
+} // namespace syncer |
namespace invalidation { |
+ |
class InvalidationLoggerObserver; |
+// This class is in charge of logging invalidation-related information. |
+// It is used store the state of the InvalidatorService that owns this object |
+// and then rebroadcast it to observers than can display it accordingly |
+// (like a debugging page). This class only stores lightweight state, as in |
+// which services are registered and listening for certain objects, and the |
+// status of the InvalidatorService (in order not to increase unnecesary |
+// memory usage). |
+// |
+// Observers can be registered and will be called to be notified of any |
+// status change immediatly. They can log there the history of what messages |
+// they recieve. |
+ |
class InvalidationLogger { |
+ |
public: |
+ InvalidationLogger(); |
+ ~InvalidationLogger(); |
+ |
// Pass through to any registered InvalidationLoggerObservers. |
// We will do local logging here too. |
void OnRegistration(const base::DictionaryValue& details); |
void OnUnregistration(const base::DictionaryValue& details); |
- void OnStateChange(const syncer::InvalidatorState& newState); |
- void OnUpdateIds(const base::DictionaryValue& details); |
+ void OnStateChange(const syncer::InvalidatorState& new_state); |
+ void OnUpdateIds(std::map<std::string, syncer::ObjectIdSet> updated_ids); |
void OnDebugMessage(const base::DictionaryValue& details); |
void OnInvalidation(const syncer::ObjectIdInvalidationMap& details); |
+ // Triggers messages to be sent to the Observers to provide them with |
+ // the current state of the logging. |
void EmitContent(); |
- InvalidationLogger(); |
- ~InvalidationLogger(); |
- |
- void RegisterForDebug(InvalidationLoggerObserver* debug_observer); |
- void UnregisterForDebug(InvalidationLoggerObserver* debug_observer); |
+ // Add and remove observers listening for messages. |
+ void RegisterObserver(InvalidationLoggerObserver* debug_observer); |
+ void UnregisterObserver(InvalidationLoggerObserver* debug_observer); |
+ bool IsObserverRegistered(InvalidationLoggerObserver* debug_observer); |
private: |
+ // Send to every Observer a OnStateChange event with the latest state. |
void EmitState(); |
+ |
+ // Send to every Observer many OnUpdateIds events, each with one registrar |
+ // and every objectId it currently has registered. |
+ void EmitUpdatedIds(); |
+ |
// The list of every observer currently listening for notifications. |
ObserverList<InvalidationLoggerObserver> observer_list_; |
+ |
// The last InvalidatorState updated by the InvalidatorService. |
syncer::InvalidatorState last_invalidator_state_; |
+ |
+ // The map that contains every object id that is currently registered |
+ // and its owner. |
+ std::map<std::string, syncer::ObjectIdSet> latest_ids_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(InvalidationLogger); |
}; |
} // namespace invalidation |
+ |
#endif // CHROME_BROWSER_INVALIDATION_INVALIDATION_LOGGER_H_ |