Fenced Frames: Introduce HTMLFencedFrameElement and runtime flags

This CL does the following:
  1. Introduces a Blink base::Feature for Fenced Frames that is by
     default enabled
  2. Introduces an experimental RuntimeEnabledFeature for FencedFrames
     that is able to be enabled via origin trial, only when the
     base::Feature in (1) is also enabled (therefore, (1) can act as a
     Finch-able kill switch)
  3. Introduces the HTMLFencedFrameElement object which implements the
     shell of <fencedframe> with no underlying frame at the moment. The
     element is exposed via the runtime enabled feature, which as
     mentioned, relies on the base::Feature.

The HTMLFencedFrameElement in this CL is just a basic empty element that
supports the `src` attribute. It is not formally a frame owner element
yet, but will be made one in a subsequent CL.

Design doc:
https://docs.google.com/document/d/1HAU9IiHZU4KBPC_rEk3BQYrWTK50PdNGg8CcHhVLXig/edit#heading=h.r8wsl875l7ep

Intent To Prototype:
https://groups.google.com/u/1/a/chromium.org/g/blink-dev/c/Ko9UXQYPgUE

Bug: 1123606
Change-Id: I909310667ae8f7b1c5466e5659672146073f855f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2785859
Commit-Queue: Dominic Farolino <dom@chromium.org>
Reviewed-by: Shivani Sharma <shivanisha@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#878657}
23 files changed
tree: f42e82dc837391777e9d567a2b8a8c6c6712cd09
  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.

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.