[NTP Theme] Add Chrome Colors bottom sheet

This CL introduces the Chrome Colors bottom sheet, featuring a
RecyclerView designed with these key requirements:

1. Dynamic Width: The color grid's width precisely matches the switch
above it, up to a maximum of 504dp.

2. Adaptive Columns: The grid displays the maximum fit columns,
automatically adjusting on device rotation.

3. Horizontal Centering: The entire color palette block (max 504dp
width) remains perfectly centered horizontally, regardless of column
count.

4. Consistent Spacing: A uniform 24dp gap is maintained between all
color palette (horizontal/vertical). The first and last columns have a
12dp margin relative to the switch's width or the 504dp maximum.

Technical & Spacing Details:

The grid's maximum width is capped at 504dp. This value is derived from
the space needed to display a full row of 7 items, based on the
component dimensions:

(7 items × 48dp) + (6 gaps × 24dp) + (2 outer margins × 12dp) = 504dp

The spacing model creates a uniform 24dp gap between all color palettes,
with a 12dp margin on the outside edges of the grid.

The change of the UI is shown in the following doc:
https://docs.google.com/document/d/1bMRVyyqOd0-cAmyTbL9IhKNU9uSvDdpdCngSzSXIHnk/edit?tab=t.0#bookmark=id.gse8zunxqjiy

Based on the log, the customized RecyclerView's `onMeasure` method is
called once when the bottom sheet is initially opened, and it's not
called during scrolling. When the device orientation changes,
`onMeasure` is called exactly five times. However, by using
mLastRecyclerViewWidth, the maxSpanCount is calculated just once after
the orientation change, and scrolling does not trigger subsequent
`onMeasure` calls. Here are the logs demonstrating this.
https://drive.google.com/file/d/1D5OAkhjH5hJ2GvXvDUQXK7MCmvOCGdGe/view?usp=sharing&resourcekey=0-tv_Rhdy_T6ZkHkcfFFbtkw

Skip-Translation-Screenshots-Check: True
Bug: 421436204
Change-Id: I9e206282517c94ae394e9a7e063fd03f3143b0dc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6793165
Commit-Queue: Yanling Hu <yanlinghu@google.com>
Reviewed-by: Xi Han <hanxi@chromium.org>
Reviewed-by: Xinyi Ji <xinyiji@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1501027}
14 files changed
tree: 14edf5bab2fa5119179ccf0cce43e92afa81eb0b
  1. .gemini/
  2. .github/
  3. agents/
  4. android_webview/
  5. apps/
  6. ash/
  7. base/
  8. build/
  9. build_overrides/
  10. buildtools/
  11. cc/
  12. chrome/
  13. chromecast/
  14. chromeos/
  15. codelabs/
  16. components/
  17. content/
  18. crypto/
  19. dbus/
  20. device/
  21. docs/
  22. extensions/
  23. fuchsia_web/
  24. gin/
  25. google_apis/
  26. gpu/
  27. headless/
  28. infra/
  29. ios/
  30. ipc/
  31. media/
  32. mojo/
  33. net/
  34. pdf/
  35. printing/
  36. remoting/
  37. rlz/
  38. sandbox/
  39. services/
  40. skia/
  41. sql/
  42. storage/
  43. styleguide/
  44. testing/
  45. third_party/
  46. tools/
  47. ui/
  48. url/
  49. webkit/
  50. .clang-format
  51. .clang-tidy
  52. .clangd
  53. .cursorignore
  54. .geminiignore
  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. CPPLINT.cfg
  71. CRYPTO_OWNERS
  72. DEPS
  73. DIR_METADATA
  74. LICENSE
  75. LICENSE.chromium_os
  76. OWNERS
  77. PRESUBMIT.py
  78. PRESUBMIT_test.py
  79. PRESUBMIT_test_mocks.py
  80. README.md
  81. SECURITY_OWNERS
  82. 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.