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/models/issues_manager/GenericIssue.js
CHANGED
|
@@ -25,22 +25,25 @@ const UIStrings = {
|
|
|
25
25
|
* @description title for CORB explainer.
|
|
26
26
|
*/
|
|
27
27
|
corbExplainerPageTitle: 'CORB explainer',
|
|
28
|
+
/**
|
|
29
|
+
* @description title for history intervention documentation page.
|
|
30
|
+
*/
|
|
31
|
+
historyManipulationInterventionPageTitle: 'History manipulation intervention explainer'
|
|
28
32
|
};
|
|
29
33
|
const str_ = i18n.i18n.registerUIStrings('models/issues_manager/GenericIssue.ts', UIStrings);
|
|
30
34
|
const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
|
|
31
35
|
export class GenericIssue extends Issue {
|
|
32
|
-
#issueDetails;
|
|
33
36
|
constructor(issueDetails, issuesModel, issueId) {
|
|
34
37
|
const issueCode = [
|
|
35
38
|
"GenericIssue" /* Protocol.Audits.InspectorIssueCode.GenericIssue */,
|
|
36
39
|
issueDetails.errorType,
|
|
37
40
|
].join('::');
|
|
38
|
-
super(issueCode, issuesModel, issueId);
|
|
39
|
-
this.#issueDetails = issueDetails;
|
|
41
|
+
super(issueCode, issueDetails, issuesModel, issueId);
|
|
40
42
|
}
|
|
41
43
|
requests() {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
const details = this.details();
|
|
45
|
+
if (details.request) {
|
|
46
|
+
return [details.request];
|
|
44
47
|
}
|
|
45
48
|
return [];
|
|
46
49
|
}
|
|
@@ -48,21 +51,19 @@ export class GenericIssue extends Issue {
|
|
|
48
51
|
return "Generic" /* IssueCategory.GENERIC */;
|
|
49
52
|
}
|
|
50
53
|
primaryKey() {
|
|
51
|
-
const
|
|
52
|
-
|
|
54
|
+
const details = this.details();
|
|
55
|
+
const requestId = details.request ? details.request.requestId : 'no-request';
|
|
56
|
+
return `${this.code()}-(${details.frameId})-(${details.violatingNodeId})-(${details.violatingNodeAttribute})-(${requestId})`;
|
|
53
57
|
}
|
|
54
58
|
getDescription() {
|
|
55
|
-
const description = issueDescriptions.get(this
|
|
59
|
+
const description = issueDescriptions.get(this.details().errorType);
|
|
56
60
|
if (!description) {
|
|
57
61
|
return null;
|
|
58
62
|
}
|
|
59
63
|
return resolveLazyDescription(description);
|
|
60
64
|
}
|
|
61
|
-
details() {
|
|
62
|
-
return this.#issueDetails;
|
|
63
|
-
}
|
|
64
65
|
getKind() {
|
|
65
|
-
return issueTypes.get(this
|
|
66
|
+
return issueTypes.get(this.details().errorType) || "Improvement" /* IssueKind.IMPROVEMENT */;
|
|
66
67
|
}
|
|
67
68
|
static fromInspectorIssue(issuesModel, inspectorIssue) {
|
|
68
69
|
const genericDetails = inspectorIssue.details.genericIssueDetails;
|
|
@@ -97,8 +98,8 @@ export const genericFormDuplicateIdForInputError = {
|
|
|
97
98
|
linkTitle: i18nLazyString(UIStrings.howDoesAutofillWorkPageTitle),
|
|
98
99
|
}],
|
|
99
100
|
};
|
|
100
|
-
export const
|
|
101
|
-
file: '
|
|
101
|
+
export const genericFormAriaLabelledByToNonExistingIdError = {
|
|
102
|
+
file: 'genericFormAriaLabelledByToNonExistingIdError.md',
|
|
102
103
|
links: [{
|
|
103
104
|
link: 'https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label',
|
|
104
105
|
linkTitle: i18nLazyString(UIStrings.labelFormlementsPageTitle),
|
|
@@ -132,8 +133,8 @@ export const genericFormLabelForMatchesNonExistingIdError = {
|
|
|
132
133
|
linkTitle: i18nLazyString(UIStrings.labelFormlementsPageTitle),
|
|
133
134
|
}],
|
|
134
135
|
};
|
|
135
|
-
export const
|
|
136
|
-
file: '
|
|
136
|
+
export const genericFormLabelHasNeitherForNorNestedInputError = {
|
|
137
|
+
file: 'genericFormLabelHasNeitherForNorNestedInputError.md',
|
|
137
138
|
links: [{
|
|
138
139
|
link: 'https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label',
|
|
139
140
|
linkTitle: i18nLazyString(UIStrings.labelFormlementsPageTitle),
|
|
@@ -146,6 +147,13 @@ export const genericResponseWasBlockedbyORB = {
|
|
|
146
147
|
linkTitle: i18nLazyString(UIStrings.corbExplainerPageTitle),
|
|
147
148
|
}],
|
|
148
149
|
};
|
|
150
|
+
export const genericNavigationEntryMarkedSkippable = {
|
|
151
|
+
file: 'genericNavigationEntryMarkedSkippable.md',
|
|
152
|
+
links: [{
|
|
153
|
+
link: 'https://chromium.googlesource.com/chromium/src/+/main/docs/history_manipulation_intervention.md',
|
|
154
|
+
linkTitle: i18nLazyString(UIStrings.historyManipulationInterventionPageTitle),
|
|
155
|
+
}],
|
|
156
|
+
};
|
|
149
157
|
const issueDescriptions = new Map([
|
|
150
158
|
["FormLabelForNameError" /* Protocol.Audits.GenericIssueErrorType.FormLabelForNameError */, genericFormLabelForNameError],
|
|
151
159
|
["FormInputWithNoLabelError" /* Protocol.Audits.GenericIssueErrorType.FormInputWithNoLabelError */, genericFormInputWithNoLabelError],
|
|
@@ -154,7 +162,10 @@ const issueDescriptions = new Map([
|
|
|
154
162
|
genericFormAutocompleteAttributeEmptyError,
|
|
155
163
|
],
|
|
156
164
|
["FormDuplicateIdForInputError" /* Protocol.Audits.GenericIssueErrorType.FormDuplicateIdForInputError */, genericFormDuplicateIdForInputError],
|
|
157
|
-
[
|
|
165
|
+
[
|
|
166
|
+
"FormAriaLabelledByToNonExistingIdError" /* Protocol.Audits.GenericIssueErrorType.FormAriaLabelledByToNonExistingIdError */,
|
|
167
|
+
genericFormAriaLabelledByToNonExistingIdError
|
|
168
|
+
],
|
|
158
169
|
[
|
|
159
170
|
"FormEmptyIdAndNameAttributesForInputError" /* Protocol.Audits.GenericIssueErrorType.FormEmptyIdAndNameAttributesForInputError */,
|
|
160
171
|
genericFormEmptyIdAndNameAttributesForInputError,
|
|
@@ -168,8 +179,8 @@ const issueDescriptions = new Map([
|
|
|
168
179
|
genericFormLabelForMatchesNonExistingIdError,
|
|
169
180
|
],
|
|
170
181
|
[
|
|
171
|
-
"
|
|
172
|
-
|
|
182
|
+
"FormLabelHasNeitherForNorNestedInputError" /* Protocol.Audits.GenericIssueErrorType.FormLabelHasNeitherForNorNestedInputError */,
|
|
183
|
+
genericFormLabelHasNeitherForNorNestedInputError,
|
|
173
184
|
],
|
|
174
185
|
[
|
|
175
186
|
"FormInputHasWrongButWellIntendedAutocompleteValueError" /* Protocol.Audits.GenericIssueErrorType.FormInputHasWrongButWellIntendedAutocompleteValueError */,
|
|
@@ -179,19 +190,23 @@ const issueDescriptions = new Map([
|
|
|
179
190
|
"ResponseWasBlockedByORB" /* Protocol.Audits.GenericIssueErrorType.ResponseWasBlockedByORB */,
|
|
180
191
|
genericResponseWasBlockedbyORB,
|
|
181
192
|
],
|
|
193
|
+
[
|
|
194
|
+
"NavigationEntryMarkedSkippable" /* Protocol.Audits.GenericIssueErrorType.NavigationEntryMarkedSkippable */,
|
|
195
|
+
genericNavigationEntryMarkedSkippable,
|
|
196
|
+
],
|
|
182
197
|
]);
|
|
183
198
|
const issueTypes = new Map([
|
|
184
199
|
["FormLabelForNameError" /* Protocol.Audits.GenericIssueErrorType.FormLabelForNameError */, "PageError" /* IssueKind.PAGE_ERROR */],
|
|
185
200
|
["FormInputWithNoLabelError" /* Protocol.Audits.GenericIssueErrorType.FormInputWithNoLabelError */, "Improvement" /* IssueKind.IMPROVEMENT */],
|
|
186
201
|
["FormAutocompleteAttributeEmptyError" /* Protocol.Audits.GenericIssueErrorType.FormAutocompleteAttributeEmptyError */, "PageError" /* IssueKind.PAGE_ERROR */],
|
|
187
202
|
["FormDuplicateIdForInputError" /* Protocol.Audits.GenericIssueErrorType.FormDuplicateIdForInputError */, "PageError" /* IssueKind.PAGE_ERROR */],
|
|
188
|
-
["
|
|
203
|
+
["FormAriaLabelledByToNonExistingIdError" /* Protocol.Audits.GenericIssueErrorType.FormAriaLabelledByToNonExistingIdError */, "Improvement" /* IssueKind.IMPROVEMENT */],
|
|
189
204
|
["FormEmptyIdAndNameAttributesForInputError" /* Protocol.Audits.GenericIssueErrorType.FormEmptyIdAndNameAttributesForInputError */, "Improvement" /* IssueKind.IMPROVEMENT */],
|
|
190
205
|
[
|
|
191
206
|
"FormInputAssignedAutocompleteValueToIdOrNameAttributeError" /* Protocol.Audits.GenericIssueErrorType.FormInputAssignedAutocompleteValueToIdOrNameAttributeError */,
|
|
192
207
|
"Improvement" /* IssueKind.IMPROVEMENT */,
|
|
193
208
|
],
|
|
194
209
|
["FormLabelForMatchesNonExistingIdError" /* Protocol.Audits.GenericIssueErrorType.FormLabelForMatchesNonExistingIdError */, "PageError" /* IssueKind.PAGE_ERROR */],
|
|
195
|
-
["
|
|
210
|
+
["FormLabelHasNeitherForNorNestedInputError" /* Protocol.Audits.GenericIssueErrorType.FormLabelHasNeitherForNorNestedInputError */, "Improvement" /* IssueKind.IMPROVEMENT */],
|
|
196
211
|
["FormInputHasWrongButWellIntendedAutocompleteValueError" /* Protocol.Audits.GenericIssueErrorType.FormInputHasWrongButWellIntendedAutocompleteValueError */, "Improvement" /* IssueKind.IMPROVEMENT */],
|
|
197
212
|
]);
|
package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/HeavyAdIssue.js
CHANGED
|
@@ -12,17 +12,12 @@ const UIStrings = {
|
|
|
12
12
|
const str_ = i18n.i18n.registerUIStrings('models/issues_manager/HeavyAdIssue.ts', UIStrings);
|
|
13
13
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
14
14
|
export class HeavyAdIssue extends Issue {
|
|
15
|
-
#issueDetails;
|
|
16
15
|
constructor(issueDetails, issuesModel) {
|
|
17
16
|
const umaCode = ["HeavyAdIssue" /* Protocol.Audits.InspectorIssueCode.HeavyAdIssue */, issueDetails.reason].join('::');
|
|
18
|
-
super({ code: "HeavyAdIssue" /* Protocol.Audits.InspectorIssueCode.HeavyAdIssue */, umaCode }, issuesModel);
|
|
19
|
-
this.#issueDetails = issueDetails;
|
|
20
|
-
}
|
|
21
|
-
details() {
|
|
22
|
-
return this.#issueDetails;
|
|
17
|
+
super({ code: "HeavyAdIssue" /* Protocol.Audits.InspectorIssueCode.HeavyAdIssue */, umaCode }, issueDetails, issuesModel);
|
|
23
18
|
}
|
|
24
19
|
primaryKey() {
|
|
25
|
-
return `${"HeavyAdIssue" /* Protocol.Audits.InspectorIssueCode.HeavyAdIssue */}-${JSON.stringify(this
|
|
20
|
+
return `${"HeavyAdIssue" /* Protocol.Audits.InspectorIssueCode.HeavyAdIssue */}-${JSON.stringify(this.details())}`;
|
|
26
21
|
}
|
|
27
22
|
getDescription() {
|
|
28
23
|
return {
|
|
@@ -39,7 +34,7 @@ export class HeavyAdIssue extends Issue {
|
|
|
39
34
|
return "HeavyAd" /* IssueCategory.HEAVY_AD */;
|
|
40
35
|
}
|
|
41
36
|
getKind() {
|
|
42
|
-
switch (this
|
|
37
|
+
switch (this.details().resolution) {
|
|
43
38
|
case "HeavyAdBlocked" /* Protocol.Audits.HeavyAdResolutionStatus.HeavyAdBlocked */:
|
|
44
39
|
return "PageError" /* IssueKind.PAGE_ERROR */;
|
|
45
40
|
case "HeavyAdWarning" /* Protocol.Audits.HeavyAdResolutionStatus.HeavyAdWarning */:
|
package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/Issue.js
CHANGED
|
@@ -72,9 +72,11 @@ export class Issue {
|
|
|
72
72
|
#issueCode;
|
|
73
73
|
#issuesModel;
|
|
74
74
|
issueId = undefined;
|
|
75
|
+
#issueDetails;
|
|
75
76
|
#hidden;
|
|
76
|
-
constructor(code, issuesModel = null, issueId) {
|
|
77
|
+
constructor(code, issueDetails, issuesModel = null, issueId) {
|
|
77
78
|
this.#issueCode = typeof code === 'object' ? code.code : code;
|
|
79
|
+
this.#issueDetails = issueDetails;
|
|
78
80
|
this.#issuesModel = issuesModel;
|
|
79
81
|
this.issueId = issueId;
|
|
80
82
|
Host.userMetrics.issueCreated(typeof code === 'string' ? code : code.umaCode);
|
|
@@ -83,6 +85,9 @@ export class Issue {
|
|
|
83
85
|
code() {
|
|
84
86
|
return this.#issueCode;
|
|
85
87
|
}
|
|
88
|
+
details() {
|
|
89
|
+
return this.#issueDetails;
|
|
90
|
+
}
|
|
86
91
|
getBlockedByResponseDetails() {
|
|
87
92
|
return [];
|
|
88
93
|
}
|
|
@@ -23,6 +23,7 @@ import { SharedArrayBufferIssue } from './SharedArrayBufferIssue.js';
|
|
|
23
23
|
* of all resources that are affected by the aggregated issues.
|
|
24
24
|
*/
|
|
25
25
|
export class AggregatedIssue extends Issue {
|
|
26
|
+
#allIssues = new Set();
|
|
26
27
|
#affectedCookies = new Map();
|
|
27
28
|
#affectedRawCookieLines = new Map();
|
|
28
29
|
#affectedRequests = [];
|
|
@@ -48,7 +49,7 @@ export class AggregatedIssue extends Issue {
|
|
|
48
49
|
#aggregatedIssuesCount = 0;
|
|
49
50
|
#key;
|
|
50
51
|
constructor(code, aggregationKey) {
|
|
51
|
-
super(code);
|
|
52
|
+
super(code, null);
|
|
52
53
|
this.#key = aggregationKey;
|
|
53
54
|
}
|
|
54
55
|
primaryKey() {
|
|
@@ -145,6 +146,7 @@ export class AggregatedIssue extends Issue {
|
|
|
145
146
|
if (!this.#representative) {
|
|
146
147
|
this.#representative = issue;
|
|
147
148
|
}
|
|
149
|
+
this.#allIssues.add(issue);
|
|
148
150
|
this.#issueKind = unionIssueKind(this.#issueKind, issue.getKind());
|
|
149
151
|
let hasRequest = false;
|
|
150
152
|
for (const request of issue.requests()) {
|
|
@@ -227,6 +229,9 @@ export class AggregatedIssue extends Issue {
|
|
|
227
229
|
getKind() {
|
|
228
230
|
return this.#issueKind;
|
|
229
231
|
}
|
|
232
|
+
getAllIssues() {
|
|
233
|
+
return Array.from(this.#allIssues);
|
|
234
|
+
}
|
|
230
235
|
isHidden() {
|
|
231
236
|
return this.#representative?.isHidden() || false;
|
|
232
237
|
}
|
|
@@ -12,22 +12,17 @@ const UIStrings = {
|
|
|
12
12
|
const str_ = i18n.i18n.registerUIStrings('models/issues_manager/LowTextContrastIssue.ts', UIStrings);
|
|
13
13
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
14
14
|
export class LowTextContrastIssue extends Issue {
|
|
15
|
-
#issueDetails;
|
|
16
15
|
constructor(issueDetails, issuesModel) {
|
|
17
|
-
super('LowTextContrastIssue', issuesModel);
|
|
18
|
-
this.#issueDetails = issueDetails;
|
|
16
|
+
super('LowTextContrastIssue', issueDetails, issuesModel);
|
|
19
17
|
}
|
|
20
18
|
primaryKey() {
|
|
21
19
|
// We intend to keep only one issue per element so other issues for the element will be discarded even
|
|
22
20
|
// if the issue content is slightly different.
|
|
23
|
-
return `${this.code()}-(${this
|
|
21
|
+
return `${this.code()}-(${this.details().violatingNodeId})`;
|
|
24
22
|
}
|
|
25
23
|
getCategory() {
|
|
26
24
|
return "LowTextContrast" /* IssueCategory.LOW_TEXT_CONTRAST */;
|
|
27
25
|
}
|
|
28
|
-
details() {
|
|
29
|
-
return this.#issueDetails;
|
|
30
|
-
}
|
|
31
26
|
getDescription() {
|
|
32
27
|
return {
|
|
33
28
|
file: 'LowTextContrast.md',
|
|
@@ -12,20 +12,16 @@ const UIStrings = {
|
|
|
12
12
|
const str_ = i18n.i18n.registerUIStrings('models/issues_manager/MixedContentIssue.ts', UIStrings);
|
|
13
13
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
14
14
|
export class MixedContentIssue extends Issue {
|
|
15
|
-
#issueDetails;
|
|
16
15
|
constructor(issueDetails, issuesModel) {
|
|
17
|
-
super("MixedContentIssue" /* Protocol.Audits.InspectorIssueCode.MixedContentIssue */, issuesModel);
|
|
18
|
-
this.#issueDetails = issueDetails;
|
|
16
|
+
super("MixedContentIssue" /* Protocol.Audits.InspectorIssueCode.MixedContentIssue */, issueDetails, issuesModel);
|
|
19
17
|
}
|
|
20
18
|
requests() {
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
const details = this.details();
|
|
20
|
+
if (details.request) {
|
|
21
|
+
return [details.request];
|
|
23
22
|
}
|
|
24
23
|
return [];
|
|
25
24
|
}
|
|
26
|
-
getDetails() {
|
|
27
|
-
return this.#issueDetails;
|
|
28
|
-
}
|
|
29
25
|
getCategory() {
|
|
30
26
|
return "MixedContent" /* IssueCategory.MIXED_CONTENT */;
|
|
31
27
|
}
|
|
@@ -36,10 +32,10 @@ export class MixedContentIssue extends Issue {
|
|
|
36
32
|
};
|
|
37
33
|
}
|
|
38
34
|
primaryKey() {
|
|
39
|
-
return JSON.stringify(this
|
|
35
|
+
return JSON.stringify(this.details());
|
|
40
36
|
}
|
|
41
37
|
getKind() {
|
|
42
|
-
switch (this
|
|
38
|
+
switch (this.details().resolutionStatus) {
|
|
43
39
|
case "MixedContentAutomaticallyUpgraded" /* Protocol.Audits.MixedContentResolutionStatus.MixedContentAutomaticallyUpgraded */:
|
|
44
40
|
return "Improvement" /* IssueKind.IMPROVEMENT */;
|
|
45
41
|
case "MixedContentBlocked" /* Protocol.Audits.MixedContentResolutionStatus.MixedContentBlocked */:
|
|
@@ -16,16 +16,14 @@ const UIStrings = {
|
|
|
16
16
|
const str_ = i18n.i18n.registerUIStrings('models/issues_manager/PartitioningBlobURLIssue.ts', UIStrings);
|
|
17
17
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
18
18
|
export class PartitioningBlobURLIssue extends Issue {
|
|
19
|
-
#issueDetails;
|
|
20
19
|
constructor(issueDetails, issuesModel) {
|
|
21
|
-
super("PartitioningBlobURLIssue" /* Protocol.Audits.InspectorIssueCode.PartitioningBlobURLIssue */, issuesModel);
|
|
22
|
-
this.#issueDetails = issueDetails;
|
|
20
|
+
super("PartitioningBlobURLIssue" /* Protocol.Audits.InspectorIssueCode.PartitioningBlobURLIssue */, issueDetails, issuesModel);
|
|
23
21
|
}
|
|
24
22
|
getCategory() {
|
|
25
23
|
return "Other" /* IssueCategory.OTHER */;
|
|
26
24
|
}
|
|
27
25
|
getDescription() {
|
|
28
|
-
const fileName = this
|
|
26
|
+
const fileName = this.details().partitioningBlobURLInfo ===
|
|
29
27
|
"BlockedCrossPartitionFetching" /* Protocol.Audits.PartitioningBlobURLInfo.BlockedCrossPartitionFetching */ ?
|
|
30
28
|
'fetchingPartitionedBlobURL.md' :
|
|
31
29
|
'navigatingPartitionedBlobURL.md';
|
|
@@ -43,14 +41,11 @@ export class PartitioningBlobURLIssue extends Issue {
|
|
|
43
41
|
],
|
|
44
42
|
};
|
|
45
43
|
}
|
|
46
|
-
details() {
|
|
47
|
-
return this.#issueDetails;
|
|
48
|
-
}
|
|
49
44
|
getKind() {
|
|
50
45
|
return "BreakingChange" /* IssueKind.BREAKING_CHANGE */;
|
|
51
46
|
}
|
|
52
47
|
primaryKey() {
|
|
53
|
-
return JSON.stringify(this
|
|
48
|
+
return JSON.stringify(this.details());
|
|
54
49
|
}
|
|
55
50
|
static fromInspectorIssue(issuesModel, inspectorIssue) {
|
|
56
51
|
const details = inspectorIssue.details.partitioningBlobURLIssueDetails;
|
|
@@ -3,25 +3,20 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
import { Issue } from './Issue.js';
|
|
5
5
|
export class PropertyRuleIssue extends Issue {
|
|
6
|
-
#issueDetails;
|
|
7
6
|
#primaryKey;
|
|
8
7
|
constructor(issueDetails, issuesModel) {
|
|
9
8
|
const code = JSON.stringify(issueDetails);
|
|
10
|
-
super(code, issuesModel);
|
|
9
|
+
super(code, issueDetails, issuesModel);
|
|
11
10
|
this.#primaryKey = code;
|
|
12
|
-
this.#issueDetails = issueDetails;
|
|
13
11
|
}
|
|
14
12
|
sources() {
|
|
15
|
-
return [this
|
|
16
|
-
}
|
|
17
|
-
details() {
|
|
18
|
-
return this.#issueDetails;
|
|
13
|
+
return [this.details().sourceCodeLocation];
|
|
19
14
|
}
|
|
20
15
|
primaryKey() {
|
|
21
16
|
return this.#primaryKey;
|
|
22
17
|
}
|
|
23
18
|
getPropertyName() {
|
|
24
|
-
switch (this
|
|
19
|
+
switch (this.details().propertyRuleIssueReason) {
|
|
25
20
|
case "InvalidInherits" /* Protocol.Audits.PropertyRuleIssueReason.InvalidInherits */:
|
|
26
21
|
return 'inherits';
|
|
27
22
|
case "InvalidInitialValue" /* Protocol.Audits.PropertyRuleIssueReason.InvalidInitialValue */:
|
|
@@ -32,13 +27,13 @@ export class PropertyRuleIssue extends Issue {
|
|
|
32
27
|
return '';
|
|
33
28
|
}
|
|
34
29
|
getDescription() {
|
|
35
|
-
if (this
|
|
30
|
+
if (this.details().propertyRuleIssueReason === "InvalidName" /* Protocol.Audits.PropertyRuleIssueReason.InvalidName */) {
|
|
36
31
|
return {
|
|
37
32
|
file: 'propertyRuleInvalidNameIssue.md',
|
|
38
33
|
links: [],
|
|
39
34
|
};
|
|
40
35
|
}
|
|
41
|
-
const value = this
|
|
36
|
+
const value = this.details().propertyValue ? `: ${this.details().propertyValue}` : '';
|
|
42
37
|
const property = `${this.getPropertyName()}${value}`;
|
|
43
38
|
return {
|
|
44
39
|
file: 'propertyRuleIssue.md',
|
|
@@ -12,22 +12,17 @@ const UIStrings = {
|
|
|
12
12
|
const str_ = i18n.i18n.registerUIStrings('models/issues_manager/QuirksModeIssue.ts', UIStrings);
|
|
13
13
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
14
14
|
export class QuirksModeIssue extends Issue {
|
|
15
|
-
#issueDetails;
|
|
16
15
|
constructor(issueDetails, issuesModel) {
|
|
17
16
|
const mode = issueDetails.isLimitedQuirksMode ? 'LimitedQuirksMode' : 'QuirksMode';
|
|
18
17
|
const umaCode = ["QuirksModeIssue" /* Protocol.Audits.InspectorIssueCode.QuirksModeIssue */, mode].join('::');
|
|
19
|
-
super({ code: "QuirksModeIssue" /* Protocol.Audits.InspectorIssueCode.QuirksModeIssue */, umaCode }, issuesModel);
|
|
20
|
-
this.#issueDetails = issueDetails;
|
|
18
|
+
super({ code: "QuirksModeIssue" /* Protocol.Audits.InspectorIssueCode.QuirksModeIssue */, umaCode }, issueDetails, issuesModel);
|
|
21
19
|
}
|
|
22
20
|
primaryKey() {
|
|
23
|
-
return `${this.code()}-(${this
|
|
21
|
+
return `${this.code()}-(${this.details().documentNodeId})-(${this.details().url})`;
|
|
24
22
|
}
|
|
25
23
|
getCategory() {
|
|
26
24
|
return "QuirksMode" /* IssueCategory.QUIRKS_MODE */;
|
|
27
25
|
}
|
|
28
|
-
details() {
|
|
29
|
-
return this.#issueDetails;
|
|
30
|
-
}
|
|
31
26
|
getDescription() {
|
|
32
27
|
return {
|
|
33
28
|
file: 'CompatibilityModeQuirks.md',
|
|
@@ -30,24 +30,20 @@ function generateGroupingIssueCode(details) {
|
|
|
30
30
|
return issueCode;
|
|
31
31
|
}
|
|
32
32
|
export class SRIMessageSignatureIssue extends Issue {
|
|
33
|
-
#issueDetails;
|
|
34
33
|
constructor(issueDetails, issuesModel) {
|
|
35
34
|
super({
|
|
36
35
|
code: generateGroupingIssueCode(issueDetails),
|
|
37
36
|
umaCode: `${"SRIMessageSignatureIssue" /* Protocol.Audits.InspectorIssueCode.SRIMessageSignatureIssue */}::${issueDetails.error}`,
|
|
38
|
-
}, issuesModel);
|
|
39
|
-
this.#issueDetails = issueDetails;
|
|
40
|
-
}
|
|
41
|
-
details() {
|
|
42
|
-
return this.#issueDetails;
|
|
37
|
+
}, issueDetails, issuesModel);
|
|
43
38
|
}
|
|
44
39
|
// Overriding `Issue<String>`:
|
|
45
40
|
primaryKey() {
|
|
46
41
|
return JSON.stringify(this.details());
|
|
47
42
|
}
|
|
48
43
|
getDescription() {
|
|
44
|
+
const details = this.details();
|
|
49
45
|
const description = {
|
|
50
|
-
file: `sri${
|
|
46
|
+
file: `sri${details.error}.md`,
|
|
51
47
|
links: [
|
|
52
48
|
{
|
|
53
49
|
link: 'https://www.rfc-editor.org/rfc/rfc9421.html',
|
|
@@ -60,10 +56,10 @@ export class SRIMessageSignatureIssue extends Issue {
|
|
|
60
56
|
],
|
|
61
57
|
substitutions: new Map()
|
|
62
58
|
};
|
|
63
|
-
if (
|
|
64
|
-
description.substitutions?.set('PLACEHOLDER_signatureBase', () =>
|
|
59
|
+
if (details.error === "ValidationFailedSignatureMismatch" /* Protocol.Audits.SRIMessageSignatureError.ValidationFailedSignatureMismatch */) {
|
|
60
|
+
description.substitutions?.set('PLACEHOLDER_signatureBase', () => details.signatureBase);
|
|
65
61
|
}
|
|
66
|
-
if (
|
|
62
|
+
if (details.error === "ValidationFailedIntegrityMismatch" /* Protocol.Audits.SRIMessageSignatureError.ValidationFailedIntegrityMismatch */) {
|
|
67
63
|
description.substitutions?.set('PLACEHOLDER_integrityAssertions', () => {
|
|
68
64
|
const prefix = '\n* ';
|
|
69
65
|
return prefix + this.details().integrityAssertions.join(prefix);
|
|
@@ -13,18 +13,13 @@ const UIStrings = {
|
|
|
13
13
|
const str_ = i18n.i18n.registerUIStrings('models/issues_manager/SharedArrayBufferIssue.ts', UIStrings);
|
|
14
14
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
15
15
|
export class SharedArrayBufferIssue extends Issue {
|
|
16
|
-
#issueDetails;
|
|
17
16
|
constructor(issueDetails, issuesModel) {
|
|
18
17
|
const umaCode = ["SharedArrayBufferIssue" /* Protocol.Audits.InspectorIssueCode.SharedArrayBufferIssue */, issueDetails.type].join('::');
|
|
19
|
-
super({ code: "SharedArrayBufferIssue" /* Protocol.Audits.InspectorIssueCode.SharedArrayBufferIssue */, umaCode }, issuesModel);
|
|
20
|
-
this.#issueDetails = issueDetails;
|
|
18
|
+
super({ code: "SharedArrayBufferIssue" /* Protocol.Audits.InspectorIssueCode.SharedArrayBufferIssue */, umaCode }, issueDetails, issuesModel);
|
|
21
19
|
}
|
|
22
20
|
getCategory() {
|
|
23
21
|
return "Other" /* IssueCategory.OTHER */;
|
|
24
22
|
}
|
|
25
|
-
details() {
|
|
26
|
-
return this.#issueDetails;
|
|
27
|
-
}
|
|
28
23
|
getDescription() {
|
|
29
24
|
return {
|
|
30
25
|
file: 'sharedArrayBuffer.md',
|
|
@@ -35,10 +30,10 @@ export class SharedArrayBufferIssue extends Issue {
|
|
|
35
30
|
};
|
|
36
31
|
}
|
|
37
32
|
primaryKey() {
|
|
38
|
-
return JSON.stringify(this
|
|
33
|
+
return JSON.stringify(this.details());
|
|
39
34
|
}
|
|
40
35
|
getKind() {
|
|
41
|
-
if (this
|
|
36
|
+
if (this.details().isWarning) {
|
|
42
37
|
return "BreakingChange" /* IssueKind.BREAKING_CHANGE */;
|
|
43
38
|
}
|
|
44
39
|
return "PageError" /* IssueKind.PAGE_ERROR */;
|
|
@@ -69,7 +69,6 @@ function getIssueCode(details) {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
export class SharedDictionaryIssue extends Issue {
|
|
72
|
-
#issueDetails;
|
|
73
72
|
constructor(issueDetails, issuesModel) {
|
|
74
73
|
super({
|
|
75
74
|
code: getIssueCode(issueDetails),
|
|
@@ -77,30 +76,26 @@ export class SharedDictionaryIssue extends Issue {
|
|
|
77
76
|
"SharedDictionaryIssue" /* Protocol.Audits.InspectorIssueCode.SharedDictionaryIssue */,
|
|
78
77
|
issueDetails.sharedDictionaryError,
|
|
79
78
|
].join('::'),
|
|
80
|
-
}, issuesModel);
|
|
81
|
-
this.#issueDetails = issueDetails;
|
|
79
|
+
}, issueDetails, issuesModel);
|
|
82
80
|
}
|
|
83
81
|
requests() {
|
|
84
|
-
if (this
|
|
85
|
-
return [this
|
|
82
|
+
if (this.details().request) {
|
|
83
|
+
return [this.details().request];
|
|
86
84
|
}
|
|
87
85
|
return [];
|
|
88
86
|
}
|
|
89
87
|
getCategory() {
|
|
90
88
|
return "Other" /* IssueCategory.OTHER */;
|
|
91
89
|
}
|
|
92
|
-
details() {
|
|
93
|
-
return this.#issueDetails;
|
|
94
|
-
}
|
|
95
90
|
getDescription() {
|
|
96
|
-
const description = issueDescriptions.get(this
|
|
91
|
+
const description = issueDescriptions.get(this.details().sharedDictionaryError);
|
|
97
92
|
if (!description) {
|
|
98
93
|
return null;
|
|
99
94
|
}
|
|
100
95
|
return resolveLazyDescription(description);
|
|
101
96
|
}
|
|
102
97
|
primaryKey() {
|
|
103
|
-
return JSON.stringify(this
|
|
98
|
+
return JSON.stringify(this.details());
|
|
104
99
|
}
|
|
105
100
|
getKind() {
|
|
106
101
|
return "PageError" /* IssueKind.PAGE_ERROR */;
|
|
@@ -7,33 +7,29 @@ export const lateImportStylesheetLoadingCode = [
|
|
|
7
7
|
"LateImportRule" /* Protocol.Audits.StyleSheetLoadingIssueReason.LateImportRule */,
|
|
8
8
|
].join('::');
|
|
9
9
|
export class StylesheetLoadingIssue extends Issue {
|
|
10
|
-
#issueDetails;
|
|
11
10
|
constructor(issueDetails, issuesModel) {
|
|
12
11
|
const code = `${"StylesheetLoadingIssue" /* Protocol.Audits.InspectorIssueCode.StylesheetLoadingIssue */}::${issueDetails.styleSheetLoadingIssueReason}`;
|
|
13
|
-
super(code, issuesModel);
|
|
14
|
-
this.#issueDetails = issueDetails;
|
|
12
|
+
super(code, issueDetails, issuesModel);
|
|
15
13
|
}
|
|
16
14
|
sources() {
|
|
17
|
-
return [this
|
|
15
|
+
return [this.details().sourceCodeLocation];
|
|
18
16
|
}
|
|
19
17
|
requests() {
|
|
20
|
-
|
|
18
|
+
const details = this.details();
|
|
19
|
+
if (!details.failedRequestInfo) {
|
|
21
20
|
return [];
|
|
22
21
|
}
|
|
23
|
-
const { url, requestId } =
|
|
22
|
+
const { url, requestId } = details.failedRequestInfo;
|
|
24
23
|
if (!requestId) {
|
|
25
24
|
return [];
|
|
26
25
|
}
|
|
27
26
|
return [{ url, requestId }];
|
|
28
27
|
}
|
|
29
|
-
details() {
|
|
30
|
-
return this.#issueDetails;
|
|
31
|
-
}
|
|
32
28
|
primaryKey() {
|
|
33
|
-
return JSON.stringify(this
|
|
29
|
+
return JSON.stringify(this.details());
|
|
34
30
|
}
|
|
35
31
|
getDescription() {
|
|
36
|
-
switch (this
|
|
32
|
+
switch (this.details().styleSheetLoadingIssueReason) {
|
|
37
33
|
case "LateImportRule" /* Protocol.Audits.StyleSheetLoadingIssueReason.LateImportRule */:
|
|
38
34
|
return {
|
|
39
35
|
file: 'stylesheetLateImport.md',
|
|
@@ -17,16 +17,11 @@ const UIStrings = {
|
|
|
17
17
|
const str_ = i18n.i18n.registerUIStrings('models/issues_manager/UnencodedDigestIssue.ts', UIStrings);
|
|
18
18
|
const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
|
|
19
19
|
export class UnencodedDigestIssue extends Issue {
|
|
20
|
-
#issueDetails;
|
|
21
20
|
constructor(issueDetails, issuesModel) {
|
|
22
21
|
super({
|
|
23
22
|
code: `${"UnencodedDigestIssue" /* Protocol.Audits.InspectorIssueCode.UnencodedDigestIssue */}::${issueDetails.error}`,
|
|
24
23
|
umaCode: `${"UnencodedDigestIssue" /* Protocol.Audits.InspectorIssueCode.UnencodedDigestIssue */}::${issueDetails.error}`,
|
|
25
|
-
}, issuesModel);
|
|
26
|
-
this.#issueDetails = issueDetails;
|
|
27
|
-
}
|
|
28
|
-
details() {
|
|
29
|
-
return this.#issueDetails;
|
|
24
|
+
}, issueDetails, issuesModel);
|
|
30
25
|
}
|
|
31
26
|
primaryKey() {
|
|
32
27
|
return JSON.stringify(this.details());
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Session History Item Has Been Marked Skippable
|
|
2
|
+
|
|
3
|
+
A session history item was added by this document without any interaction from the
|
|
4
|
+
user. As a result, this document's history items will be skipped if the user goes
|
|
5
|
+
back or forward via the browser's UI (e.g., back/forward buttons), to prevent pages
|
|
6
|
+
from trapping a user. If the user interacts with the page, the history items
|
|
7
|
+
will no longer be skipped.
|