Revert 285173 "Removed InProcessBrowserTest::CleanUpOnMainThread()"
[chromium-blink-merge.git] / chrome / browser / extensions / api / synced_notifications_private / synced_notifications_shim.h
blob9d225cea8b78c2b140c41b480dfbd95092b0d5e6
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.
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_SYNCED_NOTIFICATIONS_PRIVATE_SYNCED_NOTIFICATIONS_SHIM_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_SYNCED_NOTIFICATIONS_PRIVATE_SYNCED_NOTIFICATIONS_SHIM_H_
8 #include <string>
10 #include "base/callback.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "chrome/common/extensions/api/synced_notifications_private.h"
13 #include "sync/api/syncable_service.h"
15 namespace extensions {
16 struct Event;
19 // Shim for SYNCED_NOTIFICATIONS and SYNCED_NOTIFICATIONS_APP_INFO datatypes
20 // to interface with their extension backed sync code.
21 class SyncedNotificationsShim : public syncer::SyncableService {
22 public:
23 // Callback for firing extension events.
24 typedef base::Callback<void(scoped_ptr<extensions::Event>)> EventLauncher;
26 explicit SyncedNotificationsShim(const EventLauncher& event_launcher,
27 const base::Closure& refresh_request);
28 virtual ~SyncedNotificationsShim();
30 // SyncableService interface.
31 virtual syncer::SyncMergeResult MergeDataAndStartSyncing(
32 syncer::ModelType type,
33 const syncer::SyncDataList& initial_sync_data,
34 scoped_ptr<syncer::SyncChangeProcessor> sync_processor,
35 scoped_ptr<syncer::SyncErrorFactory> error_handler) OVERRIDE;
36 virtual void StopSyncing(syncer::ModelType type) OVERRIDE;
37 virtual syncer::SyncError ProcessSyncChanges(
38 const tracked_objects::Location& from_here,
39 const syncer::SyncChangeList& change_list) OVERRIDE;
40 virtual syncer::SyncDataList GetAllSyncData(
41 syncer::ModelType type) const OVERRIDE;
43 // JS interface methods (see synced_notifications_private.h).
44 bool GetInitialData(
45 extensions::api::synced_notifications_private::SyncDataType data_type,
46 std::vector<
47 linked_ptr<extensions::api::synced_notifications_private::SyncData> >*
48 js_data_list) const;
49 bool UpdateNotification(const std::string& changed_notification);
50 bool SetRenderContext(
51 extensions::api::synced_notifications_private::RefreshRequest
52 refresh_status,
53 const std::string& new_context);
55 // Returns whether both sync notification datatypes are up and running.
56 bool IsSyncReady() const;
58 private:
59 // Callback to trigger firing extension events.
60 EventLauncher event_launcher_;
62 // Callback to trigger synced notification refresh.
63 base::Closure refresh_request_;
65 // The sync change processors, initialized via MergeDataAndStartSyncing.
66 scoped_ptr<syncer::SyncChangeProcessor> notifications_change_processor_;
67 scoped_ptr<syncer::SyncChangeProcessor> app_info_change_processor_;
69 DISALLOW_COPY_AND_ASSIGN(SyncedNotificationsShim);
72 #endif // CHROME_BROWSER_EXTENSIONS_API_SYNCED_NOTIFICATIONS_PRIVATE_SYNCED_NOTIFICATIONS_SHIM_H_