1// Copyright (c) 2012 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_SYNC_GLUE_SEARCH_ENGINE_DATA_TYPE_CONTROLLER_H__
6#define CHROME_BROWSER_SYNC_GLUE_SEARCH_ENGINE_DATA_TYPE_CONTROLLER_H__
7
8#include <string>
9
10#include "base/compiler_specific.h"
11#include "base/memory/scoped_ptr.h"
12#include "components/search_engines/template_url_service.h"
13#include "components/sync_driver/generic_change_processor.h"
14#include "components/sync_driver/ui_data_type_controller.h"
15#include "content/public/browser/notification_observer.h"
16#include "content/public/browser/notification_registrar.h"
17
18class Profile;
19
20namespace browser_sync {
21
22class SearchEngineDataTypeController
23    : public sync_driver::UIDataTypeController {
24 public:
25  SearchEngineDataTypeController(
26      sync_driver::SyncApiComponentFactory* profile_sync_factory,
27      Profile* profile);
28
29  TemplateURLService::Subscription* GetSubscriptionForTesting();
30
31 private:
32  virtual ~SearchEngineDataTypeController();
33
34  // FrontendDataTypeController implementations.
35  virtual bool StartModels() OVERRIDE;
36  virtual void StopModels() OVERRIDE;
37
38  void OnTemplateURLServiceLoaded();
39
40  scoped_ptr<TemplateURLService::Subscription> template_url_subscription_;
41  Profile* const profile_;
42
43  DISALLOW_COPY_AND_ASSIGN(SearchEngineDataTypeController);
44};
45
46}  // namespace browser_sync
47
48#endif  // CHROME_BROWSER_SYNC_GLUE_SEARCH_ENGINE_DATA_TYPE_CONTROLLER_H__
49