1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_WEBUI_INVALIDATIONS_MESSAGE_HANDLER_H_ 6#define CHROME_BROWSER_UI_WEBUI_INVALIDATIONS_MESSAGE_HANDLER_H_ 7 8#include "base/compiler_specific.h" 9#include "base/memory/scoped_ptr.h" 10#include "base/memory/weak_ptr.h" 11#include "base/values.h" 12#include "components/invalidation/invalidation_logger_observer.h" 13#include "components/invalidation/invalidation_util.h" 14#include "content/public/browser/web_ui_message_handler.h" 15 16class Profile; 17 18namespace invalidation { 19class InvalidationLogger; 20} // namespace invalidation 21 22namespace syncer { 23class InvalidationHandler; 24} // namespace syncer 25 26// The implementation for the chrome://invalidations page. 27class InvalidationsMessageHandler 28 : public content::WebUIMessageHandler, 29 public invalidation::InvalidationLoggerObserver { 30 public: 31 InvalidationsMessageHandler(); 32 virtual ~InvalidationsMessageHandler(); 33 34 // Implementation of InvalidationLoggerObserver. 35 virtual void OnRegistrationChange( 36 const std::multiset<std::string>& registered_handlers) OVERRIDE; 37 virtual void OnStateChange(const syncer::InvalidatorState& new_state, 38 const base::Time& last_change_timestamp) 39 OVERRIDE; 40 virtual void OnUpdateIds(const std::string& handler_name, 41 const syncer::ObjectIdCountMap& ids_set) OVERRIDE; 42 virtual void OnDebugMessage(const base::DictionaryValue& details) OVERRIDE; 43 virtual void OnInvalidation( 44 const syncer::ObjectIdInvalidationMap& new_invalidations) OVERRIDE; 45 virtual void OnDetailedStatus(const base::DictionaryValue& network_details) 46 OVERRIDE; 47 48 // Implementation of WebUIMessageHandler. 49 virtual void RegisterMessages() OVERRIDE; 50 51 // Triggers the logger to send the current state and objects ids. 52 void UpdateContent(const base::ListValue* args); 53 54 // Called by the javascript whenever the page is ready to receive messages. 55 void UIReady(const base::ListValue* args); 56 57 // Calls the InvalidationService for any internal details. 58 void HandleRequestDetailedStatus(const base::ListValue* args); 59 60 private: 61 // The pointer to the internal InvalidatorService InvalidationLogger. 62 // Used to get the information necessary to display to the JS and to 63 // register ourselves as Observers for any notifications. 64 invalidation::InvalidationLogger* logger_; 65 66 base::WeakPtrFactory<InvalidationsMessageHandler> weak_ptr_factory_; 67 68 DISALLOW_COPY_AND_ASSIGN(InvalidationsMessageHandler); 69}; 70 71#endif // CHROME_BROWSER_UI_WEBUI_INVALIDATIONS_MESSAGE_HANDLER_H_ 72