Sync Integration Checklist
If you want to integrate with our infrastructure, please follow these steps:
- Before starting any integration work, please reach out to us at chrome-sync-dev@google.com and share your plans / design doc! The Chrome Sync team will assign you a "champion" (primary contact person) to review your designs and code. If you're a Googler, please also file a bug via go/create-new-sync-data-type-bug
- Please go over Chrome Sync's Model API to get a better understanding of how sync works.
- [NEW!] For CL #1, run components/sync/bootstrap_new_data_type.sh. Given the data type name, this will generate a CL with a scaffold of the implementation and TODOs for what to do on the N-th CL. The next steps are listed below for completeness. After submitting this CL, there will be some server-side steps required, which should be discussed in the bug created above.
- Fill out the *_specifics.proto file generated by the script in CL #1.
- If your type should be controlled by an existing toggle in sync settings,
add it to
GetUserSelectableTypeInfo
. Otherwise, if the new type should have its own toggle, add an entry to theUserSelectableType
enum, add a preference for tracking whether the type is enabled, and map the type to the pref inGetPrefNameForType
. Add the toggle UI for each supported platform: - Register a
DataTypeController
inCommonControllerBuilder
or platform-specific equivalent in the //chrome or //ios implementations ofSyncClient::CreateDataTypeControllers
. Use a trivial implementation ofDataTypeSyncBridge
for now.- Add the sync team as co-owners of the bridge (and any associated
helpers, if appropriate), by adding something like
per-file *sync_bridge*=file://components/sync/OWNERS
to your OWNERS file. This allows us to do refactorings that touch all the bridges without needing reviews from tens of owners.
- Add the sync team as co-owners of the bridge (and any associated
helpers, if appropriate), by adding something like
- Over multiple CLs, implement the actual data type logic in the bridge.
- Refer to Implementing DataTypeSyncBridge for details on the changes required.
- Write some integration tests.
- While rolling out your new data type, keep the Sync team in the loop! E.g. CC your assigned champion on all Finch CLs.
- If you're a Googler, please fill out go/sync-integration-feedback.