chrome-devtools-frontend 1.0.1660788 → 1.0.1662289

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.
Files changed (177) hide show
  1. package/.agents/skills/evaluate-ai-css-completion/SKILL.md +143 -0
  2. package/.agents/skills/evaluate-ai-css-completion/scripts/evaluate.js +104 -0
  3. package/.agents/skills/migrate-chromium-test/SKILL.md +7 -2
  4. package/.agents/skills/ui-eng-vision-local-lit-renderer/SKILL.md +7 -1
  5. package/docs/ui_engineering.md +75 -42
  6. package/eslint.config.mjs +7 -0
  7. package/extension-api/ExtensionAPI.d.ts +88 -0
  8. package/front_end/core/common/SettingRegistration.ts +0 -5
  9. package/front_end/core/host/InspectorFrontendHost.ts +1 -0
  10. package/front_end/core/host/InspectorFrontendHostStub.ts +2 -0
  11. package/front_end/core/platform/ArrayUtilities.ts +10 -0
  12. package/front_end/core/platform/StringUtilities.ts +20 -4
  13. package/front_end/core/sdk/CPUThrottlingManager.ts +2 -0
  14. package/front_end/core/sdk/DOMDebuggerModel.ts +2 -0
  15. package/front_end/core/sdk/DOMModel.ts +1 -0
  16. package/front_end/core/sdk/DebuggerModel.ts +4 -4
  17. package/front_end/core/sdk/EventBreakpointsModel.ts +2 -0
  18. package/front_end/core/sdk/FrameManager.ts +1 -0
  19. package/front_end/core/sdk/IsolateManager.ts +1 -0
  20. package/front_end/core/sdk/NetworkManager.ts +2 -0
  21. package/front_end/core/sdk/NetworkRequest.ts +1 -0
  22. package/front_end/core/sdk/PageResourceLoader.ts +2 -0
  23. package/front_end/core/sdk/SourceMap.ts +5 -5
  24. package/front_end/core/sdk/SourceMapManager.ts +3 -2
  25. package/front_end/core/sdk/TargetManager.ts +4 -0
  26. package/front_end/entrypoints/main/MainImpl.ts +2 -1
  27. package/front_end/foundation/README.md +86 -0
  28. package/front_end/generated/InspectorBackendCommands.ts +4 -5
  29. package/front_end/generated/protocol.ts +20 -38
  30. package/front_end/models/bindings/CompilerScriptMapping.ts +5 -5
  31. package/front_end/models/bindings/ContentProviderBasedProject.ts +2 -3
  32. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +3 -3
  33. package/front_end/models/bindings/DefaultScriptMapping.ts +3 -3
  34. package/front_end/models/bindings/ResourceMapping.ts +3 -3
  35. package/front_end/models/bindings/ResourceScriptMapping.ts +2 -2
  36. package/front_end/models/bindings/SASSSourceMapping.ts +3 -3
  37. package/front_end/models/bindings/TempFile.ts +8 -3
  38. package/front_end/models/extensions/ExtensionAPI.ts +110 -46
  39. package/front_end/models/extensions/RecorderExtensionEndpoint.ts +7 -5
  40. package/front_end/models/formatter/ScriptFormatter.ts +8 -11
  41. package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +14 -5
  42. package/front_end/models/issues_manager/CheckFormsIssuesTrigger.ts +8 -9
  43. package/front_end/models/issues_manager/CookieIssue.ts +21 -9
  44. package/front_end/models/issues_manager/Issue.ts +3 -4
  45. package/front_end/models/issues_manager/IssueAggregator.ts +0 -9
  46. package/front_end/models/issues_manager/IssueResolver.ts +2 -2
  47. package/front_end/models/issues_manager/IssuesManager.ts +136 -137
  48. package/front_end/models/issues_manager/RelatedIssue.ts +10 -8
  49. package/front_end/models/issues_manager/issues_manager.ts +0 -2
  50. package/front_end/models/javascript_metadata/NativeFunctions.js +1 -1
  51. package/front_end/models/logs/RequestResolver.ts +2 -2
  52. package/front_end/models/source_map_scopes/FunctionCodeResolver.ts +12 -9
  53. package/front_end/models/trace/handlers/FramesHandler.ts +4 -7
  54. package/front_end/models/trace/handlers/ModelHandlers.ts +0 -1
  55. package/front_end/models/trace/handlers/RendererHandler.ts +2 -15
  56. package/front_end/models/trace/handlers/Threads.ts +4 -11
  57. package/front_end/models/trace/insights/DOMSize.ts +1 -1
  58. package/front_end/models/workspace_diff/WorkspaceDiff.ts +10 -4
  59. package/front_end/panels/ai_assistance/components/ChatMessage.ts +2 -1
  60. package/front_end/panels/application/ApplicationPanelSidebar.ts +0 -44
  61. package/front_end/panels/application/CookieItemsView.ts +1 -1
  62. package/front_end/panels/application/ServiceWorkersView.ts +494 -411
  63. package/front_end/panels/application/WebMCPView.ts +38 -43
  64. package/front_end/panels/application/application.ts +0 -6
  65. package/front_end/panels/application/components/AdsView.ts +201 -30
  66. package/front_end/panels/application/components/adsView.css +25 -0
  67. package/front_end/panels/application/components/components.ts +0 -2
  68. package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +1 -1
  69. package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +2 -2
  70. package/front_end/panels/application/serviceWorkersView.css +40 -4
  71. package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +147 -123
  72. package/front_end/panels/common/ExtensionServer.ts +3 -3
  73. package/front_end/panels/console/ConsoleView.ts +3 -2
  74. package/front_end/panels/console/PromptBuilder.ts +2 -1
  75. package/front_end/panels/emulation/DeviceModeView.ts +164 -113
  76. package/front_end/panels/issues/AffectedResourcesView.ts +1 -1
  77. package/front_end/panels/issues/IssueView.ts +0 -2
  78. package/front_end/panels/issues/IssuesPane.ts +1 -8
  79. package/front_end/panels/js_timeline/js_timeline-meta.ts +3 -2
  80. package/front_end/panels/lighthouse/LighthouseProtocolService.ts +53 -12
  81. package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorController.ts +3 -3
  82. package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorPane.ts +5 -5
  83. package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +4 -4
  84. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +2 -2
  85. package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +6 -6
  86. package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +3 -3
  87. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +8 -9
  88. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplayUtils.ts +2 -2
  89. package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +1 -1
  90. package/front_end/panels/linear_memory_inspector/linear_memory_inspector-meta.ts +2 -2
  91. package/front_end/panels/network/RequestPayloadView.ts +92 -52
  92. package/front_end/panels/network/RequestTimingView.ts +95 -127
  93. package/front_end/panels/network/components/ResponseHeaderSection.ts +5 -3
  94. package/front_end/panels/profiler/HeapSnapshotView.ts +3 -3
  95. package/front_end/panels/profiler/WritableProfileHeader.ts +2 -2
  96. package/front_end/panels/recorder/{components/ControlButton.ts → ControlButton.ts} +9 -10
  97. package/front_end/panels/recorder/{components/CreateRecordingView.ts → CreateRecordingView.ts} +48 -47
  98. package/front_end/panels/recorder/{components/ExtensionView.ts → ExtensionView.ts} +8 -8
  99. package/front_end/panels/recorder/RecorderController.ts +302 -127
  100. package/front_end/panels/recorder/RecorderPanel.ts +1 -1
  101. package/front_end/panels/recorder/{components/RecordingListView.ts → RecordingListView.ts} +19 -20
  102. package/front_end/panels/recorder/{components/RecordingView.ts → RecordingView.ts} +88 -88
  103. package/front_end/panels/recorder/{components/ReplaySection.ts → ReplaySection.ts} +11 -11
  104. package/front_end/panels/recorder/{components/SelectorPicker.ts → SelectorPicker.ts} +13 -13
  105. package/front_end/panels/recorder/{components/StepEditor.ts → StepEditor.ts} +15 -15
  106. package/front_end/panels/recorder/{components/StepView.ts → StepView.ts} +10 -10
  107. package/front_end/panels/recorder/{components/TimelineSection.ts → TimelineSection.ts} +2 -2
  108. package/front_end/panels/recorder/recorder.ts +23 -1
  109. package/front_end/panels/recorder/util/util.ts +113 -0
  110. package/front_end/panels/sources/SourcesView.ts +0 -17
  111. package/front_end/panels/sources/TabbedEditorContainer.ts +1 -1
  112. package/front_end/panels/sources/UISourceCodeFrame.ts +42 -0
  113. package/front_end/panels/sources/sources.ts +0 -2
  114. package/front_end/panels/timeline/CompatibilityTracksAppender.ts +0 -17
  115. package/front_end/panels/timeline/IsolateSelector.ts +10 -8
  116. package/front_end/panels/timeline/ThreadAppender.ts +0 -106
  117. package/front_end/panels/timeline/TimelinePanel.ts +18 -7
  118. package/front_end/panels/timeline/TimelineUIUtils.ts +144 -129
  119. package/front_end/panels/timeline/timeline-meta.ts +3 -2
  120. package/front_end/third_party/chromium/README.chromium +1 -1
  121. package/front_end/ui/components/report_view/ReportView.ts +11 -5
  122. package/front_end/ui/components/report_view/report.css +4 -1
  123. package/front_end/ui/legacy/TextPrompt.ts +49 -1
  124. package/front_end/ui/legacy/Treeoutline.ts +3 -0
  125. package/front_end/ui/legacy/UIUtils.ts +11 -1
  126. package/front_end/ui/legacy/Widget.ts +14 -15
  127. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +2 -2
  128. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +11 -7
  129. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +2 -1
  130. package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +10 -1
  131. package/front_end/ui/legacy/textPrompt.css +10 -0
  132. package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
  133. package/package.json +1 -1
  134. package/front_end/models/issues_manager/AttributionReportingIssue.ts +0 -247
  135. package/front_end/models/issues_manager/descriptions/arInsecureContext.md +0 -7
  136. package/front_end/models/issues_manager/descriptions/arInvalidInfoHeader.md +0 -5
  137. package/front_end/models/issues_manager/descriptions/arInvalidRegisterOsSourceHeader.md +0 -5
  138. package/front_end/models/issues_manager/descriptions/arInvalidRegisterOsTriggerHeader.md +0 -5
  139. package/front_end/models/issues_manager/descriptions/arInvalidRegisterSourceHeader.md +0 -5
  140. package/front_end/models/issues_manager/descriptions/arInvalidRegisterTriggerHeader.md +0 -5
  141. package/front_end/models/issues_manager/descriptions/arNavigationRegistrationUniqueScopeAlreadySet.md +0 -5
  142. package/front_end/models/issues_manager/descriptions/arNavigationRegistrationWithoutTransientUserActivation.md +0 -6
  143. package/front_end/models/issues_manager/descriptions/arNoRegisterOsSourceHeader.md +0 -5
  144. package/front_end/models/issues_manager/descriptions/arNoRegisterOsTriggerHeader.md +0 -5
  145. package/front_end/models/issues_manager/descriptions/arNoRegisterSourceHeader.md +0 -5
  146. package/front_end/models/issues_manager/descriptions/arNoRegisterTriggerHeader.md +0 -5
  147. package/front_end/models/issues_manager/descriptions/arNoWebOrOsSupport.md +0 -4
  148. package/front_end/models/issues_manager/descriptions/arOsSourceIgnored.md +0 -18
  149. package/front_end/models/issues_manager/descriptions/arOsTriggerIgnored.md +0 -19
  150. package/front_end/models/issues_manager/descriptions/arPermissionPolicyDisabled.md +0 -8
  151. package/front_end/models/issues_manager/descriptions/arSourceAndTriggerHeaders.md +0 -9
  152. package/front_end/models/issues_manager/descriptions/arSourceIgnored.md +0 -13
  153. package/front_end/models/issues_manager/descriptions/arTriggerIgnored.md +0 -12
  154. package/front_end/models/issues_manager/descriptions/arUntrustworthyReportingOrigin.md +0 -10
  155. package/front_end/models/issues_manager/descriptions/arWebAndOsHeaders.md +0 -11
  156. package/front_end/models/trace/handlers/AuctionWorkletsHandler.ts +0 -183
  157. package/front_end/panels/application/InterestGroupStorageModel.ts +0 -81
  158. package/front_end/panels/application/InterestGroupStorageView.ts +0 -151
  159. package/front_end/panels/application/InterestGroupTreeElement.ts +0 -65
  160. package/front_end/panels/application/components/InterestGroupAccessGrid.ts +0 -135
  161. package/front_end/panels/application/components/interestGroupAccessGrid.css +0 -27
  162. package/front_end/panels/application/interestGroupStorageView.css +0 -9
  163. package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +0 -182
  164. package/front_end/panels/recorder/components/components.ts +0 -25
  165. package/front_end/panels/recorder/components/util.ts +0 -116
  166. package/front_end/panels/sources/InplaceFormatterEditorAction.ts +0 -149
  167. /package/front_end/panels/recorder/{components/controlButton.css → controlButton.css} +0 -0
  168. /package/front_end/panels/recorder/{components/createRecordingView.css → createRecordingView.css} +0 -0
  169. /package/front_end/panels/recorder/{components/extensionView.css → extensionView.css} +0 -0
  170. /package/front_end/panels/recorder/{components/recordingListView.css → recordingListView.css} +0 -0
  171. /package/front_end/panels/recorder/{components/recordingView.css → recordingView.css} +0 -0
  172. /package/front_end/panels/recorder/{components/replaySection.css → replaySection.css} +0 -0
  173. /package/front_end/panels/recorder/{components/selectorPicker.css → selectorPicker.css} +0 -0
  174. /package/front_end/panels/recorder/{components/startView.css → startView.css} +0 -0
  175. /package/front_end/panels/recorder/{components/stepEditor.css → stepEditor.css} +0 -0
  176. /package/front_end/panels/recorder/{components/stepView.css → stepView.css} +0 -0
  177. /package/front_end/panels/recorder/{components/timelineSection.css → timelineSection.css} +0 -0
