Ver código fonte

Meta: Add gn build rules for LibWeb

Andrew Kaster 2 anos atrás
pai
commit
85c8cd5205
60 arquivos alterados com 1966 adições e 0 exclusões
  1. 64 0
      Meta/gn/build/embed_as_string_view.gni
  2. 38 0
      Meta/gn/build/embed_as_string_view.py
  3. 16 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/ARIA/BUILD.gn
  4. 285 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/BUILD.gn
  5. 23 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Bindings/BUILD.gn
  6. 60 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/CSS/BUILD.gn
  7. 15 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/CSS/Parser/BUILD.gn
  8. 47 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/CSS/StyleValues/BUILD.gn
  9. 8 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/CSS/SyntaxHighlighter/BUILD.gn
  10. 10 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Cookie/BUILD.gn
  11. 10 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Crypto/BUILD.gn
  12. 52 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/DOM/BUILD.gn
  13. 8 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/DOMParsing/BUILD.gn
  14. 8 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Encoding/BUILD.gn
  15. 18 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Fetch/BUILD.gn
  16. 10 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Fetch/Fetching/BUILD.gn
  17. 20 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Fetch/Infrastructure/BUILD.gn
  18. 12 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/BUILD.gn
  19. 9 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/FileAPI/BUILD.gn
  20. 13 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Geometry/BUILD.gn
  21. 159 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/BUILD.gn
  22. 10 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/Canvas/BUILD.gn
  23. 8 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/CrossOrigin/BUILD.gn
  24. 9 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/CustomElements/BUILD.gn
  25. 9 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/EventLoop/BUILD.gn
  26. 13 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/Parser/BUILD.gn
  27. 15 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/Scripting/BUILD.gn
  28. 8 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/SyntaxHighlighter/BUILD.gn
  29. 8 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/HighResolutionTime/BUILD.gn
  30. 10 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Infra/BUILD.gn
  31. 8 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/IntersectionObserver/BUILD.gn
  32. 51 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Layout/BUILD.gn
  33. 13 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Loader/BUILD.gn
  34. 5 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/MimeSniff/BUILD.gn
  35. 8 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/NavigationTiming/BUILD.gn
  36. 12 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Page/BUILD.gn
  37. 39 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Painting/BUILD.gn
  38. 8 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/PerformanceTimeline/BUILD.gn
  39. 5 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/PermissionsPolicy/BUILD.gn
  40. 14 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Platform/BUILD.gn
  41. 8 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/ReferrerPolicy/BUILD.gn
  42. 5 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/RequestIdleCallback/BUILD.gn
  43. 5 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/ResizeObserver/BUILD.gn
  44. 5 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/SRI/BUILD.gn
  45. 38 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/SVG/BUILD.gn
  46. 5 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/SecureContexts/BUILD.gn
  47. 5 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Selection/BUILD.gn
  48. 19 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/Streams/BUILD.gn
  49. 15 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/UIEvents/BUILD.gn
  50. 9 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/URL/BUILD.gn
  51. 8 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/UserTiming/BUILD.gn
  52. 11 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/WebAssembly/BUILD.gn
  53. 15 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/WebDriver/BUILD.gn
  54. 11 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/WebGL/BUILD.gn
  55. 11 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/WebIDL/BUILD.gn
  56. 5 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/WebSockets/BUILD.gn
  57. 13 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/XHR/BUILD.gn
  58. 5 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/XML/BUILD.gn
  59. 367 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/generate_idl_bindings.gni
  60. 268 0
      Meta/gn/secondary/Userland/Libraries/LibWeb/idl_files.gni

+ 64 - 0
Meta/gn/build/embed_as_string_view.gni

@@ -0,0 +1,64 @@
+# This file introduces a template for calling embed_as_string_view.py.
+#
+# embed_as_string_view behaves like C++23 #embed, converting an input file into
+# an AK::StringView literal rather than a C-string literal. The literal will
+# be placed into a global variable, optionally with a namespace wrapping it.
+#
+# Note that the file must not contain any tokens that need to be escaped
+# in C++, or the script will fail to produce a valid C++ translation unit.
+#
+# Parameters:
+#
+#   input (required) [string]
+#
+#   output (required) [string]
+#
+#   variable_name (required) [string]
+#
+#   namespace (optional) [string]
+#
+# Example use:
+#
+#   embed_as_string_view("embed_my_file") {
+#     input = "MyFile.txt"
+#     output = "$root_gen_dir/MyDirectory/MyFile.cpp"
+#     variable_name = "my_file_contents"
+#     namespace = "My::NS"
+#   }
+
+template("embed_as_string_view") {
+  assert(defined(invoker.input), "must set 'input' in $target_name")
+  assert(defined(invoker.output), "must set 'output' in $target_name")
+  assert(defined(invoker.variable_name),
+         "must set 'variable_name' in $target_name")
+
+  action(target_name) {
+    script = "//Meta/gn/build/embed_as_string_view.py"
+
+    sources = [ invoker.input ]
+    outputs = [ invoker.output ]
+    args = [
+      "-o",
+      rebase_path(outputs[0], root_build_dir),
+      "-n",
+      invoker.variable_name,
+    ]
+    if (defined(invoker.namespace)) {
+      args += [
+        "-s",
+        invoker.namespace,
+      ]
+    }
+    args += [ rebase_path(sources[0], root_build_dir) ]
+
+    forward_variables_from(invoker,
+                           [
+                             "configs",
+                             "deps",
+                             "public_configs",
+                             "public_deps",
+                             "testonly",
+                             "visibility",
+                           ])
+  }
+}

+ 38 - 0
Meta/gn/build/embed_as_string_view.py

@@ -0,0 +1,38 @@
+#!/usr/bin/env python3
+r"""
+    Embeds a file into a StringView, a la #embed from C++23
+"""
+
+import argparse
+import sys
+
+
+def main():
+    parser = argparse.ArgumentParser(
+                 epilog=__doc__,
+                 formatter_class=argparse.RawDescriptionHelpFormatter)
+    parser.add_argument('input', help='input file to stringify')
+    parser.add_argument('-o', '--output', required=True,
+                        help='output file')
+    parser.add_argument('-n', '--variable-name', required=True,
+                        help='name of the C++ variable')
+    parser.add_argument('-s', '--namespace', required=False,
+                        help='C++ namespace to put the string into')
+    args = parser.parse_args()
+
+    with open(args.output, 'w') as f:
+        f.write("#include <AK/StringView.h>\n")
+        if args.namespace:
+            f.write(f"namespace {args.namespace} {{\n")
+        f.write(f"extern StringView {args.variable_name};\n")
+        f.write(f"StringView {args.variable_name} = R\"~~~(")
+        with open(args.input, 'r') as input:
+            for line in input.readlines():
+                f.write(f"{line}")
+        f.write(")~~~\"sv;\n")
+        if args.namespace:
+            f.write("}\n")
+
+
+if __name__ == '__main__':
+    sys.exit(main())

+ 16 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/ARIA/BUILD.gn

@@ -0,0 +1,16 @@
+source_set("ARIA") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "AriaData.cpp",
+    "AriaData.h",
+    "ARIAMixin.cpp",
+    "ARIAMixin.h",
+    "RoleType.cpp",
+    "RoleType.h",
+    "Roles.cpp",
+    "Roles.h",
+    "StateAndProperties.cpp",
+    "StateAndProperties.h",
+  ]
+}

+ 285 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/BUILD.gn

