From 99b49a5978facb65e80aad0f202768435c3402b9 Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Fri, 20 Dec 2024 11:10:54 +0100 Subject: [PATCH] CodeGenerators: Add support for LegacyNoInterfaceObject IDL attribute When applied, corresponding interface object will not be exposed on the global object, e.g. for the following IDL: ``` Exposed=(Window,Worker), LegacyNoInterfaceObject] interface ANGLE_instanced_arrays { }; ``` executing `"ANGLE_instanced_arrays" in window` will return `false`. --- .../CodeGenerators/LibWeb/GenerateWindowOrWorkerInterfaces.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWindowOrWorkerInterfaces.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWindowOrWorkerInterfaces.cpp index 96eb939cabc..517cc8a9704 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWindowOrWorkerInterfaces.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateWindowOrWorkerInterfaces.cpp @@ -309,6 +309,9 @@ void add_@global_object_snake_name@_exposed_interfaces(JS::Object& global) if (interface.is_namespace) { add_namespace(gen, interface.name, interface.namespace_class); } else if (!interface.extended_attributes.contains("LegacyNamespace"sv)) { + if (interface.extended_attributes.contains("LegacyNoInterfaceObject")) { + continue; + } if (class_name == "Window") { add_interface(gen, interface.namespaced_name, interface.prototype_class, lookup_legacy_constructor(interface), interface.extended_attributes.get("LegacyWindowAlias"sv)); } else {