Reland "Implement Fluent thumb painting on compositor thread."

The CL was reverted due to sanitizer tests failing. The cause for the
failure was due to not initializing two new variable in
in some tests. To see the fix, please see the changes from
patch 1 to 4 in this CL. I also scheduled linux and windows msan and
asan bot test runs in this CL.
Most *san runs I've scheduled are failing due to infra failures, but
linux_chromium_msan_rel_ng, which was one of the original failing
builds has passed.

This is a reland of commit d264772d90b43ac3aecb274963b63841ed264efd

Original change's description:
> Implement Fluent thumb painting on compositor thread.
>
> This CL reworks the way Fluent scrollbar thumbs are painted. The thumb
> for composited scrollbars will now be painted entirely in the compositor
> thread by creating a SolidColorDrawQuad and applying a mask to it to
> get the desired rounded corners. Drawing the scrollbar this way we
> avoid generating a bitmap for the thumb and re-painting every time
> the thumb's state changes (mouse over, press, overlay minimal mode,
> etc.).
>
> In order to get the correct color to the compositor thread a new
> function was declared to query the thumb's color from the Scrollbar,
> which is piped from the NativeTheme through the ScrollbarTheme.
> This function could easily be generalized to return the color of
> different parts, but since that behavior is not needed at the moment
> the function is scoped to scrollbar thumbs.
>
>
> Bug: 343942712
> Change-Id: I3fc35a13c01cb60d72fee1949a38adeb6fe8996a
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5595110
> Reviewed-by: Peter Kasting <pkasting@chromium.org>
> Reviewed-by: Dave Tapuska <dtapuska@chromium.org>
> Commit-Queue: Gaston Rodriguez <gastonr@microsoft.com>
> Reviewed-by: Xianzhu Wang <wangxianzhu@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1316727}

Bug: 343942712
Change-Id: Ic32e20d3fe97dfe7993e60b99ea5c8ed5129ca5e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5642992
Reviewed-by: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: Yaroslav Shalivskyy <yshalivskyy@microsoft.com>
Reviewed-by: Xianzhu Wang <wangxianzhu@chromium.org>
Reviewed-by: Peter Kasting <pkasting@chromium.org>
Commit-Queue: Gaston Rodriguez <gastonr@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1320008}
27 files changed
tree: caac0e172e34fd37bff2772eafe6212cc23d5773
  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. CPPLINT.cfg
  71. DEPS
  72. DIR_METADATA
  73. LICENSE
  74. LICENSE.chromium_os
  75. OWNERS
  76. PRESUBMIT.py
  77. PRESUBMIT_test.py
  78. PRESUBMIT_test_mocks.py
  79. README.md
  80. 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.