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_
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
{
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
{
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).
45 extensions::api::synced_notifications_private::SyncDataType data_type
,
47 linked_ptr
<extensions::api::synced_notifications_private::SyncData
> >*
49 bool UpdateNotification(const std::string
& changed_notification
);
50 bool SetRenderContext(
51 extensions::api::synced_notifications_private::RefreshRequest
53 const std::string
& new_context
);
55 // Returns whether both sync notification datatypes are up and running.
56 bool IsSyncReady() const;
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_