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 theUserSelectableTypeenum, 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
DataTypeControllerinCommonControllerBuilderor, for non-iOS platforms,ChromeSyncControllerBuilder. Use a trivial implementation ofDataTypeSyncBridgefor 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/OWNERSto 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.