@@ -0,0 +1,285 @@
+import("//Meta/gn/build/compiled_action.gni")
+import("//Meta/gn/build/embed_as_string_view.gni")
+import("generate_idl_bindings.gni")
+import("idl_files.gni")
+
+generate_idl_bindings("standard_idl_bindings") {
+  idl_list = standard_idl_files
+  type = "standard"
+}
+
+generate_idl_bindings("iterable_idl_bindings") {
+  idl_list = iterable_idl_files
+  type = "iterable"
+}
+
+generate_idl_bindings("namespace_idl_bindings") {
+  idl_list = namespace_idl_files
+  type = "namespace"
+}
+
+generate_idl_bindings("global_idl_bindings") {
+  idl_list = global_idl_files
+  type = "global"
+}
+
+generate_idl_targets = [
+  ":standard_idl_bindings_generated",
+  ":iterable_idl_bindings_generated",
+  ":namespace_idl_bindings_generated",
+  ":global_idl_bindings_generated",
+]
+
+idl_sources_targets = [
+  ":standard_idl_bindings_sources",
+  ":iterable_idl_bindings_sources",
+  ":namespace_idl_bindings_sources",
+  ":global_idl_bindings_sources",
+]
+
+compiled_action("generate_window_or_worker_interfaces") {
+  tool = "//Meta/Lagom/Tools/CodeGenerators/LibWeb:GenerateWindowOrWorkerInterfaces"
+  inputs = standard_idl_files + iterable_idl_files + namespace_idl_files +
+           global_idl_files
+  outputs = [
+    "$target_gen_dir/Bindings/Forward.h",
+    "$target_gen_dir/Bindings/IntrinsicDefinitions.cpp",
+    "$target_gen_dir/Bindings/DedicatedWorkerExposedInterfaces.cpp",
+    "$target_gen_dir/Bindings/DedicatedWorkerExposedInterfaces.h",
+    "$target_gen_dir/Bindings/SharedWorkerExposedInterfaces.cpp",
+    "$target_gen_dir/Bindings/SharedWorkerExposedInterfaces.h",
+    "$target_gen_dir/Bindings/WindowExposedInterfaces.cpp",
+    "$target_gen_dir/Bindings/WindowExposedInterfaces.h",
+  ]
+  args = [
+    "-o",
+    rebase_path("$target_gen_dir/Bindings", root_build_dir),
+    "-b",
+    rebase_path("//Userland/Libraries/LibWeb", root_build_dir),
+  ]
+  foreach(idl, inputs) {
+    args += [ rebase_path(idl, root_build_dir) ]
+  }
+}
+
+compiled_action("generate_aria_roles") {
+  tool = "//Meta/Lagom/Tools/CodeGenerators/LibWeb:GenerateAriaRoles"
+  inputs = [ "ARIA/AriaRoles.json" ]
+  outputs = [
+    "$target_gen_dir/ARIA/AriaRoles.h",
+    "$target_gen_dir/ARIA/AriaRoles.cpp"
+  ]
+  args = [
+    "-h",
+    rebase_path(outputs[0], root_build_dir),
+    "-c",
+    rebase_path(outputs[1], root_build_dir),
+    "-j",
+    rebase_path(inputs[0], root_build_dir)
+  ]
+}
+
+compiled_action("generate_css_enums") {
+  tool = "//Meta/Lagom/Tools/CodeGenerators/LibWeb:GenerateCSSEnums"
+  inputs = [ "CSS/Enums.json" ]
+  outputs = [
+    "$target_gen_dir/CSS/Enums.h",
+    "$target_gen_dir/CSS/Enums.cpp",
+  ]
+  args = [
+    "-h",
+    rebase_path(outputs[0], root_build_dir),
+    "-c",
+    rebase_path(outputs[1], root_build_dir),
+    "-j",
+    rebase_path(inputs[0], root_build_dir),
+  ]
+}
+
+compiled_action("generate_css_media_feature_id") {
+  tool = "//Meta/Lagom/Tools/CodeGenerators/LibWeb:GenerateCSSMediaFeatureID"
+  inputs = [ "CSS/MediaFeatures.json" ]
+  outputs = [
+    "$target_gen_dir/CSS/MediaFeatureID.h",
+    "$target_gen_dir/CSS/MediaFeatureID.cpp",
+  ]
+  args = [
+    "-h",
+    rebase_path(outputs[0], root_build_dir),
+    "-c",
+    rebase_path(outputs[1], root_build_dir),
+    "-j",
+    rebase_path(inputs[0], root_build_dir),
+  ]
+}
+
+compiled_action("generate_css_property_id") {
+  tool = "//Meta/Lagom/Tools/CodeGenerators/LibWeb:GenerateCSSPropertyID"
+  inputs = [ "CSS/Properties.json" ]
+  outputs = [
+    "$target_gen_dir/CSS/PropertyID.h",
+    "$target_gen_dir/CSS/PropertyID.cpp",
+  ]
+  args = [
+    "-h",
+    rebase_path(outputs[0], root_build_dir),
+    "-c",
+    rebase_path(outputs[1], root_build_dir),
+    "-j",
+    rebase_path(inputs[0], root_build_dir),
+  ]
+}
+
+compiled_action("generate_css_transform_functions") {
+  tool =
+      "//Meta/Lagom/Tools/CodeGenerators/LibWeb:GenerateCSSTransformFunctions"
+  inputs = [ "CSS/TransformFunctions.json" ]
+  outputs = [
+    "$target_gen_dir/CSS/TransformFunctions.h",
+    "$target_gen_dir/CSS/TransformFunctions.cpp",
+  ]
+  args = [
+    "-h",
+    rebase_path(outputs[0], root_build_dir),
+    "-c",
+    rebase_path(outputs[1], root_build_dir),
+    "-j",
+    rebase_path(inputs[0], root_build_dir),
+  ]
+}
+
+compiled_action("generate_css_value_id") {
+  tool = "//Meta/Lagom/Tools/CodeGenerators/LibWeb:GenerateCSSValueID"
+  inputs = [ "CSS/Identifiers.json" ]
+  outputs = [
+    "$target_gen_dir/CSS/ValueID.h",
+    "$target_gen_dir/CSS/ValueID.cpp",
+  ]
+  args = [
+    "-h",
+    rebase_path(outputs[0], root_build_dir),
+    "-c",
+    rebase_path(outputs[1], root_build_dir),
+    "-j",
+    rebase_path(inputs[0], root_build_dir),
+  ]
+}
+
+embed_as_string_view("generate_default_stylesheet_source") {
+  input = "CSS/Default.css"
+  output = "$target_gen_dir/CSS/DefaultStyleSheetSource.cpp"
+  variable_name = "default_stylesheet_source"
+  namespace = "Web::CSS"
+}
+
+embed_as_string_view("generate_quirks_mode_stylesheet_source") {
+  input = "CSS/QuirksMode.css"
+  output = "$target_gen_dir/CSS/QuirksModeStyleSheetSource.cpp"
+  variable_name = "quirks_mode_stylesheet_source"
+  namespace = "Web::CSS"
+}
+
+source_set("all_generated") {
+  generated_deps = [
+    ":generate_aria_roles",
+    ":generate_css_enums",
+    ":generate_css_media_feature_id",
+    ":generate_css_property_id",
+    ":generate_css_transform_functions",
+    ":generate_css_value_id",
+    ":generate_default_stylesheet_source",
+    ":generate_quirks_mode_stylesheet_source",
+    ":generate_window_or_worker_interfaces",
+  ]
+  configs += [ ":configs" ]
+  sources = []
+  foreach(dep, generated_deps) {
+    sources += get_target_outputs(dep)
+  }
+  deps = generated_deps + generate_idl_targets
+}
+
+config("configs") {
+  include_dirs = [
+    "//Userland/Libraries",
+    "$target_gen_dir/..",
+  ]
+  configs = [ "//AK:ak_headers" ]
+}
+
+shared_library("LibWeb") {
+  output_name = "web"
+  public_configs = [ ":configs" ]
+  sources = [
+    "Dump.cpp",
+    "FontCache.cpp",
+    "Namespace.cpp",
+  ]
+  deps = [
+           ":all_generated",
+           "ARIA",
+           "Bindings",
+           "CSS",
+           "Cookie",
+           "Crypto",
+           "DOM",
+           "DOMParsing",
+           "Encoding",
+           "Fetch",
+           "FileAPI",
+           "Geometry",
+           "HTML",
+           "HighResolutionTime",
+           "Infra",
+           "IntersectionObserver",
+           "Layout",
+           "Loader",
+           "MimeSniff",
+           "NavigationTiming",
+           "Page",
+           "Painting",
+           "PerformanceTimeline",
+           "PermissionsPolicy",
+           "Platform",
+           "ReferrerPolicy",
+           "RequestIdleCallback",
+           "ResizeObserver",
+           "SRI",
+           "SVG",
+           "SecureContexts",
+           "Selection",
+           "Streams",
+           "UIEvents",
+           "URL",
+           "UserTiming",
+           "WebAssembly",
+           "WebDriver",
+           "WebGL",
+           "WebIDL",
+           "WebSockets",
+           "XHR",
+           "XML",
+           "//AK",
+           "//Userland/Libraries/LibAudio",
+           "//Userland/Libraries/LibCore",
+           "//Userland/Libraries/LibCrypto",
+           "//Userland/Libraries/LibGL",
+           "//Userland/Libraries/LibGUI",
+           "//Userland/Libraries/LibGemini",
+           "//Userland/Libraries/LibGfx",
+           "//Userland/Libraries/LibHTTP",
+           "//Userland/Libraries/LibIDL",
+           "//Userland/Libraries/LibIPC",
+           "//Userland/Libraries/LibJS",
+           "//Userland/Libraries/LibLocale",
+           "//Userland/Libraries/LibMarkdown",
+           "//Userland/Libraries/LibRegex",
+           "//Userland/Libraries/LibSoftGPU",
+           "//Userland/Libraries/LibSyntax",
+           "//Userland/Libraries/LibTextCodec",
+           "//Userland/Libraries/LibUnicode",
+           "//Userland/Libraries/LibVideo",
+           "//Userland/Libraries/LibWasm",
+           "//Userland/Libraries/LibXML",
+         ] + idl_sources_targets
+}

+ 23 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Bindings/BUILD.gn

@@ -0,0 +1,23 @@
+source_set("Bindings") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "AudioConstructor.cpp",
+    "AudioConstructor.h",
+    "ExceptionOrUtils.h",
+    "HostDefined.cpp",
+    "HostDefined.h",
+    "ImageConstructor.cpp",
+    "ImageConstructor.h",
+    "Intrinsics.cpp",
+    "Intrinsics.h",
+    "LegacyPlatformObject.cpp",
+    "LegacyPlatformObject.h",
+    "MainThreadVM.cpp",
+    "MainThreadVM.h",
+    "OptionConstructor.cpp",
+    "OptionConstructor.h",
+    "PlatformObject.cpp",
+    "PlatformObject.h",
+  ]
+}

+ 60 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/CSS/BUILD.gn

