| // Copyright 2012 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 COMPONENTS_SEARCH_ENGINES_SEARCH_ENGINE_DATA_TYPE_CONTROLLER_H__ |
| #define COMPONENTS_SEARCH_ENGINES_SEARCH_ENGINE_DATA_TYPE_CONTROLLER_H__ |
| |
| #include <string> |
| |
| #include "base/memory/scoped_ptr.h" |
| #include "components/search_engines/template_url_service.h" |
| #include "components/sync_driver/ui_data_type_controller.h" |
| |
| class Profile; |
| |
| namespace browser_sync { |
| |
| // Controller for the SEARCH_ENGINES sync data type. This class tells sync |
| // how to load the model for this data type, and the superclasses manage |
| // controlling the rest of the state of the datatype with regards to sync. |
| class SearchEngineDataTypeController |
| : public sync_driver::UIDataTypeController { |
| public: |
| SearchEngineDataTypeController( |
| const scoped_refptr<base::SingleThreadTaskRunner>& ui_thread, |
| const base::Closure& error_callback, |
| sync_driver::SyncClient* sync_client, |
| TemplateURLService* template_url_service); |
| |
| TemplateURLService::Subscription* GetSubscriptionForTesting(); |
| |
| private: |
| ~SearchEngineDataTypeController() override; |
| |
| // FrontendDataTypeController: |
| bool StartModels() override; |
| void StopModels() override; |
| |
| void OnTemplateURLServiceLoaded(); |
| |
| // A reference to the UI thread's task runner. |
| const scoped_refptr<base::SingleThreadTaskRunner> ui_thread_; |
| |
| // A pointer to the template URL service that this data type will use. |
| TemplateURLService* template_url_service_; |
| |
| // A subscription to the OnLoadedCallback so it can be cleared if necessary. |
| scoped_ptr<TemplateURLService::Subscription> template_url_subscription_; |
| |
| DISALLOW_COPY_AND_ASSIGN(SearchEngineDataTypeController); |
| }; |
| |
| } // namespace browser_sync |
| |
| #endif // COMPONENTS_SEARCH_ENGINES_SEARCH_ENGINE_DATA_TYPE_CONTROLLER_H__ |