// 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(); }; };