// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_UI_WEBUI_INVALIDATIONS_MESSAGE_HANDLER_H_ #define CHROME_BROWSER_UI_WEBUI_INVALIDATIONS_MESSAGE_HANDLER_H_ #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" #include "base/values.h" #include "components/invalidation/impl/invalidation_logger_observer.h" #include "components/invalidation/public/invalidation_util.h" #include "content/public/browser/web_ui_message_handler.h" class Profile; namespace invalidation { class InvalidationLogger; } // namespace invalidation namespace syncer { class InvalidationHandler; } // namespace syncer // The implementation for the chrome://invalidations page. class InvalidationsMessageHandler : public content::WebUIMessageHandler, public invalidation::InvalidationLoggerObserver { public: InvalidationsMessageHandler(); ~InvalidationsMessageHandler() override; // Implementation of InvalidationLoggerObserver. void OnRegistrationChange( const std::multiset& registered_handlers) override; void OnStateChange(const syncer::InvalidatorState& new_state, const base::Time& last_change_timestamp) override; void OnUpdateIds(const std::string& handler_name, const syncer::ObjectIdCountMap& ids_set) override; void OnDebugMessage(const base::DictionaryValue& details) override; void OnInvalidation( const syncer::ObjectIdInvalidationMap& new_invalidations) override; void OnDetailedStatus(const base::DictionaryValue& network_details) override; // Implementation of WebUIMessageHandler. void RegisterMessages() override; // Triggers the logger to send the current state and objects ids. void UpdateContent(const base::ListValue* args); // Called by the javascript whenever the page is ready to receive messages. void UIReady(const base::ListValue* args); // Calls the InvalidationService for any internal details. void HandleRequestDetailedStatus(const base::ListValue* args); private: // The pointer to the internal InvalidatorService InvalidationLogger. // Used to get the information necessary to display to the JS and to // register ourselves as Observers for any notifications. invalidation::InvalidationLogger* logger_; base::WeakPtrFactory weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(InvalidationsMessageHandler); }; #endif // CHROME_BROWSER_UI_WEBUI_INVALIDATIONS_MESSAGE_HANDLER_H_