| Index: chrome/browser/ui/webui/sync_internals_message_handler.h
|
| diff --git a/chrome/browser/ui/webui/sync_internals_message_handler.h b/chrome/browser/ui/webui/sync_internals_message_handler.h
|
| index 3fe7ccaf80450cbba9fa102dcf7a6d8a84705ce9..a3991173abb953439eaeeee70840e738a345bd52 100644
|
| --- a/chrome/browser/ui/webui/sync_internals_message_handler.h
|
| +++ b/chrome/browser/ui/webui/sync_internals_message_handler.h
|
| @@ -18,10 +18,9 @@
|
| #include "components/sync/engine/events/protocol_event_observer.h"
|
| #include "components/sync/js/js_controller.h"
|
| #include "components/sync/js/js_event_handler.h"
|
| +#include "components/version_info/channel.h"
|
| #include "content/public/browser/web_ui_message_handler.h"
|
|
|
| -class SigninManagerBase;
|
| -
|
| namespace browser_sync {
|
| class ProfileSyncService;
|
| } // namespace browser_sync
|
| @@ -30,17 +29,6 @@ namespace syncer {
|
| class SyncService;
|
| } // namespace syncer
|
|
|
| -// Interface to abstract away the creation of the about-sync value dictionary.
|
| -class AboutSyncDataExtractor {
|
| - public:
|
| - // Given state about sync, extracts various interesting fields and populates
|
| - // a tree of base::Value objects.
|
| - virtual std::unique_ptr<base::DictionaryValue> ConstructAboutInformation(
|
| - syncer::SyncService* service,
|
| - SigninManagerBase* signin) = 0;
|
| - virtual ~AboutSyncDataExtractor() {}
|
| -};
|
| -
|
| // The implementation for the chrome://sync-internals page.
|
| class SyncInternalsMessageHandler : public content::WebUIMessageHandler,
|
| public syncer::JsEventHandler,
|
| @@ -51,6 +39,8 @@ class SyncInternalsMessageHandler : public content::WebUIMessageHandler,
|
| SyncInternalsMessageHandler();
|
| ~SyncInternalsMessageHandler() override;
|
|
|
| + // content::WebUIMessageHandler implementation.
|
| + void OnJavascriptDisallowed() override;
|
| void RegisterMessages() override;
|
|
|
| // Sets up observers to receive events and forward them to the UI.
|
| @@ -79,10 +69,10 @@ class SyncInternalsMessageHandler : public content::WebUIMessageHandler,
|
| // syncer::SyncServiceObserver implementation.
|
| void OnStateChanged(syncer::SyncService* sync) override;
|
|
|
| - // ProtocolEventObserver implementation.
|
| + // syncer::ProtocolEventObserver implementation.
|
| void OnProtocolEvent(const syncer::ProtocolEvent& e) override;
|
|
|
| - // TypeDebugInfoObserver implementation.
|
| + // syncer::TypeDebugInfoObserver implementation.
|
| void OnCommitCountersUpdated(syncer::ModelType type,
|
| const syncer::CommitCounters& counters) override;
|
| void OnUpdateCountersUpdated(syncer::ModelType type,
|
| @@ -100,16 +90,33 @@ class SyncInternalsMessageHandler : public content::WebUIMessageHandler,
|
| std::unique_ptr<base::DictionaryValue> value);
|
|
|
| protected:
|
| - // Constructor used for unit testing to override the about sync info.
|
| - SyncInternalsMessageHandler(
|
| - std::unique_ptr<AboutSyncDataExtractor> about_sync_data_extractor);
|
| + using SyncServiceProvider = base::RepeatingCallback<syncer::SyncService*()>;
|
| +
|
| + using AboutSyncDataDelegate =
|
| + base::RepeatingCallback<std::unique_ptr<base::DictionaryValue>(
|
| + syncer::SyncService* service,
|
| + version_info::Channel channel)>;
|
| +
|
| + // Constructor used for unit testing to override dependencies.
|
| + SyncInternalsMessageHandler(SyncServiceProvider sync_service_provider,
|
| + AboutSyncDataDelegate about_sync_data_delegate);
|
|
|
| private:
|
| // Fetches updated aboutInfo and sends it to the page in the form of an
|
| // onAboutInfoUpdated event.
|
| void SendAboutInfo();
|
|
|
| - browser_sync::ProfileSyncService* GetProfileSyncService();
|
| + // Gets the ProfileSyncService of the underlying original profile. May return
|
| + // nullptr (e.g., if sync is disabled on the command line). Shouldn't be
|
| + // called directly, but instead through |sync_service_provider_|.
|
| + syncer::SyncService* BindForSyncServiceProvider();
|
| +
|
| + // Sends a dispatch event to the UI. Javascript must be enabled.
|
| + void DispatchEvent(const std::string& name, const base::Value& details_value);
|
| +
|
| + // Unregisters for notifications from all notifications coming from the sync
|
| + // machinery. Leaves notifications hooked into the UI alone.
|
| + void UnregisterModelNotifications();
|
|
|
| base::WeakPtr<syncer::JsController> js_controller_;
|
|
|
| @@ -120,8 +127,11 @@ class SyncInternalsMessageHandler : public content::WebUIMessageHandler,
|
| // ProfileSyncService.
|
| bool is_registered_for_counters_ = false;
|
|
|
| + // An abstraction of who provides the SyncService.
|
| + SyncServiceProvider sync_service_provider_;
|
| +
|
| // An abstraction of who creates the about sync info value map.
|
| - std::unique_ptr<AboutSyncDataExtractor> about_sync_data_extractor_;
|
| + AboutSyncDataDelegate about_sync_data_delegate_;
|
|
|
| base::WeakPtrFactory<SyncInternalsMessageHandler> weak_ptr_factory_;
|
|
|
|
|