@@ -0,0 +1,60 @@
+source_set("CSS") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [
+    "Parser",
+    "StyleValues",
+    "SyntaxHighlighter",
+    "//Userland/Libraries/LibWeb:all_generated",
+  ]
+  sources = [
+    "Angle.cpp",
+    "CSS.cpp",
+    "CSSConditionRule.cpp",
+    "CSSFontFaceRule.cpp",
+    "CSSGroupingRule.cpp",
+    "CSSImportRule.cpp",
+    "CSSKeyframeRule.cpp",
+    "CSSKeyframesRule.cpp",
+    "CSSMediaRule.cpp",
+    "CSSNumerictype.cpp",
+    "CSSRule.cpp",
+    "CSSRuleList.cpp",
+    "CSSStyleDeclaration.cpp",
+    "CSSStyleRule.cpp",
+    "CSSStyleSheet.cpp",
+    "CSSSupportsRule.cpp",
+    "CalculatedOr.cpp",
+    "Clip.cpp",
+    "Display.cpp",
+    "EdgeRect.cpp",
+    "FontFace.cpp",
+    "Frequency.cpp",
+    "GridTrackPlacement.cpp",
+    "GridTrackSize.cpp",
+    "Length.cpp",
+    "LengthBox.cpp",
+    "MediaList.cpp",
+    "MediaQuery.cpp",
+    "MediaQueryList.cpp",
+    "MediaQueryListEvent.cpp",
+    "PercentageOr.cpp",
+    "Position.cpp",
+    "PreferredColorScheme.cpp",
+    "Ratio.cpp",
+    "Resolution.cpp",
+    "ResolvedCSSStyleDeclaration.cpp",
+    "Screen.cpp",
+    "Selector.cpp",
+    "SelectorEngine.cpp",
+    "Serialize.cpp",
+    "Size.cpp",
+    "StyleComputer.cpp",
+    "StyleProperties.cpp",
+    "StyleProperty.cpp",
+    "StyleSheet.cpp",
+    "StyleSheetList.cpp",
+    "StyleValue.cpp",
+    "Supports.cpp",
+    "Time.cpp",
+  ]
+}

+ 15 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/CSS/Parser/BUILD.gn

@@ -0,0 +1,15 @@
+source_set("Parser") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "Block.cpp",
+    "ComponentValue.cpp",
+    "Declaration.cpp",
+    "DeclarationOrAtRule.cpp",
+    "Function.cpp",
+    "Parser.cpp",
+    "Rule.cpp",
+    "Token.cpp",
+    "Tokenizer.cpp",
+  ]
+}

+ 47 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/CSS/StyleValues/BUILD.gn

@@ -0,0 +1,47 @@
+source_set("StyleValues") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "AngleStyleValue.cpp",
+    "BackgroundRepeatStyleValue.cpp",
+    "BackgroundSizeStyleValue.cpp",
+    "BackgroundStyleValue.cpp",
+    "BorderRadiusShorthandStyleValue.cpp",
+    "BorderRadiusStyleValue.cpp",
+    "BorderStyleValue.cpp",
+    "CalculatedStyleValue.cpp",
+    "ColorStyleValue.cpp",
+    "CompositeStyleValue.cpp",
+    "ConicGradientStyleValue.cpp",
+    "ContentStyleValue.cpp",
+    "DisplayStyleValue.cpp",
+    "EdgeStyleValue.cpp",
+    "FilterValueListStyleValue.cpp",
+    "FlexFlowStyleValue.cpp",
+    "FlexStyleValue.cpp",
+    "FontStyleValue.cpp",
+    "GridAreaShorthandStyleValue.cpp",
+    "GridTemplateAreaStyleValue.cpp",
+    "GridTrackPlacementShorthandStyleValue.cpp",
+    "GridTrackPlacementStyleValue.cpp",
+    "GridTrackSizeListShorthandStyleValue.cpp",
+    "GridTrackSizeListStyleValue.cpp",
+    "IdentifierStyleValue.cpp",
+    "ImageStyleValue.cpp",
+    "IntegerStyleValue.cpp",
+    "LengthStyleValue.cpp",
+    "LinearGradientStyleValue.cpp",
+    "ListStyleStyleValue.cpp",
+    "NumberStyleValue.cpp",
+    "OverflowStyleValue.cpp",
+    "PlaceContentStyleValue.cpp",
+    "PositionStyleValue.cpp",
+    "RadialGradientStyleValue.cpp",
+    "RectStyleValue.cpp",
+    "ShadowStyleValue.cpp",
+    "StyleValueList.cpp",
+    "TextDecorationStyleValue.cpp",
+    "TransformationStyleValue.cpp",
+    "UnresolvedStyleValue.cpp",
+  ]
+}

+ 8 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/CSS/SyntaxHighlighter/BUILD.gn

@@ -0,0 +1,8 @@
+source_set("SyntaxHighlighter") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  include_dirs = [
+    "//Userland",  # For LibSyntax needing LibGUI needing WindowServer types
+  ]
+  sources = [ "SyntaxHighlighter.cpp" ]
+}

+ 10 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Cookie/BUILD.gn

@@ -0,0 +1,10 @@
+source_set("Cookie") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "Cookie.cpp",
+    "Cookie.h",
+    "ParsedCookie.cpp",
+    "ParsedCookie.h",
+  ]
+}

+ 10 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Crypto/BUILD.gn

@@ -0,0 +1,10 @@
+source_set("Crypto") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "Crypto.cpp",
+    "Crypto.h",
+    "SubtleCrypto.cpp",
+    "SubtleCrypto.h",
+  ]
+}

+ 52 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/DOM/BUILD.gn

@@ -0,0 +1,52 @@
+source_set("DOM") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "AbortController.cpp",
+    "AbortSignal.cpp",
+    "AbstractRange.cpp",
+    "AccessibilityTreeNode.cpp",
+    "Attr.cpp",
+    "CDATASection.cpp",
+    "CharacterData.cpp",
+    "Comment.cpp",
+    "CustomEvent.cpp",
+    "DOMEventListener.cpp",
+    "DOMImplementation.cpp",
+    "DOMTokenList.cpp",
+    "Document.cpp",
+    "DocumentFragment.cpp",
+    "DocumentLoadEventDelayer.cpp",
+    "DocumentLoading.cpp",
+    "DocumentObserver.cpp",
+    "DocumentType.cpp",
+    "Element.cpp",
+    "ElementFactory.cpp",
+    "Event.cpp",
+    "EventDispatcher.cpp",
+    "EventTarget.cpp",
+    "HTMLCollection.cpp",
+    "IDLEventListener.cpp",
+    "LiveNodeList.cpp",
+    "MutationObserver.cpp",
+    "MutationRecord.cpp",
+    "MutationType.cpp",
+    "NamedNodeMap.cpp",
+    "Node.cpp",
+    "NodeFilter.cpp",
+    "NodeIterator.cpp",
+    "NodeList.cpp",
+    "NodeOperations.cpp",
+    "ParentNode.cpp",
+    "Position.cpp",
+    "ProcessingInstruction.cpp",
+    "QualifiedName.cpp",
+    "Range.cpp",
+    "ShadowRoot.cpp",
+    "StaticNodeList.cpp",
+    "StaticRange.cpp",
+    "StyleElementUtils.cpp",
+    "Text.cpp",
+    "TreeWalker.cpp",
+  ]
+}

+ 8 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/DOMParsing/BUILD.gn

@@ -0,0 +1,8 @@
+source_set("DOMParsing") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "InnerHTML.cpp",
+    "XMLSerializer.cpp",
+  ]
+}

+ 8 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Encoding/BUILD.gn

@@ -0,0 +1,8 @@
+source_set("Encoding") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "TextDecoder.cpp",
+    "TextEncoder.cpp",
+  ]
+}

+ 18 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Fetch/BUILD.gn

@@ -0,0 +1,18 @@
+source_set("Fetch") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [
+    "Fetching",
+    "Infrastructure",
+    "//Userland/Libraries/LibWeb:all_generated",
+  ]
+  sources = [
+    "Body.cpp",
+    "BodyInit.cpp",
+    "Enums.cpp",
+    "FetchMethod.cpp",
+    "Headers.cpp",
+    "HeadersIterator.cpp",
+    "Request.cpp",
+    "Response.cpp",
+  ]
+}

+ 10 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Fetch/Fetching/BUILD.gn

@@ -0,0 +1,10 @@
+source_set("Fetching") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "Checks.cpp",
+    "Fetching.cpp",
+    "PendingResponse.cpp",
+    "RefCountedFlag.cpp",
+  ]
+}

+ 20 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Fetch/Infrastructure/BUILD.gn

@@ -0,0 +1,20 @@
+source_set("Infrastructure") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [
+    "HTTP",
+    "//Userland/Libraries/LibWeb:all_generated",
+  ]
+  sources = [
+    "ConnectionTimingInfo.cpp",
+    "FetchAlgorithms.cpp",
+    "FetchController.cpp",
+    "FetchParams.cpp",
+    "FetchTimingInfo.cpp",
+    "HTTP.cpp",
+    "MimeTypeBlocking.cpp",
+    "NoSniffBlocking.cpp",
+    "PortBlocking.cpp",
+    "Task.cpp",
+    "URL.cpp",
+  ]
+}

+ 12 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Fetch/Infrastructure/HTTP/BUILD.gn

@@ -0,0 +1,12 @@
+source_set("HTTP") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "Bodies.cpp",
+    "Headers.cpp",
+    "Methods.cpp",
+    "Requests.cpp",
+    "Responses.cpp",
+    "Statuses.cpp",
+  ]
+}

+ 9 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/FileAPI/BUILD.gn

@@ -0,0 +1,9 @@
+source_set("FileAPI") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "Blob.cpp",
+    "File.cpp",
+    "FileList.cpp",
+  ]
+}

+ 13 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Geometry/BUILD.gn

@@ -0,0 +1,13 @@
+source_set("Geometry") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "DOMMatrix.cpp",
+    "DOMMatrixReadOnly.cpp",
+    "DOMPoint.cpp",
+    "DOMPointReadOnly.cpp",
+    "DOMRect.cpp",
+    "DOMRectList.cpp",
+    "DOMRectReadOnly.cpp",
+  ]
+}

