chrome-devtools-frontend 1.0.1711155 → 1.0.1715126

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 (192) hide show
  1. package/.agents/skills/code-review/SKILL.md +16 -12
  2. package/AUTHORS +2 -0
  3. package/DIR_METADATA +32 -0
  4. package/eslint.config.mjs +1 -0
  5. package/front_end/core/sdk/CSSPropertyParserMatchers.ts +4 -1
  6. package/front_end/core/sdk/CSSStyleSheetHeader.ts +2 -2
  7. package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +1 -1
  8. package/front_end/core/sdk/DebuggerModel.ts +19 -10
  9. package/front_end/core/sdk/NetworkRequest.ts +11 -11
  10. package/front_end/core/sdk/PageFunctions.ts +7 -2
  11. package/front_end/core/sdk/ResourceTreeModel.ts +17 -1
  12. package/front_end/core/sdk/ServerSentEventsProtocol.ts +4 -2
  13. package/front_end/core/sdk/SourceMap.ts +4 -3
  14. package/front_end/core/sdk/SourceMapScopesInfo.ts +21 -7
  15. package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +7 -7
  16. package/front_end/generated/Deprecation.ts +8 -0
  17. package/front_end/generated/InspectorBackendCommands.ts +3 -2
  18. package/front_end/generated/protocol-mapping.d.ts +10 -0
  19. package/front_end/generated/protocol-proxy-api.d.ts +8 -0
  20. package/front_end/generated/protocol.ts +15 -0
  21. package/front_end/models/ai_assistance/agents/AiAgent.ts +179 -13
  22. package/front_end/models/ai_assistance/agents/PerformanceAgent.snapshot.txt +7 -2
  23. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +2 -0
  24. package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +11 -16
  25. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +2 -2
  26. package/front_end/models/ai_assistance/skills/lighthouse.md +2 -1
  27. package/front_end/models/ai_assistance/skills/performance.md +10 -6
  28. package/front_end/models/ai_assistance/tools/RecordPerformanceTrace.ts +1 -1
  29. package/front_end/models/ai_assistance/tools/ResolveDevtoolsNodePath.ts +12 -0
  30. package/front_end/models/ai_assistance/tools/RunLighthouse.ts +1 -1
  31. package/front_end/models/ai_assistance/tools/Tool.ts +11 -2
  32. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +4 -0
  33. package/front_end/models/bindings/SourceMapStepping.ts +71 -3
  34. package/front_end/models/comment_manager/CommentManager.ts +8 -0
  35. package/front_end/models/issues_manager/Issue.ts +1 -1
  36. package/front_end/models/javascript_metadata/NativeFunctions.ts +28 -16
  37. package/front_end/models/trace/LanternComputationData.ts +3 -0
  38. package/front_end/models/trace/ModelImpl.ts +1 -1
  39. package/front_end/models/trace/Processor.ts +9 -3
  40. package/front_end/models/trace/extras/TraceTree.ts +1 -1
  41. package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +1 -1
  42. package/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +2 -2
  43. package/front_end/models/trace/handlers/Threads.ts +1 -1
  44. package/front_end/models/trace/handlers/helpers.ts +1 -1
  45. package/front_end/models/trace/helpers/SamplesIntegrator.ts +1 -1
  46. package/front_end/models/trace/insights/CLSCulprits.ts +3 -3
  47. package/front_end/models/trace/insights/ImageDelivery.ts +3 -2
  48. package/front_end/models/trace/lantern/graph/CPUNode.ts +26 -7
  49. package/front_end/models/trace/lantern/graph/PageDependencyGraph.ts +27 -2
  50. package/front_end/models/trace/lantern/metrics/LargestContentfulPaint.ts +8 -2
  51. package/front_end/models/trace/lantern/types/Lantern.ts +10 -0
  52. package/front_end/models/trace/types/File.ts +3 -3
  53. package/front_end/models/trace/types/TraceEvents.ts +39 -35
  54. package/front_end/models/workspace/IgnoreListManager.ts +38 -6
  55. package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingListView.ts +40 -8
  56. package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingView.ts +108 -2
  57. package/front_end/panels/accessibility/AccessibilityNodeView.ts +2 -2
  58. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +35 -5
  59. package/front_end/panels/ai_assistance/README.md +55 -14
  60. package/front_end/panels/ai_assistance/components/ChatMessage.ts +3 -4
  61. package/front_end/panels/ai_assistance/components/DisabledWidget.ts +1 -1
  62. package/front_end/panels/ai_assistance/components/OptInChangeDialog.ts +1 -1
  63. package/front_end/panels/application/ResourcesPanel.ts +3 -4
  64. package/front_end/panels/application/ServiceWorkerUpdateCycleView.ts +3 -2
  65. package/front_end/panels/application/WebMCPView.ts +8 -4
  66. package/front_end/panels/application/components/AdsView.ts +28 -29
  67. package/front_end/panels/application/components/BackForwardCacheStrings.ts +188 -204
  68. package/front_end/panels/application/components/BackForwardCacheView.ts +33 -45
  69. package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +10 -12
  70. package/front_end/panels/application/components/CrashReportContextGrid.ts +4 -4
  71. package/front_end/panels/application/components/EndpointsGrid.ts +3 -5
  72. package/front_end/panels/application/components/PermissionsPolicySection.ts +12 -15
  73. package/front_end/panels/application/components/ProtocolHandlersView.ts +9 -9
  74. package/front_end/panels/application/components/ReportsGrid.ts +7 -12
  75. package/front_end/panels/application/components/StorageMetadataView.ts +22 -24
  76. package/front_end/panels/application/components/TrustTokensView.ts +8 -10
  77. package/front_end/panels/application/preloading/PreloadingView.ts +2 -2
  78. package/front_end/panels/application/preloading/components/PreloadingString.ts +28 -29
  79. package/front_end/panels/application/serviceWorkerUpdateCycleView.css +1 -1
  80. package/front_end/panels/browser_debugger/ObjectEventListenersSidebarPane.ts +5 -2
  81. package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +7 -3
  82. package/front_end/panels/comments/CommentsPane.ts +66 -17
  83. package/front_end/panels/comments/commentsPane.css +12 -15
  84. package/front_end/panels/common/CPUThrottlingOption.ts +1 -1
  85. package/front_end/panels/common/CommentThreadWidget.ts +129 -18
  86. package/front_end/panels/common/CommentsOverlayWidget.ts +33 -9
  87. package/front_end/panels/common/CommentsStatusBarPill.ts +8 -39
  88. package/front_end/panels/console/ConsoleInsightTeaser.ts +1 -1
  89. package/front_end/panels/console/ConsoleViewMessage.ts +1 -0
  90. package/front_end/panels/console/ConsoleViewport.ts +35 -4
  91. package/front_end/panels/coverage/CoverageListView.ts +2 -2
  92. package/front_end/panels/coverage/CoverageView.ts +2 -2
  93. package/front_end/panels/elements/CSSRuleValidator.ts +1 -1
  94. package/front_end/panels/elements/DOMTreeWidget.ts +12 -19
  95. package/front_end/panels/elements/ElementsPanel.ts +3 -3
  96. package/front_end/panels/elements/ElementsTreeElement.ts +6 -3
  97. package/front_end/panels/elements/StylePropertyTreeElement.ts +1 -1
  98. package/front_end/panels/elements/components/CSSVariableValueView.ts +1 -1
  99. package/front_end/panels/elements/elements-meta.ts +3 -3
  100. package/front_end/panels/explain/components/ConsoleInsight.ts +1 -1
  101. package/front_end/panels/issues/AffectedSharedArrayBufferIssueDetailsView.ts +2 -3
  102. package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorController.ts +1 -1
  103. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +13 -17
  104. package/front_end/panels/linear_memory_inspector/components/LinearMemoryViewer.ts +234 -182
  105. package/front_end/panels/linear_memory_inspector/components/linearMemoryInspector.css +2 -2
  106. package/front_end/panels/linear_memory_inspector/components/linearMemoryViewer.css +63 -56
  107. package/front_end/panels/network/FetchHeaderCommenting.ts +1 -1
  108. package/front_end/panels/network/NetworkDataGridNode.ts +2 -2
  109. package/front_end/panels/network/RequestConditionsDrawer.ts +2 -2
  110. package/front_end/panels/network/RequestCookiesView.ts +1 -1
  111. package/front_end/panels/network/RequestDeviceBoundSessionsView.ts +3 -3
  112. package/front_end/panels/network/RequestPreviewView.ts +2 -6
  113. package/front_end/panels/network/components/RequestHeaderSection.ts +1 -1
  114. package/front_end/panels/network/components/ResponseHeaderSection.ts +1 -1
  115. package/front_end/panels/profiler/HeapDetachedElementsView.ts +5 -2
  116. package/front_end/panels/profiler/HeapSnapshotView.ts +5 -2
  117. package/front_end/panels/profiler/ProfilesPanel.ts +2 -6
  118. package/front_end/panels/protocol_monitor/JSONEditor.ts +10 -3
  119. package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +2 -1
  120. package/front_end/panels/recorder/RecordingView.ts +2 -2
  121. package/front_end/panels/recorder/StepView.ts +5 -3
  122. package/front_end/panels/recorder/stepView.css +4 -0
  123. package/front_end/panels/sensors/LocationsSettingsTab.ts +4 -9
  124. package/front_end/panels/sensors/SensorsView.ts +2 -2
  125. package/front_end/panels/sensors/sensors-meta.ts +0 -83
  126. package/front_end/panels/settings/AISettingsTab.ts +5 -5
  127. package/front_end/panels/settings/BackendLinkingSettingsTab.ts +1 -1
  128. package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +4 -4
  129. package/front_end/panels/sources/AiCodeCompletionPlugin.ts +36 -19
  130. package/front_end/panels/sources/BreakpointEditDialog.ts +1 -1
  131. package/front_end/panels/sources/DebuggerPlugin.ts +5 -2
  132. package/front_end/panels/sources/EditorHistory.ts +172 -0
  133. package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +4 -1
  134. package/front_end/panels/sources/NavigatorView.ts +9 -6
  135. package/front_end/panels/sources/PersistenceActions.ts +1 -1
  136. package/front_end/panels/sources/Plugin.ts +2 -2
  137. package/front_end/panels/sources/SnippetsPlugin.ts +20 -6
  138. package/front_end/panels/sources/SourcesPanel.ts +65 -12
  139. package/front_end/panels/sources/SourcesSearchScope.ts +4 -1
  140. package/front_end/panels/sources/SourcesView.ts +184 -183
  141. package/front_end/panels/sources/TabbedEditorContainer.ts +260 -419
  142. package/front_end/panels/sources/UISourceCodeFrame.ts +5 -5
  143. package/front_end/panels/sources/sources-meta.ts +32 -92
  144. package/front_end/panels/sources/sources.ts +2 -0
  145. package/front_end/panels/sources/tabbedEditorContainer.css +98 -0
  146. package/front_end/panels/timeline/CountersGraph.ts +18 -8
  147. package/front_end/panels/timeline/TimelinePanel.ts +12 -5
  148. package/front_end/panels/timeline/TimelineUIUtils.ts +7 -13
  149. package/front_end/panels/timeline/components/DetailsView.ts +4 -4
  150. package/front_end/panels/timeline/components/TimelineRangeSummaryView.ts +5 -8
  151. package/front_end/panels/timeline/overlays/OverlaysImpl.ts +8 -4
  152. package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +4 -4
  153. package/front_end/panels/timeline/overlays/components/TimespanBreakdownOverlay.ts +9 -0
  154. package/front_end/panels/timeline/timeline-meta.ts +11 -21
  155. package/front_end/third_party/chromium/README.chromium +1 -1
  156. package/front_end/third_party/legacy-javascript/README.chromium +2 -2
  157. package/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +337 -161
  158. package/front_end/third_party/legacy-javascript/package.json +1 -1
  159. package/front_end/ui/comments/CommentAnchorResolver.ts +105 -39
  160. package/front_end/ui/comments/CommentOverlayManager.ts +37 -15
  161. package/front_end/ui/components/lists/list.css +1 -2
  162. package/front_end/ui/components/suggestion_input/SuggestionInput.ts +8 -5
  163. package/front_end/ui/components/text_editor/AiCodeCompletionDisclaimer.ts +3 -3
  164. package/front_end/ui/components/text_editor/AiCodeCompletionTeaser.ts +1 -1
  165. package/front_end/ui/components/text_editor/AiCodeGenerationTeaser.ts +3 -3
  166. package/front_end/ui/components/text_editor/AiCodeGenerationUpgradeDialog.ts +1 -1
  167. package/front_end/ui/components/text_editor/config.ts +29 -26
  168. package/front_end/ui/legacy/SearchableView.ts +118 -99
  169. package/front_end/ui/legacy/SplitWidget.ts +30 -11
  170. package/front_end/ui/legacy/StackPane.ts +1 -2
  171. package/front_end/ui/legacy/StackedPane.ts +1 -2
  172. package/front_end/ui/legacy/Toolbar.ts +2 -2
  173. package/front_end/ui/legacy/View.ts +5 -5
  174. package/front_end/ui/legacy/ViewManager.ts +8 -14
  175. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +1 -0
  176. package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +4 -1
  177. package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +2 -5
  178. package/front_end/ui/legacy/components/source_frame/ImageView.ts +98 -65
  179. package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +57 -24
  180. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +123 -50
  181. package/front_end/ui/legacy/components/source_frame/imageView.css +27 -25
  182. package/front_end/ui/legacy/components/source_frame/resourceSourceFrame.css +8 -6
  183. package/front_end/ui/legacy/inspectorCommon.css +1 -1
  184. package/front_end/ui/legacy/listWidget.css +1 -6
  185. package/front_end/ui/legacy/tabbedPane.css +0 -91
  186. package/front_end/ui/settings/EmulationSettings.ts +91 -0
  187. package/front_end/ui/settings/SourcesSettings.ts +99 -0
  188. package/front_end/ui/settings/TimelineSettings.ts +28 -0
  189. package/front_end/ui/settings/settings.ts +2 -0
  190. package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
  191. package/package.json +1 -1
  192. package/front_end/panels/common/commentsStatusBarPill.css +0 -13
