chrome-devtools-frontend 1.0.1031822 → 1.0.1032471
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/config/gni/devtools_grd_files.gni +1 -0
- package/front_end/core/host/UserMetrics.ts +2 -1
- package/front_end/core/i18n/locales/en-US.json +20 -5
- package/front_end/core/i18n/locales/en-XL.json +20 -5
- package/front_end/core/root/Runtime.ts +1 -0
- package/front_end/entrypoints/main/MainImpl.ts +3 -0
- package/front_end/generated/InspectorBackendCommands.js +3 -3
- package/front_end/generated/SupportedCSSProperties.js +2 -4
- package/front_end/generated/protocol.ts +2 -1
- package/front_end/models/issues_manager/DeprecationIssue.ts +3 -1
- package/front_end/models/text_utils/CodeMirrorUtils.ts +1 -2
- package/front_end/models/timeline_model/TimelineModel.ts +52 -0
- package/front_end/panels/elements/CSSRuleValidator.ts +12 -13
- package/front_end/panels/network/NetworkItemView.ts +15 -2
- package/front_end/panels/network/components/RequestHeadersView.css +13 -0
- package/front_end/panels/network/components/RequestHeadersView.ts +59 -57
- package/front_end/panels/sources/BreakpointsSidebarPane.ts +37 -0
- package/front_end/panels/sources/sources-meta.ts +3 -0
- package/front_end/panels/sources/sources.ts +2 -0
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +21 -2
- package/front_end/panels/timeline/TimelineUIUtils.ts +16 -0
- package/front_end/third_party/codemirror.next/bundle.ts +1 -1
- package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/cpp.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/java.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/json.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/legacy.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/markdown.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/php.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/python.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/wast.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/xml.js +1 -1
- package/front_end/third_party/codemirror.next/codemirror.next.d.ts +342 -1314
- package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
- package/front_end/third_party/codemirror.next/package.json +21 -21
- package/front_end/ui/legacy/InspectorView.ts +6 -0
- package/package.json +1 -1
@@ -1227,6 +1227,7 @@ grd_files_debug_sources = [
|
|
1227
1227
|
"front_end/panels/snippets/SnippetsQuickOpen.js",
|
1228
1228
|
"front_end/panels/sources/AddSourceMapURLDialog.js",
|
1229
1229
|
"front_end/panels/sources/BreakpointEditDialog.js",
|
1230
|
+
"front_end/panels/sources/BreakpointsSidebarPane.js",
|
1230
1231
|
"front_end/panels/sources/CSSPlugin.js",
|
1231
1232
|
"front_end/panels/sources/CallStackSidebarPane.js",
|
1232
1233
|
"front_end/panels/sources/CoveragePlugin.js",
|
@@ -638,8 +638,9 @@ export enum DevtoolsExperiments {
|
|
638
638
|
'authoredDeployedGrouping' = 63,
|
639
639
|
'importantDOMProperties' = 64,
|
640
640
|
'justMyCode' = 65,
|
641
|
+
'breakpointView' = 66,
|
641
642
|
// Increment this when new experiments are added.
|
642
|
-
'MaxValue' =
|
643
|
+
'MaxValue' = 67,
|
643
644
|
}
|
644
645
|
/* eslint-enable @typescript-eslint/naming-convention */
|
645
646
|
|
@@ -1709,6 +1709,9 @@
|
|
1709
1709
|
"models/timeline_model/TimelineModel.ts | unknownWorkletS": {
|
1710
1710
|
"message": "Auction Worklet — {PH1}"
|
1711
1711
|
},
|
1712
|
+
"models/timeline_model/TimelineModel.ts | userInteractions": {
|
1713
|
+
"message": "User Interactions"
|
1714
|
+
},
|
1712
1715
|
"models/timeline_model/TimelineModel.ts | workerS": {
|
1713
1716
|
"message": "Worker — {PH1}"
|
1714
1717
|
},
|
@@ -4842,19 +4845,19 @@
|
|
4842
4845
|
"message": "Inactive property"
|
4843
4846
|
},
|
4844
4847
|
"panels/elements/CSSRuleValidator.ts | ruleViolatedByParentElementRuleFix": {
|
4845
|
-
"message": "
|
4848
|
+
"message": "Try changing the {EXISTING_PARENT_ELEMENT_RULE} property on the parent to {TARGET_PARENT_ELEMENT_RULE}."
|
4846
4849
|
},
|
4847
4850
|
"panels/elements/CSSRuleValidator.ts | ruleViolatedByParentElementRuleReason": {
|
4848
|
-
"message": "The
|
4851
|
+
"message": "The {REASON_PROPERTY_DECLARATION_CODE} property on the parent element bypasses the effect of {AFFECTED_PROPERTY_DECLARATION_CODE}."
|
4849
4852
|
},
|
4850
4853
|
"panels/elements/CSSRuleValidator.ts | ruleViolatedBySameElementRuleChangeSuggestion": {
|
4851
|
-
"message": "
|
4854
|
+
"message": "Try changing the {EXISTING_PROPERTY_DECLARATION} property to {TARGET_PROPERTY_DECLARATION}."
|
4852
4855
|
},
|
4853
4856
|
"panels/elements/CSSRuleValidator.ts | ruleViolatedBySameElementRuleFix": {
|
4854
|
-
"message": "
|
4857
|
+
"message": "Try removing {REASON_PROPERTY_DECLARATION_CODE} or changing its value."
|
4855
4858
|
},
|
4856
4859
|
"panels/elements/CSSRuleValidator.ts | ruleViolatedBySameElementRuleReason": {
|
4857
|
-
"message": "
|
4860
|
+
"message": "The {REASON_PROPERTY_DECLARATION_CODE} property on the same element bypasses the effect of {AFFECTED_PROPERTY_DECLARATION_CODE}."
|
4858
4861
|
},
|
4859
4862
|
"panels/elements/DOMLinkifier.ts | node": {
|
4860
4863
|
"message": "<node>"
|
@@ -9785,6 +9788,9 @@
|
|
9785
9788
|
"panels/sources/BreakpointEditDialog.ts | pauseOnlyWhenTheConditionIsTrue": {
|
9786
9789
|
"message": "Pause only when the condition is true"
|
9787
9790
|
},
|
9791
|
+
"panels/sources/BreakpointsSidebarPane.ts | noBreakpoints": {
|
9792
|
+
"message": "No breakpoints"
|
9793
|
+
},
|
9788
9794
|
"panels/sources/CallStackSidebarPane.ts | addAllContentScriptsToIgnoreList": {
|
9789
9795
|
"message": "Add all content scripts to ignore list"
|
9790
9796
|
},
|
@@ -10853,6 +10859,9 @@
|
|
10853
10859
|
"panels/timeline/TimelineFlameChartDataProvider.ts | timings": {
|
10854
10860
|
"message": "Timings"
|
10855
10861
|
},
|
10862
|
+
"panels/timeline/TimelineFlameChartDataProvider.ts | userInteractions": {
|
10863
|
+
"message": "Interactions"
|
10864
|
+
},
|
10856
10865
|
"panels/timeline/TimelineFlameChartNetworkDataProvider.ts | network": {
|
10857
10866
|
"message": "Network"
|
10858
10867
|
},
|
@@ -11315,6 +11324,9 @@
|
|
11315
11324
|
"panels/timeline/TimelineUIUtils.ts | event": {
|
11316
11325
|
"message": "Event"
|
11317
11326
|
},
|
11327
|
+
"panels/timeline/TimelineUIUtils.ts | eventTiming": {
|
11328
|
+
"message": "Event Timing"
|
11329
|
+
},
|
11318
11330
|
"panels/timeline/TimelineUIUtils.ts | evolvedClsLink": {
|
11319
11331
|
"message": "evolved"
|
11320
11332
|
},
|
@@ -11426,6 +11438,9 @@
|
|
11426
11438
|
"panels/timeline/TimelineUIUtils.ts | installTimer": {
|
11427
11439
|
"message": "Install Timer"
|
11428
11440
|
},
|
11441
|
+
"panels/timeline/TimelineUIUtils.ts | interactionEvent": {
|
11442
|
+
"message": "Interaction type:{PH1} id:{PH2}"
|
11443
|
+
},
|
11429
11444
|
"panels/timeline/TimelineUIUtils.ts | invalidateLayout": {
|
11430
11445
|
"message": "Invalidate Layout"
|
11431
11446
|
},
|
@@ -1709,6 +1709,9 @@
|
|
1709
1709
|
"models/timeline_model/TimelineModel.ts | unknownWorkletS": {
|
1710
1710
|
"message": "Âúĉt́îón̂ Ẃôŕk̂ĺêt́ — {PH1}"
|
1711
1711
|
},
|
1712
|
+
"models/timeline_model/TimelineModel.ts | userInteractions": {
|
1713
|
+
"message": "Ûśêŕ Îńt̂ér̂áĉt́îón̂ś"
|
1714
|
+
},
|
1712
1715
|
"models/timeline_model/TimelineModel.ts | workerS": {
|
1713
1716
|
"message": "Worker — {PH1}"
|
1714
1717
|
},
|
@@ -4842,19 +4845,19 @@
|
|
4842
4845
|
"message": "Îńâćt̂ív̂é p̂ŕôṕêŕt̂ý"
|
4843
4846
|
},
|
4844
4847
|
"panels/elements/CSSRuleValidator.ts | ruleViolatedByParentElementRuleFix": {
|
4845
|
-
"message": "
|
4848
|
+
"message": "T̂ŕŷ ćĥán̂ǵîńĝ t́ĥé {EXISTING_PARENT_ELEMENT_RULE} p̂ŕôṕêŕt̂ý ôń t̂h́ê ṕâŕêńt̂ t́ô {TARGET_PARENT_ELEMENT_RULE}."
|
4846
4849
|
},
|
4847
4850
|
"panels/elements/CSSRuleValidator.ts | ruleViolatedByParentElementRuleReason": {
|
4848
|
-
"message": "T̂h́ê ṕ
|
4851
|
+
"message": "T̂h́ê {REASON_PROPERTY_DECLARATION_CODE} ṕr̂óp̂ér̂t́ŷ ón̂ t́ĥé p̂ár̂én̂t́ êĺêḿêńt̂ b́ŷṕâśŝéŝ t́ĥé êf́f̂éĉt́ ôf́ {AFFECTED_PROPERTY_DECLARATION_CODE}."
|
4849
4852
|
},
|
4850
4853
|
"panels/elements/CSSRuleValidator.ts | ruleViolatedBySameElementRuleChangeSuggestion": {
|
4851
|
-
"message": "
|
4854
|
+
"message": "T̂ŕŷ ćĥán̂ǵîńĝ t́ĥé {EXISTING_PROPERTY_DECLARATION} p̂ŕôṕêŕt̂ý t̂ó {TARGET_PROPERTY_DECLARATION}."
|
4852
4855
|
},
|
4853
4856
|
"panels/elements/CSSRuleValidator.ts | ruleViolatedBySameElementRuleFix": {
|
4854
|
-
"message": "
|
4857
|
+
"message": "T̂ŕŷ ŕêḿôv́îńĝ {REASON_PROPERTY_DECLARATION_CODE} ór̂ ćĥán̂ǵîńĝ ít̂ś v̂ál̂úê."
|
4855
4858
|
},
|
4856
4859
|
"panels/elements/CSSRuleValidator.ts | ruleViolatedBySameElementRuleReason": {
|
4857
|
-
"message": "T̂h́
|
4860
|
+
"message": "T̂h́ê {REASON_PROPERTY_DECLARATION_CODE} ṕr̂óp̂ér̂t́ŷ ón̂ t́ĥé ŝám̂é êĺêḿêńt̂ b́ŷṕâśŝéŝ t́ĥé êf́f̂éĉt́ ôf́ {AFFECTED_PROPERTY_DECLARATION_CODE}."
|
4858
4861
|
},
|
4859
4862
|
"panels/elements/DOMLinkifier.ts | node": {
|
4860
4863
|
"message": "<n̂ód̂é>"
|
@@ -9785,6 +9788,9 @@
|
|
9785
9788
|
"panels/sources/BreakpointEditDialog.ts | pauseOnlyWhenTheConditionIsTrue": {
|
9786
9789
|
"message": "P̂áûśê ón̂ĺŷ ẃĥén̂ t́ĥé ĉón̂d́ît́îón̂ íŝ t́r̂úê"
|
9787
9790
|
},
|
9791
|
+
"panels/sources/BreakpointsSidebarPane.ts | noBreakpoints": {
|
9792
|
+
"message": "N̂ó b̂ŕêák̂ṕôín̂t́ŝ"
|
9793
|
+
},
|
9788
9794
|
"panels/sources/CallStackSidebarPane.ts | addAllContentScriptsToIgnoreList": {
|
9789
9795
|
"message": "Âd́d̂ ál̂ĺ ĉón̂t́êńt̂ śĉŕîṕt̂ś t̂ó îǵn̂ór̂é l̂íŝt́"
|
9790
9796
|
},
|
@@ -10853,6 +10859,9 @@
|
|
10853
10859
|
"panels/timeline/TimelineFlameChartDataProvider.ts | timings": {
|
10854
10860
|
"message": "T̂ím̂ín̂ǵŝ"
|
10855
10861
|
},
|
10862
|
+
"panels/timeline/TimelineFlameChartDataProvider.ts | userInteractions": {
|
10863
|
+
"message": "Îńt̂ér̂áĉt́îón̂ś"
|
10864
|
+
},
|
10856
10865
|
"panels/timeline/TimelineFlameChartNetworkDataProvider.ts | network": {
|
10857
10866
|
"message": "N̂ét̂ẃôŕk̂"
|
10858
10867
|
},
|
@@ -11315,6 +11324,9 @@
|
|
11315
11324
|
"panels/timeline/TimelineUIUtils.ts | event": {
|
11316
11325
|
"message": "Êv́êńt̂"
|
11317
11326
|
},
|
11327
|
+
"panels/timeline/TimelineUIUtils.ts | eventTiming": {
|
11328
|
+
"message": "Êv́êńt̂ T́îḿîńĝ"
|
11329
|
+
},
|
11318
11330
|
"panels/timeline/TimelineUIUtils.ts | evolvedClsLink": {
|
11319
11331
|
"message": "êv́ôĺv̂éd̂"
|
11320
11332
|
},
|
@@ -11426,6 +11438,9 @@
|
|
11426
11438
|
"panels/timeline/TimelineUIUtils.ts | installTimer": {
|
11427
11439
|
"message": "Îńŝt́âĺl̂ T́îḿêŕ"
|
11428
11440
|
},
|
11441
|
+
"panels/timeline/TimelineUIUtils.ts | interactionEvent": {
|
11442
|
+
"message": "Îńt̂ér̂áĉt́îón̂ t́ŷṕê:{PH1} íd̂:{PH2}"
|
11443
|
+
},
|
11429
11444
|
"panels/timeline/TimelineUIUtils.ts | invalidateLayout": {
|
11430
11445
|
"message": "Îńv̂ál̂íd̂át̂é L̂áŷóût́"
|
11431
11446
|
},
|
@@ -295,6 +295,7 @@ export enum ExperimentName {
|
|
295
295
|
AUTHORED_DEPLOYED_GROUPING = 'authoredDeployedGrouping',
|
296
296
|
IMPORTANT_DOM_PROPERTIES = 'importantDOMProperties',
|
297
297
|
JUST_MY_CODE = 'justMyCode',
|
298
|
+
BREAKPOINT_VIEW = 'breakpointView',
|
298
299
|
}
|
299
300
|
|
300
301
|
// TODO(crbug.com/1167717): Make this a const enum again
|
@@ -322,6 +322,9 @@ export class MainImpl {
|
|
322
322
|
'evaluateExpressionsWithSourceMaps', 'Console: Resolve variable names in expressions using source maps',
|
323
323
|
undefined);
|
324
324
|
Root.Runtime.experiments.register('instrumentationBreakpoints', 'Enable instrumentation breakpoints', true);
|
325
|
+
Root.Runtime.experiments.register(
|
326
|
+
Root.Runtime.ExperimentName.BREAKPOINT_VIEW, 'Enable re-designed Breakpoint Sidebar Pane in the Sources Panel',
|
327
|
+
true);
|
325
328
|
|
326
329
|
// Dual-screen
|
327
330
|
Root.Runtime.experiments.register(
|
@@ -52,8 +52,8 @@ inspectorBackend.registerCommand("Animation.setPlaybackRate", [{"name": "playbac
|
|
52
52
|
inspectorBackend.registerCommand("Animation.setTiming", [{"name": "animationId", "type": "string", "optional": false}, {"name": "duration", "type": "number", "optional": false}, {"name": "delay", "type": "number", "optional": false}], []);
|
53
53
|
|
54
54
|
// Audits.
|
55
|
-
inspectorBackend.registerEnum("Audits.CookieExclusionReason", {ExcludeSameSiteUnspecifiedTreatedAsLax: "ExcludeSameSiteUnspecifiedTreatedAsLax", ExcludeSameSiteNoneInsecure: "ExcludeSameSiteNoneInsecure", ExcludeSameSiteLax: "ExcludeSameSiteLax", ExcludeSameSiteStrict: "ExcludeSameSiteStrict", ExcludeInvalidSameParty: "ExcludeInvalidSameParty", ExcludeSamePartyCrossPartyContext: "ExcludeSamePartyCrossPartyContext"});
|
56
|
-
inspectorBackend.registerEnum("Audits.CookieWarningReason", {WarnSameSiteUnspecifiedCrossSiteContext: "WarnSameSiteUnspecifiedCrossSiteContext", WarnSameSiteNoneInsecure: "WarnSameSiteNoneInsecure", WarnSameSiteUnspecifiedLaxAllowUnsafe: "WarnSameSiteUnspecifiedLaxAllowUnsafe", WarnSameSiteStrictLaxDowngradeStrict: "WarnSameSiteStrictLaxDowngradeStrict", WarnSameSiteStrictCrossDowngradeStrict: "WarnSameSiteStrictCrossDowngradeStrict", WarnSameSiteStrictCrossDowngradeLax: "WarnSameSiteStrictCrossDowngradeLax", WarnSameSiteLaxCrossDowngradeStrict: "WarnSameSiteLaxCrossDowngradeStrict", WarnSameSiteLaxCrossDowngradeLax: "WarnSameSiteLaxCrossDowngradeLax", WarnAttributeValueExceedsMaxSize: "WarnAttributeValueExceedsMaxSize"});
|
55
|
+
inspectorBackend.registerEnum("Audits.CookieExclusionReason", {ExcludeSameSiteUnspecifiedTreatedAsLax: "ExcludeSameSiteUnspecifiedTreatedAsLax", ExcludeSameSiteNoneInsecure: "ExcludeSameSiteNoneInsecure", ExcludeSameSiteLax: "ExcludeSameSiteLax", ExcludeSameSiteStrict: "ExcludeSameSiteStrict", ExcludeInvalidSameParty: "ExcludeInvalidSameParty", ExcludeSamePartyCrossPartyContext: "ExcludeSamePartyCrossPartyContext", ExcludeDomainNonASCII: "ExcludeDomainNonASCII"});
|
56
|
+
inspectorBackend.registerEnum("Audits.CookieWarningReason", {WarnSameSiteUnspecifiedCrossSiteContext: "WarnSameSiteUnspecifiedCrossSiteContext", WarnSameSiteNoneInsecure: "WarnSameSiteNoneInsecure", WarnSameSiteUnspecifiedLaxAllowUnsafe: "WarnSameSiteUnspecifiedLaxAllowUnsafe", WarnSameSiteStrictLaxDowngradeStrict: "WarnSameSiteStrictLaxDowngradeStrict", WarnSameSiteStrictCrossDowngradeStrict: "WarnSameSiteStrictCrossDowngradeStrict", WarnSameSiteStrictCrossDowngradeLax: "WarnSameSiteStrictCrossDowngradeLax", WarnSameSiteLaxCrossDowngradeStrict: "WarnSameSiteLaxCrossDowngradeStrict", WarnSameSiteLaxCrossDowngradeLax: "WarnSameSiteLaxCrossDowngradeLax", WarnAttributeValueExceedsMaxSize: "WarnAttributeValueExceedsMaxSize", WarnDomainNonASCII: "WarnDomainNonASCII"});
|
57
57
|
inspectorBackend.registerEnum("Audits.CookieOperation", {SetCookie: "SetCookie", ReadCookie: "ReadCookie"});
|
58
58
|
inspectorBackend.registerEnum("Audits.MixedContentResolutionStatus", {MixedContentBlocked: "MixedContentBlocked", MixedContentAutomaticallyUpgraded: "MixedContentAutomaticallyUpgraded", MixedContentWarning: "MixedContentWarning"});
|
59
59
|
inspectorBackend.registerEnum("Audits.MixedContentResourceType", {AttributionSrc: "AttributionSrc", Audio: "Audio", Beacon: "Beacon", CSPReport: "CSPReport", Download: "Download", EventSource: "EventSource", Favicon: "Favicon", Font: "Font", Form: "Form", Frame: "Frame", Image: "Image", Import: "Import", Manifest: "Manifest", Ping: "Ping", PluginData: "PluginData", PluginResource: "PluginResource", Prefetch: "Prefetch", Resource: "Resource", Script: "Script", ServiceWorker: "ServiceWorker", SharedWorker: "SharedWorker", Stylesheet: "Stylesheet", Track: "Track", Video: "Video", Worker: "Worker", XMLHttpRequest: "XMLHttpRequest", XSLT: "XSLT"});
|
@@ -67,7 +67,7 @@ inspectorBackend.registerEnum("Audits.AttributionReportingIssueType", {Permissio
|
|
67
67
|
inspectorBackend.registerEnum("Audits.GenericIssueErrorType", {CrossOriginPortalPostMessageError: "CrossOriginPortalPostMessageError"});
|
68
68
|
inspectorBackend.registerEnum("Audits.DeprecationIssueType", {AuthorizationCoveredByWildcard: "AuthorizationCoveredByWildcard", CanRequestURLHTTPContainingNewline: "CanRequestURLHTTPContainingNewline", ChromeLoadTimesConnectionInfo: "ChromeLoadTimesConnectionInfo", ChromeLoadTimesFirstPaintAfterLoadTime: "ChromeLoadTimesFirstPaintAfterLoadTime", ChromeLoadTimesWasAlternateProtocolAvailable: "ChromeLoadTimesWasAlternateProtocolAvailable", CookieWithTruncatingChar: "CookieWithTruncatingChar", CrossOriginAccessBasedOnDocumentDomain: "CrossOriginAccessBasedOnDocumentDomain", CrossOriginWindowAlert: "CrossOriginWindowAlert", CrossOriginWindowConfirm: "CrossOriginWindowConfirm", CSSSelectorInternalMediaControlsOverlayCastButton: "CSSSelectorInternalMediaControlsOverlayCastButton", DeprecationExample: "DeprecationExample", DocumentDomainSettingWithoutOriginAgentClusterHeader: "DocumentDomainSettingWithoutOriginAgentClusterHeader", EventPath: "EventPath", ExpectCTHeader: "ExpectCTHeader", GeolocationInsecureOrigin: "GeolocationInsecureOrigin", GeolocationInsecureOriginDeprecatedNotRemoved: "GeolocationInsecureOriginDeprecatedNotRemoved", GetUserMediaInsecureOrigin: "GetUserMediaInsecureOrigin", HostCandidateAttributeGetter: "HostCandidateAttributeGetter", IdentityInCanMakePaymentEvent: "IdentityInCanMakePaymentEvent", InsecurePrivateNetworkSubresourceRequest: "InsecurePrivateNetworkSubresourceRequest", LegacyConstraintGoogIPv6: "LegacyConstraintGoogIPv6", LocalCSSFileExtensionRejected: "LocalCSSFileExtensionRejected", MediaSourceAbortRemove: "MediaSourceAbortRemove", MediaSourceDurationTruncatingBuffered: "MediaSourceDurationTruncatingBuffered", NavigateEventRestoreScroll: "NavigateEventRestoreScroll", NavigateEventTransitionWhile: "NavigateEventTransitionWhile", NoSysexWebMIDIWithoutPermission: "NoSysexWebMIDIWithoutPermission", NotificationInsecureOrigin: "NotificationInsecureOrigin", NotificationPermissionRequestedIframe: "NotificationPermissionRequestedIframe", ObsoleteWebRtcCipherSuite: "ObsoleteWebRtcCipherSuite", OpenWebDatabaseInsecureContext: "OpenWebDatabaseInsecureContext", OverflowVisibleOnReplacedElement: "OverflowVisibleOnReplacedElement", PersistentQuotaType: "PersistentQuotaType", PictureSourceSrc: "PictureSourceSrc", PrefixedCancelAnimationFrame: "PrefixedCancelAnimationFrame", PrefixedRequestAnimationFrame: "PrefixedRequestAnimationFrame", PrefixedStorageInfo: "PrefixedStorageInfo", PrefixedVideoDisplayingFullscreen: "PrefixedVideoDisplayingFullscreen", PrefixedVideoEnterFullscreen: "PrefixedVideoEnterFullscreen", PrefixedVideoEnterFullScreen: "PrefixedVideoEnterFullScreen", PrefixedVideoExitFullscreen: "PrefixedVideoExitFullscreen", PrefixedVideoExitFullScreen: "PrefixedVideoExitFullScreen", PrefixedVideoSupportsFullscreen: "PrefixedVideoSupportsFullscreen", RangeExpand: "RangeExpand", RequestedSubresourceWithEmbeddedCredentials: "RequestedSubresourceWithEmbeddedCredentials", RTCConstraintEnableDtlsSrtpFalse: "RTCConstraintEnableDtlsSrtpFalse", RTCConstraintEnableDtlsSrtpTrue: "RTCConstraintEnableDtlsSrtpTrue", RTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics: "RTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics", RTCPeerConnectionSdpSemanticsPlanB: "RTCPeerConnectionSdpSemanticsPlanB", RtcpMuxPolicyNegotiate: "RtcpMuxPolicyNegotiate", SharedArrayBufferConstructedWithoutIsolation: "SharedArrayBufferConstructedWithoutIsolation", TextToSpeech_DisallowedByAutoplay: "TextToSpeech_DisallowedByAutoplay", V8SharedArrayBufferConstructedInExtensionWithoutIsolation: "V8SharedArrayBufferConstructedInExtensionWithoutIsolation", XHRJSONEncodingDetection: "XHRJSONEncodingDetection", XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload: "XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload", XRSupportsSession: "XRSupportsSession"});
|
69
69
|
inspectorBackend.registerEnum("Audits.ClientHintIssueReason", {MetaTagAllowListInvalidOrigin: "MetaTagAllowListInvalidOrigin", MetaTagModifiedHTML: "MetaTagModifiedHTML"});
|
70
|
-
inspectorBackend.registerEnum("Audits.FederatedAuthRequestIssueReason", {ApprovalDeclined: "ApprovalDeclined", TooManyRequests: "TooManyRequests", ManifestListHttpNotFound: "ManifestListHttpNotFound", ManifestListNoResponse: "ManifestListNoResponse", ManifestListInvalidResponse: "ManifestListInvalidResponse", ManifestNotInManifestList: "ManifestNotInManifestList", ManifestListTooBig: "ManifestListTooBig", ManifestHttpNotFound: "ManifestHttpNotFound", ManifestNoResponse: "ManifestNoResponse", ManifestInvalidResponse: "ManifestInvalidResponse", ClientMetadataHttpNotFound: "ClientMetadataHttpNotFound", ClientMetadataNoResponse: "ClientMetadataNoResponse", ClientMetadataInvalidResponse: "ClientMetadataInvalidResponse",
|
70
|
+
inspectorBackend.registerEnum("Audits.FederatedAuthRequestIssueReason", {ApprovalDeclined: "ApprovalDeclined", TooManyRequests: "TooManyRequests", ManifestListHttpNotFound: "ManifestListHttpNotFound", ManifestListNoResponse: "ManifestListNoResponse", ManifestListInvalidResponse: "ManifestListInvalidResponse", ManifestNotInManifestList: "ManifestNotInManifestList", ManifestListTooBig: "ManifestListTooBig", ManifestHttpNotFound: "ManifestHttpNotFound", ManifestNoResponse: "ManifestNoResponse", ManifestInvalidResponse: "ManifestInvalidResponse", ClientMetadataHttpNotFound: "ClientMetadataHttpNotFound", ClientMetadataNoResponse: "ClientMetadataNoResponse", ClientMetadataInvalidResponse: "ClientMetadataInvalidResponse", DisabledInSettings: "DisabledInSettings", ErrorFetchingSignin: "ErrorFetchingSignin", InvalidSigninResponse: "InvalidSigninResponse", AccountsHttpNotFound: "AccountsHttpNotFound", AccountsNoResponse: "AccountsNoResponse", AccountsInvalidResponse: "AccountsInvalidResponse", IdTokenHttpNotFound: "IdTokenHttpNotFound", IdTokenNoResponse: "IdTokenNoResponse", IdTokenInvalidResponse: "IdTokenInvalidResponse", IdTokenInvalidRequest: "IdTokenInvalidRequest", ErrorIdToken: "ErrorIdToken", Canceled: "Canceled"});
|
71
71
|
inspectorBackend.registerEnum("Audits.InspectorIssueCode", {CookieIssue: "CookieIssue", MixedContentIssue: "MixedContentIssue", BlockedByResponseIssue: "BlockedByResponseIssue", HeavyAdIssue: "HeavyAdIssue", ContentSecurityPolicyIssue: "ContentSecurityPolicyIssue", SharedArrayBufferIssue: "SharedArrayBufferIssue", TrustedWebActivityIssue: "TrustedWebActivityIssue", LowTextContrastIssue: "LowTextContrastIssue", CorsIssue: "CorsIssue", AttributionReportingIssue: "AttributionReportingIssue", QuirksModeIssue: "QuirksModeIssue", NavigatorUserAgentIssue: "NavigatorUserAgentIssue", GenericIssue: "GenericIssue", DeprecationIssue: "DeprecationIssue", ClientHintIssue: "ClientHintIssue", FederatedAuthRequestIssue: "FederatedAuthRequestIssue"});
|
72
72
|
inspectorBackend.registerEvent("Audits.issueAdded", ["issue"]);
|
73
73
|
inspectorBackend.registerEnum("Audits.GetEncodedResponseRequestEncoding", {Webp: "webp", Jpeg: "jpeg", Png: "png"});
|
@@ -1290,8 +1290,7 @@ export const generatedProperties = [
|
|
1290
1290
|
"keywords": [
|
1291
1291
|
"normal",
|
1292
1292
|
"inline-size",
|
1293
|
-
"size"
|
1294
|
-
"style"
|
1293
|
+
"size"
|
1295
1294
|
],
|
1296
1295
|
"name": "container-type"
|
1297
1296
|
},
|
@@ -4073,8 +4072,7 @@ export const generatedPropertyValues = {
|
|
4073
4072
|
"values": [
|
4074
4073
|
"normal",
|
4075
4074
|
"inline-size",
|
4076
|
-
"size"
|
4077
|
-
"style"
|
4075
|
+
"size"
|
4078
4076
|
]
|
4079
4077
|
},
|
4080
4078
|
"content-visibility": {
|
@@ -703,6 +703,7 @@ export namespace Audits {
|
|
703
703
|
ExcludeSameSiteStrict = 'ExcludeSameSiteStrict',
|
704
704
|
ExcludeInvalidSameParty = 'ExcludeInvalidSameParty',
|
705
705
|
ExcludeSamePartyCrossPartyContext = 'ExcludeSamePartyCrossPartyContext',
|
706
|
+
ExcludeDomainNonASCII = 'ExcludeDomainNonASCII',
|
706
707
|
}
|
707
708
|
|
708
709
|
export const enum CookieWarningReason {
|
@@ -715,6 +716,7 @@ export namespace Audits {
|
|
715
716
|
WarnSameSiteLaxCrossDowngradeStrict = 'WarnSameSiteLaxCrossDowngradeStrict',
|
716
717
|
WarnSameSiteLaxCrossDowngradeLax = 'WarnSameSiteLaxCrossDowngradeLax',
|
717
718
|
WarnAttributeValueExceedsMaxSize = 'WarnAttributeValueExceedsMaxSize',
|
719
|
+
WarnDomainNonASCII = 'WarnDomainNonASCII',
|
718
720
|
}
|
719
721
|
|
720
722
|
export const enum CookieOperation {
|
@@ -1116,7 +1118,6 @@ export namespace Audits {
|
|
1116
1118
|
ClientMetadataHttpNotFound = 'ClientMetadataHttpNotFound',
|
1117
1119
|
ClientMetadataNoResponse = 'ClientMetadataNoResponse',
|
1118
1120
|
ClientMetadataInvalidResponse = 'ClientMetadataInvalidResponse',
|
1119
|
-
ClientMetadataMissingPrivacyPolicyUrl = 'ClientMetadataMissingPrivacyPolicyUrl',
|
1120
1121
|
DisabledInSettings = 'DisabledInSettings',
|
1121
1122
|
ErrorFetchingSignin = 'ErrorFetchingSignin',
|
1122
1123
|
InvalidSigninResponse = 'InvalidSigninResponse',
|
@@ -287,7 +287,9 @@ const UIStrings = {
|
|
287
287
|
v8SharedArrayBufferConstructedInExtensionWithoutIsolation:
|
288
288
|
'Extensions should opt into cross-origin isolation to continue using `SharedArrayBuffer`. See https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/.',
|
289
289
|
/**
|
290
|
-
* @description
|
290
|
+
* @description Warning displayed to developers that they are using
|
291
|
+
* `XMLHttpRequest` API in a way that they expect an unsupported character
|
292
|
+
* encoding `UTF-16` could be used in the server reply.
|
291
293
|
*/
|
292
294
|
xhrJSONEncodingDetection: 'UTF-16 is not supported by response json in `XMLHttpRequest`',
|
293
295
|
/**
|
@@ -34,8 +34,7 @@ type Tokenizer = (line: string, callback: (value: string, style: string|null) =>
|
|
34
34
|
export function createCssTokenizer(): Tokenizer {
|
35
35
|
async function tokenize(line: string, callback: (value: string, style: string|null) => void): Promise<void> {
|
36
36
|
const streamParser = await CodeMirror.cssStreamParser();
|
37
|
-
const stream = new CodeMirror.StringStream();
|
38
|
-
stream.string = line;
|
37
|
+
const stream = new CodeMirror.StringStream(line, 4, 2);
|
39
38
|
|
40
39
|
const state = streamParser.startState();
|
41
40
|
let lastPos = stream.pos;
|
@@ -47,6 +47,10 @@ const UIStrings = {
|
|
47
47
|
*/
|
48
48
|
threadS: 'Thread {PH1}',
|
49
49
|
/**
|
50
|
+
*@description Text shown when rendering the User Interactions track in the Performance panel
|
51
|
+
*/
|
52
|
+
userInteractions: 'User Interactions',
|
53
|
+
/**
|
50
54
|
*@description Title of a worker in the timeline flame chart of the Performance panel
|
51
55
|
*@example {https://google.com} PH1
|
52
56
|
*/
|
@@ -244,6 +248,29 @@ export class TimelineModelImpl {
|
|
244
248
|
isUserTimingEvent(event: SDK.TracingModel.Event): boolean {
|
245
249
|
return event.categoriesString === TimelineModelImpl.Category.UserTiming;
|
246
250
|
}
|
251
|
+
|
252
|
+
isEventTimingInteractionEvent(event: SDK.TracingModel.Event): boolean {
|
253
|
+
if (event.name !== RecordType.EventTiming) {
|
254
|
+
return false;
|
255
|
+
}
|
256
|
+
type InteractionEventData = {
|
257
|
+
duration?: number, interactionId: number,
|
258
|
+
};
|
259
|
+
const data = event.args.data as InteractionEventData;
|
260
|
+
// Filter out:
|
261
|
+
// 1. events without a duration, or a duration of 0
|
262
|
+
// 2. events without an interactionId, or with an interactionId of 0,
|
263
|
+
// which indicates that it's not a "top level" interaction event and
|
264
|
+
// we can therefore ignore it. This can happen with "mousedown" for
|
265
|
+
// example; an interaction ID is assigned to the "pointerdown" event
|
266
|
+
// as it's the "first" event to be triggered when the user clicks,
|
267
|
+
// but the browser doesn't attempt to assign IDs to all subsequent
|
268
|
+
// events, as that's a hard heuristic to get right.
|
269
|
+
const duration = data.duration || 0;
|
270
|
+
const interactionId = data.interactionId || 0;
|
271
|
+
return (duration > 0 && interactionId > 0);
|
272
|
+
}
|
273
|
+
|
247
274
|
isParseHTMLEvent(event: SDK.TracingModel.Event): boolean {
|
248
275
|
return event.name === RecordType.ParseHTML;
|
249
276
|
}
|
@@ -362,9 +389,32 @@ export class TimelineModelImpl {
|
|
362
389
|
this.processAsyncBrowserEvents(tracingModel);
|
363
390
|
this.buildGPUEvents(tracingModel);
|
364
391
|
this.buildLoadingEvents(tracingModel, layoutShiftEvents);
|
392
|
+
this.collectInteractionEvents(tracingModel);
|
365
393
|
this.resetProcessingState();
|
366
394
|
}
|
367
395
|
|
396
|
+
private collectInteractionEvents(tracingModel: SDK.TracingModel.TracingModel): void {
|
397
|
+
const mainRendererThread = tracingModel.getThreadByName('Renderer', 'CrRendererMain');
|
398
|
+
if (!mainRendererThread) {
|
399
|
+
return;
|
400
|
+
}
|
401
|
+
|
402
|
+
const interactionEvents: SDK.TracingModel.AsyncEvent[] = [];
|
403
|
+
|
404
|
+
const track = this.ensureNamedTrack(TrackType.UserInteractions);
|
405
|
+
track.thread = mainRendererThread;
|
406
|
+
track.name = UIStrings.userInteractions;
|
407
|
+
track.forMainFrame = true;
|
408
|
+
|
409
|
+
for (const event of mainRendererThread.asyncEvents()) {
|
410
|
+
if (!this.isEventTimingInteractionEvent(event)) {
|
411
|
+
continue;
|
412
|
+
}
|
413
|
+
interactionEvents.push(event);
|
414
|
+
}
|
415
|
+
track.asyncEvents = interactionEvents;
|
416
|
+
}
|
417
|
+
|
368
418
|
private processGenericTrace(tracingModel: SDK.TracingModel.TracingModel): void {
|
369
419
|
let browserMainThread = SDK.TracingModel.TracingModel.browserMainThread(tracingModel);
|
370
420
|
if (!browserMainThread && tracingModel.sortedProcesses().length) {
|
@@ -1610,6 +1660,7 @@ export enum RecordType {
|
|
1610
1660
|
TimeStamp = 'TimeStamp',
|
1611
1661
|
ConsoleTime = 'ConsoleTime',
|
1612
1662
|
UserTiming = 'UserTiming',
|
1663
|
+
EventTiming = 'EventTiming',
|
1613
1664
|
|
1614
1665
|
ResourceWillSendRequest = 'ResourceWillSendRequest',
|
1615
1666
|
ResourceSendRequest = 'ResourceSendRequest',
|
@@ -1822,6 +1873,7 @@ export enum TrackType {
|
|
1822
1873
|
GPU = 'GPU',
|
1823
1874
|
Experience = 'Experience',
|
1824
1875
|
Other = 'Other',
|
1876
|
+
UserInteractions = 'UserInteractions',
|
1825
1877
|
}
|
1826
1878
|
|
1827
1879
|
const enum WorkletType {
|
@@ -14,47 +14,46 @@ import {
|
|
14
14
|
|
15
15
|
const UIStrings = {
|
16
16
|
/**
|
17
|
-
*@description The type of the CSS rule validation message
|
17
|
+
*@description The type of the CSS rule validation message shown in the Style pane. "Deprecated property" means that a property in the declaration is deprecated and should not be used.
|
18
18
|
*/
|
19
19
|
deprecatedPropertyHintPrefix: 'Deprecated property',
|
20
20
|
/**
|
21
|
-
*@description The type of the CSS rule validation message
|
21
|
+
*@description The type of the CSS rule validation message shown in the Style pane. "Inactive property" means that a property declaration was valid syntactially but didn't have expected effect.
|
22
22
|
*/
|
23
23
|
inactivePropertyHintPrefix: 'Inactive property',
|
24
24
|
/**
|
25
|
-
*@description The message
|
25
|
+
*@description The message shown in the Style pane when the user hovers over a property that has no effect due to some other property.
|
26
26
|
*@example {flex-wrap: nowrap} REASON_PROPERTY_DECLARATION_CODE
|
27
27
|
*@example {align-content} AFFECTED_PROPERTY_DECLARATION_CODE
|
28
28
|
*/
|
29
29
|
ruleViolatedBySameElementRuleReason:
|
30
|
-
'
|
30
|
+
'The {REASON_PROPERTY_DECLARATION_CODE} property on the same element bypasses the effect of {AFFECTED_PROPERTY_DECLARATION_CODE}.',
|
31
31
|
/**
|
32
|
-
*@description The message
|
32
|
+
*@description The message shown in the Style pane when the user hovers over a property declaration that has no effect due to some other property.
|
33
33
|
*@example {flex-wrap: nowrap} REASON_PROPERTY_DECLARATION_CODE
|
34
34
|
*/
|
35
|
-
ruleViolatedBySameElementRuleFix:
|
36
|
-
'For this property to work, please remove or change the value of {REASON_PROPERTY_DECLARATION_CODE}.',
|
35
|
+
ruleViolatedBySameElementRuleFix: 'Try removing {REASON_PROPERTY_DECLARATION_CODE} or changing its value.',
|
37
36
|
/**
|
38
|
-
*@description The message
|
37
|
+
*@description The message shown in the Style pane when the user hovers over a property declaration that has no effect due to the current property value.
|
39
38
|
*@example {display: block} EXISTING_PROPERTY_DECLARATION
|
40
39
|
*@example {display: flex} TARGET_PROPERTY_DECLARATION
|
41
40
|
*/
|
42
41
|
ruleViolatedBySameElementRuleChangeSuggestion:
|
43
|
-
'
|
42
|
+
'Try changing the {EXISTING_PROPERTY_DECLARATION} property to {TARGET_PROPERTY_DECLARATION}.',
|
44
43
|
/**
|
45
|
-
*@description The message
|
44
|
+
*@description The message shown in the Style pane when the user hovers over a property declaration that has no effect due to properties of the parent element.
|
46
45
|
*@example {display: block} REASON_PROPERTY_DECLARATION_CODE
|
47
46
|
*@example {flex} AFFECTED_PROPERTY_DECLARATION_CODE
|
48
47
|
*/
|
49
48
|
ruleViolatedByParentElementRuleReason:
|
50
|
-
'The
|
49
|
+
'The {REASON_PROPERTY_DECLARATION_CODE} property on the parent element bypasses the effect of {AFFECTED_PROPERTY_DECLARATION_CODE}.',
|
51
50
|
/**
|
52
|
-
*@description The message
|
51
|
+
*@description The message shown in the Style pane when the user hovers over a property declaration that has no effect due to the properties of the parent element.
|
53
52
|
*@example {display: block} EXISTING_PARENT_ELEMENT_RULE
|
54
53
|
*@example {display: flex} TARGET_PARENT_ELEMENT_RULE
|
55
54
|
*/
|
56
55
|
ruleViolatedByParentElementRuleFix:
|
57
|
-
'
|
56
|
+
'Try changing the {EXISTING_PARENT_ELEMENT_RULE} property on the parent to {TARGET_PARENT_ELEMENT_RULE}.',
|
58
57
|
};
|
59
58
|
const str_ = i18n.i18n.registerUIStrings('panels/elements/CSSRuleValidator.ts', UIStrings);
|
60
59
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
@@ -311,7 +311,20 @@ export class NetworkItemView extends UI.TabbedPane.TabbedPane {
|
|
311
311
|
}
|
312
312
|
|
313
313
|
revealHeader(section: NetworkForward.UIRequestLocation.UIHeaderSection, header: string|undefined): void {
|
314
|
-
|
315
|
-
|
314
|
+
if (Root.Runtime.experiments.isEnabled(Root.Runtime.ExperimentName.HEADER_OVERRIDES)) {
|
315
|
+
this.selectTabInternal(NetworkForward.UIRequestLocation.UIRequestTabs.HeadersComponent);
|
316
|
+
this.headersViewComponent.revealHeader(section, header);
|
317
|
+
} else {
|
318
|
+
this.selectTabInternal(NetworkForward.UIRequestLocation.UIRequestTabs.Headers);
|
319
|
+
this.headersView.revealHeader(section, header);
|
320
|
+
}
|
321
|
+
}
|
322
|
+
|
323
|
+
getHeadersView(): RequestHeadersView {
|
324
|
+
return this.headersView;
|
325
|
+
}
|
326
|
+
|
327
|
+
getHeadersViewComponent(): NetworkComponents.RequestHeadersView.RequestHeadersView {
|
328
|
+
return this.headersViewComponent;
|
316
329
|
}
|
317
330
|
}
|
@@ -4,6 +4,15 @@
|
|
4
4
|
* found in the LICENSE file.
|
5
5
|
*/
|
6
6
|
|
7
|
+
devtools-request-headers-category {
|
8
|
+
--override-header-highlight-background-color: #ffff78;
|
9
|
+
}
|
10
|
+
|
11
|
+
.-theme-with-dark-background devtools-request-headers-category,
|
12
|
+
:host-context(.-theme-with-dark-background) devtools-request-headers-category {
|
13
|
+
--override-header-highlight-background-color: #4c4c33;
|
14
|
+
}
|
15
|
+
|
7
16
|
.header {
|
8
17
|
background-color: var(--color-background-elevation-1);
|
9
18
|
border-bottom: var(--legacy-divider-border);
|
@@ -208,3 +217,7 @@ summary label {
|
|
208
217
|
summary label:hover {
|
209
218
|
color: var(--color-text-primary);
|
210
219
|
}
|
220
|
+
|
221
|
+
.header-highlight {
|
222
|
+
background-color: var(--override-header-highlight-background-color);
|
223
|
+
}
|