From 3baf1cb54a212919aa4ecdae55340aa571bf84c7 Mon Sep 17 00:00:00 2001 From: Victor Porof Date: Fri, 17 Jun 2022 09:50:11 +0000 Subject: [PATCH] Expose the DOM pinned properties dataset as JavaScriptMetadata This allows the data to be built and consumed in the frontend. Bug: 1325812 Change-Id: I89c336983097af0bd02609bc72b6562f1723b007 Signed-off-by: Victor Porof Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3702683 Reviewed-by: Mathias Bynens --- config/gni/devtools_grd_files.gni | 1 + front_end/core/common/JavaScriptMetaData.ts | 20 +++++++++++++++++++ front_end/models/javascript_metadata/BUILD.gn | 1 + .../javascript_metadata/JavaScriptMetadata.ts | 3 +++ .../javascript_metadata.ts | 3 +++ 5 files changed, 28 insertions(+) diff --git a/config/gni/devtools_grd_files.gni b/config/gni/devtools_grd_files.gni index 4d8f800c0a..509b28e0a1 100644 --- a/config/gni/devtools_grd_files.gni +++ b/config/gni/devtools_grd_files.gni @@ -756,6 +756,7 @@ grd_files_debug_sources = [ "front_end/models/issues_manager/SharedArrayBufferIssue.js", "front_end/models/issues_manager/SourceFrameIssuesManager.js", "front_end/models/issues_manager/TrustedWebActivityIssue.js", + "front_end/models/javascript_metadata/DOMPinnedProperties.js", "front_end/models/javascript_metadata/JavaScriptMetadata.js", "front_end/models/javascript_metadata/NativeFunctions.js", "front_end/models/logs/LogManager.js", diff --git a/front_end/core/common/JavaScriptMetaData.ts b/front_end/core/common/JavaScriptMetaData.ts index 880df25891..f70f133f49 100644 --- a/front_end/core/common/JavaScriptMetaData.ts +++ b/front_end/core/common/JavaScriptMetaData.ts @@ -2,6 +2,26 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +export interface DOMPinnedWebIDLProp { + global?: boolean; + specs?: number; + rules?: Array; +} + +export interface DOMPinnedWebIDLType { + inheritance?: string; + includes?: Array; + props?: { + [PropName: string]: DOMPinnedWebIDLProp, + }; + rules?: Array; +} + +export interface DOMPinnedWebIDLRule { + when: string; + is: string; +} + export interface JavaScriptMetaData { signaturesForNativeFunction(name: string): string[][]|null; diff --git a/front_end/models/javascript_metadata/BUILD.gn b/front_end/models/javascript_metadata/BUILD.gn index 8d99d5f5b6..009262f89b 100644 --- a/front_end/models/javascript_metadata/BUILD.gn +++ b/front_end/models/javascript_metadata/BUILD.gn @@ -8,6 +8,7 @@ import("../visibility.gni") devtools_module("javascript_metadata") { sources = [ + "DOMPinnedProperties.ts", "JavaScriptMetadata.ts", "NativeFunctions.js", ] diff --git a/front_end/models/javascript_metadata/JavaScriptMetadata.ts b/front_end/models/javascript_metadata/JavaScriptMetadata.ts index deca542c5e..9e4ef5c0ef 100644 --- a/front_end/models/javascript_metadata/JavaScriptMetadata.ts +++ b/front_end/models/javascript_metadata/JavaScriptMetadata.ts @@ -5,10 +5,13 @@ import type * as Common from '../../core/common/common.js'; import {NativeFunctions} from './NativeFunctions.js'; +import * as DOMPinnedProperties from './DOMPinnedProperties.js'; let javaScriptMetadataInstance: JavaScriptMetadataImpl; export class JavaScriptMetadataImpl implements Common.JavaScriptMetaData.JavaScriptMetaData { + static readonly domPinnedProperties = DOMPinnedProperties; + private readonly uniqueFunctions: Map; private readonly receiverMethods: Map>; static instance(opts: { diff --git a/front_end/models/javascript_metadata/javascript_metadata.ts b/front_end/models/javascript_metadata/javascript_metadata.ts index a13c9f9980..f0e09d0476 100644 --- a/front_end/models/javascript_metadata/javascript_metadata.ts +++ b/front_end/models/javascript_metadata/javascript_metadata.ts @@ -3,12 +3,15 @@ // found in the LICENSE file. import './NativeFunctions.js'; +import './DOMPinnedProperties.js'; import './JavaScriptMetadata.js'; +import * as DOMPinnedProperties from './DOMPinnedProperties.js'; import * as JavaScriptMetadata from './JavaScriptMetadata.js'; import * as NativeFunctions from './NativeFunctions.js'; export { + DOMPinnedProperties, JavaScriptMetadata, NativeFunctions, };