@@ -10,17 +10,21 @@ Use it for self-review before upload and for reviewing other people's CLs.
10
10
 
11
11
  ## 1. Gather context
12
12
 
13
- - **Local change:** `git diff origin/main...HEAD` (or `git show HEAD` for a
14
- single-commit branch). To learn about the branch and upload workflow, see the
15
- `devtools-version-control` skill.
16
- - **Gerrit CL:** strip the leading `)]}'` line from each response to get JSON:
17
- - Diff: `git cl diff` (for the current branch), or fetch the patch set.
18
- - Inline comments:
19
- `curl -s https://chromium-review.googlesource.com/changes/devtools%2Fdevtools-frontend~<CL_NUMBER>/comments | tail -n +2`
20
- - Messages:
21
- `.../changes/devtools%2Fdevtools-frontend~<CL_NUMBER>/messages`
22
- - Read the CL description first. Then check that the diff does what the
23
- description says, and nothing else.
13
+ - **Automated Review Agent (diff already in prompt):** Do not run shell
14
+ commands. Use `read_file` to inspect enclosing classes/functions/tests and
15
+ `search_files` to verify callers or conventions across the repository.
16
+ - **Local CLI / Interactive session (no diff in prompt):**
17
+ - **Local change:** `git diff origin/main...HEAD` (or `git show HEAD` for a
18
+ single-commit branch). To learn about the branch and upload workflow, see the
19
+ `devtools-version-control` skill.
20
+ - **Gerrit CL:** strip the leading `)]}'` line from each response to get JSON:
21
+ - Diff: `git cl diff` (for the current branch), or fetch the patch set.
22
+ - Inline comments:
23
+ `curl -s https://chromium-review.googlesource.com/changes/devtools%2Fdevtools-frontend~<CL_NUMBER>/comments | tail -n +2`
24
+ - Messages:
25
+ `.../changes/devtools%2Fdevtools-frontend~<CL_NUMBER>/messages`
26
+ - Read the CL description first. Then check that the diff does what the
27
+ description says, and nothing else.
24
28
 
