PlusAddressSyncBridge skeleton

Creates a PlusAddressSyncBridge responsible for PLUS_ADDRESS. No
implementation is added yet.
The sync bridge intends to use the Web Data SQLite database as its
storage layer. To easily update entity and metadata in the same
transaction, the bridge operates on the DB's sequence.

PlusAddressSyncBridge is owned by PlusAddressWebDataService, which
itself is owned by a keyed service. Because PlusAddressWebDataService
lives on the UI thread, special care is needed to construct and destroy
the sync bridge on the DB sequence. This is done by defining
PlusAddressWebDataService::SyncBridgeDBSequenceWrapper as a
base::RefCountedDeleteOnSequence<>, that ensures deletion happens on the
DB sequence (if PlusAddressWebDataService is destroyed before the DB
sequence, ownership is briefly transferred to that sequence).
For construction of PlusAddressSyncBridge, PlusAddressWebDataService
posts a task on the DB sequence.

To register the controller for the sync bridge in
SyncApiComponentFactoryImpl, the PlusAddressWebDataService is injected
into it. A ProxyModelTypeControllerDelegate is used to forward calls to
the DB sequence.

Instantiating the controller and constructing the sync bridge is guarded
behind a new kSyncPlusAddress feature flag.

Bug: b/322147254
Change-Id: Ia268eade49a4c1a2e3ce4e93fe06175d5ceb9be0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5344789
Reviewed-by: Jan Keitel <[email protected]>
Commit-Queue: Florian Leimgruber <[email protected]>
Reviewed-by: Peter Kasting <[email protected]>
Reviewed-by: Rohit Rao <[email protected]>
Reviewed-by: Rushan Suleymanov <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1272052}
22 files changed
tree: af247ff46bd15da87c11955c63f4c6486d9398e6
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. codelabs/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia_web/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. media/
  31. mojo/
  32. native_client_sdk/
  33. net/
  34. pdf/
  35. ppapi/
  36. printing/
  37. remoting/
  38. rlz/
  39. sandbox/
  40. services/
  41. skia/
  42. sql/
  43. storage/
  44. styleguide/
  45. testing/
  46. third_party/
  47. tools/
  48. ui/
  49. url/
  50. webkit/
  51. .clang-format
  52. .clang-tidy
  53. .clangd
  54. .eslintrc.js
  55. .git-blame-ignore-revs
  56. .gitallowed
  57. .gitattributes
  58. .gitignore
  59. .gitmodules
  60. .gn
  61. .mailmap
  62. .rustfmt.toml
  63. .vpython3
  64. .yapfignore
  65. ATL_OWNERS
  66. AUTHORS
  67. BUILD.gn
  68. CODE_OF_CONDUCT.md
  69. codereview.settings
  70. DEPS
  71. DIR_METADATA
  72. LICENSE
  73. LICENSE.chromium_os
  74. OWNERS
  75. PRESUBMIT.py
  76. PRESUBMIT_test.py
  77. PRESUBMIT_test_mocks.py
  78. README.md
  79. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure.

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.

If you found a bug, please file it at https://crbug.com/new.