chrome-devtools-mcp 0.10.2 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +67 -9
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/common.js +1 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/AidaClient.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHost.js +31 -449
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostStub.js +430 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/ResourceLoader.js +10 -22
- package/build/node_modules/chrome-devtools-frontend/front_end/core/host/UserMetrics.js +2 -5
- package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/collect-ui-strings.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/generate-locales-js.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/HostRuntime.js +19 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/StringUtilities.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/HostRuntime.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/api.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/{common/Worker.js → platform/browser/HostRuntime.js} +18 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/browser.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/HostRuntime.js +72 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/node.js +5 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/platform.js +2 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/root/DevToolsContext.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/root/Runtime.js +7 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AnimationModel.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMatchedStyles.js +2 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMetadata.js +17 -5
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSModel.js +3 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSProperty.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js +10 -10
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModel.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Cookie.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMModel.js +5 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DebuggerModel.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkManager.js +46 -34
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkRequest.js +3 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageResourceLoader.js +43 -33
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PreloadingModel.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RemoteObject.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ResourceTreeModel.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Script.js +26 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMap.js +4 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapCache.js +16 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapManager.js +11 -5
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopesInfo.js +129 -20
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Target.js +4 -13
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TargetManager.js +35 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk-meta.js +72 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/foundation/Universe.js +5 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/Deprecation.js +48 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/InspectorBackendCommands.js +45 -42
- package/build/node_modules/chrome-devtools-frontend/front_end/generated/SupportedCSSProperties.js +56 -77
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.js +21 -6
- package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AICallTree.js +9 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CSSWorkspaceBinding.js +4 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CompilerScriptMapping.js +34 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerWorkspaceBinding.js +15 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceMapping.js +59 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceScriptMapping.js +38 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/SASSSourceMapping.js +5 -4
- package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/CPUProfileDataModel.js +9 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/CrUXManager.js +5 -3
- package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/FormatterWorkerPool.js +2 -2
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/AttributionReportingIssue.js +5 -6
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/BounceTrackingIssue.js +3 -11
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/ClientHintIssue.js +4 -9
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/ContentSecurityPolicyIssue.js +4 -9
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/ContrastCheckTrigger.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/CookieDeprecationMetadataIssue.js +5 -11
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/CookieIssue.js +26 -25
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/CorsIssue.js +7 -14
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.js +4 -6
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/DeprecationIssue.js +6 -11
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/ElementAccessibilityIssue.js +6 -11
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/FederatedAuthRequestIssue.js +3 -8
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/FederatedAuthUserInfoRequestIssue.js +3 -8
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/GenericIssue.js +36 -21
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/HeavyAdIssue.js +3 -8
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/Issue.js +6 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/IssueAggregator.js +6 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/LowTextContrastIssue.js +2 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/MixedContentIssue.js +6 -10
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/PartitioningBlobURLIssue.js +3 -8
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/PropertyRuleIssue.js +5 -10
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/QuirksModeIssue.js +2 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/SRIMessageSignatureIssue.js +6 -10
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/SharedArrayBufferIssue.js +3 -8
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/SharedDictionaryIssue.js +5 -10
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/StylesheetLoadingIssue.js +7 -11
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/UnencodedDigestIssue.js +1 -6
- package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/genericNavigationEntryMarkedSkippable.md +7 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/FunctionCodeResolver.js +192 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/source_map_scopes.js +2 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SamplesHandler.js +3 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Trace.js +10 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/SourceMapsResolver.js +23 -0
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/IgnoreListManager.js +1 -1
- package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/UISourceCode.js +38 -0
- package/build/node_modules/chrome-devtools-frontend/mcp/HostBindings.js +222 -0
- package/build/node_modules/chrome-devtools-frontend/mcp/mcp.js +15 -1
- package/build/src/DevToolsConnectionAdapter.js +56 -19
- package/build/src/DevtoolsUtils.js +143 -1
- package/build/src/McpContext.js +33 -11
- package/build/src/McpResponse.js +18 -26
- package/build/src/PageCollector.js +4 -11
- package/build/src/browser.js +4 -0
- package/build/src/cli.js +11 -3
- package/build/src/formatters/consoleFormatter.js +81 -3
- package/build/src/formatters/snapshotFormatter.js +18 -4
- package/build/src/issue-descriptions.js +4 -0
- package/build/src/main.js +20 -49
- package/build/src/third_party/THIRD_PARTY_NOTICES +1973 -27
- package/build/src/third_party/index.js +58356 -18839
- package/build/src/tools/console.js +0 -4
- package/build/src/tools/emulation.js +29 -6
- package/build/src/tools/screenshot.js +4 -2
- package/build/src/tools/snapshot.js +1 -1
- package/build/src/tools/tools.js +29 -0
- package/build/src/utils/keyboard.js +5 -0
- package/package.json +7 -7
- package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Linkifier.js +0 -34
- package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DOMUtilities.js +0 -122
- package/build/src/features.js +0 -14
- /package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/{genericFormAriaLabelledByToNonExistingId.md → genericFormAriaLabelledByToNonExistingIdError.md} +0 -0
- /package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/{genericFormLabelHasNeitherForNorNestedInput.md → genericFormLabelHasNeitherForNorNestedInputError.md} +0 -0
package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/HostRuntime.js
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// Copyright 2025 The Chromium Authors
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file.
|
|
4
|
+
import * as WorkerThreads from 'node:worker_threads';
|
|
5
|
+
class NodeWorkerScope {
|
|
6
|
+
postMessage(message) {
|
|
7
|
+
WorkerThreads.parentPort?.postMessage(message);
|
|
8
|
+
}
|
|
9
|
+
set onmessage(listener) {
|
|
10
|
+
WorkerThreads.parentPort?.on('message', data => {
|
|
11
|
+
listener({ data });
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
class NodeWorker {
|
|
16
|
+
#workerPromise;
|
|
17
|
+
#disposed = false;
|
|
18
|
+
#rejectWorkerPromise;
|
|
19
|
+
constructor(url) {
|
|
20
|
+
this.#workerPromise = new Promise((resolve, reject) => {
|
|
21
|
+
this.#rejectWorkerPromise = reject;
|
|
22
|
+
const worker = new WorkerThreads.Worker(new URL(url));
|
|
23
|
+
worker.once('message', (message) => {
|
|
24
|
+
if (message === 'workerReady') {
|
|
25
|
+
resolve(worker);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
worker.on('error', reject);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
postMessage(message) {
|
|
32
|
+
void this.#workerPromise.then(worker => {
|
|
33
|
+
if (!this.#disposed) {
|
|
34
|
+
worker.postMessage(message);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
dispose() {
|
|
39
|
+
this.#disposed = true;
|
|
40
|
+
void this.#workerPromise.then(worker => worker.terminate());
|
|
41
|
+
}
|
|
42
|
+
terminate(immediately) {
|
|
43
|
+
if (immediately) {
|
|
44
|
+
this.#rejectWorkerPromise?.(new Error('Worker terminated'));
|
|
45
|
+
}
|
|
46
|
+
this.dispose();
|
|
47
|
+
}
|
|
48
|
+
set onmessage(listener) {
|
|
49
|
+
void this.#workerPromise.then(worker => {
|
|
50
|
+
worker.on('message', data => {
|
|
51
|
+
if (!this.#disposed) {
|
|
52
|
+
listener({ data });
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
set onerror(listener) {
|
|
58
|
+
void this.#workerPromise.then(worker => {
|
|
59
|
+
worker.on('error', (error) => {
|
|
60
|
+
if (!this.#disposed) {
|
|
61
|
+
listener({ type: 'error', ...error });
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export const HOST_RUNTIME = {
|
|
68
|
+
createWorker(url) {
|
|
69
|
+
return new NodeWorker(url);
|
|
70
|
+
},
|
|
71
|
+
workerScope: new NodeWorkerScope(),
|
|
72
|
+
};
|
|
@@ -6,7 +6,7 @@ import * as Brand from './Brand.js';
|
|
|
6
6
|
import * as Constructor from './Constructor.js';
|
|
7
7
|
import * as DateUtilities from './DateUtilities.js';
|
|
8
8
|
import * as DevToolsPath from './DevToolsPath.js';
|
|
9
|
-
import * as
|
|
9
|
+
import * as HostRuntime from './HostRuntime.js';
|
|
10
10
|
import * as KeyboardUtilities from './KeyboardUtilities.js';
|
|
11
11
|
import * as MapUtilities from './MapUtilities.js';
|
|
12
12
|
import * as MimeType from './MimeType.js';
|
|
@@ -23,4 +23,4 @@ import * as UserVisibleError from './UserVisibleError.js';
|
|
|
23
23
|
* error).
|
|
24
24
|
*/
|
|
25
25
|
export { assertNever, assertNotNullOrUndefined, assertUnhandled } from './TypescriptUtilities.js';
|
|
26
|
-
export { ArrayUtilities, Brand, Constructor, DateUtilities, DevToolsPath,
|
|
26
|
+
export { ArrayUtilities, Brand, Constructor, DateUtilities, DevToolsPath, HostRuntime, KeyboardUtilities, MapUtilities, MimeType, NumberUtilities, StringUtilities, Timing, TypedArrayUtilities, TypeScriptUtilities, UIString, UserVisibleError, };
|
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
/**
|
|
5
5
|
* Container for singletons scoped to a single DevTools universe.
|
|
6
|
+
*
|
|
7
|
+
* When wiring up dependencies, strongly prefer to pass all direct dependencies
|
|
8
|
+
* via constructor, and not just pass a {@link DevToolsContext} around. That would hide
|
|
9
|
+
* dependencies and we want to be explicit.
|
|
6
10
|
*/
|
|
7
11
|
export class DevToolsContext {
|
|
8
12
|
#instances = new Map();
|
|
@@ -302,7 +302,7 @@ export class AnimationModel extends SDKModel {
|
|
|
302
302
|
const animation = await AnimationImpl.parsePayload(this, payload);
|
|
303
303
|
// Ignore Web Animations custom effects & groups.
|
|
304
304
|
const keyframesRule = animation.source().keyframesRule();
|
|
305
|
-
if (animation.type() === 'WebAnimation' && keyframesRule
|
|
305
|
+
if (animation.type() === 'WebAnimation' && keyframesRule?.keyframes().length === 0) {
|
|
306
306
|
this.#pendingAnimations.delete(animation.id());
|
|
307
307
|
}
|
|
308
308
|
else {
|
|
@@ -5,7 +5,7 @@ import * as Platform from '../platform/platform.js';
|
|
|
5
5
|
import { CSSMetadata, cssMetadata } from './CSSMetadata.js';
|
|
6
6
|
import { CSSProperty } from './CSSProperty.js';
|
|
7
7
|
import * as PropertyParser from './CSSPropertyParser.js';
|
|
8
|
-
import { AnchorFunctionMatcher, AngleMatcher, AttributeMatcher, AutoBaseMatcher, BaseVariableMatcher, BezierMatcher, BinOpMatcher, ColorMatcher, ColorMixMatcher, CustomFunctionMatcher, defaultValueForCSSType, EnvFunctionMatcher,
|
|
8
|
+
import { AnchorFunctionMatcher, AngleMatcher, AttributeMatcher, AutoBaseMatcher, BaseVariableMatcher, BezierMatcher, BinOpMatcher, ColorMatcher, ColorMixMatcher, CustomFunctionMatcher, defaultValueForCSSType, EnvFunctionMatcher, FlexGridGridLanesMatcher, GridTemplateMatcher, LengthMatcher, LightDarkColorMatcher, LinearGradientMatcher, LinkableNameMatcher, localEvalCSS, MathFunctionMatcher, PositionAnchorMatcher, PositionTryMatcher, RelativeColorChannelMatcher, ShadowMatcher, StringMatcher, URLMatcher, VariableMatcher } from './CSSPropertyParserMatchers.js';
|
|
9
9
|
import { CSSAtRule, CSSFunctionRule, CSSKeyframeRule, CSSKeyframesRule, CSSPositionTryRule, CSSPropertyRule, CSSStyleRule, } from './CSSRule.js';
|
|
10
10
|
import { CSSStyleDeclaration, Type } from './CSSStyleDeclaration.js';
|
|
11
11
|
function containsStyle(styles, query) {
|
|
@@ -713,7 +713,7 @@ export class CSSMatchedStyles {
|
|
|
713
713
|
new LinearGradientMatcher(),
|
|
714
714
|
new AnchorFunctionMatcher(),
|
|
715
715
|
new PositionAnchorMatcher(),
|
|
716
|
-
new
|
|
716
|
+
new FlexGridGridLanesMatcher(),
|
|
717
717
|
new PositionTryMatcher(),
|
|
718
718
|
new LengthMatcher(),
|
|
719
719
|
new MathFunctionMatcher(),
|
|
@@ -346,11 +346,8 @@ const cornerShapeValuePresetMap = new Map([
|
|
|
346
346
|
['superellipse(infinity)', 'superellipse(|infinity|)'],
|
|
347
347
|
]);
|
|
348
348
|
const valuePresets = new Map([
|
|
349
|
-
['filter', filterValuePresetMap],
|
|
350
|
-
['
|
|
351
|
-
['background', imageValuePresetMap],
|
|
352
|
-
['background-image', imageValuePresetMap],
|
|
353
|
-
['-webkit-mask-image', imageValuePresetMap],
|
|
349
|
+
['filter', filterValuePresetMap], ['backdrop-filter', filterValuePresetMap], ['background', imageValuePresetMap],
|
|
350
|
+
['background-image', imageValuePresetMap], ['-webkit-mask-image', imageValuePresetMap],
|
|
354
351
|
[
|
|
355
352
|
'transform',
|
|
356
353
|
new Map([
|
|
@@ -377,6 +374,17 @@ const valuePresets = new Map([
|
|
|
377
374
|
]),
|
|
378
375
|
],
|
|
379
376
|
['corner-shape', cornerShapeValuePresetMap],
|
|
377
|
+
[
|
|
378
|
+
'font-variant-alternates',
|
|
379
|
+
new Map([
|
|
380
|
+
['stylistic', 'stylistic(||)'],
|
|
381
|
+
['styleset', 'styleset(||)'],
|
|
382
|
+
['character-variant', 'character-variant(||)'],
|
|
383
|
+
['swash', 'swash(||)'],
|
|
384
|
+
['ornaments', 'ornaments(||)'],
|
|
385
|
+
['annotation', 'annotation(||)'],
|
|
386
|
+
]),
|
|
387
|
+
]
|
|
380
388
|
]);
|
|
381
389
|
const distanceProperties = new Set([
|
|
382
390
|
'background-position',
|
|
@@ -648,6 +656,10 @@ const extraPropertyValues = new Map([
|
|
|
648
656
|
'ruby',
|
|
649
657
|
]),
|
|
650
658
|
],
|
|
659
|
+
[
|
|
660
|
+
'font-variant-alternates',
|
|
661
|
+
new Set(['historical-forms', 'stylistic', 'styleset', 'character-variant', 'swash', 'ornaments', 'annotation'])
|
|
662
|
+
],
|
|
651
663
|
['vertical-align', new Set(['top', 'bottom', '-webkit-baseline-middle'])],
|
|
652
664
|
['page-break-after', new Set(['left', 'right', 'always', 'avoid'])],
|
|
653
665
|
['text-emphasis-style', textEmphasisStyle],
|
|
@@ -138,7 +138,7 @@ export class CSSModel extends SDKModel {
|
|
|
138
138
|
try {
|
|
139
139
|
await this.ensureOriginalStyleSheetText(styleSheetId);
|
|
140
140
|
const { styles } = await this.agent.invoke_setStyleTexts({ edits: [{ styleSheetId, range: range.serializeToObject(), text }] });
|
|
141
|
-
if (
|
|
141
|
+
if (styles?.length !== 1) {
|
|
142
142
|
return false;
|
|
143
143
|
}
|
|
144
144
|
this.#domModel.markUndoableState(!majorChange);
|
|
@@ -308,7 +308,7 @@ export class CSSModel extends SDKModel {
|
|
|
308
308
|
(styles.get('grid-template-columns')?.startsWith('subgrid') ||
|
|
309
309
|
styles.get('grid-template-rows')?.startsWith('subgrid'))) ??
|
|
310
310
|
false;
|
|
311
|
-
const
|
|
311
|
+
const isGridLanes = display === 'grid-lanes' || display === 'inline-grid-lanes';
|
|
312
312
|
const containerType = styles.get('container-type');
|
|
313
313
|
const isContainer = Boolean(containerType) && containerType !== '' && containerType !== 'normal';
|
|
314
314
|
const hasScroll = Boolean(styles.get('scroll-snap-type')) && styles.get('scroll-snap-type') !== 'none';
|
|
@@ -316,7 +316,7 @@ export class CSSModel extends SDKModel {
|
|
|
316
316
|
isFlex,
|
|
317
317
|
isGrid,
|
|
318
318
|
isSubgrid,
|
|
319
|
-
|
|
319
|
+
isGridLanes,
|
|
320
320
|
isContainer,
|
|
321
321
|
hasScroll,
|
|
322
322
|
};
|
|
@@ -231,7 +231,7 @@ export class CSSProperty extends Common.ObjectWrapper.ObjectWrapper {
|
|
|
231
231
|
}
|
|
232
232
|
if (cssMetadata().isGridAreaDefiningProperty(propertyName)) {
|
|
233
233
|
const rowResult = GridAreaRowRegex.exec(token);
|
|
234
|
-
if (rowResult
|
|
234
|
+
if (rowResult?.index === 0 && !propertyText.trimEnd().endsWith(']')) {
|
|
235
235
|
propertyText = propertyText.trimEnd() + '\n' + doubleIndent;
|
|
236
236
|
}
|
|
237
237
|
}
|
package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js
CHANGED
|
@@ -993,7 +993,7 @@ export class CustomFunctionMatcher extends matcherBase(CustomFunctionMatch) {
|
|
|
993
993
|
return new CustomFunctionMatch(text, node, callee, args);
|
|
994
994
|
}
|
|
995
995
|
}
|
|
996
|
-
export class
|
|
996
|
+
export class FlexGridGridLanesMatch {
|
|
997
997
|
text;
|
|
998
998
|
node;
|
|
999
999
|
layoutType;
|
|
@@ -1004,11 +1004,11 @@ export class FlexGridMasonryMatch {
|
|
|
1004
1004
|
}
|
|
1005
1005
|
}
|
|
1006
1006
|
// clang-format off
|
|
1007
|
-
export class
|
|
1007
|
+
export class FlexGridGridLanesMatcher extends matcherBase(FlexGridGridLanesMatch) {
|
|
1008
1008
|
// clang-format on
|
|
1009
1009
|
static FLEX = ['flex', 'inline-flex', 'block flex', 'inline flex'];
|
|
1010
1010
|
static GRID = ['grid', 'inline-grid', 'block grid', 'inline grid'];
|
|
1011
|
-
static
|
|
1011
|
+
static GRID_LANES = ['grid-lanes', 'inline-grid-lanes', 'block grid-lanes', 'inline grid-lanes'];
|
|
1012
1012
|
accepts(propertyName) {
|
|
1013
1013
|
return propertyName === 'display';
|
|
1014
1014
|
}
|
|
@@ -1024,14 +1024,14 @@ export class FlexGridMasonryMatcher extends matcherBase(FlexGridMasonryMatch) {
|
|
|
1024
1024
|
.map(node => matching.getComputedText(node).trim())
|
|
1025
1025
|
.filter(value => value);
|
|
1026
1026
|
const text = values.join(' ');
|
|
1027
|
-
if (
|
|
1028
|
-
return new
|
|
1027
|
+
if (FlexGridGridLanesMatcher.FLEX.includes(text)) {
|
|
1028
|
+
return new FlexGridGridLanesMatch(matching.ast.text(node), node, "flex" /* LayoutType.FLEX */);
|
|
1029
1029
|
}
|
|
1030
|
-
if (
|
|
1031
|
-
return new
|
|
1030
|
+
if (FlexGridGridLanesMatcher.GRID.includes(text)) {
|
|
1031
|
+
return new FlexGridGridLanesMatch(matching.ast.text(node), node, "grid" /* LayoutType.GRID */);
|
|
1032
1032
|
}
|
|
1033
|
-
if (
|
|
1034
|
-
return new
|
|
1033
|
+
if (FlexGridGridLanesMatcher.GRID_LANES.includes(text)) {
|
|
1034
|
+
return new FlexGridGridLanesMatch(matching.ast.text(node), node, "grid-lanes" /* LayoutType.GRID_LANES */);
|
|
1035
1035
|
}
|
|
1036
1036
|
return null;
|
|
1037
1037
|
}
|
|
@@ -1169,7 +1169,7 @@ export class AnchorFunctionMatcher extends matcherBase(AnchorFunctionMatch) {
|
|
|
1169
1169
|
if (node.name === 'VariableName') {
|
|
1170
1170
|
// Double-dashed anchor reference to be rendered with a link to its matching anchor.
|
|
1171
1171
|
let parent = node.parent;
|
|
1172
|
-
if (
|
|
1172
|
+
if (parent?.name !== 'ArgList') {
|
|
1173
1173
|
return null;
|
|
1174
1174
|
}
|
|
1175
1175
|
parent = parent.parent;
|
|
@@ -340,7 +340,7 @@ export class ConsoleModel extends SDKModel {
|
|
|
340
340
|
const globalObject = result.object;
|
|
341
341
|
const callFunctionResult = await globalObject.callFunction(saveVariable, [RemoteObject.toCallArgument(remoteObject)]);
|
|
342
342
|
globalObject.release();
|
|
343
|
-
if (callFunctionResult.wasThrown ||
|
|
343
|
+
if (callFunctionResult.wasThrown || callFunctionResult.object?.type !== 'string') {
|
|
344
344
|
failedToSave(callFunctionResult.object || null);
|
|
345
345
|
}
|
|
346
346
|
else {
|
|
@@ -227,7 +227,7 @@ export class Cookie {
|
|
|
227
227
|
// extension cookie tests currently use the funtionality, and if we
|
|
228
228
|
// ever decide to implement that it should be done by preventing
|
|
229
229
|
// such cookies from being set.
|
|
230
|
-
if (
|
|
230
|
+
if (domain?.[0] !== '.') {
|
|
231
231
|
return false;
|
|
232
232
|
}
|
|
233
233
|
// The host with a "." prefixed.
|
|
@@ -607,7 +607,7 @@ export class DOMNode {
|
|
|
607
607
|
continue;
|
|
608
608
|
}
|
|
609
609
|
const oldAttribute = oldAttributesMap.get(name);
|
|
610
|
-
if (
|
|
610
|
+
if (oldAttribute?.value !== value) {
|
|
611
611
|
attributesChanged = true;
|
|
612
612
|
}
|
|
613
613
|
}
|
|
@@ -1416,7 +1416,7 @@ export class DOMModel extends SDKModel {
|
|
|
1416
1416
|
return null;
|
|
1417
1417
|
}
|
|
1418
1418
|
const { nodeIds } = await this.agent.invoke_getSearchResults({ searchId: this.#searchId, fromIndex: index, toIndex: index + 1 });
|
|
1419
|
-
return nodeIds
|
|
1419
|
+
return nodeIds?.length === 1 ? this.nodeForId(nodeIds[0]) : null;
|
|
1420
1420
|
}
|
|
1421
1421
|
cancelSearch() {
|
|
1422
1422
|
if (!this.#searchId) {
|
|
@@ -1506,6 +1506,9 @@ class DOMDispatcher {
|
|
|
1506
1506
|
constructor(domModel) {
|
|
1507
1507
|
this.#domModel = domModel;
|
|
1508
1508
|
}
|
|
1509
|
+
adoptedStyleSheetsModified(_params) {
|
|
1510
|
+
// TODO: implementation
|
|
1511
|
+
}
|
|
1509
1512
|
documentUpdated() {
|
|
1510
1513
|
this.#domModel.documentUpdated();
|
|
1511
1514
|
}
|
|
@@ -719,7 +719,7 @@ export class DebuggerModel extends SDKModel {
|
|
|
719
719
|
let functionName = null;
|
|
720
720
|
if (response.properties) {
|
|
721
721
|
for (const prop of response.properties) {
|
|
722
|
-
if (prop.name === 'name' && prop.value
|
|
722
|
+
if (prop.name === 'name' && prop.value?.type === 'string') {
|
|
723
723
|
functionName = prop.value;
|
|
724
724
|
}
|
|
725
725
|
}
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
var _a;
|
|
5
5
|
import * as TextUtils from '../../models/text_utils/text_utils.js';
|
|
6
6
|
import * as Common from '../common/common.js';
|
|
7
|
-
import * as Host from '../host/host.js';
|
|
8
7
|
import * as i18n from '../i18n/i18n.js';
|
|
9
8
|
import * as Platform from '../platform/platform.js';
|
|
10
9
|
import * as Root from '../root/root.js';
|
|
@@ -328,13 +327,6 @@ export class NetworkManager extends SDKModel {
|
|
|
328
327
|
}
|
|
329
328
|
return result.status;
|
|
330
329
|
}
|
|
331
|
-
async getIpProtectionProxyStatus() {
|
|
332
|
-
const result = await this.#networkAgent.invoke_getIPProtectionProxyStatus();
|
|
333
|
-
if (result.getError()) {
|
|
334
|
-
return null;
|
|
335
|
-
}
|
|
336
|
-
return result.status;
|
|
337
|
-
}
|
|
338
330
|
async enableReportingApi(enable = true) {
|
|
339
331
|
return await this.#networkAgent.invoke_enableReportingApi({ enable });
|
|
340
332
|
}
|
|
@@ -839,6 +831,11 @@ export class NetworkDispatcher {
|
|
|
839
831
|
appliedNetworkConditionsId,
|
|
840
832
|
};
|
|
841
833
|
this.getExtraInfoBuilder(requestId).addRequestExtraInfo(extraRequestInfo);
|
|
834
|
+
const networkRequest = this.#requestsById.get(requestId);
|
|
835
|
+
if (appliedNetworkConditionsId && networkRequest) {
|
|
836
|
+
networkRequest.setAppliedNetworkConditions(appliedNetworkConditionsId);
|
|
837
|
+
this.updateNetworkRequest(networkRequest);
|
|
838
|
+
}
|
|
842
839
|
}
|
|
843
840
|
responseReceivedEarlyHints({ requestId, headers, }) {
|
|
844
841
|
this.getExtraInfoBuilder(requestId).setEarlyHintsHeaders(this.headersMapToHeadersArray(headers));
|
|
@@ -1142,7 +1139,11 @@ export class NetworkDispatcher {
|
|
|
1142
1139
|
sendBufferSize: event.options.sendBufferSize,
|
|
1143
1140
|
receiveBufferSize: event.options.receiveBufferSize,
|
|
1144
1141
|
dnsQueryType: event.options.dnsQueryType,
|
|
1145
|
-
|
|
1142
|
+
multicastLoopback: event.options.multicastLoopback,
|
|
1143
|
+
multicastTimeToLive: event.options.multicastTimeToLive,
|
|
1144
|
+
multicastAllowAddressSharing: event.options.multicastAllowAddressSharing,
|
|
1145
|
+
},
|
|
1146
|
+
joinedMulticastGroups: new Set(),
|
|
1146
1147
|
};
|
|
1147
1148
|
networkRequest.setResourceType(Common.ResourceType.resourceTypes.DirectSocket);
|
|
1148
1149
|
networkRequest.setIssueTime(event.timestamp, event.timestamp);
|
|
@@ -1228,6 +1229,28 @@ export class NetworkDispatcher {
|
|
|
1228
1229
|
networkRequest.responseReceivedTime = event.timestamp;
|
|
1229
1230
|
this.updateNetworkRequest(networkRequest);
|
|
1230
1231
|
}
|
|
1232
|
+
directUDPSocketJoinedMulticastGroup(event) {
|
|
1233
|
+
const networkRequest = this.#requestsById.get(event.identifier);
|
|
1234
|
+
if (!networkRequest?.directSocketInfo) {
|
|
1235
|
+
return;
|
|
1236
|
+
}
|
|
1237
|
+
if (!networkRequest.directSocketInfo.joinedMulticastGroups) {
|
|
1238
|
+
networkRequest.directSocketInfo.joinedMulticastGroups = new Set();
|
|
1239
|
+
}
|
|
1240
|
+
if (!networkRequest.directSocketInfo.joinedMulticastGroups.has(event.IPAddress)) {
|
|
1241
|
+
networkRequest.directSocketInfo.joinedMulticastGroups.add(event.IPAddress);
|
|
1242
|
+
this.updateNetworkRequest(networkRequest);
|
|
1243
|
+
}
|
|
1244
|
+
}
|
|
1245
|
+
directUDPSocketLeftMulticastGroup(event) {
|
|
1246
|
+
const networkRequest = this.#requestsById.get(event.identifier);
|
|
1247
|
+
if (!networkRequest?.directSocketInfo?.joinedMulticastGroups) {
|
|
1248
|
+
return;
|
|
1249
|
+
}
|
|
1250
|
+
if (networkRequest.directSocketInfo.joinedMulticastGroups.delete(event.IPAddress)) {
|
|
1251
|
+
this.updateNetworkRequest(networkRequest);
|
|
1252
|
+
}
|
|
1253
|
+
}
|
|
1231
1254
|
trustTokenOperationDone(event) {
|
|
1232
1255
|
const request = this.#requestsById.get(event.requestId);
|
|
1233
1256
|
if (!request) {
|
|
@@ -1549,8 +1572,10 @@ export class RequestConditions extends Common.ObjectWrapper.ObjectWrapper {
|
|
|
1549
1572
|
promises.push(agent.invoke_overrideNetworkState({
|
|
1550
1573
|
offline,
|
|
1551
1574
|
latency: globalConditions?.latency ?? 0,
|
|
1552
|
-
downloadThroughput:
|
|
1553
|
-
uploadThroughput:
|
|
1575
|
+
downloadThroughput: globalConditions?.download ?? -1,
|
|
1576
|
+
uploadThroughput: globalConditions?.upload ?? -1,
|
|
1577
|
+
connectionType: globalConditions ? NetworkManager.connectionType(globalConditions) :
|
|
1578
|
+
"none" /* Protocol.Network.ConnectionType.None */,
|
|
1554
1579
|
}));
|
|
1555
1580
|
}
|
|
1556
1581
|
this.#conditionsAppliedForTestPromise = this.#conditionsAppliedForTestPromise.then(() => Promise.all(promises));
|
|
@@ -1578,7 +1603,6 @@ export class RequestConditions extends Common.ObjectWrapper.ObjectWrapper {
|
|
|
1578
1603
|
}
|
|
1579
1604
|
}
|
|
1580
1605
|
_a = RequestConditions;
|
|
1581
|
-
let multiTargetNetworkManagerInstance;
|
|
1582
1606
|
export class AppliedNetworkConditions {
|
|
1583
1607
|
conditions;
|
|
1584
1608
|
appliedNetworkConditionsId;
|
|
@@ -1590,6 +1614,7 @@ export class AppliedNetworkConditions {
|
|
|
1590
1614
|
}
|
|
1591
1615
|
}
|
|
1592
1616
|
export class MultitargetNetworkManager extends Common.ObjectWrapper.ObjectWrapper {
|
|
1617
|
+
#targetManager;
|
|
1593
1618
|
#userAgentOverride = '';
|
|
1594
1619
|
#userAgentMetadataOverride = null;
|
|
1595
1620
|
#customAcceptedEncodings = null;
|
|
@@ -1603,8 +1628,9 @@ export class MultitargetNetworkManager extends Common.ObjectWrapper.ObjectWrappe
|
|
|
1603
1628
|
#extraHeaders;
|
|
1604
1629
|
#customUserAgent;
|
|
1605
1630
|
#isBlocking = false;
|
|
1606
|
-
constructor() {
|
|
1631
|
+
constructor(targetManager) {
|
|
1607
1632
|
super();
|
|
1633
|
+
this.#targetManager = targetManager;
|
|
1608
1634
|
// TODO(allada) Remove these and merge it with request interception.
|
|
1609
1635
|
const blockedPatternChanged = () => {
|
|
1610
1636
|
this.updateBlockedPatterns();
|
|
@@ -1612,17 +1638,17 @@ export class MultitargetNetworkManager extends Common.ObjectWrapper.ObjectWrappe
|
|
|
1612
1638
|
};
|
|
1613
1639
|
this.#requestConditions.addEventListener("request-conditions-changed" /* RequestConditions.Events.REQUEST_CONDITIONS_CHANGED */, blockedPatternChanged);
|
|
1614
1640
|
this.updateBlockedPatterns();
|
|
1615
|
-
|
|
1641
|
+
this.#targetManager.observeModels(NetworkManager, this);
|
|
1616
1642
|
}
|
|
1617
1643
|
static instance(opts = { forceNew: null }) {
|
|
1618
|
-
const { forceNew } = opts;
|
|
1619
|
-
if (!
|
|
1620
|
-
|
|
1644
|
+
const { forceNew, targetManager } = opts;
|
|
1645
|
+
if (!Root.DevToolsContext.globalInstance().has(MultitargetNetworkManager) || forceNew) {
|
|
1646
|
+
Root.DevToolsContext.globalInstance().set(MultitargetNetworkManager, new MultitargetNetworkManager(targetManager ?? TargetManager.instance()));
|
|
1621
1647
|
}
|
|
1622
|
-
return
|
|
1648
|
+
return Root.DevToolsContext.globalInstance().get(MultitargetNetworkManager);
|
|
1623
1649
|
}
|
|
1624
1650
|
static dispose() {
|
|
1625
|
-
|
|
1651
|
+
Root.DevToolsContext.globalInstance().delete(MultitargetNetworkManager);
|
|
1626
1652
|
}
|
|
1627
1653
|
static patchUserAgentWithChromeVersion(uaString) {
|
|
1628
1654
|
// Patches Chrome/ChrOS version from user #agent ("1.2.3.4" when user #agent is: "Chrome/1.2.3.4").
|
|
@@ -1873,7 +1899,7 @@ export class MultitargetNetworkManager extends Common.ObjectWrapper.ObjectWrappe
|
|
|
1873
1899
|
}
|
|
1874
1900
|
}
|
|
1875
1901
|
async getCertificate(origin) {
|
|
1876
|
-
const target =
|
|
1902
|
+
const target = this.#targetManager.primaryPageTarget();
|
|
1877
1903
|
if (!target) {
|
|
1878
1904
|
return [];
|
|
1879
1905
|
}
|
|
@@ -1883,20 +1909,6 @@ export class MultitargetNetworkManager extends Common.ObjectWrapper.ObjectWrappe
|
|
|
1883
1909
|
}
|
|
1884
1910
|
return certificate.tableNames;
|
|
1885
1911
|
}
|
|
1886
|
-
async loadResource(url) {
|
|
1887
|
-
const headers = {};
|
|
1888
|
-
const currentUserAgent = this.currentUserAgent();
|
|
1889
|
-
if (currentUserAgent) {
|
|
1890
|
-
headers['User-Agent'] = currentUserAgent;
|
|
1891
|
-
}
|
|
1892
|
-
if (Common.Settings.Settings.instance().moduleSetting('cache-disabled').get()) {
|
|
1893
|
-
headers['Cache-Control'] = 'no-cache';
|
|
1894
|
-
}
|
|
1895
|
-
const allowRemoteFilePaths = Common.Settings.Settings.instance().moduleSetting('network.enable-remote-file-loading').get();
|
|
1896
|
-
return await new Promise(resolve => Host.ResourceLoader.load(url, headers, (success, _responseHeaders, content, errorDescription) => {
|
|
1897
|
-
resolve({ success, content, errorDescription });
|
|
1898
|
-
}, allowRemoteFilePaths));
|
|
1899
|
-
}
|
|
1900
1912
|
appliedRequestConditions(requestInternal) {
|
|
1901
1913
|
if (!requestInternal.appliedNetworkConditionsId) {
|
|
1902
1914
|
return undefined;
|
|
@@ -1260,6 +1260,9 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper {
|
|
|
1260
1260
|
this.#siteHasCookieInOtherPartition = extraRequestInfo.siteHasCookieInOtherPartition ?? false;
|
|
1261
1261
|
this.#hasThirdPartyCookiePhaseoutIssue = this.#blockedRequestCookies.some(item => item.blockedReasons.includes("ThirdPartyPhaseout" /* Protocol.Network.CookieBlockedReason.ThirdPartyPhaseout */));
|
|
1262
1262
|
}
|
|
1263
|
+
setAppliedNetworkConditions(appliedNetworkConditionsId) {
|
|
1264
|
+
this.#appliedNetworkConditionsId = appliedNetworkConditionsId;
|
|
1265
|
+
}
|
|
1263
1266
|
hasExtraRequestInfo() {
|
|
1264
1267
|
return this.#hasExtraRequestInfo;
|
|
1265
1268
|
}
|