25
29
  ## 2. Consult the specialized skills
26
30
 
@@ -29,7 +33,7 @@ Load the skill that matches what the diff touches, and apply its rules:
29
33
  | If the diff touches… | Use skill |
30
34
  | :--- | :--- |
31
35
  | Any `import` statement, or a new cross-module dependency | `devtools-imports` |
32
- | `UI.Widget`, lit-html views, components, CSS | `devtools-ui-widgets` |
36
+ | `UI.Widget`, lit-html views, components, CSS | `ui-widgets` |
33
37
  | Migration of legacy imperative DOM to widgets or Lit | `ui-eng-vision-orchestrator` (and its sub-skills) |
34
38
  | New or changed tests: choosing unit, API, or E2E | `devtools-testing-guidance` |
35
39
  | Tests that use `describeWithEnvironment` or `describeWithMockConnection`, or foundation modules | `foundation-test-migration` |
package/AUTHORS CHANGED
@@ -53,6 +53,7 @@ Han Xu <suyanhanx@gmail.com>
53
53
  Helmut Januschka <helmut@januschka.com>
54
54
  Henry Lim <henry@limhenry.xyz>
55
55
  Hojeong Park <parkhj062@gmail.com>
56
+ Hubert Gajewski <hubert@hubertgajewski.com>
56
57
  Ivan Akulov <gxoptg@gmail.com>
57
58
  Jacky Hu <flameddd@gmail.com>
58
59
  Jake Mulhern <mulherje@gmail.com>
@@ -108,6 +109,7 @@ Sergio Avalos <sergio.avalos@gmail.com>
108
109
  Shelley Vohr <shelley.vohr@gmail.com>
109
110
  Simon Siefke <simon.siefke@gmail.com>
110
111
  Stephen Tsoi-A-Sue <stsoiasue@gmail.com>
112
+ Steve Harrison <steve@steveharrison.dev>
111
113
  Sunnylost <sunnylost@gmail.com>
112
114
  Suyoung Jung <tdhitbtd@gmail.com>
113
115
  TaegeonKim <aksen5240@gmail.com>
package/DIR_METADATA CHANGED
@@ -2,3 +2,35 @@ team_email: "devtools-dev@chromium.org"
2
2
  buganizer_public: {
3
3
  component_id: 1457055
4
4
  }
