the Chromium logo

The Chromium Projects

Sync Integration Checklist

If you want to integrate with our infrastructure, please follow these steps:

  1. 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
  2. Please go over Chrome Sync's Model API to get a better understanding of how sync works.
  3. [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.
  4. Fill out the *_specifics.proto file generated by the script in CL #1.
  5. 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 the UserSelectableType enum, add a preference for tracking whether the type is enabled, and map the type to the pref in GetPrefNameForType. Add the toggle UI for each supported platform:
  6. Register a DataTypeController in CommonControllerBuilder or platform-specific equivalent in the //chrome or //ios implementations of SyncClient::CreateDataTypeControllers. Use a trivial implementation of DataTypeSyncBridge 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.
  7. Over multiple CLs, implement the actual data type logic in the bridge.
  8. Write some integration tests.
  9. While rolling out your new data type, keep the Sync team in the loop! E.g. CC your assigned champion on all Finch CLs.
  10. If you're a Googler, please fill out go/sync-integration-feedback.