@@ -3,10 +3,10 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  import * as Common from '../../core/common/common.js';
6
+ import * as Root from '../../core/root/root.js';
6
7
  import * as SDK from '../../core/sdk/sdk.js';
7
8
  import * as Protocol from '../../generated/protocol.js';
8
9
 
9
- import {AttributionReportingIssue} from './AttributionReportingIssue.js';
10
10
  import {BounceTrackingIssue} from './BounceTrackingIssue.js';
11
11
  import {ClientHintIssue} from './ClientHintIssue.js';
12
12
  import {ConnectionAllowlistIssue} from './ConnectionAllowlistIssue.js';
@@ -38,8 +38,6 @@ import {UnencodedDigestIssue} from './UnencodedDigestIssue.js';
38
38
 
39
39
  export {Events} from './IssuesManagerEvents.js';
40
40
 
41
- let issuesManagerInstance: IssuesManager|null = null;
42
-
43
41
  function createIssuesForBlockedByResponseIssue(
44
42
  issuesModel: SDK.IssuesModel.IssuesModel|null,
45
43
  inspectorIssue: Protocol.Audits.InspectorIssue): CrossOriginEmbedderPolicyIssue[] {
@@ -54,111 +52,109 @@ function createIssuesForBlockedByResponseIssue(
54
52
  return [];
55
53
  }
56
54
 
57
- const issueCodeHandlers = new Map<
58
- Protocol.Audits.InspectorIssueCode,
59
- (model: SDK.IssuesModel.IssuesModel|null, inspectorIssue: Protocol.Audits.InspectorIssue) => Issue[]>([
60
- [
61
- Protocol.Audits.InspectorIssueCode.CookieIssue,
62
- CookieIssue.fromInspectorIssue,
63
- ],
64
- [
65
- Protocol.Audits.InspectorIssueCode.MixedContentIssue,
66
- MixedContentIssue.fromInspectorIssue,
67
- ],
68
- [
69
- Protocol.Audits.InspectorIssueCode.HeavyAdIssue,
70
- HeavyAdIssue.fromInspectorIssue,
71
- ],
72
- [
73
- Protocol.Audits.InspectorIssueCode.ContentSecurityPolicyIssue,
74
- ContentSecurityPolicyIssue.fromInspectorIssue,
75
- ],
76
- [Protocol.Audits.InspectorIssueCode.BlockedByResponseIssue, createIssuesForBlockedByResponseIssue],
77
- [
78
- Protocol.Audits.InspectorIssueCode.SharedArrayBufferIssue,
79
- SharedArrayBufferIssue.fromInspectorIssue,
80
- ],
81
- [
82
- Protocol.Audits.InspectorIssueCode.SharedDictionaryIssue,
83
- SharedDictionaryIssue.fromInspectorIssue,
84
- ],
85
- [
86
- Protocol.Audits.InspectorIssueCode.CorsIssue,
87
- CorsIssue.fromInspectorIssue,
88
- ],
89
- [
90
- Protocol.Audits.InspectorIssueCode.QuirksModeIssue,
91
- QuirksModeIssue.fromInspectorIssue,
92
- ],
93
- [
94
- Protocol.Audits.InspectorIssueCode.AttributionReportingIssue,
95
- AttributionReportingIssue.fromInspectorIssue,
96
- ],
97
- [
98
- Protocol.Audits.InspectorIssueCode.GenericIssue,
99
- GenericIssue.fromInspectorIssue,
100
- ],
101
- [
102
- Protocol.Audits.InspectorIssueCode.DeprecationIssue,
103
- DeprecationIssue.fromInspectorIssue,
104
- ],
105
- [
106
- Protocol.Audits.InspectorIssueCode.ClientHintIssue,
107
- ClientHintIssue.fromInspectorIssue,
108
- ],
109
- [
110
- Protocol.Audits.InspectorIssueCode.EmailVerificationRequestIssue,
111
- EmailVerificationRequestIssue.fromInspectorIssue,
112
- ],
113
- [
114
- Protocol.Audits.InspectorIssueCode.FederatedAuthRequestIssue,
115
- FederatedAuthRequestIssue.fromInspectorIssue,
116
- ],
117
- [
118
- Protocol.Audits.InspectorIssueCode.BounceTrackingIssue,
119
- BounceTrackingIssue.fromInspectorIssue,
120
- ],
121
- [
122
- Protocol.Audits.InspectorIssueCode.StylesheetLoadingIssue,
123
- StylesheetLoadingIssue.fromInspectorIssue,
124
- ],
125
- [
126
- Protocol.Audits.InspectorIssueCode.PartitioningBlobURLIssue,
127
- PartitioningBlobURLIssue.fromInspectorIssue,
128
- ],
129
- [
130
- Protocol.Audits.InspectorIssueCode.PropertyRuleIssue,
131
- PropertyRuleIssue.fromInspectorIssue,
132
- ],
133
- [
134
- Protocol.Audits.InspectorIssueCode.CookieDeprecationMetadataIssue,
135
- CookieDeprecationMetadataIssue.fromInspectorIssue,
136
- ],
137
- [
138
- Protocol.Audits.InspectorIssueCode.ElementAccessibilityIssue,
139
- ElementAccessibilityIssue.fromInspectorIssue,
140
- ],
141
- [
142
- Protocol.Audits.InspectorIssueCode.SRIMessageSignatureIssue,
143
- SRIMessageSignatureIssue.fromInspectorIssue,
144
- ],
145
- [
146
- Protocol.Audits.InspectorIssueCode.UnencodedDigestIssue,
147
- UnencodedDigestIssue.fromInspectorIssue,
148
- ],
149
- [
150
- Protocol.Audits.InspectorIssueCode.ConnectionAllowlistIssue,
151
- ConnectionAllowlistIssue.fromInspectorIssue,
152
- ],
153
- [
154
- Protocol.Audits.InspectorIssueCode.PermissionElementIssue,
155
- PermissionElementIssue.fromInspectorIssue,
156
- ],
157
- [
158
- Protocol.Audits.InspectorIssueCode.SelectivePermissionsInterventionIssue,
159
- SelectivePermissionsInterventionIssue.fromInspectorIssue,
160
- ],
161
- ]);
55
+ const issueCodeHandlers =
56
+ new Map<Protocol.Audits.InspectorIssueCode,
57
+ (model: SDK.IssuesModel.IssuesModel|null, inspectorIssue: Protocol.Audits.InspectorIssue,
58
+ frameManager: SDK.FrameManager.FrameManager) => Issue[]>(
59
+ [
60
+ [
61
+ Protocol.Audits.InspectorIssueCode.CookieIssue,
62
+ CookieIssue.fromInspectorIssue,
63
+ ],
64
+ [
65
+ Protocol.Audits.InspectorIssueCode.MixedContentIssue,
66
+ MixedContentIssue.fromInspectorIssue,
67
+ ],
68
+ [
69
+ Protocol.Audits.InspectorIssueCode.HeavyAdIssue,
70
+ HeavyAdIssue.fromInspectorIssue,
71
+ ],
72
+ [
73
+ Protocol.Audits.InspectorIssueCode.ContentSecurityPolicyIssue,
74
+ ContentSecurityPolicyIssue.fromInspectorIssue,
75
+ ],
76
+ [Protocol.Audits.InspectorIssueCode.BlockedByResponseIssue, createIssuesForBlockedByResponseIssue],
77
+ [
78
+ Protocol.Audits.InspectorIssueCode.SharedArrayBufferIssue,
79
+ SharedArrayBufferIssue.fromInspectorIssue,
80
+ ],
81
+ [
82
+ Protocol.Audits.InspectorIssueCode.SharedDictionaryIssue,
83
+ SharedDictionaryIssue.fromInspectorIssue,
84
+ ],
85
+ [
86
+ Protocol.Audits.InspectorIssueCode.CorsIssue,
87
+ CorsIssue.fromInspectorIssue,
88
+ ],
89
+ [
90
+ Protocol.Audits.InspectorIssueCode.QuirksModeIssue,
91
+ QuirksModeIssue.fromInspectorIssue,
92
+ ],
93
+ [
94
+ Protocol.Audits.InspectorIssueCode.GenericIssue,
95
+ GenericIssue.fromInspectorIssue,
96
+ ],
97
+ [
98
+ Protocol.Audits.InspectorIssueCode.DeprecationIssue,
99
+ DeprecationIssue.fromInspectorIssue,
100
+ ],
101
+ [
102
+ Protocol.Audits.InspectorIssueCode.ClientHintIssue,
103
+ ClientHintIssue.fromInspectorIssue,
104
+ ],
105
+ [
106
+ Protocol.Audits.InspectorIssueCode.EmailVerificationRequestIssue,
107
+ EmailVerificationRequestIssue.fromInspectorIssue,
108
+ ],
109
+ [
110
+ Protocol.Audits.InspectorIssueCode.FederatedAuthRequestIssue,
111
+ FederatedAuthRequestIssue.fromInspectorIssue,
112
+ ],
113
+ [
114
+ Protocol.Audits.InspectorIssueCode.BounceTrackingIssue,
115
+ BounceTrackingIssue.fromInspectorIssue,
116
+ ],
117
+ [
118
+ Protocol.Audits.InspectorIssueCode.StylesheetLoadingIssue,
119
+ StylesheetLoadingIssue.fromInspectorIssue,
120
+ ],
121
+ [
122
+ Protocol.Audits.InspectorIssueCode.PartitioningBlobURLIssue,
123
+ PartitioningBlobURLIssue.fromInspectorIssue,
124
+ ],
125
+ [
126
+ Protocol.Audits.InspectorIssueCode.PropertyRuleIssue,
127
+ PropertyRuleIssue.fromInspectorIssue,
128
+ ],
129
+ [
130
+ Protocol.Audits.InspectorIssueCode.CookieDeprecationMetadataIssue,
131
+ CookieDeprecationMetadataIssue.fromInspectorIssue,
132
+ ],
133
+ [
134
+ Protocol.Audits.InspectorIssueCode.ElementAccessibilityIssue,
135
+ ElementAccessibilityIssue.fromInspectorIssue,
136
+ ],
137
+ [
138
+ Protocol.Audits.InspectorIssueCode.SRIMessageSignatureIssue,
139
+ SRIMessageSignatureIssue.fromInspectorIssue,
140
+ ],
141
+ [
142
+ Protocol.Audits.InspectorIssueCode.UnencodedDigestIssue,
143
+ UnencodedDigestIssue.fromInspectorIssue,
144
+ ],
145
+ [
146
+ Protocol.Audits.InspectorIssueCode.ConnectionAllowlistIssue,
147
+ ConnectionAllowlistIssue.fromInspectorIssue,
148
+ ],
149
+ [
150
+ Protocol.Audits.InspectorIssueCode.PermissionElementIssue,
151
+ PermissionElementIssue.fromInspectorIssue,
152
+ ],
153
+ [
154
+ Protocol.Audits.InspectorIssueCode.SelectivePermissionsInterventionIssue,
155
+ SelectivePermissionsInterventionIssue.fromInspectorIssue,
156
+ ],
157
+ ]);
162
158
 
163
159
  export function isIssueCodeSupported(code: Protocol.Audits.InspectorIssueCode): boolean {
164
160
  return issueCodeHandlers.has(code);
@@ -169,10 +165,11 @@ export function isIssueCodeSupported(code: Protocol.Audits.InspectorIssueCode):
169
165
  * Handlers are simple functions hard-coded into a map.
170
166
  */
171
167
  export function createIssuesFromProtocolIssue(
172
- issuesModel: SDK.IssuesModel.IssuesModel|null, inspectorIssue: Protocol.Audits.InspectorIssue): Issue[] {
168
+ issuesModel: SDK.IssuesModel.IssuesModel|null, inspectorIssue: Protocol.Audits.InspectorIssue,
169
+ frameManager: SDK.FrameManager.FrameManager = SDK.FrameManager.FrameManager.instance()): Issue[] {
173
170
  const handler = issueCodeHandlers.get(inspectorIssue.code);
174
171
  if (handler) {
175
- return handler(issuesModel, inspectorIssue);
172
+ return handler(issuesModel, inspectorIssue, frameManager);
176
173
  }
177
174
  console.warn(`No handler registered for issue code ${inspectorIssue.code}`);
178
175
  return [];
@@ -199,9 +196,9 @@ export function defaultHideIssueByCodeSetting(): HideIssueMenuSetting {
199
196
  return setting;
200
197
  }
201
198
 
202
- export function getHideIssueByCodeSetting(): Common.Settings.Setting<HideIssueMenuSetting> {
203
- return Common.Settings.Settings.instance().createSetting(
204
- 'hide-issue-by-code-setting-experiment-2021', defaultHideIssueByCodeSetting());
199
+ export function getHideIssueByCodeSetting(settings: Common.Settings.Settings = Common.Settings.Settings.instance()):
200
+ Common.Settings.Setting<HideIssueMenuSetting> {
201
+ return settings.createSetting('hide-issue-by-code-setting-experiment-2021', defaultHideIssueByCodeSetting());
205
202
  }
206
203
 
207
204
  /**
@@ -226,17 +223,20 @@ export class IssuesManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
226
223
  #issuesById = new Map<string, Issue>();
227
224
  #issuesByOutermostTarget: WeakMap<SDK.Target.Target, Set<Issue>> = new Map();
228
225
  #frameManager: SDK.FrameManager.FrameManager;
226
+ #targetManager: SDK.TargetManager.TargetManager;
229
227
 
230
228
  constructor(private readonly showThirdPartyIssuesSetting?: Common.Settings.Setting<boolean>,
231
229
  private readonly hideIssueSetting?: Common.Settings.Setting<HideIssueMenuSetting>,
232
- frameManager: SDK.FrameManager.FrameManager = SDK.FrameManager.FrameManager.instance()) {
230
+ frameManager: SDK.FrameManager.FrameManager = SDK.FrameManager.FrameManager.instance(),
231
+ targetManager: SDK.TargetManager.TargetManager = SDK.TargetManager.TargetManager.instance()) {
233
232
  super();
234
233
  this.#frameManager = frameManager;
234
+ this.#targetManager = targetManager;
235
235
  new SourceFrameIssuesManager(this);
236
- SDK.TargetManager.TargetManager.instance().observeModels(SDK.IssuesModel.IssuesModel, this);
237
- SDK.TargetManager.TargetManager.instance().addModelListener(
238
- SDK.ResourceTreeModel.ResourceTreeModel, SDK.ResourceTreeModel.Events.PrimaryPageChanged,
239
- this.#onPrimaryPageChanged, this);
236
+ this.#targetManager.observeModels(SDK.IssuesModel.IssuesModel, this);
237
+ this.#targetManager.addModelListener(SDK.ResourceTreeModel.ResourceTreeModel,
238
+ SDK.ResourceTreeModel.Events.PrimaryPageChanged, this.#onPrimaryPageChanged,
239
+ this);
240
240
  this.#frameManager.addEventListener(SDK.FrameManager.Events.FRAME_ADDED_TO_TARGET, this.#onFrameAddedToTarget,
241
241
  this);
242
242
 
@@ -244,37 +244,36 @@ export class IssuesManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
244
244
  // a full update when the setting changes to get an up-to-date issues list.
245
245
  this.showThirdPartyIssuesSetting?.addChangeListener(() => this.#updateFilteredIssues());
246
246
  this.hideIssueSetting?.addChangeListener(() => this.#updateFilteredIssues());
247
- SDK.TargetManager.TargetManager.instance().observeTargets(
248
- {
249
- targetAdded: (target: SDK.Target.Target) => {
250
- if (target.outermostTarget() === target) {
251
- this.#updateFilteredIssues();
252
- }
253
- },
254
- targetRemoved: (_: SDK.Target.Target) => {},
255
- },
256
- {scoped: true});
247
+ this.#targetManager.observeTargets({
248
+ targetAdded: (target: SDK.Target.Target) => {
249
+ if (target.outermostTarget() === target) {
250
+ this.#updateFilteredIssues();
251
+ }
252
+ },
253
+ targetRemoved: (_: SDK.Target.Target) => {},
254
+ },
255
+ {scoped: true});
257
256
  }
258
257
 
259
258
  static instance(opts: IssuesManagerCreationOptions = {
260
259
  forceNew: false,
261
260
  ensureFirst: false,
262
261
  }): IssuesManager {
263
- if (issuesManagerInstance && opts.ensureFirst) {
262
+ if (Root.DevToolsContext.globalInstance().has(IssuesManager) && opts.ensureFirst) {
264
263
  throw new Error(
265
264
  'IssuesManager was already created. Either set "ensureFirst" to false or make sure that this invocation is really the first one.');
266
265
  }
267
266
 
268
- if (!issuesManagerInstance || opts.forceNew) {
269
- issuesManagerInstance =
270
- new IssuesManager(opts.showThirdPartyIssuesSetting, opts.hideIssueSetting, opts.frameManager);
267
+ if (!Root.DevToolsContext.globalInstance().has(IssuesManager) || opts.forceNew) {
268
+ Root.DevToolsContext.globalInstance().set(
269
+ IssuesManager, new IssuesManager(opts.showThirdPartyIssuesSetting, opts.hideIssueSetting, opts.frameManager));
271
270
  }
272
271
 
273
- return issuesManagerInstance;
272
+ return Root.DevToolsContext.globalInstance().get(IssuesManager);
274
273
  }
275
274
 
276
275
  static removeInstance(): void {
277
- issuesManagerInstance = null;
276
+ Root.DevToolsContext.globalInstance().delete(IssuesManager);
278
277
  }
279
278
 
280
279
  #onPrimaryPageChanged(
@@ -311,7 +310,7 @@ export class IssuesManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
311
310
  // When DevTools is opened after navigation has completed, issues may be received
312
311
  // before the outermost frame is available. Thus, we trigger a recalcuation of third-party-ness
313
312
  // when we attach to the outermost frame.
314
- if (frame.isOutermostFrame() && SDK.TargetManager.TargetManager.instance().isInScope(frame.resourceTreeModel())) {
313
+ if (frame.isOutermostFrame() && this.#targetManager.isInScope(frame.resourceTreeModel())) {
315
314
  this.#updateFilteredIssues();
316
315
  }
317
316
  }
@@ -331,7 +330,7 @@ export class IssuesManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
331
330
  #onIssueAddedEvent(event: Common.EventTarget.EventTargetEvent<SDK.IssuesModel.IssueAddedEvent>): void {
332
331
  const {issuesModel, inspectorIssue} = event.data;
333
332
 
334
- const issues = createIssuesFromProtocolIssue(issuesModel, inspectorIssue);
333
+ const issues = createIssuesFromProtocolIssue(issuesModel, inspectorIssue, this.#frameManager);
335
334
  for (const issue of issues) {
336
335
  this.addIssue(issuesModel, issue);
337
336
  const message = issue.maybeCreateConsoleMessage();
@@ -425,7 +424,7 @@ export class IssuesManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes
425
424
  }
426
425
 
427
426
  #issueFilter(issue: Issue): boolean {
428
- const scopeTarget = SDK.TargetManager.TargetManager.instance().scopeTarget();
427
+ const scopeTarget = this.#targetManager.scopeTarget();
429
428
  if (!scopeTarget) {
430
429
  return false;
431
430
  }
@@ -6,7 +6,7 @@ import * as Common from '../../core/common/common.js';
6
6
  import * as SDK from '../../core/sdk/sdk.js';
7
7
 
8
8
  import type {Issue, IssueCategory} from './Issue.js';
9
- import {IssuesManager} from './IssuesManager.js';
9
+ import type {IssuesManager} from './IssuesManager.js';
10
10
 
11
11
  export type IssuesAssociatable = Readonly<SDK.NetworkRequest.NetworkRequest>|SDK.Cookie.Cookie|string;
12
12
 
@@ -45,24 +45,26 @@ export function issuesAssociatedWith(issues: Issue[], obj: IssuesAssociatable):
45
45
  throw new Error(`issues can not be associated with ${JSON.stringify(obj)}`);
46
46
  }
47
47
 
48
- export function hasIssues(obj: IssuesAssociatable): boolean {
49
- const issues = Array.from(IssuesManager.instance().issues());
48
+ export function hasIssues(obj: IssuesAssociatable, issuesManager: IssuesManager): boolean {
49
+ const issues = Array.from(issuesManager.issues());
50
50
  return issuesAssociatedWith(issues, obj).length > 0;
51
51
  }
52
52
 
53
- export function hasIssueOfCategory(obj: IssuesAssociatable, category: IssueCategory): boolean {
54
- const issues = Array.from(IssuesManager.instance().issues());
53
+ export function hasIssueOfCategory(obj: IssuesAssociatable, category: IssueCategory,
54
+ issuesManager: IssuesManager): boolean {
55
+ const issues = Array.from(issuesManager.issues());
55
56
  return issuesAssociatedWith(issues, obj).some(issue => issue.getCategory() === category);
56
57
  }
57
58
 
58
- export async function reveal(obj: IssuesAssociatable, category?: IssueCategory): Promise<void|undefined> {
59
+ export async function reveal(obj: IssuesAssociatable, issuesManager: IssuesManager,
60
+ category?: IssueCategory): Promise<void|undefined> {
59
61
  if (typeof obj === 'string') {
60
- const issue = IssuesManager.instance().getIssueById(obj);
62
+ const issue = issuesManager.getIssueById(obj);
61
63
  if (issue) {
62
64
  return await Common.Revealer.reveal(issue);
63
65
  }
64
66
  }
65
- const issues = Array.from(IssuesManager.instance().issues());
67
+ const issues = Array.from(issuesManager.issues());
66
68
  const candidates = issuesAssociatedWith(issues, obj).filter(issue => !category || issue.getCategory() === category);
67
69
  if (candidates.length > 0) {
68
70
  return await Common.Revealer.reveal(candidates[0]);
@@ -2,7 +2,6 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
- import * as AttributionReportingIssue from './AttributionReportingIssue.js';
6
5
  import * as CheckFormsIssuesTrigger from './CheckFormsIssuesTrigger.js';
7
6
  import * as ClientHintIssue from './ClientHintIssue.js';
8
7
  import * as ConnectionAllowlistIssue from './ConnectionAllowlistIssue.js';
@@ -37,7 +36,6 @@ import * as StylesheetLoadingIssue from './StylesheetLoadingIssue.js';
37
36
  import * as UnencodedDigestIssue from './UnencodedDigestIssue.js';
38
37
 
39
38
  export {
40
- AttributionReportingIssue,
41
39
  CheckFormsIssuesTrigger,
42
40
  ClientHintIssue,
43
41
  ConnectionAllowlistIssue,
@@ -8292,7 +8292,7 @@ export const NativeFunctions = [
8292
8292
  },
8293
8293
  {
8294
8294
  name: "setAttributionReporting",
8295
- signatures: [["attributionReporting"]]
8295
+ signatures: [["options"]]
8296
8296
  },
8297
8297
  {
8298
8298
  name: "Worker",
@@ -6,7 +6,7 @@ import * as Common from '../../core/common/common.js';
6
6
  import type * as SDK from '../../core/sdk/sdk.js';
7
7
  import type * as Protocol from '../../generated/protocol.js';
8
8
 
9
- import {Events as NetworkLogEvents, NetworkLog} from './NetworkLog.js';
9
+ import {Events as NetworkLogEvents, type NetworkLog} from './NetworkLog.js';
10
10
 
11
11
  /**
12
12
  * A class that facilitates resolving a requestId to a network request. If the requestId does not resolve, a listener
@@ -22,7 +22,7 @@ export class RequestResolver extends
22
22
  private networkListener: Common.EventTarget.EventDescriptor|null = null;
23
23
  private networkLog: NetworkLog;
24
24
 
25
- constructor(networkLog: NetworkLog = NetworkLog.instance()) {
25
+ constructor(networkLog: NetworkLog) {
26
26
  super();
27
27
  this.networkLog = networkLog;
28
28
  }
@@ -2,6 +2,7 @@
2
2
  // Use of this source code is governed by a BSD-style license that can be
3
3
  // found in the LICENSE file.
4
4
 
5
+ import type * as Common from '../../core/common/common.js';
5
6
  import type * as Platform from '../../core/platform/platform.js';
6
7
  import * as SDK from '../../core/sdk/sdk.js';
7
8
  import * as Bindings from '../bindings/bindings.js';
@@ -41,8 +42,9 @@ interface InputData {
41
42
 
42
43
  const inputCache = new WeakMap<Workspace.UISourceCode.UISourceCode, Promise<InputData>>();
43
44
 
44
- async function prepareInput(uiSourceCode: Workspace.UISourceCode.UISourceCode, content: string): Promise<InputData> {
45
- const formattedContent = await format(uiSourceCode, content);
45
+ async function prepareInput(uiSourceCode: Workspace.UISourceCode.UISourceCode, content: string,
46
+ settings: Common.Settings.Settings): Promise<InputData> {
47
+ const formattedContent = await format(uiSourceCode, content, settings);
46
48
  const text = new TextUtils.Text.Text(formattedContent ? formattedContent.formattedContent : content);
47
49
  let performanceData = uiSourceCode.getDecorationData(Workspace.UISourceCode.DecoratorType.PERFORMANCE) as
48
50
  Workspace.UISourceCode.LineColumnProfileMap |
@@ -59,14 +61,14 @@ async function prepareInput(uiSourceCode: Workspace.UISourceCode.UISourceCode, c
59
61
  }
60
62
 
61
63
  /** Formatting and parsing line endings for Text is expensive, so cache it. */
62
- async function prepareInputAndCache(
63
- uiSourceCode: Workspace.UISourceCode.UISourceCode, content: string): Promise<InputData> {
64
+ async function prepareInputAndCache(uiSourceCode: Workspace.UISourceCode.UISourceCode, content: string,
65
+ settings: Common.Settings.Settings): Promise<InputData> {
64
66
  let cachedPromise = inputCache.get(uiSourceCode);
65
67
  if (cachedPromise) {
66
68
  return await cachedPromise;
67
69
  }
68
70
 
69
- cachedPromise = prepareInput(uiSourceCode, content);
71
+ cachedPromise = prepareInput(uiSourceCode, content, settings);
70
72
  inputCache.set(uiSourceCode, cachedPromise);
71
73
  return await cachedPromise;
72
74
  }
@@ -246,8 +248,8 @@ export async function getFunctionCodeFromLocation(
246
248
  return await getFunctionCodeFromRawLocation(rawLocation, options);
247
249
  }
248
250
 
249
- async function format(uiSourceCode: Workspace.UISourceCode.UISourceCode, content: string):
250
- Promise<Formatter.ScriptFormatter.FormattedContent|null> {
251
+ async function format(uiSourceCode: Workspace.UISourceCode.UISourceCode, content: string,
252
+ settings: Common.Settings.Settings): Promise<Formatter.ScriptFormatter.FormattedContent|null> {
251
253
  const contentType = uiSourceCode.contentType();
252
254
  const shouldFormat = !contentType.isFromSourceMap() && (contentType.isDocument() || contentType.isScript()) &&
253
255
  TextUtils.TextUtils.isMinified(content);
@@ -255,7 +257,7 @@ async function format(uiSourceCode: Workspace.UISourceCode.UISourceCode, content
255
257
  return null;
256
258
  }
257
259
 
258
- return await Formatter.ScriptFormatter.formatScriptContent(contentType.canonicalMimeType(), content, '\t');
260
+ return await Formatter.ScriptFormatter.formatScriptContent(settings, contentType.canonicalMimeType(), content, '\t');
259
261
  }
260
262
 
261
263
  /**
@@ -275,6 +277,7 @@ export async function getFunctionCodeFromRawLocation(
275
277
  return null;
276
278
  }
277
279
 
278
- const inputData = await prepareInputAndCache(functionBounds.uiSourceCode, content);
280
+ const settings = rawLocation.debuggerModel.target().targetManager().settings;
281
+ const inputData = await prepareInputAndCache(functionBounds.uiSourceCode, content, settings);
279
282
  return createFunctionCode(inputData, functionBounds, options);
280
283
  }
@@ -6,7 +6,6 @@ import * as Platform from '../../../core/platform/platform.js';
6
6
  import * as Helpers from '../helpers/helpers.js';
7
7
  import * as Types from '../types/types.js';
8
8
 
9
- import {type AuctionWorkletsData, data as auctionWorkletsData} from './AuctionWorkletsHandler.js';
10
9
  import {data as layerTreeHandlerData, type LayerTreeData} from './LayerTreeHandler.js';
11
10
  import {data as metaHandlerData, type MetaHandlerData} from './MetaHandler.js';
12
11
  import {data as rendererHandlerData, type RendererHandlerData} from './RendererHandler.js';
@@ -81,7 +80,6 @@ export async function finalize(): Promise<void> {
81
80
  const modelForTrace = new TimelineFrameModel(
82
81
  relevantFrameEvents,
83
82
  rendererHandlerData(),
84
- auctionWorkletsData(),
85
83
  metaHandlerData(),
86
84
  layerTreeHandlerData(),
87
85
  );
@@ -101,7 +99,7 @@ export function data(): FramesData {
101
99
  }
102
100
 
103
101
  export function deps(): HandlerName[] {
104
- return ['Meta', 'Renderer', 'AuctionWorklets', 'LayerTree'];
102
+ return ['Meta', 'Renderer', 'LayerTree'];
105
103
  }
106
104
 
107
105
  export class TimelineFrameModel {
@@ -122,13 +120,12 @@ export class TimelineFrameModel {
122
120
  #activeThreadId: Types.Events.ThreadID|null = null;
123
121
  #layerTreeData: LayerTreeData;
124
122
 
125
- constructor(
126
- allEvents: readonly Types.Events.Event[], rendererData: RendererHandlerData,
127
- auctionWorkletsData: AuctionWorkletsData, metaData: MetaHandlerData, layerTreeData: LayerTreeData) {
123
+ constructor(allEvents: readonly Types.Events.Event[], rendererData: RendererHandlerData, metaData: MetaHandlerData,
124
+ layerTreeData: LayerTreeData) {
128
125
  // We only care about getting threads from the Renderer, not Samples,
129
126
  // because Frames don't exist in a CPU Profile (which won't have Renderer
130
127
  // threads.)
131
- const mainThreads = Threads.threadsInRenderer(rendererData, auctionWorkletsData).filter(thread => {
128
+ const mainThreads = Threads.threadsInRenderer(rendererData).filter(thread => {
132
129
  return thread.type === Threads.ThreadType.MAIN_THREAD && thread.processIsOnMainFrame;
133
130
  });
134
131
  const threadData = mainThreads.map(thread => {
@@ -5,7 +5,6 @@
5
5
  export * as AnimationFrames from './AnimationFramesHandler.js';
6
6
  export * as Animations from './AnimationHandler.js';
7
7
  export * as AsyncJSCalls from './AsyncJSCallsHandler.js';
8
- export * as AuctionWorklets from './AuctionWorkletsHandler.js';
9
8
  export * as DOMStats from './DOMStatsHandler.js';
10
9
  export * as ExtensionTraceData from './ExtensionTraceDataHandler.js';
11
10
  export * as Flows from './FlowsHandler.js';
@@ -6,7 +6,6 @@ import * as Platform from '../../../core/platform/platform.js';
6
6
  import * as Helpers from '../helpers/helpers.js';
7
7
  import * as Types from '../types/types.js';
8
8
 
9
- import {data as auctionWorkletsData} from './AuctionWorkletsHandler.js';
10
9
  import * as HandlerHelpers from './helpers.js';
11
10
  import {data as metaHandlerData, type FrameProcessData} from './MetaHandler.js';
12
11
  import {data as networkRequestHandlerData} from './NetworkRequestsHandler.js';
@@ -248,7 +247,6 @@ export function assignThreadName(
248
247
  * - Deletes processes with an unknown origin.
249
248
  */
250
249
  export function sanitizeProcesses(processes: Map<Types.Events.ProcessID, RendererProcess>): void {
251
- const auctionWorklets = auctionWorkletsData().worklets;
252
250
  const metaData = metaHandlerData();
253
251
  if (metaData.traceIsGeneric) {
254
252
  return;
@@ -258,19 +256,8 @@ export function sanitizeProcesses(processes: Map<Types.Events.ProcessID, Rendere
258
256
  // parsed for some reason, or if it's an "about:" origin, delete it.
259
257
  // This is done because we don't really care about processes for which we
260
258
  // can't provide actionable insights to the user (e.g. about:blank pages).
261
- //
262
- // There is one exception; AuctionWorklet processes get parsed in a
263
- // separate handler, so at this point we check to see if the process has
264
- // been found by the AuctionWorkletsHandler, and if so we update the URL.
265
- // This ensures that we keep this process around and do not drop it due to
266
- // the lack of a URL.
267
259
  if (process.url === null) {
268
- const maybeWorklet = auctionWorklets.get(pid);
269
- if (maybeWorklet) {
270
- process.url = maybeWorklet.host;
271
- } else {
272
- processes.delete(pid);
273
- }
260
+ processes.delete(pid);
274
261
  continue;
275
262
  }
276
263
  }
@@ -392,7 +379,7 @@ export function makeCompleteEvent(event: Types.Events.Begin|Types.Events.End): T
392
379
  }
393
380
 
394
381
  export function deps(): HandlerName[] {
395
- return ['Meta', 'Samples', 'AuctionWorklets', 'NetworkRequests'];
382
+ return ['Meta', 'Samples', 'NetworkRequests'];
396
383
  }
397
384
 
398
385
  export interface RendererHandlerData {