+ 159 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/BUILD.gn

@@ -0,0 +1,159 @@
+source_set("HTML") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [
+    "Canvas",
+    "CrossOrigin",
+    "CustomElements",
+    "EventLoop",
+    "Parser",
+    "Scripting",
+    "SyntaxHighlighter",
+    "//Userland/Libraries/LibWeb:all_generated",
+  ]
+  sources = [
+    "AnimatedBitmapDecodedImageData.cpp",
+    "AttributeNames.cpp",
+    "AudioTrack.cpp",
+    "AudioTrackList.cpp",
+    "BrowsingContext.cpp",
+    "BrowsingContextGroup.cpp",
+    "CORSSettingAttribute.cpp",
+    "CanvasGradient.cpp",
+    "CanvasPattern.cpp",
+    "CanvasRenderingContext2D.cpp",
+    "CloseEvent.cpp",
+    "DOMParser.cpp",
+    "DOMStringMap.cpp",
+    "DecodedImageData.cpp",
+    "DocumentState.cpp",
+    "ErrorEvent.cpp",
+    "EventHandler.cpp",
+    "EventNames.cpp",
+    "Focus.cpp",
+    "FormAssociatedElement.cpp",
+    "FormControlInfrastructure.cpp",
+    "FormDataEvent.cpp",
+    "GlobalEventHandlers.cpp",
+    "HTMLAnchorElement.cpp",
+    "HTMLAreaElement.cpp",
+    "HTMLAudioElement.cpp",
+    "HTMLBRElement.cpp",
+    "HTMLBaseElement.cpp",
+    "HTMLBlinkElement.cpp",
+    "HTMLBodyElement.cpp",
+    "HTMLButtonElement.cpp",
+    "HTMLCanvasElement.cpp",
+    "HTMLDListElement.cpp",
+    "HTMLDataElement.cpp",
+    "HTMLDataListElement.cpp",
+    "HTMLDetailsElement.cpp",
+    "HTMLDialogElement.cpp",
+    "HTMLDirectoryElement.cpp",
+    "HTMLDivElement.cpp",
+    "HTMLDocument.cpp",
+    "HTMLElement.cpp",
+    "HTMLEmbedElement.cpp",
+    "HTMLFieldSetElement.cpp",
+    "HTMLFontElement.cpp",
+    "HTMLFormElement.cpp",
+    "HTMLFrameElement.cpp",
+    "HTMLFrameSetElement.cpp",
+    "HTMLHRElement.cpp",
+    "HTMLHeadElement.cpp",
+    "HTMLHeadingElement.cpp",
+    "HTMLHtmlElement.cpp",
+    "HTMLHyperlinkElementUtils.cpp",
+    "HTMLIFrameElement.cpp",
+    "HTMLImageElement.cpp",
+    "HTMLInputElement.cpp",
+    "HTMLLIElement.cpp",
+    "HTMLLabelElement.cpp",
+    "HTMLLegendElement.cpp",
+    "HTMLLinkElement.cpp",
+    "HTMLMapElement.cpp",
+    "HTMLMarqueeElement.cpp",
+    "HTMLMediaElement.cpp",
+    "HTMLMenuElement.cpp",
+    "HTMLMetaElement.cpp",
+    "HTMLMeterElement.cpp",
+    "HTMLModElement.cpp",
+    "HTMLOListElement.cpp",
+    "HTMLObjectElement.cpp",
+    "HTMLOptGroupElement.cpp",
+    "HTMLOptionElement.cpp",
+    "HTMLOptionsCollection.cpp",
+    "HTMLOutputElement.cpp",
+    "HTMLParagraphElement.cpp",
+    "HTMLParamElement.cpp",
+    "HTMLPictureElement.cpp",
+    "HTMLPreElement.cpp",
+    "HTMLProgressElement.cpp",
+    "HTMLQuoteElement.cpp",
+    "HTMLScriptElement.cpp",
+    "HTMLSelectElement.cpp",
+    "HTMLSlotElement.cpp",
+    "HTMLSourceElement.cpp",
+    "HTMLSpanElement.cpp",
+    "HTMLStyleElement.cpp",
+    "HTMLSummaryElement.cpp",
+    "HTMLTableCaptionElement.cpp",
+    "HTMLTableCellElement.cpp",
+    "HTMLTableColElement.cpp",
+    "HTMLTableElement.cpp",
+    "HTMLTableRowElement.cpp",
+    "HTMLTableSectionElement.cpp",
+    "HTMLTemplateElement.cpp",
+    "HTMLTextAreaElement.cpp",
+    "HTMLTimeElement.cpp",
+    "HTMLTitleElement.cpp",
+    "HTMLTrackElement.cpp",
+    "HTMLUListElement.cpp",
+    "HTMLUnknownElement.cpp",
+    "HTMLVideoElement.cpp",
+    "History.cpp",
+    "ImageData.cpp",
+    "ImageRequest.cpp",
+    "ListOfAvailableImages.cpp",
+    "Location.cpp",
+    "MediaError.cpp",
+    "MessageChannel.cpp",
+    "MessageEvent.cpp",
+    "MessagePort.cpp",
+    "MimeType.cpp",
+    "MimeTypeArray.cpp",
+    "Navigable.cpp",
+    "NavigableContainer.cpp",
+    "Navigator.cpp",
+    "NavigatorID.cpp",
+    "PageTransitionEvent.cpp",
+    "Path2D.cpp",
+    "Plugin.cpp",
+    "PluginArray.cpp",
+    "PotentialCORSRequest.cpp",
+    "PromiseRejectionEvent.cpp",
+    "RemoteBrowsingContext.cpp",
+    "SessionHistoryEntry.cpp",
+    "SharedImageRequest.cpp",
+    "SourceSet.cpp",
+    "Storage.cpp",
+    "StructuredSerialize.cpp",
+    "SubmitEvent.cpp",
+    "TagNames.cpp",
+    "TextMetrics.cpp",
+    "TimeRanges.cpp",
+    "Timer.cpp",
+    "TrackEvent.cpp",
+    "TraversableNavigable.cpp",
+    "VideoTrack.cpp",
+    "VideoTrackList.cpp",
+    "Window.cpp",
+    "WindowEventHandlers.cpp",
+    "WindowOrWorkerGlobalScope.cpp",
+    "WindowProxy.cpp",
+    "Worker.cpp",
+    "WorkerDebugConsoleClient.cpp",
+    "WorkerGlobalScope.cpp",
+    "WorkerLocation.cpp",
+    "WorkerNavigator.cpp",
+  ]
+}

+ 10 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/Canvas/BUILD.gn

@@ -0,0 +1,10 @@
+source_set("Canvas") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "CanvasDrawImage.cpp",
+    "CanvasPath.cpp",
+    "CanvasPathClipper.cpp",
+    "CanvasState.cpp",
+  ]
+}

+ 8 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/CrossOrigin/BUILD.gn

@@ -0,0 +1,8 @@
+source_set("CrossOrigin") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "AbstractOperations.cpp",
+    "Reporting.cpp",
+  ]
+}

+ 9 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/CustomElements/BUILD.gn

@@ -0,0 +1,9 @@
+source_set("CustomElements") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "CustomElementName.cpp",
+    "CustomElementReactionNames.cpp",
+    "CustomElementRegistry.cpp",
+  ]
+}

+ 9 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/EventLoop/BUILD.gn

@@ -0,0 +1,9 @@
+source_set("EventLoop") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "EventLoop.cpp",
+    "Task.cpp",
+    "TaskQueue.cpp",
+  ]
+}

+ 13 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/Parser/BUILD.gn

@@ -0,0 +1,13 @@
+source_set("Parser") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "Entities.cpp",
+    "HTMLEncodingDetection.cpp",
+    "HTMLParser.cpp",
+    "HTMLToken.cpp",
+    "HTMLTokenizer.cpp",
+    "ListOfActiveFormattingElements.cpp",
+    "StackOfOpenElements.cpp",
+  ]
+}

+ 15 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/Scripting/BUILD.gn

@@ -0,0 +1,15 @@
+source_set("Scripting") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "ClassicScript.cpp",
+    "Environments.cpp",
+    "ExceptionReporter.cpp",
+    "Fetching.cpp",
+    "ModuleMap.cpp",
+    "ModuleScript.cpp",
+    "Script.cpp",
+    "TemporaryExecutionContext.cpp",
+    "WindowEnvironmentSettingsObject.cpp",
+  ]
+}

+ 8 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/HTML/SyntaxHighlighter/BUILD.gn

@@ -0,0 +1,8 @@
+source_set("SyntaxHighlighter") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  include_dirs = [
+    "//Userland/",  # For LibSyntax needing LibGUI needing WindowServer types
+  ]
+  sources = [ "SyntaxHighlighter.cpp" ]
+}

+ 8 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/HighResolutionTime/BUILD.gn

@@ -0,0 +1,8 @@
+source_set("HighResolutionTime") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "Performance.cpp",
+    "TimeOrigin.cpp",
+  ]
+}

+ 10 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Infra/BUILD.gn

@@ -0,0 +1,10 @@
+source_set("Infra") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "Base64.cpp",
+    "ByteSequences.cpp",
+    "JSON.cpp",
+    "Strings.cpp",
+  ]
+}

+ 8 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/IntersectionObserver/BUILD.gn

@@ -0,0 +1,8 @@
+source_set("IntersectionObserver") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "IntersectionObserver.cpp",
+    "IntersectionObserverEntry.cpp",
+  ]
+}

