[sync] Remove GetSyncableServiceForType() from SyncClient

This historic mechanism to inject dependencies into ProfileSyncService
doesn't belong in SyncClient (dependencies to core sync logic / engine
itself), and it's questionable whether it should remain in this form in
BrowserSyncClient, where feature-specific dependencies are injected, and
where multiple similar approaches coexist.

Arguably, the most elegant and universal way to inject a dependency
to a sync controller is to have full access to the KeyedService that
owns the local model. Most controllers are simple and don't actually
need this: all they need is a SyncableService or
ModelTypeControllerDelegate. However, that introduces code
inconsistencies that can be confusing.

In this patch, the approach is unified for the remaining
SyncableService types, after migrating history delete directives and
preferences). The corresponding keyed services are directly injected via
BrowserSyncClient and hence SyncClient::GetSyncableServiceForType() can
be deleted.

Change-Id: I8e80482e8657624dc7c1e15b6bcf0409ae4d1336
Bug: 915154
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2463617
Reviewed-by: Marc Treib <[email protected]>
Commit-Queue: Mikel Astiz <[email protected]>
Cr-Commit-Position: refs/heads/master@{#816550}
14 files changed
tree: ab6e014fd9a1e05266904eb5fc4c26b0adaadb30
  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. cloud_print/
  13. codelabs/
  14. components/
  15. content/
  16. courgette/
  17. crypto/
  18. dbus/
  19. device/
  20. docs/
  21. extensions/
  22. fuchsia/
  23. gin/
  24. google_apis/
  25. google_update/
  26. gpu/
  27. headless/
  28. infra/
  29. ios/
  30. ipc/
  31. jingle/
  32. media/
  33. mojo/
  34. native_client_sdk/
  35. net/
  36. pdf/
  37. ppapi/
  38. printing/
  39. remoting/
  40. rlz/
  41. sandbox/
  42. services/
  43. skia/
  44. sql/
  45. storage/
  46. styleguide/
  47. testing/
  48. third_party/
  49. tools/
  50. ui/
  51. url/
  52. weblayer/
  53. .clang-format
  54. .clang-tidy
  55. .eslintrc.js
  56. .git-blame-ignore-revs
  57. .gitattributes
  58. .gitignore
  59. .gn
  60. .vpython
  61. .vpython3
  62. .yapfignore
  63. AUTHORS
  64. BUILD.gn
  65. CODE_OF_CONDUCT.md
  66. codereview.settings
  67. DEPS
  68. DIR_METADATA
  69. ENG_REVIEW_OWNERS
  70. LICENSE
  71. LICENSE.chromium_os
  72. OWNERS
  73. PRESUBMIT.py
  74. PRESUBMIT_test.py
  75. PRESUBMIT_test_mocks.py
  76. README.md
  77. 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.

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.