Index: chrome/common/extensions/api/synced_notifications_private.idl |
diff --git a/chrome/common/extensions/api/synced_notifications_private.idl b/chrome/common/extensions/api/synced_notifications_private.idl |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dc9dcdc09173bb26cdd70042b55594318ef4fdae |
--- /dev/null |
+++ b/chrome/common/extensions/api/synced_notifications_private.idl |
@@ -0,0 +1,83 @@ |
+// Copyright 2014 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. |
+ |
+// This API is designed to be used with Chrome Sync. |
+namespace syncedNotificationsPrivate { |
+ |
+// Potential sync change types. |
+enum ChangeType { |
+ added, |
+ updated, |
+ deleted |
+}; |
+ |
+// Whether or not to resync all data items if the data type context changes. |
+enum RefreshRequest { |
+ refresh_needed, |
+ no_refresh |
+}; |
+ |
+enum SyncDataType { |
+ synced_notification, |
+ app_info |
+}; |
+ |
+dictionary SyncData { |
+ SyncDataType datatype; |
+ // |dataItem| will be a binary protobuf which matches the backend |
+ // for the datatype. |
+ ArrayBuffer dataItem; |
+}; |
+ |
+// Datatype that represents a single sync change to a notification or an app |
+// info. |
+dictionary SyncChange { |
+ SyncData data; |
+ ChangeType changeType; |
+}; |
+ |
+// Gets an array of SyncChange objects representing the current sync state. |
+// chrome.runtime.lastError contains any errors; if that is the case then |
+// changes should be undefined. |
+callback GetInitialDataCallback = void (SyncData[] changes); |
+// Called on completion or error of the sync operation. lastError contains an |
+// error message if required. |
+callback SyncOperationCallback = void (); |
+ |
+interface Functions { |
+ |
+ // Gets all data from sync representing the current state (for use at |
+ // startup). This returns both Synced Notifications and AppInfos (with the |
+ // datatype enum set appropriately). Can return undefined, in which case |
+ // LastError will be set. This means sync is unavailable at this time. |
+ static void getInitialData(SyncDataType type, |
+ GetInitialDataCallback callback); |
+ |
+ // Sends a changed (read state) notification back up to sync. To keep the |
+ // sync from needing to understand the protocol, we send the whole object, |
+ // not just the new read state. |
+ static void updateNotification(ArrayBuffer changedNotification, |
+ SyncOperationCallback callback); |
+ |
+ // Sets the (e.g.) Locale and DPI scale factor and list of sending services, |
+ // encoded as a binary protobuf. Sync will persist these values for this |
+ // and future sessions. |
+ static void setRenderContext(RefreshRequest refresh, |
+ ArrayBuffer dataTypeContext, |
+ SyncOperationCallback callback); |
+ |
+}; |
+ |
+interface Events { |
+ // Called by sync when we get new notifications or app infos from the |
+ // server. |
+ static void onDataChanges(SyncChange[] changes); |
+ |
+ // Called by sync when sync becomes available. This can be used to get the |
+ // initial data for the app as soon as sync starts up, even if that is not |
+ // soon after chrome startup. |
+ static void onSyncStartup(); |
+}; |
+ |
+}; |