5
+ agentic_review: {
6
+ capability_groups: {
7
+ review_capability_skills: [".agents/skills/code-review/SKILL.md"]
8
+ }
9
+ capability_groups: {
10
+ path_expression: ["front_end/.*\\.ts", ".*BUILD\\.gn", ".*\\.gni"]
11
+ path_expression_exclusion: [".*\\.test\\.ts"]
12
+ review_capability_skills: [
13
+ ".agents/skills/devtools-imports/SKILL.md",
14
+ ".agents/skills/devtools-model-management/SKILL.md",
15
+ ".agents/skills/devtools-setting-migration/SKILL.md",
16
+ ".agents/skills/devtools-unicode-escaping/SKILL.md",
17
+ ".agents/skills/devtools-ux-writing-refactor/SKILL.md"
18
+ ]
19
+ }
20
+ capability_groups: {
21
+ path_expression: ["front_end/(panels|ui)/.*\\.(ts|css)"]
22
+ path_expression_exclusion: [".*\\.test\\.ts"]
23
+ review_capability_skills: [
24
+ ".agents/skills/ui-widgets/SKILL.md",
25
+ ".agents/skills/ui-eng-vision-orchestrator/SKILL.md"
26
+ ]
27
+ }
28
+ capability_groups: {
29
+ path_expression: [".*\\.test\\.ts", "test/.*\\.ts"]
30
+ review_capability_skills: [
31
+ ".agents/skills/devtools-testing-guidance/SKILL.md",
32
+ ".agents/skills/foundation-test-migration/SKILL.md",
33
+ ".agents/skills/fix-tests/SKILL.md"
34
+ ]
35
+ }
36
+ }
package/eslint.config.mjs CHANGED
@@ -375,6 +375,7 @@ export default defineConfig([
375
375
  'error',
376
376
  {
377
377
  argsIgnorePattern: '^_',
378
+ ignoreUsingDeclarations: true,
378
379
  },
379
380
  ],
380
381
 
@@ -85,7 +85,10 @@ export class BaseVariableMatcher extends BaseVariableMatcherBase {
85
85
  return null;
86
86
  }
87
87
  const nameNode = args[0][0];
88
- const fallback = args.length === 2 ? args[1] : undefined;
88
+ // Skip the first comma and closing parenthesis, preserving commas in the fallback.
89
+ const fallback = args.length > 1 ?
90
+ Array.from(ASTUtils.stripComments(ASTUtils.siblings(nameNode.nextSibling))).slice(1, -1) :
91
+ undefined;
89
92
 
90
93
  if (!isVariableNameNode(nameNode, matching.ast)) {
91
94
  return null;
@@ -19,11 +19,11 @@ const UIStrings = {
19
19
  /**
20
20
  * @description Error message for when a CSS file can't be loaded.
21
21
  */
22
- couldNotFindTheOriginalStyle: 'Could not find the original style sheet',
22
+ couldNotFindTheOriginalStyle: 'Couldn’t find the original style sheet',
23
23
  /**
24
24
  * @description Error message to display when a source CSS file could not be retrieved.
25
25
  */
26
- couldNotRetrieveSourceStyles: 'Could not retrieve source styles',
26
+ couldNotRetrieveSourceStyles: 'Couldn’t retrieve source styles',
27
27
  } as const;
28
28
  const str_ = i18n.i18n.registerUIStrings('core/sdk/CSSStyleSheetHeader.ts', UIStrings);
29
29
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
@@ -15,7 +15,7 @@ const UIStrings = {
15
15
  * @example {https://example.com/sourcemap.map} PH1
16
16
  * @example {An error occurred} PH2
17
17
  */
18
- couldNotLoadContentForSS: 'Could not load content for {PH1} ({PH2})',
18
+ couldNotLoadContentForSS: 'Couldn’t load content for {PH1} ({PH2})',
19
19
  } as const;
20
20
 
21
21
  const str_ = i18n.i18n.registerUIStrings('core/sdk/CompilerSourceMappingContentProvider.ts', UIStrings);
@@ -134,10 +134,14 @@ export const enum StepMode {
134
134
  STEP_OVER = 'StepOver',
135
135
  }
136
136
 
137
- /** A CDP step command. `ranges` is passed as `skipList` to stepInto/stepOver, and ignored for stepOut. */
137
+ /**
138
+ * A CDP step command. `ranges` is passed as `skipList` to stepInto/stepOver, and ignored for stepOut. `enterRanges` is
139
+ * passed as `enterRanges` to stepOver: functions within them are entered as if by stepInto.
140
+ */
138
141
  export interface AutoStep {
139
142
  readonly command: StepMode;
140
143
  readonly ranges: readonly LocationRange[];
144
+ readonly enterRanges?: readonly LocationRange[];
141
145
  }
142
146
 
143
147
  /**
@@ -478,20 +482,25 @@ export class DebuggerModel extends SDKModel<EventTypes> {
478
482
  this.#issueStep(step, breakOnAsyncCall);
479
483
  }
480
484
 
481
- #issueStep({command, ranges}: AutoStep, breakOnAsyncCall = false): void {
482
- const skipList =
483
- sortAndMergeRanges(ranges.map(({start, end}) => ({
484
- scriptId: start.scriptId,
485
- start: {lineNumber: start.lineNumber, columnNumber: start.columnNumber},
486
- end: {lineNumber: end.lineNumber, columnNumber: end.columnNumber},
487
- })));
485
+ #issueStep({command, ranges, enterRanges}: AutoStep, breakOnAsyncCall = false): void {
486
+ const toProtocolRange = ({start, end}: LocationRange): Protocol.Debugger.LocationRange => ({
487
+ scriptId: start.scriptId,
488
+ start: {lineNumber: start.lineNumber, columnNumber: start.columnNumber},
489
+ end: {lineNumber: end.lineNumber, columnNumber: end.columnNumber},
490
+ });
491
+ const skipList = sortAndMergeRanges(ranges.map(toProtocolRange));
488
492
  switch (command) {
489
493
  case StepMode.STEP_INTO:
490
494
  void this.agent.invoke_stepInto({breakOnAsyncCall, skipList});
491
495
  break;
492
- case StepMode.STEP_OVER:
493
- void this.agent.invoke_stepOver({skipList});
496
+ case StepMode.STEP_OVER: {
497
+ const request: Protocol.Debugger.StepOverRequest = {skipList};
498
+ if (enterRanges?.length) {
499
+ request.enterRanges = sortAndMergeRanges(enterRanges.map(toProtocolRange));
500
+ }
501
+ void this.agent.invoke_stepOver(request);
494
502
  break;
503
+ }
495
504
  case StepMode.STEP_OUT:
496
505
  void this.agent.invoke_stepOut();
497
506
  break;
@@ -30,11 +30,11 @@ const UIStrings = {
30
30
  /**
31
31
  * @description Tooltip to explain why a cookie was blocked.
32
32
  */
33
- secureOnly: 'This cookie was blocked because it had the "`Secure`" attribute and the connection was not secure',
33
+ secureOnly: 'This cookie was blocked because it had the "`Secure`" attribute and the connection wasn’t secure',
34
34
  /**
35
35
  * @description Tooltip to explain why a cookie was blocked.
36
36
  */
37
- notOnPath: 'This cookie was blocked because its path was not an exact match for or a superdirectory of the request URL’s path',
37
+ notOnPath: 'This cookie was blocked because its path wasn’t an exact match for or a superdirectory of the request URL’s path',
38
38
  /**
39
39
  * @description Tooltip to explain why a cookie was blocked.
40
40
  */
@@ -46,15 +46,15 @@ const UIStrings = {
46
46
  /**
47
47
  * @description Tooltip to explain why a cookie was blocked.
48
48
  */
49
- sameSiteLax: 'This cookie was blocked because it had the "`SameSite=Lax`" attribute and the request was made from a different site and was not initiated by a top-level navigation',
49
+ sameSiteLax: 'This cookie was blocked because it had the "`SameSite=Lax`" attribute and the request was made from a different site and wasn’t initiated by a top-level navigation',
50
50
  /**
51
51
  * @description Tooltip to explain why a cookie was blocked.
52
52
  */
53
- sameSiteUnspecifiedTreatedAsLax: 'This cookie didn’t specify a "`SameSite`" attribute when it was stored and was defaulted to "`SameSite=Lax`", and was blocked because the request was made from a different site and was not initiated by a top-level navigation. The cookie had to have been set with "`SameSite=None`" to enable cross-site usage.',
53
+ sameSiteUnspecifiedTreatedAsLax: 'This cookie didn’t specify a "`SameSite`" attribute when it was stored and was defaulted to "`SameSite=Lax`", and was blocked because the request was made from a different site and wasn’t initiated by a top-level navigation. The cookie had to have been set with "`SameSite=None`" to enable cross-site usage.',
54
54
  /**
55
55
  * @description Tooltip to explain why a cookie was blocked.
56
56
  */
57
- sameSiteNoneInsecure: 'This cookie was blocked because it had the "`SameSite=None`" attribute but was not marked "`Secure`". Cookies without SameSite restrictions must be marked "`Secure`" and sent over a secure connection.',
57
+ sameSiteNoneInsecure: 'This cookie was blocked because it had the "`SameSite=None`" attribute but wasn’t marked "`Secure`". Cookies without SameSite restrictions must be marked "`Secure`" and sent over a secure connection.',
58
58
  /**
59
59
  * @description Tooltip to explain why a cookie was blocked.
60
60
  */
@@ -90,7 +90,7 @@ const UIStrings = {
90
90
  /**
91
91
  * @description Tooltip to explain why a cookie was blocked.
92
92
  */
93
- theSchemeOfThisConnectionIsNot: 'The scheme of this connection is not allowed to store cookies',
93
+ theSchemeOfThisConnectionIsNot: 'The scheme of this connection isn’t allowed to store cookies',
94
94
  /**
95
95
  * @description Tooltip to explain why a cookie was blocked.
96
96
  */
@@ -98,24 +98,24 @@ const UIStrings = {
98
98
  /**
99
99
  * @description Tooltip to explain why an attempt to set a cookie via a `Set-Cookie` HTTP header on a request's response was blocked.
100
100
  */
101
- blockedReasonSecureOnly: 'This attempt to set a cookie via a "`Set-Cookie`" header was blocked because it had the "`Secure`" attribute but was not received over a secure connection',
101
+ blockedReasonSecureOnly: 'This attempt to set a cookie via a "`Set-Cookie`" header was blocked because it had the "`Secure`" attribute but wasn’t received over a secure connection',
102
102
  /**
103
103
  * @description Tooltip to explain why an attempt to set a cookie via a `Set-Cookie` HTTP header on a request's response was blocked.
104
104
  * @example {SameSite=Strict} PH1
105
105
  */
106
- blockedReasonSameSiteStrictLax: 'This attempt to set a cookie via a "`Set-Cookie`" header was blocked because it had the "{PH1}" attribute but came from a cross-site response which was not the response to a top-level navigation',
106
+ blockedReasonSameSiteStrictLax: 'This attempt to set a cookie via a "`Set-Cookie`" header was blocked because it had the "{PH1}" attribute but came from a cross-site response which wasn’t the response to a top-level navigation',
107
107
  /**
108
108
  * @description Tooltip to explain why an attempt to set a cookie via a `Set-Cookie` HTTP header on a request's response was blocked.
109
109
  */
110
- blockedReasonSameSiteUnspecifiedTreatedAsLax: 'This "`Set-Cookie`" header didn’t specify a "`SameSite`" attribute and was defaulted to "`SameSite=Lax`", and was blocked because it came from a cross-site response which was not the response to a top-level navigation. The "`Set-Cookie`" header had to have been set with "`SameSite=None`" to enable cross-site usage.',
110
+ blockedReasonSameSiteUnspecifiedTreatedAsLax: 'This "`Set-Cookie`" header didn’t specify a "`SameSite`" attribute and was defaulted to "`SameSite=Lax`", and was blocked because it came from a cross-site response which wasn’t the response to a top-level navigation. The "`Set-Cookie`" header had to have been set with "`SameSite=None`" to enable cross-site usage.',
111
111
  /**
112
112
  * @description Tooltip to explain why an attempt to set a cookie via a `Set-Cookie` HTTP header on a request's response was blocked.
113
113
  */
114
- blockedReasonSameSiteNoneInsecure: 'This attempt to set a cookie via a "`Set-Cookie`" header was blocked because it had the "`SameSite=None`" attribute but did not have the "`Secure`" attribute, which is required in order to use "`SameSite=None`"',
114
+ blockedReasonSameSiteNoneInsecure: 'This attempt to set a cookie via a "`Set-Cookie`" header was blocked because it had the "`SameSite=None`" attribute but didn’t have the "`Secure`" attribute, which is required in order to use "`SameSite=None`"',
115
115
  /**
116
116
  * @description Tooltip to explain why an attempt to set a cookie via a `Set-Cookie` HTTP header on a request's response was blocked.
117
117
  */
118
- blockedReasonOverwriteSecure: 'This attempt to set a cookie via a "`Set-Cookie`" header was blocked because it was not sent over a secure connection and would have overwritten a cookie with the "`Secure`" attribute',
118
+ blockedReasonOverwriteSecure: 'This attempt to set a cookie via a "`Set-Cookie`" header was blocked because it wasn’t sent over a secure connection and would have overwritten a cookie with the "`Secure`" attribute',
119
119
  /**
120
120
  * @description Tooltip to explain why an attempt to set a cookie via a `Set-Cookie` HTTP header on a request's response was blocked.
121
121
  */
@@ -109,7 +109,12 @@ export function toggleClassAndInjectStyleRule(this: Element, pseudoElementName:
109
109
  const classNamePrefix = '__web-inspector-hide';
110
110
  const classNameSuffix = '-shortcut__';
111
111
  const styleTagId = '__web-inspector-hide-shortcut-style__';
112
- const pseudoElementNameEscaped = pseudoElementName ? pseudoElementName.replace(/[^a-zA-Z0-9_-]/g, '_') : '';
112
+ let pseudoElementNameEscaped = '';
113
+ if (pseudoElementName) {
114
+ pseudoElementNameEscaped = pseudoElementName.replace(/[^a-zA-Z0-9-]/g, function(c) {
115
+ return '_' + c.charCodeAt(0).toString(16) + '_';
116
+ });
117
+ }
113
118
  const className = classNamePrefix + pseudoElementNameEscaped + classNameSuffix;
114
119
  this.classList.toggle(className, hidden);
115
120
 
@@ -117,7 +122,7 @@ export function toggleClassAndInjectStyleRule(this: Element, pseudoElementName:
117
122
  while (localRoot.parentNode) {
118
123
  localRoot = (localRoot.parentNode as Element);
119
124
  }
120
- if (localRoot.nodeType === Node.DOCUMENT_NODE) {
125
+ if (localRoot.nodeType === 9 /* Node.DOCUMENT_NODE */) {
121
126
  localRoot = document.head;
122
127
  }
123
128
 
@@ -291,6 +291,21 @@ export class ResourceTreeModel extends SDKModel<EventTypes> {
291
291
  this.dispatchEventToListeners(Events.FrameNavigatedWithinDocument, frame);
292
292
  }
293
293
 
294
+ frameStoppedLoading(frameId: Protocol.Page.FrameId): void {
295
+ const frame = this.framesInternal.get(frameId);
296
+ if (!frame) {
297
+ return;
298
+ }
299
+ // The renderer sends `Page.frameNavigated` before it tells the browser
300
+ // process about the commit, so the `Storage.getStorageKey` request issued
301
+ // from `ResourceTreeFrame.navigate()` may be answered for the previous
302
+ // document (and fails outright if that document had an opaque origin, e.g.
303
+ // the initial about:blank). `Page.frameStoppedLoading` comes from the
304
+ // browser process after the commit, so re-fetch the storage key here.
305
+ void frame.getStorageKey(/* forceFetch */ true);
306
+ void this.updateStorageKeys();
307
+ }
308
+
294
309
  frameDetached(frameId: Protocol.Page.FrameId, isSwap: boolean): void {
295
310
  // Do nothing unless cached resource tree is processed - it will overwrite everything.
296
311
  if (!this.#cachedResourcesProcessed) {
@@ -1145,7 +1160,8 @@ export class PageDispatcher implements ProtocolProxyApi.PageDispatcher {
1145
1160
  frameStartedLoading({}: Protocol.Page.FrameStartedLoadingEvent): void {
1146
1161
  }
1147
1162
 
1148
- frameStoppedLoading({}: Protocol.Page.FrameStoppedLoadingEvent): void {
1163
+ frameStoppedLoading({frameId}: Protocol.Page.FrameStoppedLoadingEvent): void {
1164
+ this.#resourceTreeModel.frameStoppedLoading(frameId);
1149
1165
  }
1150
1166
 
1151
1167
  frameRequestedNavigation({}: Protocol.Page.FrameRequestedNavigationEvent): void {
@@ -95,8 +95,10 @@ export class ServerSentEventsParser {
95
95
  this.#data += '\n';
96
96
  }
97
97
  if (fieldName === 'id') {
98
- // We should do a check here whether the id field contains "\0" and ignore it.
99
- this.#id = this.#line.substring(fieldValueStart);
98
+ const id = this.#line.substring(fieldValueStart);
99
+ if (!id.includes('\0')) {
100
+ this.#id = id;
101
+ }
100
102
  }
101
103
  // Ignore all other fields. Also ignore "retry", we won't forward that to the backend.
102
104
  }
@@ -900,9 +900,10 @@ export class SourceMap {
900
900
  [];
901
901
  }
902
902
 
903
- /** See {@link SourceMapScopesInfo.hasOutlinedFunctions}. False without encoded scopes. */
904
- hasOutlinedFunctions(): boolean {
905
- return this.hasEncodedScopeInfo() && (this.#scopesInfo?.hasOutlinedFunctions() ?? false);
903
+ /** See {@link SourceMapScopesInfo.outlinedFunctionRanges}. Empty without encoded scopes. */
904
+ outlinedFunctionRanges(generatedLine: number, generatedColumn: number): PositionRange[] {
905
+ return this.hasEncodedScopeInfo() ? this.#scopesInfo?.outlinedFunctionRanges(generatedLine, generatedColumn) ?? [] :
906
+ [];
906
907
  }
907
908
 
908
909
  /** See {@link SourceMapScopesInfo.artificialFunctionRanges}. Empty without encoded scopes. */
@@ -614,14 +614,28 @@ export class SourceMapScopesInfo {
614
614
  }
615
615
 
616
616
  /**
617
- * @returns true, iff any generated function is outlined, i.e. marked as "hidden" but with a definition (see
618
- * {@link GeneratedFrameKind.OUTLINED}). Hidden functions without a definition are compiler helpers.
617
+ * @returns the outlined parts of the authored function at the position: the hidden generated functions whose
618
+ * original scope lies within that function's original scope (see {@link GeneratedFrameKind.OUTLINED}).
619
+ * Includes the outlined part the position itself is in, if any. Sorted by start position.
619
620
  */
620
- hasOutlinedFunctions(): boolean {
621
- const hasOutlined = (ranges: ScopesCodec.GeneratedRange[]): boolean =>
622
- ranges.some(range => (range.isStackFrame && range.isHidden && range.originalScope !== undefined) ||
623
- hasOutlined(range.children));
624
- return hasOutlined(this.#generatedRanges);
621
+ outlinedFunctionRanges(generatedLine: number, generatedColumn: number): PositionRange[] {
622
+ const rangeChain = this.#findGeneratedRangeChain(generatedLine, generatedColumn);
623
+ const functionScope = this.#findFunctionScopeInOriginalScopeChain(rangeChain.at(-1)?.originalScope);
624
+ if (!functionScope) {
625
+ return [];
626
+ }
627
+ const isWithinFunction = (scope: ScopesCodec.OriginalScope|undefined): boolean =>
628
+ scope !== undefined && (scope === functionScope || isWithinFunction(scope.parent));
629
+ const result: PositionRange[] = [];
630
+ (function walk(ranges: ScopesCodec.GeneratedRange[]) {
631
+ for (const range of ranges) {
632
+ if (range.isStackFrame && range.isHidden && isWithinFunction(range.originalScope)) {
633
+ result.push({start: range.start, end: range.end});
634
+ }
635
+ walk(range.children);
636
+ }
637
+ })(this.#generatedRanges);
638
+ return result;
625
639
  }
626
640
 
627
641
  /**
@@ -39,7 +39,7 @@ const UIStrings = {
39
39
  /**
40
40
  * @description Title of an option under the Rendering category that can be invoked through the Command Menu.
41
41
  */
42
- doNotHighlightAdFrames: 'Do not highlight ad frames',
42
+ doNotHighlightAdFrames: 'Don’t highlight ad frames',
43
43
  /**
44
44
  * @description Title of an option under the Rendering category that can be invoked through the Command Menu.
45
45
  */
@@ -71,11 +71,11 @@ const UIStrings = {
71
71
  /**
72
72
  * @description Title of a Rendering setting that can be invoked through the Command Menu.
73
73
  */
74
- doNotEmulateAFocusedPage: 'Do not emulate a focused page',
74
+ doNotEmulateAFocusedPage: 'Don’t emulate a focused page',
75
75
  /**
76
76
  * @description Title of a setting under the Rendering category that can be invoked through the Command Menu.
77
77
  */
78
- doNotEmulateCssMediaType: 'Do not emulate CSS media type',
78
+ doNotEmulateCssMediaType: 'Don’t emulate CSS media type',
79
79
  /**
80
80
  * @description A drop-down menu option to do not emulate css media type.
81
81
  */
@@ -108,7 +108,7 @@ const UIStrings = {
108
108
  * @description Title of a setting under the Rendering drawer that can be invoked through the Command Menu.
109
109
  * @example {prefers-color-scheme} PH1
110
110
  */
111
- doNotEmulateCss: 'Do not emulate CSS {PH1}',
111
+ doNotEmulateCss: 'Don’t emulate CSS {PH1}',
112
112
  /**
113
113
  * @description Title of a setting under the Rendering drawer that can be invoked through the Command Menu.
114
114
  * @example {prefers-color-scheme: light} PH1
@@ -172,7 +172,7 @@ const UIStrings = {
172
172
  /**
173
173
  * @description Title of a setting under the Rendering drawer that can be invoked through the Command Menu.
174
174
  */
175
- doNotEmulateAnyVisionDeficiency: 'Do not emulate any vision deficiency',
175
+ doNotEmulateAnyVisionDeficiency: 'Don’t emulate any vision deficiency',
176
176
  /**
177
177
  * @description Title of a setting under the Rendering drawer that can be invoked through the Command Menu.
178
178
  */
@@ -232,7 +232,7 @@ const UIStrings = {
232
232
  /**
233
233
  * @description Title of a setting under the Rendering category that can be invoked through the Command Menu.
234
234
  */
235
- doNotEmulateOsTextScale: 'Do not emulate OS text scale',
235
+ doNotEmulateOsTextScale: 'Don’t emulate OS text scale',
236
236
  /**
237
237
  * @description A drop-down menu option to not emulate OS text scale.
238
238
  */
@@ -340,7 +340,7 @@ const UIStrings = {
340
340
  * @description A command available in the command menu to stop automatically opening DevTools when
341
341
  * webpages create new popup windows.
342
342
  */
343
- doNotAutoOpen: 'Do not auto-open DevTools for popups',
343
+ doNotAutoOpen: 'Don’t auto-open DevTools for popups',
344
344
  /**
345
345
  * @description Title of an action that toggles the "forces CSS prefers-color-scheme" media feature.
346
346
  */
@@ -242,6 +242,10 @@ export const UIStrings = {
242
242
  * @description A deprecation warning shown in the DevTools Issues tab. It's shown when a video conferencing website uses a non-standard API for controlling the crypto method used, but is not having an effect because the desired behavior is already enabled-by-default.
243
243
  */
244
244
  RTCConstraintEnableDtlsSrtpTrue: "The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `true` value for this constraint, which had no effect, but you can remove this constraint for tidiness.",
245
+ /**
246
+ * @description Warning displayed to developers when the non-standard RTCPeerConnection.createDTMFSender() method is used. Developers should use the standard RTCRtpSender.dtmf attribute instead.
247
+ */
248
+ RTCPeerConnectionCreateDTMFSender: "RTCPeerConnection.createDTMFSender() is deprecated and will be removed. Please use RTCRtpSender.dtmf instead.",
245
249
  /**
246
250
  * @description WebRTC is set of JavaScript APIs for sending and receiving data, audio and video. getStats() is a method used to obtain network and quality metrics. There are two versions of this method, one is being deprecated because it is non-standard.
247
251
  */
@@ -427,6 +431,10 @@ export const DEPRECATIONS_METADATA: Partial<Record<string, DeprecationDescriptor
427
431
  "RTCConstraintEnableDtlsSrtpTrue": {
428
432
  "milestone": 97
429
433
  },
434
+ "RTCPeerConnectionCreateDTMFSender": {
435
+ "chromeStatusFeature": 5160724576993280,
436
+ "milestone": 160
437
+ },
430
438
  "RTCPeerConnectionGetStatsLegacyNonCompliant": {
431
439
  "chromeStatusFeature": 4631626228695040,
432
440
  "milestone": 117
@@ -89,7 +89,7 @@ inspectorBackend.registerEnum("Audits.SharedDictionaryError", {UseErrorCrossOrig
89
89
  inspectorBackend.registerEnum("Audits.SRIMessageSignatureError", {MissingSignatureHeader: "MissingSignatureHeader", MissingSignatureInputHeader: "MissingSignatureInputHeader", InvalidSignatureHeader: "InvalidSignatureHeader", InvalidSignatureInputHeader: "InvalidSignatureInputHeader", SignatureHeaderValueIsNotByteSequence: "SignatureHeaderValueIsNotByteSequence", SignatureHeaderValueIsParameterized: "SignatureHeaderValueIsParameterized", SignatureHeaderValueIsIncorrectLength: "SignatureHeaderValueIsIncorrectLength", SignatureInputHeaderMissingLabel: "SignatureInputHeaderMissingLabel", SignatureInputHeaderValueNotInnerList: "SignatureInputHeaderValueNotInnerList", SignatureInputHeaderValueMissingComponents: "SignatureInputHeaderValueMissingComponents", SignatureInputHeaderInvalidComponentType: "SignatureInputHeaderInvalidComponentType", SignatureInputHeaderInvalidComponentName: "SignatureInputHeaderInvalidComponentName", SignatureInputHeaderInvalidHeaderComponentParameter: "SignatureInputHeaderInvalidHeaderComponentParameter", SignatureInputHeaderInvalidDerivedComponentParameter: "SignatureInputHeaderInvalidDerivedComponentParameter", SignatureInputHeaderKeyIdLength: "SignatureInputHeaderKeyIdLength", SignatureInputHeaderInvalidParameter: "SignatureInputHeaderInvalidParameter", SignatureInputHeaderMissingRequiredParameters: "SignatureInputHeaderMissingRequiredParameters", ValidationFailedSignatureExpired: "ValidationFailedSignatureExpired", ValidationFailedInvalidLength: "ValidationFailedInvalidLength", ValidationFailedSignatureMismatch: "ValidationFailedSignatureMismatch", ValidationFailedIntegrityMismatch: "ValidationFailedIntegrityMismatch", SignatureBaseUnknownDerivedComponent: "SignatureBaseUnknownDerivedComponent", SignatureBaseMissingHeader: "SignatureBaseMissingHeader", SignatureBaseInvalidUnencodedDigest: "SignatureBaseInvalidUnencodedDigest", SignatureBaseUnsupportedComponent: "SignatureBaseUnsupportedComponent"});
90
90
  inspectorBackend.registerEnum("Audits.UnencodedDigestError", {MalformedDictionary: "MalformedDictionary", UnknownAlgorithm: "UnknownAlgorithm", IncorrectDigestType: "IncorrectDigestType", IncorrectDigestLength: "IncorrectDigestLength"});
91
91
  inspectorBackend.registerEnum("Audits.ConnectionAllowlistError", {InvalidHeader: "InvalidHeader", MoreThanOneList: "MoreThanOneList", ItemNotInnerList: "ItemNotInnerList", InvalidAllowlistItemType: "InvalidAllowlistItemType", ReportingEndpointNotToken: "ReportingEndpointNotToken", InvalidUrlPattern: "InvalidUrlPattern", IFrameAttributeLoosensEmbeddingRequirement: "IFrameAttributeLoosensEmbeddingRequirement", InvalidAllowConnectionAllowlistFrom: "InvalidAllowConnectionAllowlistFrom", EmbeddingRequirementNotSatisfied: "EmbeddingRequirementNotSatisfied"});
92
- inspectorBackend.registerEnum("Audits.GenericIssueErrorType", {FormLabelForNameError: "FormLabelForNameError", FormDuplicateIdForInputError: "FormDuplicateIdForInputError", FormInputWithNoLabelError: "FormInputWithNoLabelError", FormAutocompleteAttributeEmptyError: "FormAutocompleteAttributeEmptyError", FormEmptyIdAndNameAttributesForInputError: "FormEmptyIdAndNameAttributesForInputError", FormAriaLabelledByToNonExistingIdError: "FormAriaLabelledByToNonExistingIdError", FormInputAssignedAutocompleteValueToIdOrNameAttributeError: "FormInputAssignedAutocompleteValueToIdOrNameAttributeError", FormLabelHasNeitherForNorNestedInputError: "FormLabelHasNeitherForNorNestedInputError", FormLabelForMatchesNonExistingIdError: "FormLabelForMatchesNonExistingIdError", FormInputHasWrongButWellIntendedAutocompleteValueError: "FormInputHasWrongButWellIntendedAutocompleteValueError", ResponseWasBlockedByORB: "ResponseWasBlockedByORB", NavigationEntryMarkedSkippable: "NavigationEntryMarkedSkippable", BackUINavigationWouldSkipAd: "BackUINavigationWouldSkipAd", AutofillAndManualTextPolicyControlledFeaturesInfo: "AutofillAndManualTextPolicyControlledFeaturesInfo", AutofillPolicyControlledFeatureInfo: "AutofillPolicyControlledFeatureInfo", ManualTextPolicyControlledFeatureInfo: "ManualTextPolicyControlledFeatureInfo", FormModelContextParameterMissingTitleAndDescription: "FormModelContextParameterMissingTitleAndDescription", FormModelContextMissingToolName: "FormModelContextMissingToolName", FormModelContextMissingToolDescription: "FormModelContextMissingToolDescription", FormModelContextRequiredParameterMissingName: "FormModelContextRequiredParameterMissingName", FormModelContextParameterMissingName: "FormModelContextParameterMissingName"});
92
+ inspectorBackend.registerEnum("Audits.GenericIssueErrorType", {FormLabelForNameError: "FormLabelForNameError", FormDuplicateIdForInputError: "FormDuplicateIdForInputError", FormInputWithNoLabelError: "FormInputWithNoLabelError", FormAutocompleteAttributeEmptyError: "FormAutocompleteAttributeEmptyError", FormEmptyIdAndNameAttributesForInputError: "FormEmptyIdAndNameAttributesForInputError", FormAriaLabelledByToNonExistingIdError: "FormAriaLabelledByToNonExistingIdError", FormInputAssignedAutocompleteValueToIdOrNameAttributeError: "FormInputAssignedAutocompleteValueToIdOrNameAttributeError", FormLabelHasNeitherForNorNestedInputError: "FormLabelHasNeitherForNorNestedInputError", FormLabelForMatchesNonExistingIdError: "FormLabelForMatchesNonExistingIdError", FormInputHasWrongButWellIntendedAutocompleteValueError: "FormInputHasWrongButWellIntendedAutocompleteValueError", ResponseWasBlockedByORB: "ResponseWasBlockedByORB", NavigationEntryMarkedSkippable: "NavigationEntryMarkedSkippable", BackUINavigationWouldSkipAd: "BackUINavigationWouldSkipAd", AutofillAndManualTextPolicyControlledFeaturesInfo: "AutofillAndManualTextPolicyControlledFeaturesInfo", AutofillPolicyControlledFeatureInfo: "AutofillPolicyControlledFeatureInfo", ManualTextPolicyControlledFeatureInfo: "ManualTextPolicyControlledFeatureInfo", FormModelContextParameterMissingTitleAndDescription: "FormModelContextParameterMissingTitleAndDescription", FormModelContextMissingToolName: "FormModelContextMissingToolName", FormModelContextMissingToolDescription: "FormModelContextMissingToolDescription", FormModelContextRequiredParameterMissingName: "FormModelContextRequiredParameterMissingName", FormModelContextParameterMissingName: "FormModelContextParameterMissingName", GeolocationPromptWithoutUserGesture: "GeolocationPromptWithoutUserGesture"});
93
93
  inspectorBackend.registerEnum("Audits.ClientHintIssueReason", {MetaTagAllowListInvalidOrigin: "MetaTagAllowListInvalidOrigin", MetaTagModifiedHTML: "MetaTagModifiedHTML"});
94
94
  inspectorBackend.registerEnum("Audits.FederatedAuthRequestIssueReason", {ShouldEmbargo: "ShouldEmbargo", TooManyRequests: "TooManyRequests", WellKnownHttpNotFound: "WellKnownHttpNotFound", WellKnownNoResponse: "WellKnownNoResponse", WellKnownBlockedByConnectionAllowlist: "WellKnownBlockedByConnectionAllowlist", WellKnownInvalidResponse: "WellKnownInvalidResponse", WellKnownListEmpty: "WellKnownListEmpty", WellKnownInvalidContentType: "WellKnownInvalidContentType", ConfigNotInWellKnown: "ConfigNotInWellKnown", WellKnownTooBig: "WellKnownTooBig", ConfigHttpNotFound: "ConfigHttpNotFound", ConfigNoResponse: "ConfigNoResponse", ConfigBlockedByConnectionAllowlist: "ConfigBlockedByConnectionAllowlist", ConfigInvalidResponse: "ConfigInvalidResponse", ConfigInvalidContentType: "ConfigInvalidContentType", IdpNotPotentiallyTrustworthy: "IdpNotPotentiallyTrustworthy", DisabledInSettings: "DisabledInSettings", DisabledInFlags: "DisabledInFlags", ErrorFetchingSignin: "ErrorFetchingSignin", InvalidSigninResponse: "InvalidSigninResponse", AccountsHttpNotFound: "AccountsHttpNotFound", AccountsNoResponse: "AccountsNoResponse", AccountsBlockedByConnectionAllowlist: "AccountsBlockedByConnectionAllowlist", AccountsInvalidResponse: "AccountsInvalidResponse", AccountsListEmpty: "AccountsListEmpty", AccountsInvalidContentType: "AccountsInvalidContentType", IdTokenHttpNotFound: "IdTokenHttpNotFound", IdTokenNoResponse: "IdTokenNoResponse", IdTokenBlockedByConnectionAllowlist: "IdTokenBlockedByConnectionAllowlist", IdTokenInvalidResponse: "IdTokenInvalidResponse", IdTokenIdpErrorResponse: "IdTokenIdpErrorResponse", IdTokenCrossSiteIdpErrorResponse: "IdTokenCrossSiteIdpErrorResponse", IdTokenInvalidRequest: "IdTokenInvalidRequest", IdTokenInvalidContentType: "IdTokenInvalidContentType", ErrorIdToken: "ErrorIdToken", Canceled: "Canceled", RpPageNotVisible: "RpPageNotVisible", SilentMediationFailure: "SilentMediationFailure", NotSignedInWithIdp: "NotSignedInWithIdp", MissingTransientUserActivation: "MissingTransientUserActivation", ReplacedByActiveMode: "ReplacedByActiveMode", RelyingPartyOriginIsOpaque: "RelyingPartyOriginIsOpaque", TypeNotMatching: "TypeNotMatching", UiDismissedNoEmbargo: "UiDismissedNoEmbargo", CorsError: "CorsError", SuppressedBySegmentationPlatform: "SuppressedBySegmentationPlatform", PopupBlockedByConnectionAllowlist: "PopupBlockedByConnectionAllowlist"});
95
95
  inspectorBackend.registerEnum("Audits.FederatedAuthUserInfoRequestIssueReason", {NotSameOrigin: "NotSameOrigin", NotIframe: "NotIframe", NotPotentiallyTrustworthy: "NotPotentiallyTrustworthy", NoAPIPermission: "NoApiPermission", NotSignedInWithIdp: "NotSignedInWithIdp", NoAccountSharingPermission: "NoAccountSharingPermission", InvalidConfigOrWellKnown: "InvalidConfigOrWellKnown", InvalidAccountsResponse: "InvalidAccountsResponse", NoReturningUserFromFetchedAccounts: "NoReturningUserFromFetchedAccounts"});
@@ -1126,6 +1126,7 @@ inspectorBackend.registerCommand("Page.getAppId", [], ["appId", "recommendedId",
1126
1126
  inspectorBackend.registerCommand("Page.getSubApps", [], ["subApps"], "Returns the list of installed child Sub-Apps for the inspected parent app.");
1127
1127
  inspectorBackend.registerCommand("Page.getSiblingSubApps", [], ["subApps"], "Returns the list of sibling Sub-Apps sharing the same parent app if the inspected context is a Sub-App.");
1128
1128
  inspectorBackend.registerCommand("Page.getAdScriptAncestry", [{"name": "frameId", "type": "string", "optional": false, "description": "", "typeRef": "Page.FrameId"}], ["adScriptAncestry"], "");
1129
+ inspectorBackend.registerCommand("Page.getSpellCheckCustomDictionary", [{"name": "frameId", "type": "string", "optional": false, "description": "", "typeRef": "Page.FrameId"}], ["words"], "Returns the words that the frame's document added to its spell check custom dictionary with `document.spellCheckCustomDictionary.addWords()`, sorted. Page script cannot read the dictionary back; this lets developers inspect it.");
1129
1130
  inspectorBackend.registerCommand("Page.getFrameTree", [], ["frameTree"], "Returns present frame tree structure.");
1130
1131
  inspectorBackend.registerCommand("Page.getLayoutMetrics", [], ["layoutViewport", "visualViewport", "contentSize", "cssLayoutViewport", "cssVisualViewport", "cssContentSize"], "Returns metrics relating to the layouting of the page, such as viewport bounds/scale.");
1131
1132
  inspectorBackend.registerCommand("Page.getNavigationHistory", [], ["currentIndex", "entries"], "Returns navigation history for the current page.");
@@ -1567,7 +1568,7 @@ inspectorBackend.registerCommand("Debugger.setSkipAllPauses", [{"name": "skip",
1567
1568
  inspectorBackend.registerCommand("Debugger.setVariableValue", [{"name": "scopeNumber", "type": "number", "optional": false, "description": "0-based number of scope as was listed in scope chain. Only 'local', 'closure' and 'catch' scope types are allowed. Other scopes could be manipulated manually.", "typeRef": null}, {"name": "variableName", "type": "string", "optional": false, "description": "Variable name.", "typeRef": null}, {"name": "newValue", "type": "object", "optional": false, "description": "New variable value.", "typeRef": "Runtime.CallArgument"}, {"name": "callFrameId", "type": "string", "optional": false, "description": "Id of callframe that holds variable.", "typeRef": "Debugger.CallFrameId"}], [], "Changes value of variable in a callframe. Object-based scopes are not supported and must be mutated manually.");
1568
1569
  inspectorBackend.registerCommand("Debugger.stepInto", [{"name": "breakOnAsyncCall", "type": "boolean", "optional": true, "description": "Debugger will pause on the execution of the first async task which was scheduled before next pause.", "typeRef": null}, {"name": "skipList", "type": "array", "optional": true, "description": "The skipList specifies location ranges that should be skipped on step into.", "typeRef": "Debugger.LocationRange"}], [], "Steps into the function call.");
1569
1570
  inspectorBackend.registerCommand("Debugger.stepOut", [], [], "Steps out of the function call.");
1570
- inspectorBackend.registerCommand("Debugger.stepOver", [{"name": "skipList", "type": "array", "optional": true, "description": "The skipList specifies location ranges that should be skipped on step over.", "typeRef": "Debugger.LocationRange"}], [], "Steps over the statement.");
1571
+ inspectorBackend.registerCommand("Debugger.stepOver", [{"name": "skipList", "type": "array", "optional": true, "description": "The skipList specifies location ranges that should be skipped on step over.", "typeRef": "Debugger.LocationRange"}, {"name": "enterRanges", "type": "array", "optional": true, "description": "Functions whose source range lies within one of the enterRanges are entered as if by stepInto, even when they are called (directly or indirectly) from a call that is stepped over.", "typeRef": "Debugger.LocationRange"}], [], "Steps over the statement.");
1571
1572
  inspectorBackend.registerType("Debugger.Location", [{"name": "scriptId", "type": "string", "optional": false, "description": "Script identifier as reported in the `Debugger.scriptParsed`.", "typeRef": "Runtime.ScriptId"}, {"name": "lineNumber", "type": "number", "optional": false, "description": "Line number in the script (0-based).", "typeRef": null}, {"name": "columnNumber", "type": "number", "optional": true, "description": "Column number in the script (0-based).", "typeRef": null}]);
1572
1573
  inspectorBackend.registerType("Debugger.ScriptPosition", [{"name": "lineNumber", "type": "number", "optional": false, "description": "", "typeRef": null}, {"name": "columnNumber", "type": "number", "optional": false, "description": "", "typeRef": null}]);
1573
1574
  inspectorBackend.registerType("Debugger.LocationRange", [{"name": "scriptId", "type": "string", "optional": false, "description": "", "typeRef": "Runtime.ScriptId"}, {"name": "start", "type": "object", "optional": false, "description": "", "typeRef": "Debugger.ScriptPosition"}, {"name": "end", "type": "object", "optional": false, "description": "", "typeRef": "Debugger.ScriptPosition"}]);
@@ -4228,6 +4228,16 @@ export namespace ProtocolMapping {
4228
4228
  paramsType: [Protocol.Page.GetAdScriptAncestryRequest];
4229
4229
  returnType: Protocol.Page.GetAdScriptAncestryResponse;
4230
4230
  };
4231
+ /**
4232
+ * Returns the words that the frame's document added to its spell check custom
4233
+ * dictionary with `document.spellCheckCustomDictionary.addWords()`, sorted.
4234
+ * Page script cannot read the dictionary back; this lets developers inspect
4235
+ * it.
4236
+ */
4237
+ 'Page.getSpellCheckCustomDictionary': {
4238
+ paramsType: [Protocol.Page.GetSpellCheckCustomDictionaryRequest];
4239
+ returnType: Protocol.Page.GetSpellCheckCustomDictionaryResponse;
4240
+ };
4231
4241
  /**
4232
4242
  * Returns present frame tree structure.
4233
4243
  */
@@ -3422,6 +3422,14 @@ declare namespace ProtocolProxyApi {
3422
3422
 
3423
3423
  invoke_getAdScriptAncestry(params: Protocol.Page.GetAdScriptAncestryRequest): Promise<Protocol.Page.GetAdScriptAncestryResponse>;
3424
3424
 
3425
+ /**
3426
+ * Returns the words that the frame's document added to its spell check custom
3427
+ * dictionary with `document.spellCheckCustomDictionary.addWords()`, sorted.
3428
+ * Page script cannot read the dictionary back; this lets developers inspect
3429
+ * it.
3430
+ */
3431
+ invoke_getSpellCheckCustomDictionary(params: Protocol.Page.GetSpellCheckCustomDictionaryRequest): Promise<Protocol.Page.GetSpellCheckCustomDictionaryResponse>;
3432
+
3425
3433
  /**
3426
3434
  * Returns present frame tree structure.
3427
3435
  */
@@ -1291,6 +1291,7 @@ export namespace Audits {
1291
1291
  FormModelContextMissingToolDescription = 'FormModelContextMissingToolDescription',
1292
1292
  FormModelContextRequiredParameterMissingName = 'FormModelContextRequiredParameterMissingName',
1293
1293
  FormModelContextParameterMissingName = 'FormModelContextParameterMissingName',
1294
+ GeolocationPromptWithoutUserGesture = 'GeolocationPromptWithoutUserGesture',
1294
1295
  }
1295
1296
 
1296
1297
  /**
@@ -16027,6 +16028,14 @@ export namespace Page {
16027
16028
  adScriptAncestry?: Network.AdAncestry;
16028
16029
  }
16029
16030
 
16031
+ export interface GetSpellCheckCustomDictionaryRequest {
16032
+ frameId: FrameId;
16033
+ }
16034
+
16035
+ export interface GetSpellCheckCustomDictionaryResponse extends ProtocolResponseWithError {
16036
+ words: string[];
16037
+ }
16038
+
16030
16039
  export interface GetFrameTreeResponse extends ProtocolResponseWithError {
16031
16040
  /**
16032
16041
  * Present frame tree structure.
@@ -21405,6 +21414,12 @@ export namespace Debugger {
21405
21414
  * The skipList specifies location ranges that should be skipped on step over.
21406
21415
  */
21407
21416
  skipList?: LocationRange[];
21417
+ /**
21418
+ * Functions whose source range lies within one of the enterRanges are
21419
+ * entered as if by stepInto, even when they are called (directly or
21420
+ * indirectly) from a call that is stepped over.
21421
+ */
21422
+ enterRanges?: LocationRange[];
21408
21423
  }
21409
21424
 
21410
21425
  /**