From 75f1cd121d77b714bb83cd91b0c1037a9e69d6f0 Mon Sep 17 00:00:00 2001 From: Yuki Shiino Date: Fri, 19 Sep 2025 18:28:15 -0700 Subject: [PATCH] bindings: Fix header inclusions about IDL observable array types The Blink-V8 bindings code generator didn't include the header for an IDL observable array type (i.e. `#include ".../v8_observable_array_xxxx.h"` was missing in the generated bindings code). This patch makes the bindings code generator produce the header inclusion when an attribute type is an IDL observable array type. This patch also demonstrates the fix by removing the header inclusion of "v8_observable_array_css_style_sheet.h" from t/b/r/code/dom/tree_scope.h. Change-Id: I1802cce6060291e42150ad1daa4d228a722bd5ae Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6965399 Reviewed-by: David Sanders Commit-Queue: Yuki Shiino Reviewed-by: Philip Rogers Cr-Commit-Position: refs/heads/main@{#1518277} --- .../blink/renderer/bindings/scripts/bind_gen/interface.py | 7 +++++++ .../blink/renderer/core/css/style_sheet_collection.cc | 1 + third_party/blink/renderer/core/dom/container_node.h | 1 + third_party/blink/renderer/core/dom/element.h | 1 + third_party/blink/renderer/core/dom/tree_scope.cc | 2 ++ third_party/blink/renderer/core/dom/tree_scope.h | 5 +++-- third_party/blink/renderer/core/frame/frame_serializer.cc | 1 + 7 files changed, 16 insertions(+), 2 deletions(-) diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py b/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py index 92842c8ac35b3c..d490a10187dc7a 100644 --- a/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py +++ b/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py @@ -6741,6 +6741,13 @@ def add_include_headers(idl_type): if idl_type.is_frozen_array: headers.add( "third_party/blink/renderer/bindings/core/v8/frozen_array.h") + return + + observable_array_def_obj = idl_type.observable_array_definition_object + if observable_array_def_obj is not None: + headers.add( + PathManager(observable_array_def_obj).api_path(ext="h")) + return for attribute in class_like.attributes: collect_from_idl_type(attribute.idl_type) diff --git a/third_party/blink/renderer/core/css/style_sheet_collection.cc b/third_party/blink/renderer/core/css/style_sheet_collection.cc index 30a84179dedb71..346ba931beddb0 100644 --- a/third_party/blink/renderer/core/css/style_sheet_collection.cc +++ b/third_party/blink/renderer/core/css/style_sheet_collection.cc @@ -28,6 +28,7 @@ #include "third_party/blink/renderer/core/css/style_sheet_collection.h" +#include "third_party/blink/renderer/bindings/core/v8/v8_observable_array_css_style_sheet.h" #include "third_party/blink/renderer/core/css/active_style_sheets.h" #include "third_party/blink/renderer/core/css/css_style_sheet.h" #include "third_party/blink/renderer/core/css/rule_set.h" diff --git a/third_party/blink/renderer/core/dom/container_node.h b/third_party/blink/renderer/core/dom/container_node.h index 214d6099625485..18e47b76cec5c5 100644 --- a/third_party/blink/renderer/core/dom/container_node.h +++ b/third_party/blink/renderer/core/dom/container_node.h @@ -32,6 +32,7 @@ #include "third_party/blink/renderer/core/dom/node.h" #include "third_party/blink/renderer/core/dom/static_node_list.h" #include "third_party/blink/renderer/core/html/collection_type.h" +#include "third_party/blink/renderer/platform/heap/heap_traits.h" #include "third_party/blink/renderer/platform/wtf/casting.h" #include "third_party/blink/renderer/platform/wtf/vector.h" diff --git a/third_party/blink/renderer/core/dom/element.h b/third_party/blink/renderer/core/dom/element.h index e44f3650832355..d984d77a3ba648 100644 --- a/third_party/blink/renderer/core/dom/element.h +++ b/third_party/blink/renderer/core/dom/element.h @@ -32,6 +32,7 @@ #include "third_party/blink/public/common/input/pointer_id.h" #include "third_party/blink/public/common/metrics/document_update_reason.h" #include "third_party/blink/public/mojom/scroll/scroll_into_view_params.mojom-blink-forward.h" +#include "third_party/blink/renderer/bindings/core/v8/idl_types.h" #include "third_party/blink/renderer/bindings/core/v8/v8_typedefs.h" #include "third_party/blink/renderer/core/animation/animatable.h" #include "third_party/blink/renderer/core/core_export.h" diff --git a/third_party/blink/renderer/core/dom/tree_scope.cc b/third_party/blink/renderer/core/dom/tree_scope.cc index 5b945843e4d24c..cf0aba4a84c3cb 100644 --- a/third_party/blink/renderer/core/dom/tree_scope.cc +++ b/third_party/blink/renderer/core/dom/tree_scope.cc @@ -26,8 +26,10 @@ #include "third_party/blink/renderer/core/dom/tree_scope.h" +#include "third_party/blink/renderer/bindings/core/v8/v8_observable_array_css_style_sheet.h" #include "third_party/blink/renderer/bindings/core/v8/v8_throw_dom_exception.h" #include "third_party/blink/renderer/core/animation/document_animations.h" +#include "third_party/blink/renderer/core/css/css_style_sheet.h" #include "third_party/blink/renderer/core/css/resolver/scoped_style_resolver.h" #include "third_party/blink/renderer/core/css/style_change_reason.h" #include "third_party/blink/renderer/core/css/style_engine.h" diff --git a/third_party/blink/renderer/core/dom/tree_scope.h b/third_party/blink/renderer/core/dom/tree_scope.h index bb3c04ba72a526..f4bc42bdaf0bfb 100644 --- a/third_party/blink/renderer/core/dom/tree_scope.h +++ b/third_party/blink/renderer/core/dom/tree_scope.h @@ -27,7 +27,6 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_DOM_TREE_SCOPE_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_DOM_TREE_SCOPE_H_ -#include "third_party/blink/renderer/bindings/core/v8/v8_observable_array_css_style_sheet.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/dom/tree_ordered_map.h" #include "third_party/blink/renderer/core/html/forms/radio_button_group_scope.h" @@ -40,8 +39,8 @@ namespace blink { class Animation; -class ContainerNode; class CSSStyleSheet; +class ContainerNode; class CustomElementRegistry; class DOMSelection; class Document; @@ -52,7 +51,9 @@ class IdTargetObserverRegistry; class Node; class SVGTreeScopeResources; class ScopedStyleResolver; +class ScriptState; class StyleSheetList; +class V8ObservableArrayCSSStyleSheet; // The root node of a document tree (in which case this is a Document) or of a // shadow tree (in which case this is a ShadowRoot). Various things, like diff --git a/third_party/blink/renderer/core/frame/frame_serializer.cc b/third_party/blink/renderer/core/frame/frame_serializer.cc index 484ffb80e38b1c..0d20126a2b284e 100644 --- a/third_party/blink/renderer/core/frame/frame_serializer.cc +++ b/third_party/blink/renderer/core/frame/frame_serializer.cc @@ -37,6 +37,7 @@ #include "services/network/public/cpp/resource_request.h" #include "third_party/blink/public/mojom/fetch/fetch_api_request.mojom-blink.h" #include "third_party/blink/public/web/web_frame_serializer.h" +#include "third_party/blink/renderer/bindings/core/v8/v8_observable_array_css_style_sheet.h" #include "third_party/blink/renderer/core/css/css_font_face_rule.h" #include "third_party/blink/renderer/core/css/css_font_face_src_value.h" #include "third_party/blink/renderer/core/css/css_image_value.h"