Changes

Jump to: navigation, search

CloudServices/Sync/FxSync/Developer/ClientAPI

267 bytes added, 22:57, 21 February 2011
Overview
This page describes how to the client-side Sync API for sync engines (and their helper objects). The focus is on using this API to create a new sync engine to synchronize a new data type. The data type can be anything that extension JS code has access to through any Mozilla API; this means this page must of necessity be pretty vague about reading and writing the underlying data. You'll have to fill in those blanks yourself. Try browsing the [link] xpcom documentation to find out how to get at the many types of useful data that Mozilla stores.
To sync a new data type, you'll need to write an engine object that extends the base <tt>SyncEngine</tt> object; you'll also need to extend three helper objects. Here are the classes base implementations you need to extend, and the files in which they're defined:
# <tt>CryptoWrapper</tt>, in <tt>services/sync/modules/record.js</tt>
# <tt>SyncEngine</tt>, <tt>Store</tt>, <tt>Tracker</tt> in <tt>services/sync/modules/engines.js</tt>
# So to start out, import these files at the top of your JS module. We're also going to import <tt>CryptoWrapperutil.js</tt>, in as it contains many useful helpers. <ttpre> const Cu = Components.utils; Cu.import("resource://services-sync/engines.js"); Cu.import("resource://services-sync/modulesrecord.js"); Cu.import("resource://recordservices-sync/util.js");</ttpre>
It will be very helpful to look at the existing sync engines -- such as the one for bookmarks and the one for history -- and their helper classes, for guidance. You can find these files at:
* <tt>services/sync/modules/engines/bookmarks.js</tt> -- the Record implementations for the various subtypes of bookmarks and the <tt>BookmarkEngine</tt>, <tt>BookmarkStore</tt>, and <tt>BookmarkTracker</tt>.
* <tt>services/sync/modules/engines/history.js</tt> -- the <tt>HistoryRec</tt>,<tt>HistoryEngine</tt>, <tt>HistoryStore</tt>, and <tt>HistoryTracker</tt>.
 
After implementing your objects, you'll have to register them with the Sync service.
== Writing a Record object ==
Canmove, confirm
725
edits

Navigation menu