chrome-devtools-frontend 1.0.1026160 → 1.0.1027447

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 (49) hide show
  1. package/config/owner/LIGHTHOUSE_OWNERS +1 -1
  2. package/docs/triage_guidelines.md +1 -122
  3. package/front_end/core/host/UserMetrics.ts +2 -1
  4. package/front_end/core/i18n/locales/en-US.json +24 -0
  5. package/front_end/core/i18n/locales/en-XL.json +24 -0
  6. package/front_end/core/root/Runtime.ts +1 -0
  7. package/front_end/core/sdk/NetworkManager.ts +24 -3
  8. package/front_end/core/sdk/ResourceTreeModel.ts +1 -1
  9. package/front_end/core/sdk/SourceMap.ts +22 -6
  10. package/front_end/core/sdk/sdk-meta.ts +7 -0
  11. package/front_end/devtools_compatibility.js +1 -0
  12. package/front_end/entrypoints/main/MainImpl.ts +5 -0
  13. package/front_end/generated/ARIAProperties.js +723 -723
  14. package/front_end/generated/SupportedCSSProperties.js +2835 -2835
  15. package/front_end/generated/protocol.ts +4 -0
  16. package/front_end/legacy_test_runner/axe_core_test_runner/axe_core_test_runner.js +1 -1
  17. package/front_end/legacy_test_runner/sources_test_runner/DebuggerTestRunner.js +1 -1
  18. package/front_end/models/bindings/CompilerScriptMapping.ts +1 -1
  19. package/front_end/models/bindings/DebuggerLanguagePlugins.ts +38 -11
  20. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +7 -1
  21. package/front_end/models/bindings/IgnoreListManager.ts +35 -22
  22. package/front_end/models/issues_manager/descriptions/clientHintMetaTagAllowListInvalidOrigin.md +1 -1
  23. package/front_end/models/issues_manager/descriptions/clientHintMetaTagModifiedHTML.md +1 -1
  24. package/front_end/models/text_utils/TextRange.ts +8 -0
  25. package/front_end/models/timeline_model/TimelineModel.ts +18 -1
  26. package/front_end/panels/accessibility/ARIAAttributesView.ts +2 -0
  27. package/front_end/panels/console/consoleView.css +4 -0
  28. package/front_end/panels/elements/ElementsTreeOutline.ts +10 -16
  29. package/front_end/panels/elements/TopLayerContainer.ts +16 -22
  30. package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +45 -50
  31. package/front_end/panels/lighthouse/LighthouseController.ts +3 -0
  32. package/front_end/panels/lighthouse/LighthousePanel.ts +2 -0
  33. package/front_end/panels/security/SecurityPanel.ts +52 -0
  34. package/front_end/panels/security/originView.css +1 -1
  35. package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +16 -0
  36. package/front_end/panels/sources/CallStackSidebarPane.ts +2 -3
  37. package/front_end/panels/sources/DebuggerPlugin.ts +8 -2
  38. package/front_end/panels/sources/navigatorTree.css +3 -3
  39. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +1 -1
  40. package/front_end/ui/components/docs/building-ui-documentation/CreatingComponents.md +172 -1
  41. package/front_end/ui/components/panel_feedback/PreviewToggle.ts +15 -16
  42. package/front_end/ui/components/panel_feedback/previewToggle.css +13 -15
  43. package/front_end/ui/components/text_editor/TextEditor.ts +3 -0
  44. package/front_end/ui/legacy/ARIAUtils.ts +1 -75
  45. package/front_end/ui/legacy/ListControl.ts +4 -0
  46. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +13 -3
  47. package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +5 -4
  48. package/front_end/ui/legacy/inspectorCommon.css +0 -9
  49. package/package.json +1 -1
@@ -1,3 +1,3 @@
1
1
  paulirish@chromium.org
2
2
  cjamcl@chromium.org
3
- asraine@google.com
3
+ asraine@chromium.org
@@ -1,124 +1,3 @@
1
1
  # Triage Guidelines
2
2
 
