Architecture¶
CloudSync offers functionality similar to Firefox Sync for data sources. Third-party addons (sync adapters) consume local data, send and receive updates from the cloud, and merge remote data.
Files¶
- CloudSync.jsm
- Main module; Includes other modules and exposes them.
- CloudSyncAdapters.jsm
- Provides an API for addons to register themselves. Will be used to list available adapters and to notify adapters when sync operations are requested manually by the user.
- CloudSyncBookmarks.jsm
- Provides operations for interacting with bookmarks.
- CloudSyncBookmarksFolderCache.jsm
- Implements a cache used to store folder hierarchy for filtering bookmark events.
- CloudSyncEventSource.jsm
- Implements an event emitter. Used to provide addEventListener and removeEventListener for tabs and bookmarks.
- CloudSyncLocal.jsm
- Provides information about the local device, such as name and a unique id.
- CloudSyncPlacesWrapper.jsm
- Wraps parts of the Places API in promises. Some methods are implemented to be asynchronous where they are not in the places API.
- CloudSyncTabs.jsm
- Provides operations for fetching local tabs and for populating the about:sync-tabs page.
Data Sources¶
CloudSync provides data for tabs and bookmarks. For tabs, local open pages can be enumerated and remote tabs can be merged for displaying in about:sync-tabs. For bookmarks, updates are tracked for a named folder (given by each adapter) and handled by callbacks registered using addEventListener, and remote changes can be merged into the local database.
Versioning¶
The API carries an integer version number (clouySync.version). Data records are versioned separately and individually.