+ 51 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Layout/BUILD.gn

@@ -0,0 +1,51 @@
+source_set("Layout") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  include_dirs = [
+    "//Userland/",  # For LibGUI needing WindowServer types
+  ]
+  sources = [
+    "AudioBox.cpp",
+    "AvailableSpace.cpp",
+    "BlockContainer.cpp",
+    "BlockFormattingContext.cpp",
+    "Box.cpp",
+    "BoxModelMetrics.cpp",
+    "BreakNode.cpp",
+    "ButtonBox.cpp",
+    "CanvasBox.cpp",
+    "CheckBox.cpp",
+    "FlexFormattingContext.cpp",
+    "FormattingContext.cpp",
+    "FrameBox.cpp",
+    "GridFormattingContext.cpp",
+    "ImageBox.cpp",
+    "InlineFormattingContext.cpp",
+    "InlineLevelIterator.cpp",
+    "InlineNode.cpp",
+    "Label.cpp",
+    "LabelableNode.cpp",
+    "LayoutState.cpp",
+    "LineBox.cpp",
+    "LineBoxFragment.cpp",
+    "LineBuilder.cpp",
+    "ListItemBox.cpp",
+    "ListItemMarkerBox.cpp",
+    "Node.cpp",
+    "Progress.cpp",
+    "RadioButton.cpp",
+    "ReplacedBox.cpp",
+    "SVGBox.cpp",
+    "SVGFormattingContext.cpp",
+    "SVGGeometryBox.cpp",
+    "SVGGraphicsBox.cpp",
+    "SVGSVGBox.cpp",
+    "SVGTextBox.cpp",
+    "TableFormattingContext.cpp",
+    "TableWrapper.cpp",
+    "TextNode.cpp",
+    "TreeBuilder.cpp",
+    "VideoBox.cpp",
+    "Viewport.cpp",
+  ]
+}

+ 13 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Loader/BUILD.gn

@@ -0,0 +1,13 @@
+source_set("Loader") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "ContentFilter.cpp",
+    "FileRequest.cpp",
+    "FrameLoader.cpp",
+    "LoadRequest.cpp",
+    "ProxyMappings.cpp",
+    "Resource.cpp",
+    "ResourceLoader.cpp",
+  ]
+}

+ 5 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/MimeSniff/BUILD.gn

@@ -0,0 +1,5 @@
+source_set("MimeSniff") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [ "MimeType.cpp" ]
+}

+ 8 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/NavigationTiming/BUILD.gn

@@ -0,0 +1,8 @@
+source_set("NavigationTiming") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "EntryNames.cpp",
+    "PerformanceTiming.cpp",
+  ]
+}

+ 12 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Page/BUILD.gn

@@ -0,0 +1,12 @@
+source_set("Page") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  include_dirs = [
+    "//Userland/",  # For LibGUI needing WindowServer types
+  ]
+  sources = [
+    "EditEventHandler.cpp",
+    "EventHandler.cpp",
+    "Page.cpp",
+  ]
+}

+ 39 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Painting/BUILD.gn

@@ -0,0 +1,39 @@
+source_set("Painting") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  include_dirs = [
+    "//Userland/",  # For LibGfx needing LibGUI needing WindowServer types
+  ]
+  sources = [
+    "AudioPaintable.cpp",
+    "BackgroundPainting.cpp",
+    "BorderPainting.cpp",
+    "BorderRadiusCornerClipper.cpp",
+    "ButtonPaintable.cpp",
+    "CanvasPaintable.cpp",
+    "CheckBoxPaintable.cpp",
+    "FilterPainting.cpp",
+    "GradientPainting.cpp",
+    "ImagePaintable.cpp",
+    "InlinePaintable.cpp",
+    "LabelablePaintable.cpp",
+    "MarkerPaintable.cpp",
+    "MediaPaintable.cpp",
+    "NestedBrowsingContextPaintable.cpp",
+    "PaintContext.cpp",
+    "Paintable.cpp",
+    "PaintableBox.cpp",
+    "ProgressPaintable.cpp",
+    "RadioButtonPaintable.cpp",
+    "SVGGeometryPaintable.cpp",
+    "SVGGraphicsPaintable.cpp",
+    "SVGPaintable.cpp",
+    "SVGSVGPaintable.cpp",
+    "SVGTextPaintable.cpp",
+    "ShadowPainting.cpp",
+    "StackingContext.cpp",
+    "TableBordersPainting.cpp",
+    "TextPaintable.cpp",
+    "VideoPaintable.cpp",
+  ]
+}

+ 8 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/PerformanceTimeline/BUILD.gn

@@ -0,0 +1,8 @@
+source_set("PerformanceTimeline") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "EntryTypes.cpp",
+    "PerformanceEntry.cpp",
+  ]
+}

+ 5 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/PermissionsPolicy/BUILD.gn

@@ -0,0 +1,5 @@
+source_set("PermissionsPolicy") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [ "AutoplayAllowlist.cpp" ]
+}

+ 14 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Platform/BUILD.gn

@@ -0,0 +1,14 @@
+source_set("Platform") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "AudioCodecPlugin.cpp",
+    "EventLoopPlugin.cpp",
+    "EventLoopPluginSerenity.cpp",
+    "FontPlugin.cpp",
+    "FontPluginSerenity.cpp",
+    "ImageCodecPlugin.cpp",
+    "Timer.cpp",
+    "TimerSerenity.cpp",
+  ]
+}

+ 8 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/ReferrerPolicy/BUILD.gn

@@ -0,0 +1,8 @@
+source_set("ReferrerPolicy") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "AbstractOperations.cpp",
+    "ReferrerPolicy.cpp",
+  ]
+}

+ 5 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/RequestIdleCallback/BUILD.gn

@@ -0,0 +1,5 @@
+source_set("RequestIdleCallback") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [ "IdleDeadline.cpp" ]
+}

+ 5 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/ResizeObserver/BUILD.gn

@@ -0,0 +1,5 @@
+source_set("ResizeObserver") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [ "ResizeObserver.cpp" ]
+}

+ 5 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/SRI/BUILD.gn

@@ -0,0 +1,5 @@
+source_set("SRI") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [ "SRI.cpp" ]
+}

+ 38 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/SVG/BUILD.gn

@@ -0,0 +1,38 @@
+source_set("SVG") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "AttributeNames.cpp",
+    "AttributeParser.cpp",
+    "SVGAnimatedLength.cpp",
+    "SVGAnimatedNumber.cpp",
+    "SVGCircleElement.cpp",
+    "SVGClipPathElement.cpp",
+    "SVGDecodedImageData.cpp",
+    "SVGDefsElement.cpp",
+    "SVGElement.cpp",
+    "SVGEllipseElement.cpp",
+    "SVGForeignObjectElement.cpp",
+    "SVGGElement.cpp",
+    "SVGGeometryElement.cpp",
+    "SVGGradientElement.cpp",
+    "SVGGraphicsElement.cpp",
+    "SVGLength.cpp",
+    "SVGLineElement.cpp",
+    "SVGLinearGradientElement.cpp",
+    "SVGPathElement.cpp",
+    "SVGPolygonElement.cpp",
+    "SVGPolylineElement.cpp",
+    "SVGRadialGradientElement.cpp",
+    "SVGRectElement.cpp",
+    "SVGSVGElement.cpp",
+    "SVGStopElement.cpp",
+    "SVGStyleElement.cpp",
+    "SVGSymbolElement.cpp",
+    "SVGTextContentElement.cpp",
+    "SVGTitleElement.cpp",
+    "SVGUseElement.cpp",
+    "TagNames.cpp",
+    "ViewBox.cpp",
+  ]
+}

+ 5 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/SecureContexts/BUILD.gn

@@ -0,0 +1,5 @@
+source_set("SecureContexts") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [ "AbstractOperations.cpp" ]
+}

+ 5 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Selection/BUILD.gn

@@ -0,0 +1,5 @@
+source_set("Selection") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [ "Selection.cpp" ]
+}

+ 19 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/Streams/BUILD.gn

@@ -0,0 +1,19 @@
+source_set("Streams") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "AbstractOperations.cpp",
+    "ReadableByteStreamController.cpp",
+    "ReadableStream.cpp",
+    "ReadableStreamBYOBReader.cpp",
+    "ReadableStreamBYOBRequest.cpp",
+    "ReadableStreamDefaultController.cpp",
+    "ReadableStreamDefaultReader.cpp",
+    "ReadableStreamGenericReader.cpp",
+    "UnderlyingSink.cpp",
+    "UnderlyingSource.cpp",
+    "WritableStream.cpp",
+    "WritableStreamDefaultController.cpp",
+    "WritableStreamDefaultWriter.cpp",
+  ]
+}

+ 15 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/UIEvents/BUILD.gn

@@ -0,0 +1,15 @@
+source_set("UIEvents") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  include_dirs = [
+    "//Userland/",  # For LibGUI needing WindowServer types
+  ]
+  sources = [
+    "EventNames.cpp",
+    "FocusEvent.cpp",
+    "KeyboardEvent.cpp",
+    "MouseEvent.cpp",
+    "UIEvent.cpp",
+    "WheelEvent.cpp",
+  ]
+}

+ 9 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/URL/BUILD.gn

@@ -0,0 +1,9 @@
+source_set("URL") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "URL.cpp",
+    "URLSearchParams.cpp",
+    "URLSearchParamsIterator.cpp",
+  ]
+}

+ 8 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/UserTiming/BUILD.gn

