[sync] Rewrite setSyncEncryption() chrome://settings JS API

This API was called when the user created a new sync encryption passphrase
or entered an existing one. This CL improves both its semantics and
implementation.
- Instead of having a set_new_passphrase flag to distinguish new/existing
passphrases, the API is split in set[Encryption/Decryption]Passphrase().
The implementations are mostly disjoint and there's a clear separation
now (the old code would even ignore set_new_passphrase sometimes). This
also mimics the signatures from other layers.
- As per the linked bug, the APIs now receive only what's necessary (the
passphrase string) instead of an entire SyncPrefs object.
- Following a suggestion from an old TODO [1], the "return values" are
now simply whether the passphrase was successfully set or not, instead
of returning what the behavior of the UI should be (PageStatus). This
makes them less coupled with the existing callers.
- The Profile.SyncCustomize histogram is now recorded closer to where the
passphrase updates happen. This may ultimately cause changes in the
metric, but at least something meaningful will be recorded now. Seems the
histogram wasn't actively watched anyways (it expired twice). The obscure
buckets SYNC_ENCRYPT and SYNC_PASSPHRASE are also respectively renamed to
SYNC_CREATED_NEW_PASSPHRASE and SYNC_ENTERED_EXISTING_PASSPHRASE.

[1] https://source.chromium.org/chromium/chromium/src/+/b44f7fc1be34f23c0e052cac0554675eb34b2272:chrome/browser/ui/webui/settings/people_handler.cc;l=593

Change-Id: Id820d08c89fb5d79ffbc62ff9c4f6534c24df4cd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2556961
Commit-Queue: Victor Vianna <victorvianna@google.com>
Reviewed-by: Monica Basta <msalama@chromium.org>
Reviewed-by: David Roger <droger@chromium.org>
Reviewed-by: Mikel Astiz <mastiz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#831393}
10 files changed
tree: 0a44efdc7d8b2ae83fdd814fa2b9ca8e94a4e05f
  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.