gl: x11: Extract x11 bits guarded by USE_X11.

This is a clean up of ui/gl, which goal is to get
rid of USE_X11 guards and place the code to corresponding
x11 source/header files so that ozone/x11, which is not
guarded by USE_X11, can utilize the same classes.

In this CL, I moved all X11 code to gl_surface_gl_x11,
and also created a utility that each platform can
implement to provide custom values for display attributes,
alpha and buffer size.

Also, I had to add a singleton with an optional interface that is
set in ui/gl/init. The reason why I decided to do it like that
is that we need X11 to set some x11 specific egl attributes.
While it could have been not a problem to have just utility methods
inside ui/gl for x11 and stub for others, it's a problem for ozone
as we can't depend on ui/ozone from ui/gl. Thus, we have a singleton
interface in ui/gl, which is then set in ui/gl/init right before
display initialization.

R=backer@chromium.org

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