@@ -0,0 +1,8 @@
+source_set("UserTiming") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "PerformanceMark.cpp",
+    "PerformanceMeasure.cpp",
+  ]
+}

+ 11 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/WebAssembly/BUILD.gn

@@ -0,0 +1,11 @@
+source_set("WebAssembly") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "Instance.cpp",
+    "Memory.cpp",
+    "Module.cpp",
+    "Table.cpp",
+    "WebAssembly.cpp",
+  ]
+}

+ 15 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/WebDriver/BUILD.gn

@@ -0,0 +1,15 @@
+source_set("WebDriver") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "Capabilities.cpp",
+    "Client.cpp",
+    "Contexts.cpp",
+    "ElementLocationStrategies.cpp",
+    "Error.cpp",
+    "ExecuteScript.cpp",
+    "Response.cpp",
+    "Screenshot.cpp",
+    "TimeoutsConfiguration.cpp",
+  ]
+}

+ 11 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/WebGL/BUILD.gn

@@ -0,0 +1,11 @@
+source_set("WebGL") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "EventNames.cpp",
+    "WebGLContextAttributes.cpp",
+    "WebGLContextEvent.cpp",
+    "WebGLRenderingContext.cpp",
+    "WebGLRenderingContextBase.cpp",
+  ]
+}

+ 11 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/WebIDL/BUILD.gn

@@ -0,0 +1,11 @@
+source_set("WebIDL") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "AbstractOperations.cpp",
+    "CallbackType.cpp",
+    "DOMException.cpp",
+    "OverloadResolution.cpp",
+    "Promise.cpp",
+  ]
+}

+ 5 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/WebSockets/BUILD.gn

@@ -0,0 +1,5 @@
+source_set("WebSockets") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [ "WebSocket.cpp" ]
+}

+ 13 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/XHR/BUILD.gn

@@ -0,0 +1,13 @@
+source_set("XHR") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [
+    "EventNames.cpp",
+    "FormData.cpp",
+    "FormDataIterator.cpp",
+    "ProgressEvent.cpp",
+    "XMLHttpRequest.cpp",
+    "XMLHttpRequestEventTarget.cpp",
+    "XMLHttpRequestUpload.cpp",
+  ]
+}

+ 5 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/XML/BUILD.gn

@@ -0,0 +1,5 @@
+source_set("XML") {
+  configs += [ "//Userland/Libraries/LibWeb:configs" ]
+  deps = [ "//Userland/Libraries/LibWeb:all_generated" ]
+  sources = [ "XMLDocumentBuilder.cpp" ]
+}

+ 367 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/generate_idl_bindings.gni

@@ -0,0 +1,367 @@
+#
+# This file introduces templates for generating JS bindings for Web Platform
+# Objects using IDL files.
+#
+# The public generate_idl_bindings template invokes the binding generator
+# for each IDL file in the input idl_list. It creates two source_set targets
+# for the input target_name, one ending in "_generated" and one ending in
+# "_sources". The "_generated" target is simply the code generator invocation,
+# while the "_sources" target is the actual generated C++ sources files.
+#
+#
+# Parameters:
+#   idl_list (required) [string]
+#     List of IDL files that are all the same type.
+#     Expected to be an absolute path.
+#
+#   type (required) string
+#       "global", "iterable", "namespace", or "standard"
+#
+# Example use:
+#
+#  standard_idl_files = get_path_info(
+#    [
+#      "//Library/Foo.idl",
+#      "//Bar.idl"
+#    ],
+#    "abspath")
+#
+#  generate_idl_bindings("standard_idl_bindings") {
+#    idl_list = standard_idl_files
+#    type = "standard"
+#  }
+#
+#  shared_library("Library") {
+#    deps = [
+#      ":standard_idl_bindings_generated"
+#      ":standard_idl_bindings_sources"
+#    ]
+#  }
+#
+
+import("//Meta/gn/build/compiled_action.gni")
+
+# FIXME: rewrite these in terms of action_foreach
+template("_invoke_bindings_generator") {
+  # FIXME: Can we update the bindings generator to output the .h and .cpp at the same time?
+
+  assert(defined(invoker.type), "$target_name must have 'type' defined")
+
+  # FIXME: This is pretty gross. Can we make the source file name match the command line argument to the generator more closely?
+  #        GN can't (and probably shouldn't) siwzzle our strings for us in this way automagically
+  assert(defined(invoker.type_filename_fragment),
+         "$target_name must have 'type_filename_fragment' defined")
+  assert(defined(invoker.name), "$target_name must have 'name' defined")
+  assert(defined(invoker.path), "$target_name must have 'path' defined")
+
+  forward_variables_from(invoker,
+                         [
+                           "configs",
+                           "include_dirs",
+                           "public_configs",
+                           "testonly",
+                           "visibility",
+                         ])
+
+  if (!defined(include_dirs)) {
+    include_dirs = [ "//Userland/Libraries" ]
+  }
+  rel_include_dirs = []
+  foreach(d, include_dirs) {
+    rel_include_dirs += [
+      "-i",
+      rebase_path(d, root_build_dir),
+    ]
+  }
+
+  name_and_type = string_replace(invoker.name + "_" + invoker.type, "-", "_")
+  type = invoker.type
+  gen_dir = get_label_info("//Userland/Libraries/LibWeb", "target_gen_dir")
+
+  out_name = get_path_info(invoker.path, "name")
+
+  compiled_action(name_and_type + "_impl") {
+    tool = "//Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator"
+    inputs = [ invoker.path + ".idl" ]
+    outputs = [ gen_dir + "/Bindings/" + out_name +
+                invoker.type_filename_fragment + ".cpp" ]
+    depfile = outputs[0] + ".d"
+    args = [
+             "--$type-implementation",
+             "-o",
+             rebase_path(outputs[0], root_build_dir),
+             "--depfile",
+             rebase_path(depfile, root_build_dir),
+             "--depfile-target",
+             rebase_path(outputs[0], root_build_dir),
+           ] + rel_include_dirs +
+           [
+             rebase_path(inputs[0], root_build_dir),
+
+             # FIXME: Get caller path from invoker?
+             rebase_path("//Userland/Libraries/LibWeb", root_build_dir),
+           ]
+  }
+
+  compiled_action(name_and_type + "_header") {
+    tool = "//Meta/Lagom/Tools/CodeGenerators/LibWeb/BindingsGenerator"
+    inputs = [ invoker.path + ".idl" ]
+    outputs = [ gen_dir + "/Bindings/" + out_name +
+                invoker.type_filename_fragment + ".h" ]
+    depfile = outputs[0] + ".d"
+    args = [
+             "--$type-header",
+             "-o",
+             rebase_path(outputs[0], root_build_dir),
+             "--depfile",
+             rebase_path(depfile, root_build_dir),
+             "--depfile-target",
+             rebase_path(outputs[0], root_build_dir),
+           ] + rel_include_dirs +
+           [
+             rebase_path(inputs[0], root_build_dir),
+
+             # FIXME: Get caller path from invoker?
+             rebase_path("//Userland/Libraries/LibWeb", root_build_dir),
+           ]
+  }
+
+  source_set("generate_" + name_and_type) {
+    deps = [
+      ":" + name_and_type + "_impl",
+      ":" + name_and_type + "_header",
+    ]
+  }
+
+  source_set(name_and_type + "_sources") {
+    deps = [
+      ":" + name_and_type + "_impl",
+      ":" + name_and_type + "_header",
+    ]
+    sources = get_target_outputs(deps[0]) + get_target_outputs(deps[1])
+    configs += [ "//Userland/Libraries/LibWeb:configs" ]
+    deps += [ "//Userland/Libraries/LibWeb:all_generated" ]
+  }
+}
+
+# FIXME: Deduplicate these templates
+template("_bind_web_namespace") {
+  forward_variables_from(invoker,
+                         [
+                           "configs",
+                           "inputs",
+                           "include_dirs",
+                           "outputs",
+                           "public_configs",
+                           "testonly",
+                           "visibility",
+                         ])
+
+  interface_name = target_name
+
+  _invoke_bindings_generator(interface_name) {
+    type = "namespace"
+    type_filename_fragment = "Namespace"
+    name = interface_name
+    path = invoker.path
+  }
+
+  source_set(interface_name + "_sources") {
+    deps = [ ":" + interface_name + "_namespace_sources" ]
+  }
+
+  source_set("generate_" + interface_name) {
+    deps = [ ":generate_" + interface_name + "_namespace" ]
+  }
+}
+
+# FIXME: Deduplicate these templates
+template("_bind_web_iterable_interface") {
+  forward_variables_from(invoker,
+                         [
+                           "configs",
+                           "inputs",
+                           "include_dirs",
+                           "outputs",
+                           "public_configs",
+                           "testonly",
+                           "visibility",
+                         ])
+
+  interface_name = target_name
+
+  _invoke_bindings_generator(interface_name) {
+    type = "prototype"
+    type_filename_fragment = "Prototype"
+    name = interface_name
+    path = invoker.path
+  }
+
+  _invoke_bindings_generator(interface_name) {
+    type = "constructor"
+    type_filename_fragment = "Constructor"
+    name = interface_name
+    path = invoker.path
+  }
+
+  _invoke_bindings_generator(interface_name) {
+    type = "iterator-prototype"
+    type_filename_fragment = "IteratorPrototype"
+    name = interface_name
+    path = invoker.path
+  }
+
+  source_set(interface_name + "_sources") {
+    deps = [
+      ":" + interface_name + "_prototype_sources",
+      ":" + interface_name + "_constructor_sources",
+      ":" + interface_name + "_iterator_prototype_sources",
+    ]
+  }
+
+  source_set("generate_" + interface_name) {
+    deps = [
+      ":generate_" + interface_name + "_prototype",
+      ":generate_" + interface_name + "_constructor",
+      ":generate_" + interface_name + "_iterator_prototype",
+    ]
+  }
+}
+
+# FIXME: Deduplicate these templates
+template("_bind_web_global_interface") {
+  forward_variables_from(invoker,
+                         [
+                           "configs",
+                           "inputs",
+                           "include_dirs",
+                           "outputs",
+                           "public_configs",
+                           "testonly",
+                           "visibility",
+                         ])
+
+  interface_name = target_name
+
+  _invoke_bindings_generator(interface_name) {
+    type = "prototype"
+    type_filename_fragment = "Prototype"
+    name = interface_name
+    path = invoker.path
+  }
+
+  _invoke_bindings_generator(interface_name) {
+    type = "constructor"
+    type_filename_fragment = "Constructor"
+    name = interface_name
+    path = invoker.path
+  }
+
+  _invoke_bindings_generator(interface_name) {
+    type = "global-mixin"
+    type_filename_fragment = "GlobalMixin"
+    name = interface_name
+    path = invoker.path
+  }
+
+  source_set(interface_name + "_sources") {
+    deps = [
+      ":" + interface_name + "_prototype_sources",
+      ":" + interface_name + "_constructor_sources",
+      ":" + interface_name + "_global_mixin_sources",
+    ]
+  }
+
+  source_set("generate_" + interface_name) {
+    deps = [
+      ":generate_" + interface_name + "_prototype",
+      ":generate_" + interface_name + "_constructor",
+      ":generate_" + interface_name + "_global_mixin",
+    ]
+  }
+}
+
+# FIXME: Deduplicate these templates
+template("_bind_web_interface") {
+  forward_variables_from(invoker,
+                         [
+                           "configs",
+                           "inputs",
+                           "include_dirs",
+                           "outputs",
+                           "public_configs",
+                           "testonly",
+                           "visibility",
+                         ])
+
+  interface_name = target_name
+
+  _invoke_bindings_generator(interface_name) {
+    type = "prototype"
+    type_filename_fragment = "Prototype"
+    name = interface_name
+    path = invoker.path
+  }
+
+  _invoke_bindings_generator(interface_name) {
+    type = "constructor"
+    type_filename_fragment = "Constructor"
+    name = interface_name
+    path = invoker.path
+  }
+
+  source_set(interface_name + "_sources") {
+    deps = [
+      ":" + interface_name + "_prototype_sources",
+      ":" + interface_name + "_constructor_sources",
+    ]
+  }
+
+  source_set("generate_" + interface_name) {
+    deps = [
+      ":generate_" + interface_name + "_prototype",
+      ":generate_" + interface_name + "_constructor",
+    ]
+  }
+}
+
+template("generate_idl_bindings") {
+  forward_variables_from(invoker,
+                         [
+                           "type",
+                           "idl_list",
+                         ])
+  idl_sources = []
+  generate_idl = []
+  foreach(idl, idl_list) {
+    path = get_path_info(rebase_path(idl, "//Userland/Libraries/LibWeb"),
+                         "dir") + "/" + get_path_info(idl, "name")
+    name = string_replace(path, "/", "_")
+    if (type == "standard") {
+      _bind_web_interface(name) {
+        path = path
+      }
+    } else if (type == "iterable") {
+      _bind_web_iterable_interface(name) {
+        path = path
+      }
+    } else if (type == "namespace") {
+      _bind_web_namespace(name) {
+        path = path
+      }
+    } else {
+      assert(type == "global")
+      _bind_web_global_interface(name) {
+        path = path
+      }
+    }
+    generate_idl += [ ":generate_" + name ]
+    idl_sources += [ ":" + name + "_sources" ]
+  }
+  source_set(target_name + "_generated") {
+    deps = generate_idl
+  }
+  source_set(target_name + "_sources") {
+    deps = idl_sources
+  }
+}