3
- ## Disclaimer
4
-
5
- The most important thing: please use common sense. The guidelines below are likely not exhaustive and do not cover every case.
6
-
7
- ## What should be triaged?
8
-
9
- All `Untriaged` DevTools issues, as well as any `Unconfirmed` issues that also have the `TE-NeedsTriageHelp` label need to be triaged.
10
-
11
- [[Query]](https://bugs.chromium.org/p/chromium/issues/list?sort=-modified&q=-label%3ADevTools-Triaged%20component%3APlatform%3EDevTools%20status%3AUntriaged%20OR%20component%3APlatform%3EDevTools%20status%3AUnconfirmed%20label%3ATE-NeedsTriageHelp)
12
-
13
- ## Who is triaging?
14
-
15
- Right now there is a Google-internal rotation set-up, with people that do weekly shifts.
16
- As Microsoft is in an opposite timezone they have a similar rotation on the same triage queue, but during a different time.
17
-
18
- - Google rotation: GMT+1
19
- - MS rotation: GMT-9
20
-
21
- ## What are the SLOs?
22
-
23
- [[Query]](https://bugs.chromium.org/p/chromium/issues/list?q=component%3APlatform%3EDevTools%20status%3AUntriaged%20modified-before%3Atoday-7%20OR%20component%3APlatform%3EDevTools%20status%3AUnconfirmed%20label%3ATE-NeedsTriageHelp%20modified-before%3Atoday-7)
24
-
25
- Issues in the untriaged queue should receive a meaningful response within a business week. This means that the goal is to make the query mentioned above return zero issues.
26
-
27
- ## How are priorities defined?
28
-
29
- - P0: This needs to be urgently done, fire drill alert!
30
- - Most of the time, this seldom needs to be used.
31
- - Critical security exploits that affect stable are a good example for a P0
32
- - DevTools crashing on startup is a good example
33
- - P1: This is important. Let’s aim to get this done next
34
- - Non-critical security fixes will likely be in this category
35
- - Regression bugs will be likely in this category
36
- - Important features that partners are waiting for might be in this category
37
- - P2: We want to do that. The exact time of delivery is not that important though.
38
- - General feature work will likely be in this category
39
- - Non-severe bugs
40
- - P3: This is nice, but not important. We unlikely will do work here.
41
- - Edge-case bugs might fit this category
42
- - Non-important feature requests too
43
-
44
- ## How should issues be triaged?
45
-
46
- - Close issues as `WontFix` if they don't reproduce (in simple cases) or are requests for features we've already concluded not to pursue.
47
- - Close issues as `Archived` that are valid, but it seems unlikely that we will get there anytime soon.
48
- - Move issues out of `Platform>DevTools` if they are not DevTools issues (but just reported via the menu item in DevTools), put on the `DevTools-Triaged` label and leave the `Untriaged` status as is.
49
- - Assign regression bugs with bisects to individuals directly and set the status to `Assigned`.
50
- - Put proper `Platform>DevTools>XXX` component(s) on the issue and do an initial check-in regarding the priority.
51
- - Put one of the following labels on it and set the status to `Available`:
52
- - `Hotlist-DevTools-ProductReview` if it's controversial or clear that consensus needs to be built first.
53
- - `Team-DevTools-BrowserAutomation` if it's an issue related to ChromeDriver or puppeteer.
54
- - `Team-DevTools-RuntimeDebugging` if it's a JavaScript or WebAssembly debugging issue.
55
- - `Team-DevTools-WebDebugging` if it's a Web specific debugging issue (i.e. Network or Application panel).
56
- - `Team-DevTools-DesignAccessibility` if it's a design or accessibility issue.
57
- - `Team-DevTools-Performance` if the issue is related to our performance tooling (i.e. Performance panel, Lighthouse).
58
- - `Team-DevTools-RecordReplay` if it's an issue with the recorder or puppeteer.
59
- - No specific `Team` or `Hotlist` if it doesn't fit any specific team otherwise. Make sure to have the `Platform>DevTools` component (or a subcomponent) on it though.
60
- - Also remember to put the `Needs-UX` label on it, if help from a designer is likely to be required.
61
-
62
- ### Setting Assigned or Available
63
-
64
- Set issues to `Available` if they don’t need immediate action and nobody right now and in the short-term future (an iteration) needs to work on it.
65
-
66
- Issues that are handled by Microsoft have the label “Hotlist-DevTools-MS-Backlog” and “Hotlist-DevTools-MS-CurrentSprint” respectively and can be considered triaged.
67
-
68
- If you think they are super urgent, please assign them to yangguo@chromium.org and cc bmeurer@chromium.org and hablich@chromium.org.
69
-
70
- ### Closing issues
71
-
72
- Don’t be afraid to close issues with WontFix if:
73
-
74
- - Bugs that are not reproducible
75
- - After two weeks you did not get a response back from the reporter on a question
76
- - The requested “bug” is the intended behavior
77
- Make sure that you bundle the WontFix with a brief comment explaining it e.g. “Setting to WontFix because not reproducible.”
78
-
79
- ## FAQ
80
-
81
- ### What if the issue belongs to another team?
82
-
83
- If you think the to-triage issue is not a DevTools issue, please simply set it to a component that you think it should belong to and potentially remove the DevTools component. Make sure that the status is set to Untriaged. Please also ensure that you add the label DevTools-Triaged to the bug to ensure that the bug does not come back to the DevTools component. Feel free to CC people that you think might help with triaging this.
84
- This essentially moves the issue out of the DevTools triage queue into another team’s queue.
85
-
86
- ### What if the issue is best handled by Microsoft?
87
-
88
- If you think the to-triage issue or feature request is best handled by Microsoft then add the label "msft-consider" to the issue along with completing the other normal triage steps.
89
-
90
- ### There is a feature request I am unsure how to handle. What should I do?
91
-
92
- Please set the request to Available and add the label “Hotlist-DevTools-ProductReview”.
93
-
94
- ### How do I indicate that a bug should block a release?
95
-
96
- The combination of the label “M-<milestone>” and “Release-Block-<channel>” signals that this very bug is blocking a release. Examples:
97
-
98
- - M-80, Release-Block-Stable
99
- - This blocks the release of 80 to the Stable channel
100
- - Depends in which release channel 80 is, this might not be an urgent (but still important bug to fix)
101
- - M-81, Release-Block-Beta
102
- - This blocks the release of 81 to the Beta channel
103
- - Depends in which release channel 81 is, this might not be an urgent (but still important bug to fix)
104
- - M-81, Release-Block-Dev
105
- - This blocks the release of 81 to the Dev channel
106
- - This typically means that the bug is urgent and important, as Dev releases are happening every week and are ok to be a little bit buggy.
107
-
108
- ## Out of scope
109
-
110
- ### Managing the backlog
111
-
112
- [[Query]](https://bugs.chromium.org/p/chromium/issues/list?q=component%3APlatform%3EDevTools%20status%3AAvailable)
113
-
114
- Managing the backlog is out of scope for the triage rotation. The backlog will be groomed continuously by hablich@ for now. The SLA is that there should be a maximum of 50 issues in there.
115
-
116
- ### Managing the ProductReview queue
117
-
118
- [[Query]](https://bugs.chromium.org/p/chromium/issues/list?q=Hotlist%3DDevTools-ProductReview)
119
-
120
- Issues in `ProductReview` will continuously be handled by hablich@ to unblock items in there. SLA is max 10 issues.
121
-
122
- ## References
123
-
124
- - [Chromium triage guidelines](https://www.chromium.org/for-testers/bug-reporting-guidelines/triage-best-practices)
3
+ Moved to [go/chrome-devtools/triage-sheriff](http://go/chrome-devtools/triage-sheriff).
@@ -636,8 +636,9 @@ export enum DevtoolsExperiments {
636
636
  'instrumentationBreakpoints' = 61,
637
637
  'cssAuthoringHints' = 62,
638
638
  'authoredDeployedGrouping' = 63,
639
+ 'importantDOMProperties' = 64,
639
640
  // Increment this when new experiments are added.
640
- 'MaxValue' = 64,
641
+ 'MaxValue' = 65,
641
642
  }
642
643
  /* eslint-enable @typescript-eslint/naming-convention */
643
644
 
@@ -1709,6 +1709,12 @@
1709
1709
  "models/timeline_model/TimelineModel.ts | workerSS": {
1710
1710
  "message": "Worker: {PH1} — {PH2}"
1711
1711
  },
1712
+ "models/timeline_model/TimelineModel.ts | workletService": {
1713
+ "message": "Auction Worklet Service"
1714
+ },
1715
+ "models/timeline_model/TimelineModel.ts | workletServiceS": {
1716
+ "message": "Auction Worklet Service — {PH1}"
1717
+ },
1712
1718
  "models/workspace/UISourceCode.ts | index": {
1713
1719
  "message": "(index)"
1714
1720
  },
@@ -8921,6 +8927,12 @@
8921
8927
  "panels/security/SecurityPanel.ts | contentWithCertificateErrors": {
8922
8928
  "message": "content with certificate errors"
8923
8929
  },
8930
+ "panels/security/SecurityPanel.ts | enabled": {
8931
+ "message": "enabled"
8932
+ },
8933
+ "panels/security/SecurityPanel.ts | encryptedClientHello": {
8934
+ "message": "Encrypted ClientHello"
8935
+ },
8924
8936
  "panels/security/SecurityPanel.ts | flaggedByGoogleSafeBrowsing": {
8925
8937
  "message": "Flagged by Google Safe Browsing"
8926
8938
  },
@@ -9044,6 +9056,9 @@
9044
9056
  "panels/security/SecurityPanel.ts | securityOverview": {
9045
9057
  "message": "Security overview"
9046
9058
  },
9059
+ "panels/security/SecurityPanel.ts | serverSignature": {
9060
+ "message": "Server signature"
9061
+ },
9047
9062
  "panels/security/SecurityPanel.ts | showFullDetails": {
9048
9063
  "message": "Show full details"
9049
9064
  },
@@ -9146,6 +9161,9 @@
9146
9161
  "panels/security/SecurityPanel.ts | unknownCanceled": {
9147
9162
  "message": "Unknown / canceled"
9148
9163
  },
9164
+ "panels/security/SecurityPanel.ts | unknownField": {
9165
+ "message": "unknown"
9166
+ },
9149
9167
  "panels/security/SecurityPanel.ts | validAndTrusted": {
9150
9168
  "message": "valid and trusted"
9151
9169
  },
@@ -9530,6 +9548,12 @@
9530
9548
  "panels/settings/FrameworkIgnoreListSettingsTab.ts | addPattern": {
9531
9549
  "message": "Add pattern..."
9532
9550
  },
9551
+ "panels/settings/FrameworkIgnoreListSettingsTab.ts | automaticallyIgnoreListKnownThirdPartyScripts": {
9552
+ "message": "Automatically add known third-party scripts to ignore list"
9553
+ },
9554
+ "panels/settings/FrameworkIgnoreListSettingsTab.ts | automaticallyIgnoreListKnownThirdPartyScriptsTooltip": {
9555
+ "message": "Add sources from the x_google_ignoreList field from source maps to the ignore list"
9556
+ },
9533
9557
  "panels/settings/FrameworkIgnoreListSettingsTab.ts | behavior": {
9534
9558
  "message": "Behavior"
9535
9559
  },
@@ -1709,6 +1709,12 @@
1709
1709
  "models/timeline_model/TimelineModel.ts | workerSS": {
1710
1710
  "message": "Worker: {PH1} — {PH2}"
1711
1711
  },
1712
+ "models/timeline_model/TimelineModel.ts | workletService": {
1713
+ "message": "Âúĉt́îón̂ Ẃôŕk̂ĺêt́ Ŝér̂v́îćê"
1714
+ },
1715
+ "models/timeline_model/TimelineModel.ts | workletServiceS": {
1716
+ "message": "Âúĉt́îón̂ Ẃôŕk̂ĺêt́ Ŝér̂v́îćê — {PH1}"
1717
+ },
1712
1718
  "models/workspace/UISourceCode.ts | index": {
1713
1719
  "message": "(îńd̂éx̂)"
1714
1720
  },
@@ -8921,6 +8927,12 @@
8921
8927
  "panels/security/SecurityPanel.ts | contentWithCertificateErrors": {
8922
8928
  "message": "ĉón̂t́êńt̂ ẃît́ĥ ćêŕt̂íf̂íĉát̂é êŕr̂ór̂ś"
8923
8929
  },
8930
+ "panels/security/SecurityPanel.ts | enabled": {
8931
+ "message": "êńâb́l̂éd̂"
8932
+ },
8933
+ "panels/security/SecurityPanel.ts | encryptedClientHello": {
8934
+ "message": "Êńĉŕŷṕt̂éd̂ Ćl̂íêńt̂H́êĺl̂ó"
8935
+ },
8924
8936
  "panels/security/SecurityPanel.ts | flaggedByGoogleSafeBrowsing": {
8925
8937
  "message": "F̂ĺâǵĝéd̂ b́ŷ Ǵôóĝĺê Śâf́ê B́r̂óŵśîńĝ"
8926
8938
  },
@@ -9044,6 +9056,9 @@
9044
9056
  "panels/security/SecurityPanel.ts | securityOverview": {
9045
9057
  "message": "Ŝéĉúr̂ít̂ý ôv́êŕv̂íêẃ"
9046
9058
  },
9059
+ "panels/security/SecurityPanel.ts | serverSignature": {
9060
+ "message": "Ŝér̂v́êŕ ŝíĝńât́ûŕê"
9061
+ },
9047
9062
  "panels/security/SecurityPanel.ts | showFullDetails": {
9048
9063
  "message": "Ŝh́ôẃ f̂úl̂ĺ d̂ét̂áîĺŝ"
9049
9064
  },
@@ -9146,6 +9161,9 @@
9146
9161
  "panels/security/SecurityPanel.ts | unknownCanceled": {
9147
9162
  "message": "Ûńk̂ńôẃn̂ / ćâńĉél̂éd̂"
9148
9163
  },
9164
+ "panels/security/SecurityPanel.ts | unknownField": {
9165
+ "message": "ûńk̂ńôẃn̂"
9166
+ },
9149
9167
  "panels/security/SecurityPanel.ts | validAndTrusted": {
9150
9168
  "message": "v̂ál̂íd̂ án̂d́ t̂ŕûśt̂éd̂"
9151
9169
  },
@@ -9530,6 +9548,12 @@
9530
9548
  "panels/settings/FrameworkIgnoreListSettingsTab.ts | addPattern": {
9531
9549
  "message": "Âd́d̂ ṕât́t̂ér̂ń..."
9532
9550
  },
9551
+ "panels/settings/FrameworkIgnoreListSettingsTab.ts | automaticallyIgnoreListKnownThirdPartyScripts": {
9552
+ "message": "Âút̂óm̂át̂íĉál̂ĺŷ ád̂d́ k̂ńôẃn̂ t́ĥír̂d́-p̂ár̂t́ŷ śĉŕîṕt̂ś t̂ó îǵn̂ór̂é l̂íŝt́"
9553
+ },
9554
+ "panels/settings/FrameworkIgnoreListSettingsTab.ts | automaticallyIgnoreListKnownThirdPartyScriptsTooltip": {
9555
+ "message": "Âd́d̂ śôúr̂ćêś f̂ŕôḿ t̂h́ê x_google_ignoreList f́îél̂d́ f̂ŕôḿ ŝóûŕĉé m̂áp̂ś t̂ó t̂h́ê íĝńôŕê ĺîśt̂"
9556
+ },
9533
9557
  "panels/settings/FrameworkIgnoreListSettingsTab.ts | behavior": {
9534
9558
  "message": "B̂éĥáv̂íôŕ"
9535
9559
  },
@@ -293,6 +293,7 @@ export enum ExperimentName {
293
293
  INSTRUMENTATION_BREAKPOINTS = 'instrumentationBreakpoints',
294
294
  CSS_AUTHORING_HINTS = 'cssAuthoringHints',
295
295
  AUTHORED_DEPLOYED_GROUPING = 'authoredDeployedGrouping',
296
+ IMPORTANT_DOM_PROPERTIES = 'importantDOMProperties',
296
297
  }
297
298
 
298
299
  // TODO(crbug.com/1167717): Make this a const enum again
@@ -914,8 +914,13 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
914
914
  const oldDispatcher = (NetworkManager.forRequest(request) as NetworkManager).dispatcher;
915
915
  oldDispatcher.#requestsById.delete(requestId);
916
916
  oldDispatcher.#requestsByURL.delete(request.url());
917
+ const builder = oldDispatcher.#requestIdToExtraInfoBuilder.get(requestId);
918
+ oldDispatcher.#requestIdToExtraInfoBuilder.delete(requestId);
917
919
  this.#requestsById.set(requestId, request);
918
920
  this.#requestsByURL.set(request.url(), request);
921
+ if (builder) {
922
+ this.#requestIdToExtraInfoBuilder.set(requestId, builder);
923
+ }
919
924
  requestToManagerMap.set(request, this.#manager);
920
925
  return request;
921
926
  }
@@ -981,9 +986,21 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
981
986
  }
982
987
 
983
988
  clearRequests(): void {
984
- this.#requestsById.clear();
985
- this.#requestsByURL.clear();
986
- this.#requestIdToExtraInfoBuilder.clear();
989
+ for (const [requestId, request] of this.#requestsById) {
990
+ if (request.finished) {
991
+ this.#requestsById.delete(requestId);
992
+ }
993
+ }
994
+ for (const [requestURL, request] of this.#requestsByURL) {
995
+ if (request.finished) {
996
+ this.#requestsByURL.delete(requestURL);
997
+ }
998
+ }
999
+ for (const [requestId, builder] of this.#requestIdToExtraInfoBuilder) {
1000
+ if (builder.isFinished()) {
1001
+ this.#requestIdToExtraInfoBuilder.delete(requestId);
1002
+ }
1003
+ }
987
1004
  }
988
1005
 
989
1006
  webTransportCreated({transportId, url: requestURL, timestamp: time, initiator}:
@@ -1643,6 +1660,10 @@ class ExtraInfoBuilder {
1643
1660
  this.updateFinalRequest();
1644
1661
  }
1645
1662
 
1663
+ isFinished(): boolean {
1664
+ return this.#finishedInternal;
1665
+ }
1666
+
1646
1667
  private sync(index: number): void {
1647
1668
  const req = this.#requests[index];
1648
1669
  if (!req) {
@@ -232,7 +232,7 @@ export class ResourceTreeModel extends SDKModel<EventTypes> {
232
232
  this.processPendingEvents(frame);
233
233
  this.dispatchEventToListeners(Events.MainFrameNavigated, frame);
234
234
  const networkManager = this.target().model(NetworkManager);
235
- if (networkManager) {
235
+ if (networkManager && frame.isTopFrame()) {
236
236
  networkManager.clearRequests();
237
237
  }
238
238
  }
@@ -77,6 +77,9 @@ export interface SourceMap {
77
77
  SourceMapEntry|null;
78
78
  mappings(): SourceMapEntry[];
79
79
  mapsOrigin(): boolean;
80
+ hasIgnoreListHint(sourceURL: Platform.DevToolsPath.UrlString): boolean;
81
+ findRanges(predicate: (sourceURL: Platform.DevToolsPath.UrlString) => boolean, options: {isStartMatching: boolean}):
82
+ TextUtils.TextRange.TextRange[];
80
83
  }
81
84
 
82
85
  export class SourceMapV3 {
@@ -595,19 +598,32 @@ export class TextSourceMap implements SourceMap {
595
598
  }
596
599
 
597
600
  /**
598
- * Returns a list of ranges in the generated script, which are known to be
599
- * third-party code that should be ignore-listed. Each range is a [begin, end)
600
- * pair, meaning that code at the beginning location, up to but not including
601
- * the end location, is known to be third-party code.
601
+ * Returns a list of ranges in the generated script for original sources that
602
+ * match a predicate. Each range is a [begin, end) pair, meaning that code at
603
+ * the beginning location, up to but not including the end location, matches
604
+ * the predicate.
602
605
  */
603
- ignoreListRanges(): TextUtils.TextRange.TextRange[] {
606
+ findRanges(predicate: (sourceURL: Platform.DevToolsPath.UrlString) => boolean, options?: {isStartMatching: boolean}):
607
+ TextUtils.TextRange.TextRange[] {
604
608
  const mappings = this.mappings();
605
609
  const ranges = [];
606
610
 
611
+ if (!mappings.length) {
612
+ return [];
613
+ }
614
+
607
615
  let current: TextUtils.TextRange.TextRange|null = null;
608
616
 
617
+ // If the first mapping isn't at the beginning of the original source, it's
618
+ // up to the caller to decide if it should be considered matching the
619
+ // predicate or not. By default, it's not.
620
+ if ((mappings[0].lineNumber !== 0 || mappings[0].columnNumber !== 0) && options?.isStartMatching) {
621
+ current = TextUtils.TextRange.TextRange.createUnboundedFromLocation(0, 0);
622
+ ranges.push(current);
623
+ }
624
+
609
625
  for (const {sourceURL, lineNumber, columnNumber} of mappings) {
610
- const ignoreListHint = sourceURL && this.hasIgnoreListHint(sourceURL);
626
+ const ignoreListHint = sourceURL && predicate(sourceURL);
611
627
 
612
628
  if (!current && ignoreListHint) {
613
629
  current = TextUtils.TextRange.TextRange.createUnboundedFromLocation(lineNumber, columnNumber);
@@ -332,6 +332,13 @@ Common.Settings.registerSettingExtension({
332
332
  defaultValue: false,
333
333
  });
334
334
 
335
+ Common.Settings.registerSettingExtension({
336
+ storageType: Common.Settings.SettingStorageType.Synced,
337
+ settingName: 'automaticallyIgnoreListKnownThirdPartyScripts',
338
+ settingType: Common.Settings.SettingType.BOOLEAN,
339
+ defaultValue: true,
340
+ });
341
+
335
342
  Common.Settings.registerSettingExtension({
336
343
  category: Common.Settings.SettingCategory.CONSOLE,
337
344
  storageType: Common.Settings.SettingStorageType.Synced,
@@ -1155,6 +1155,7 @@
1155
1155
  'showWhitespacesInEditor',
1156
1156
  'sidebarPosition',
1157
1157
  'skipContentScripts',
1158
+ 'automaticallyIgnoreListKnownThirdPartyScripts',
1158
1159
  'skipStackFramesPattern',
1159
1160
  'sourceMapInfobarDisabled',
1160
1161
  'sourcesPanelDebuggerSidebarSplitViewState',
@@ -406,6 +406,11 @@ export class MainImpl {
406
406
  Root.Runtime.experiments.register(
407
407
  Root.Runtime.ExperimentName.AUTHORED_DEPLOYED_GROUPING, 'Group sources into Authored and Deployed trees');
408
408
 
409
+ // Highlight important DOM properties in the Object Properties viewer.
410
+ Root.Runtime.experiments.register(
411
+ Root.Runtime.ExperimentName.IMPORTANT_DOM_PROPERTIES,
412
+ 'Highlight important DOM properties in the Object Properties viewer');
413
+
409
414
  Root.Runtime.experiments.enableExperimentsByDefault([
410
415
  'sourceOrderViewer',
411
416
  'hideIssuesFeature',