+ 268 - 0
Meta/gn/secondary/Userland/Libraries/LibWeb/idl_files.gni

@@ -0,0 +1,268 @@
+# This file lists all IDL files in LibWeb
+#
+# Adding a new IDL file involves adding it to the corresponding list.
+# Most IDL files are going to be "standard".
+#
+
+iterable_idl_files =
+    get_path_info([
+                    "//Userland/Libraries/LibWeb/Fetch/Headers.idl",
+                    "//Userland/Libraries/LibWeb/URL/URLSearchParams.idl",
+                    "//Userland/Libraries/LibWeb/XHR/FormData.idl",
+                  ],
+                  "abspath")
+
+namespace_idl_files =
+    get_path_info([
+                    "//Userland/Libraries/LibWeb/CSS/CSS.idl",
+                    "//Userland/Libraries/LibWeb/WebAssembly/WebAssembly.idl",
+                  ],
+                  "abspath")
+
+global_idl_files =
+    get_path_info([ "//Userland/Libraries/LibWeb/HTML/Window.idl" ], "abspath")
+
+# Standard idl files are neither iterable, namespaces, or global
+standard_idl_files = get_path_info(
+        [
+          "//Userland/Libraries/LibWeb/Crypto/Crypto.idl",
+          "//Userland/Libraries/LibWeb/Crypto/SubtleCrypto.idl",
+          "//Userland/Libraries/LibWeb/CSS/CSSConditionRule.idl",
+          "//Userland/Libraries/LibWeb/CSS/CSSFontFaceRule.idl",
+          "//Userland/Libraries/LibWeb/CSS/CSSGroupingRule.idl",
+          "//Userland/Libraries/LibWeb/CSS/CSSKeyframeRule.idl",
+          "//Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.idl",
+          "//Userland/Libraries/LibWeb/CSS/CSSImportRule.idl",
+          "//Userland/Libraries/LibWeb/CSS/CSSMediaRule.idl",
+          "//Userland/Libraries/LibWeb/CSS/CSSRule.idl",
+          "//Userland/Libraries/LibWeb/CSS/CSSRuleList.idl",
+          "//Userland/Libraries/LibWeb/CSS/CSSStyleDeclaration.idl",
+          "//Userland/Libraries/LibWeb/CSS/CSSStyleRule.idl",
+          "//Userland/Libraries/LibWeb/CSS/CSSStyleSheet.idl",
+          "//Userland/Libraries/LibWeb/CSS/CSSSupportsRule.idl",
+          "//Userland/Libraries/LibWeb/CSS/MediaList.idl",
+          "//Userland/Libraries/LibWeb/CSS/MediaQueryList.idl",
+          "//Userland/Libraries/LibWeb/CSS/MediaQueryListEvent.idl",
+          "//Userland/Libraries/LibWeb/CSS/Screen.idl",
+          "//Userland/Libraries/LibWeb/CSS/StyleSheet.idl",
+          "//Userland/Libraries/LibWeb/CSS/StyleSheetList.idl",
+          "//Userland/Libraries/LibWeb/DOM/AbstractRange.idl",
+          "//Userland/Libraries/LibWeb/DOM/Attr.idl",
+          "//Userland/Libraries/LibWeb/DOM/AbortController.idl",
+          "//Userland/Libraries/LibWeb/DOM/AbortSignal.idl",
+          "//Userland/Libraries/LibWeb/DOM/CDATASection.idl",
+          "//Userland/Libraries/LibWeb/DOM/CharacterData.idl",
+          "//Userland/Libraries/LibWeb/DOM/Comment.idl",
+          "//Userland/Libraries/LibWeb/DOM/CustomEvent.idl",
+          "//Userland/Libraries/LibWeb/DOM/Document.idl",
+          "//Userland/Libraries/LibWeb/DOM/DocumentFragment.idl",
+          "//Userland/Libraries/LibWeb/DOM/DocumentType.idl",
+          "//Userland/Libraries/LibWeb/DOM/DOMImplementation.idl",
+          "//Userland/Libraries/LibWeb/DOM/DOMTokenList.idl",
+          "//Userland/Libraries/LibWeb/DOM/Element.idl",
+          "//Userland/Libraries/LibWeb/DOM/Event.idl",
+          "//Userland/Libraries/LibWeb/DOM/EventTarget.idl",
+          "//Userland/Libraries/LibWeb/DOM/HTMLCollection.idl",
+          "//Userland/Libraries/LibWeb/DOM/MutationRecord.idl",
+          "//Userland/Libraries/LibWeb/DOM/MutationObserver.idl",
+          "//Userland/Libraries/LibWeb/DOM/NamedNodeMap.idl",
+          "//Userland/Libraries/LibWeb/DOM/Node.idl",
+          "//Userland/Libraries/LibWeb/DOM/NodeFilter.idl",
+          "//Userland/Libraries/LibWeb/DOM/NodeIterator.idl",
+          "//Userland/Libraries/LibWeb/DOM/NodeList.idl",
+          "//Userland/Libraries/LibWeb/DOM/ProcessingInstruction.idl",
+          "//Userland/Libraries/LibWeb/DOM/Range.idl",
+          "//Userland/Libraries/LibWeb/DOM/ShadowRoot.idl",
+          "//Userland/Libraries/LibWeb/DOM/StaticRange.idl",
+          "//Userland/Libraries/LibWeb/DOM/Text.idl",
+          "//Userland/Libraries/LibWeb/DOM/TreeWalker.idl",
+          "//Userland/Libraries/LibWeb/DOM/XMLDocument.idl",
+          "//Userland/Libraries/LibWeb/DOMParsing/XMLSerializer.idl",
+          "//Userland/Libraries/LibWeb/Encoding/TextDecoder.idl",
+          "//Userland/Libraries/LibWeb/Encoding/TextEncoder.idl",
+          "//Userland/Libraries/LibWeb/Fetch/Request.idl",
+          "//Userland/Libraries/LibWeb/Fetch/Response.idl",
+          "//Userland/Libraries/LibWeb/FileAPI/Blob.idl",
+          "//Userland/Libraries/LibWeb/FileAPI/File.idl",
+          "//Userland/Libraries/LibWeb/FileAPI/FileList.idl",
+          "//Userland/Libraries/LibWeb/Geometry/DOMMatrix.idl",
+          "//Userland/Libraries/LibWeb/Geometry/DOMMatrixReadOnly.idl",
+          "//Userland/Libraries/LibWeb/Geometry/DOMPoint.idl",
+          "//Userland/Libraries/LibWeb/Geometry/DOMPointReadOnly.idl",
+          "//Userland/Libraries/LibWeb/Geometry/DOMRect.idl",
+          "//Userland/Libraries/LibWeb/Geometry/DOMRectList.idl",
+          "//Userland/Libraries/LibWeb/Geometry/DOMRectReadOnly.idl",
+          "//Userland/Libraries/LibWeb/HTML/AudioTrack.idl",
+          "//Userland/Libraries/LibWeb/HTML/AudioTrackList.idl",
+          "//Userland/Libraries/LibWeb/HTML/CanvasGradient.idl",
+          "//Userland/Libraries/LibWeb/HTML/CanvasPattern.idl",
+          "//Userland/Libraries/LibWeb/HTML/CanvasRenderingContext2D.idl",
+          "//Userland/Libraries/LibWeb/HTML/CloseEvent.idl",
+          "//Userland/Libraries/LibWeb/HTML/CustomElements/CustomElementRegistry.idl",
+          "//Userland/Libraries/LibWeb/HTML/DOMParser.idl",
+          "//Userland/Libraries/LibWeb/HTML/DOMStringMap.idl",
+          "//Userland/Libraries/LibWeb/HTML/ErrorEvent.idl",
+          "//Userland/Libraries/LibWeb/HTML/FormDataEvent.idl",
+          "//Userland/Libraries/LibWeb/HTML/History.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLAnchorElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLAreaElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLAudioElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLBaseElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLBodyElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLBRElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLButtonElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLCanvasElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLDataElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLDataListElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLDetailsElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLDialogElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLDirectoryElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLDivElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLDocument.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLDListElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLEmbedElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLFieldSetElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLFontElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLFormElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLFrameElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLFrameSetElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLHeadElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLHeadingElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLHRElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLHtmlElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLIFrameElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLImageElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLInputElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLLabelElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLLegendElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLLIElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLLinkElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLMapElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLMarqueeElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLMediaElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLMenuElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLMetaElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLMeterElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLModElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLObjectElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLOListElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLOptGroupElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLOptionElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLOptionsCollection.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLOutputElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLParagraphElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLParamElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLPictureElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLPreElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLProgressElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLQuoteElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLScriptElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLSelectElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLSlotElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLSourceElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLSpanElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLStyleElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLTableCaptionElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLTableCellElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLTableColElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLTableElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLTableRowElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLTableSectionElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLTemplateElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLTextAreaElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLTimeElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLTitleElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLTrackElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLUListElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLUnknownElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/HTMLVideoElement.idl",
+          "//Userland/Libraries/LibWeb/HTML/ImageData.idl",
+          "//Userland/Libraries/LibWeb/HTML/Location.idl",
+          "//Userland/Libraries/LibWeb/HTML/MediaError.idl",
+          "//Userland/Libraries/LibWeb/HTML/MessageChannel.idl",
+          "//Userland/Libraries/LibWeb/HTML/MessageEvent.idl",
+          "//Userland/Libraries/LibWeb/HTML/MessagePort.idl",
+          "//Userland/Libraries/LibWeb/HTML/MimeType.idl",
+          "//Userland/Libraries/LibWeb/HTML/MimeTypeArray.idl",
+          "//Userland/Libraries/LibWeb/HTML/Navigator.idl",
+          "//Userland/Libraries/LibWeb/HTML/PageTransitionEvent.idl",
+          "//Userland/Libraries/LibWeb/HTML/Path2D.idl",
+          "//Userland/Libraries/LibWeb/HTML/Plugin.idl",
+          "//Userland/Libraries/LibWeb/HTML/PluginArray.idl",
+          "//Userland/Libraries/LibWeb/HTML/PromiseRejectionEvent.idl",
+          "//Userland/Libraries/LibWeb/HTML/Storage.idl",
+          "//Userland/Libraries/LibWeb/HTML/SubmitEvent.idl",
+          "//Userland/Libraries/LibWeb/HTML/TextMetrics.idl",
+          "//Userland/Libraries/LibWeb/HTML/TimeRanges.idl",
+          "//Userland/Libraries/LibWeb/HTML/TrackEvent.idl",
+          "//Userland/Libraries/LibWeb/HTML/VideoTrack.idl",
+          "//Userland/Libraries/LibWeb/HTML/VideoTrackList.idl",
+          "//Userland/Libraries/LibWeb/HTML/Worker.idl",
+          "//Userland/Libraries/LibWeb/HTML/WorkerGlobalScope.idl",
+          "//Userland/Libraries/LibWeb/HTML/WorkerLocation.idl",
+          "//Userland/Libraries/LibWeb/HTML/WorkerNavigator.idl",
+          "//Userland/Libraries/LibWeb/HighResolutionTime/Performance.idl",
+          "//Userland/Libraries/LibWeb/IntersectionObserver/IntersectionObserver.idl",
+          "//Userland/Libraries/LibWeb/IntersectionObserver/IntersectionObserverEntry.idl",
+          "//Userland/Libraries/LibWeb/NavigationTiming/PerformanceTiming.idl",
+          "//Userland/Libraries/LibWeb/PerformanceTimeline/PerformanceEntry.idl",
+          "//Userland/Libraries/LibWeb/RequestIdleCallback/IdleDeadline.idl",
+          "//Userland/Libraries/LibWeb/ResizeObserver/ResizeObserver.idl",
+          "//Userland/Libraries/LibWeb/Streams/ReadableByteStreamController.idl",
+          "//Userland/Libraries/LibWeb/Streams/ReadableStream.idl",
+          "//Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBReader.idl",
+          "//Userland/Libraries/LibWeb/Streams/ReadableStreamBYOBRequest.idl",
+          "//Userland/Libraries/LibWeb/Streams/ReadableStreamDefaultController.idl",
+          "//Userland/Libraries/LibWeb/Streams/ReadableStreamDefaultReader.idl",
+          "//Userland/Libraries/LibWeb/Streams/WritableStream.idl",
+          "//Userland/Libraries/LibWeb/Streams/WritableStreamDefaultWriter.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGAnimatedLength.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGAnimatedNumber.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGClipPathElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGDefsElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGGeometryElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGGradientElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGGraphicsElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGCircleElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGEllipseElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGForeignObjectElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGLength.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGLineElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGLinearGradientElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGPathElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGPolygonElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGPolylineElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGRadialGradientElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGRectElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGSVGElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGStopElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGStyleElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGSymbolElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGTextContentElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGTitleElement.idl",
+          "//Userland/Libraries/LibWeb/SVG/SVGUseElement.idl",
+          "//Userland/Libraries/LibWeb/Selection/Selection.idl",
+          "//Userland/Libraries/LibWeb/UIEvents/FocusEvent.idl",
+          "//Userland/Libraries/LibWeb/UIEvents/KeyboardEvent.idl",
+          "//Userland/Libraries/LibWeb/UIEvents/MouseEvent.idl",
+          "//Userland/Libraries/LibWeb/UIEvents/UIEvent.idl",
+          "//Userland/Libraries/LibWeb/UIEvents/WheelEvent.idl",
+          "//Userland/Libraries/LibWeb/URL/URL.idl",
+          "//Userland/Libraries/LibWeb/UserTiming/PerformanceMark.idl",
+          "//Userland/Libraries/LibWeb/UserTiming/PerformanceMeasure.idl",
+          "//Userland/Libraries/LibWeb/WebAssembly/Instance.idl",
+          "//Userland/Libraries/LibWeb/WebAssembly/Memory.idl",
+          "//Userland/Libraries/LibWeb/WebAssembly/Module.idl",
+          "//Userland/Libraries/LibWeb/WebAssembly/Table.idl",
+          "//Userland/Libraries/LibWeb/WebGL/WebGLContextEvent.idl",
+          "//Userland/Libraries/LibWeb/WebGL/WebGLRenderingContext.idl",
+          "//Userland/Libraries/LibWeb/WebIDL/DOMException.idl",
+          "//Userland/Libraries/LibWeb/WebSockets/WebSocket.idl",
+          "//Userland/Libraries/LibWeb/XHR/ProgressEvent.idl",
+          "//Userland/Libraries/LibWeb/XHR/XMLHttpRequest.idl",
+          "//Userland/Libraries/LibWeb/XHR/XMLHttpRequestEventTarget.idl",
+          "//Userland/Libraries/LibWeb/XHR/XMLHttpRequestUpload.idl",
+        ],
+        "abspath")