chrome-devtools-frontend 1.0.944903 → 1.0.945884

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 (86) hide show
  1. package/config/gni/devtools_grd_files.gni +1 -0
  2. package/config/gni/devtools_image_files.gni +1 -0
  3. package/front_end/Images/src/circled_exclamation_icon.svg +3 -0
  4. package/front_end/core/host/InspectorFrontendHostAPI.ts +5 -5
  5. package/front_end/core/host/UserMetrics.ts +3 -1
  6. package/front_end/core/i18n/i18nImpl.ts +7 -4
  7. package/front_end/core/i18n/locales/en-US.json +9 -45
  8. package/front_end/core/i18n/locales/en-XL.json +9 -45
  9. package/front_end/core/sdk/CSSMetadata.ts +0 -1
  10. package/front_end/core/sdk/sdk-meta.ts +20 -8
  11. package/front_end/entrypoints/main/MainImpl.ts +6 -0
  12. package/front_end/generated/protocol.d.ts +0 -4
  13. package/front_end/models/emulation/EmulatedDevices.ts +2 -4
  14. package/front_end/models/persistence/IsolatedFileSystemManager.ts +6 -10
  15. package/front_end/models/timeline_model/TimelineJSProfile.ts +16 -3
  16. package/front_end/models/timeline_model/TimelineModel.ts +1 -0
  17. package/front_end/models/workspace_diff/WorkspaceDiff.ts +20 -6
  18. package/front_end/panels/animation/AnimationTimeline.ts +1 -1
  19. package/front_end/panels/application/BackForwardCacheStrings.ts +15 -75
  20. package/front_end/panels/application/BackForwardCacheView.ts +8 -1
  21. package/front_end/panels/changes/ChangesView.ts +8 -7
  22. package/front_end/panels/elements/StyleEditorWidget.ts +7 -7
  23. package/front_end/panels/elements/StylePropertyTreeElement.ts +8 -15
  24. package/front_end/panels/elements/StylesSidebarPane.ts +35 -9
  25. package/front_end/panels/emulation/DeviceModeView.ts +3 -0
  26. package/front_end/panels/help/ReleaseNoteText.ts +3 -1
  27. package/front_end/panels/network/NetworkItemView.ts +7 -1
  28. package/front_end/panels/profiler/heapProfiler.css +2 -5
  29. package/front_end/panels/timeline/TimelineController.ts +3 -0
  30. package/front_end/panels/webauthn/WebauthnPane.ts +31 -32
  31. package/front_end/third_party/acorn/README.chromium +2 -2
  32. package/front_end/third_party/acorn/acorn.ts +1 -1
  33. package/front_end/third_party/acorn/package/CHANGELOG.md +31 -1
  34. package/front_end/third_party/acorn/package/README.md +1 -1
  35. package/front_end/third_party/acorn/package/dist/acorn.d.ts +3 -0
  36. package/front_end/third_party/acorn/package/dist/acorn.js +772 -708
  37. package/front_end/third_party/acorn/package/dist/acorn.mjs +767 -703
  38. package/front_end/third_party/acorn/package/dist/bin.js +47 -21
  39. package/front_end/third_party/acorn/package/package.json +1 -1
  40. package/front_end/third_party/acorn-loose/README.chromium +2 -2
  41. package/front_end/third_party/acorn-loose/package/CHANGELOG.md +12 -0
  42. package/front_end/third_party/acorn-loose/package/dist/acorn-loose.js +27 -7
  43. package/front_end/third_party/acorn-loose/package/dist/acorn-loose.mjs +28 -8
  44. package/front_end/third_party/acorn-loose/package/package.json +2 -2
  45. package/front_end/third_party/i18n/i18n-impl.ts +1 -1
  46. package/front_end/ui/components/adorners/Adorner.ts +14 -14
  47. package/front_end/ui/components/buttons/Button.ts +133 -42
  48. package/front_end/ui/components/buttons/button.css +31 -0
  49. package/front_end/ui/components/data_grid/DataGrid.ts +131 -122
  50. package/front_end/ui/components/data_grid/DataGridController.ts +42 -42
  51. package/front_end/ui/components/diff_view/DiffView.ts +4 -4
  52. package/front_end/ui/components/docs/button/basic.html +3 -0
  53. package/front_end/ui/components/docs/button/basic.ts +58 -0
  54. package/front_end/ui/components/expandable_list/ExpandableList.ts +11 -11
  55. package/front_end/ui/components/icon_button/Icon.ts +24 -21
  56. package/front_end/ui/components/icon_button/IconButton.ts +31 -31
  57. package/front_end/ui/components/issue_counter/IssueCounter.ts +52 -52
  58. package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +42 -42
  59. package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspector.ts +67 -67
  60. package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorController.ts +22 -22
  61. package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorPane.ts +36 -36
  62. package/front_end/ui/components/linear_memory_inspector/LinearMemoryNavigator.ts +19 -19
  63. package/front_end/ui/components/linear_memory_inspector/LinearMemoryValueInterpreter.ts +24 -32
  64. package/front_end/ui/components/linear_memory_inspector/LinearMemoryViewer.ts +52 -52
  65. package/front_end/ui/components/linear_memory_inspector/ValueInterpreterDisplay.ts +21 -21
  66. package/front_end/ui/components/linear_memory_inspector/ValueInterpreterSettings.ts +6 -6
  67. package/front_end/ui/components/markdown_view/MarkdownImage.ts +14 -14
  68. package/front_end/ui/components/markdown_view/MarkdownLink.ts +8 -8
  69. package/front_end/ui/components/markdown_view/MarkdownView.ts +6 -6
  70. package/front_end/ui/components/render_coordinator/RenderCoordinator.ts +33 -33
  71. package/front_end/ui/components/report_view/ReportView.ts +18 -18
  72. package/front_end/ui/components/request_link_icon/RequestLinkIcon.ts +53 -53
  73. package/front_end/ui/components/settings/SettingCheckbox.ts +15 -15
  74. package/front_end/ui/components/survey_link/SurveyLink.ts +28 -28
  75. package/front_end/ui/components/text_editor/TextEditor.ts +55 -52
  76. package/front_end/ui/components/text_editor/javascript.ts +6 -6
  77. package/front_end/ui/components/text_prompt/TextPrompt.ts +19 -19
  78. package/front_end/ui/components/tree_outline/TreeOutline.ts +56 -56
  79. package/front_end/ui/legacy/Infobar.ts +9 -0
  80. package/front_end/ui/legacy/InspectorView.ts +1 -1
  81. package/front_end/ui/legacy/ListWidget.ts +2 -2
  82. package/front_end/ui/legacy/tabbedPane.css +1 -1
  83. package/inspector_overlay/main.ts +3 -0
  84. package/package.json +1 -1
  85. package/scripts/eslint_rules/lib/l10n_filename_matches.js +17 -4
  86. package/scripts/eslint_rules/tests/l10n_filename_matches_test.js +21 -0
@@ -45,6 +45,7 @@ grd_files_release_sources = [
45
45
  "front_end/Images/chromeRight.avif",
46
46
  "front_end/Images/chromeSelect.svg",
47
47
  "front_end/Images/chromeSelectDark.svg",
48
+ "front_end/Images/circled_exclamation_icon.svg",
48
49
  "front_end/Images/close-icon.svg",
49
50
  "front_end/Images/copy_icon.svg",
50
51
  "front_end/Images/cssoverview_icons_2x.avif",
@@ -56,6 +56,7 @@ devtools_svg_sources = [
56
56
  "chevrons.svg",
57
57
  "chromeSelect.svg",
58
58
  "chromeSelectDark.svg",
59
+ "circled_exclamation_icon.svg",
59
60
  "close-icon.svg",
60
61
  "copy_icon.svg",
61
62
  "dropdown_7x6_icon.svg",
@@ -0,0 +1,3 @@
1
+ <svg width="16" height="16" viewBox="0 0 4.233 4.233" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M7.25 10.25h1.5v1.5h-1.5zm0-6h1.5v4.5h-1.5ZM7.992.5C3.853.5.5 3.86.5 8c0 4.14 3.353 7.5 7.492 7.5 4.148 0 7.508-3.36 7.508-7.5 0-4.14-3.36-7.5-7.508-7.5ZM8 14c-3.315 0-6-2.685-6-6s2.685-6 6-6 6 2.685 6 6-2.685 6-6 6z" transform="scale(.26458)" style="fill:#000"/>
3
+ </svg>
@@ -86,7 +86,7 @@ export interface DevToolsFileSystem {
86
86
  type: string;
87
87
  fileSystemName: string;
88
88
  rootURL: string;
89
- fileSystemPath: string;
89
+ fileSystemPath: Platform.DevToolsPath.RawPathString;
90
90
  }
91
91
 
92
92
  export interface FileSystemAddedEvent {
@@ -95,9 +95,9 @@ export interface FileSystemAddedEvent {
95
95
  }
96
96
 
97
97
  export interface FilesChangedEvent {
98
- changed: string[];
99
- added: string[];
100
- removed: string[];
98
+ changed: Platform.DevToolsPath.RawPathString[];
99
+ added: Platform.DevToolsPath.RawPathString[];
100
+ removed: Platform.DevToolsPath.RawPathString[];
101
101
  }
102
102
 
103
103
  export interface IndexingEvent {
@@ -155,7 +155,7 @@ export type EventTypes = {
155
155
  [Events.EnterInspectElementMode]: void,
156
156
  [Events.EyeDropperPickedColor]: EyeDropperPickedColorEvent,
157
157
  [Events.FileSystemsLoaded]: DevToolsFileSystem[],
158
- [Events.FileSystemRemoved]: string,
158
+ [Events.FileSystemRemoved]: Platform.DevToolsPath.RawPathString,
159
159
  [Events.FileSystemAdded]: FileSystemAddedEvent,
160
160
  [Events.FileSystemFilesChangedAddedRemoved]: FilesChangedEvent,
161
161
  [Events.IndexingTotalWorkCalculated]: IndexingTotalWorkCalculatedEvent,
@@ -598,6 +598,7 @@ export const DevtoolsExperiments: {
598
598
  'timelineEventInitiators': 24,
599
599
  'timelineInvalidationTracking': 26,
600
600
  'timelineShowAllEvents': 27,
601
+ 'timelineV8RuntimeCallStats': 28,
601
602
  'timelineWebGL': 29,
602
603
  'timelineReplayEvent': 30,
603
604
  'wasmDWARFDebugging': 31,
@@ -616,7 +617,8 @@ export const DevtoolsExperiments: {
616
617
  'syncSettings': 50,
617
618
  'groupAndHideIssuesByKind': 51,
618
619
  'cssTypeComponentLength': 52,
619
- '__lastValidEnumPosition': 52,
620
+ 'preciseChanges': 53,
621
+ '__lastValidEnumPosition': 53,
620
622
  };
621
623
 
622
624
  export const IssueExpanded: {
@@ -182,12 +182,15 @@ export function getLocalizedLanguageRegion(
182
182
  devtoolsLocale: DevToolsLocale): Platform.UIString.LocalizedString {
183
183
  // @ts-ignore TODO(crbug.com/1163928) Wait for Intl support.
184
184
  const locale = new Intl.Locale(localeString);
185
+ Platform.DCHECK(() => locale.language !== undefined);
186
+ Platform.DCHECK(() => locale.baseName !== undefined);
187
+ const localLanguage = locale.language || 'en';
188
+ const localBaseName = locale.baseName || 'en-US';
185
189
  // @ts-ignore TODO(crbug.com/1163928) Wait for Intl support.
186
190
  const devtoolsLoc = new Intl.Locale(devtoolsLocale.locale);
187
- const targetLanguage = locale.language === devtoolsLoc.language ? 'en' : locale.baseName;
188
- const languageInCurrentLocale =
189
- new Intl.DisplayNames([devtoolsLocale.locale], {type: 'language'}).of(locale.language);
190
- const languageInTargetLocale = new Intl.DisplayNames([targetLanguage], {type: 'language'}).of(locale.language);
191
+ const targetLanguage = localLanguage === devtoolsLoc.language ? 'en' : localBaseName;
192
+ const languageInCurrentLocale = new Intl.DisplayNames([devtoolsLocale.locale], {type: 'language'}).of(localLanguage);
193
+ const languageInTargetLocale = new Intl.DisplayNames([targetLanguage], {type: 'language'}).of(localLanguage);
191
194
 
192
195
  let wrappedRegionInCurrentLocale = '';
193
196
  let wrappedRegionInTargetLocale = '';
@@ -584,6 +584,9 @@
584
584
  "core/sdk/sdk-meta.ts | disabledDarkMode": {
585
585
  "message": "Disable"
586
586
  },
587
+ "core/sdk/sdk-meta.ts | disableEmulateAutoDarkMode": {
588
+ "message": "Disable auto dark mode"
589
+ },
587
590
  "core/sdk/sdk-meta.ts | disableJavascript": {
588
591
  "message": "Disable JavaScript"
589
592
  },
@@ -614,6 +617,9 @@
614
617
  "core/sdk/sdk-meta.ts | doNotEmulateCssMediaType": {
615
618
  "message": "Do not emulate CSS media type"
616
619
  },
620
+ "core/sdk/sdk-meta.ts | doNotEmulateDarkMode": {
621
+ "message": "Do not emulate auto dark mode"
622
+ },
617
623
  "core/sdk/sdk-meta.ts | doNotExtendGridLines": {
618
624
  "message": "Do not extend grid lines"
619
625
  },
@@ -686,6 +692,9 @@
686
692
  "core/sdk/sdk-meta.ts | enabledDarkMode": {
687
693
  "message": "Enable"
688
694
  },
695
+ "core/sdk/sdk-meta.ts | enableEmulateAutoDarkMode": {
696
+ "message": "Enable auto dark mode"
697
+ },
689
698
  "core/sdk/sdk-meta.ts | enableJavascript": {
690
699
  "message": "Enable JavaScript"
691
700
  },
@@ -2417,51 +2426,6 @@
2417
2426
  "panels/application/BackForwardCacheStrings.ts | documentLoaded": {
2418
2427
  "message": "The document did not finish loading before navigating away."
2419
2428
  },
2420
- "panels/application/BackForwardCacheStrings.ts | embedderAppBannerManager": {
2421
- "message": "EmbedderAppBannerManager"
2422
- },
2423
- "panels/application/BackForwardCacheStrings.ts | embedderChromePasswordManagerClientBindCredentialManager": {
2424
- "message": "EmbedderChromePasswordManagerClientBindCredentialManager"
2425
- },
2426
- "panels/application/BackForwardCacheStrings.ts | embedderDomDistillerSelfDeletingRequestDelegate": {
2427
- "message": "EmbedderDomDistillerSelfDeletingRequestDelegate"
2428
- },
2429
- "panels/application/BackForwardCacheStrings.ts | embedderDomDistillerViewerSource": {
2430
- "message": "EmbedderDomDistillerViewerSource"
2431
- },
2432
- "panels/application/BackForwardCacheStrings.ts | embedderExtensionMessaging": {
2433
- "message": "EmbedderExtensionMessaging"
2434
- },
2435
- "panels/application/BackForwardCacheStrings.ts | embedderExtensionMessagingForOpenPort": {
2436
- "message": "EmbedderExtensionMessagingForOpenPort"
2437
- },
2438
- "panels/application/BackForwardCacheStrings.ts | embedderExtensions": {
2439
- "message": "EmbedderExtensions"
2440
- },
2441
- "panels/application/BackForwardCacheStrings.ts | embedderExtensionSentMessageToCachedFrame": {
2442
- "message": "EmbedderExtensionSentMessageToCachedFrame"
2443
- },
2444
- "panels/application/BackForwardCacheStrings.ts | embedderModalDialog": {
2445
- "message": "EmbedderModalDialog"
2446
- },
2447
- "panels/application/BackForwardCacheStrings.ts | embedderOfflinePage": {
2448
- "message": "EmbedderOfflinePage"
2449
- },
2450
- "panels/application/BackForwardCacheStrings.ts | embedderOomInterventionTabHelper": {
2451
- "message": "EmbedderOomInterventionTabHelper"
2452
- },
2453
- "panels/application/BackForwardCacheStrings.ts | embedderPermissionRequestManager": {
2454
- "message": "EmbedderPermissionRequestManager"
2455
- },
2456
- "panels/application/BackForwardCacheStrings.ts | embedderPopupBlockerTabHelper": {
2457
- "message": "EmbedderPopupBlockerTabHelper"
2458
- },
2459
- "panels/application/BackForwardCacheStrings.ts | embedderSafeBrowsingThreatDetails": {
2460
- "message": "EmbedderSafeBrowsingThreatDetails"
2461
- },
2462
- "panels/application/BackForwardCacheStrings.ts | embedderSafeBrowsingTriggeredPopupBlocker": {
2463
- "message": "EmbedderSafeBrowsingTriggeredPopupBlocker"
2464
- },
2465
2429
  "panels/application/BackForwardCacheStrings.ts | enteredBackForwardCacheBeforeServiceWorkerHostAdded": {
2466
2430
  "message": "A service worker was activated while the page was in back/forward cache."
2467
2431
  },
@@ -584,6 +584,9 @@
584
584
  "core/sdk/sdk-meta.ts | disabledDarkMode": {
585
585
  "message": "D̂íŝáb̂ĺê"
586
586
  },
587
+ "core/sdk/sdk-meta.ts | disableEmulateAutoDarkMode": {
588
+ "message": "D̂íŝáb̂ĺê áût́ô d́âŕk̂ ḿôd́ê"
589
+ },
587
590
  "core/sdk/sdk-meta.ts | disableJavascript": {
588
591
  "message": "D̂íŝáb̂ĺê J́âv́âŚĉŕîṕt̂"
589
592
  },
@@ -614,6 +617,9 @@
614
617
  "core/sdk/sdk-meta.ts | doNotEmulateCssMediaType": {
615
618
  "message": "D̂ó n̂ót̂ ém̂úl̂át̂é ĈŚŜ ḿêd́îá t̂ýp̂é"
616
619
  },
620
+ "core/sdk/sdk-meta.ts | doNotEmulateDarkMode": {
621
+ "message": "D̂ó n̂ót̂ ém̂úl̂át̂é âút̂ó d̂ár̂ḱ m̂ód̂é"
622
+ },
617
623
  "core/sdk/sdk-meta.ts | doNotExtendGridLines": {
618
624
  "message": "D̂ó n̂ót̂ éx̂t́êńd̂ ǵr̂íd̂ ĺîńêś"
619
625
  },
@@ -686,6 +692,9 @@
686
692
  "core/sdk/sdk-meta.ts | enabledDarkMode": {
687
693
  "message": "Êńâb́l̂é"
688
694
  },
695
+ "core/sdk/sdk-meta.ts | enableEmulateAutoDarkMode": {
696
+ "message": "Êńâb́l̂é âút̂ó d̂ár̂ḱ m̂ód̂é"
697
+ },
689
698
  "core/sdk/sdk-meta.ts | enableJavascript": {
690
699
  "message": "Êńâb́l̂é Ĵáv̂áŜćr̂íp̂t́"
691
700
  },
@@ -2417,51 +2426,6 @@
2417
2426
  "panels/application/BackForwardCacheStrings.ts | documentLoaded": {
2418
2427
  "message": "T̂h́ê d́ôćûḿêńt̂ d́îd́ n̂ót̂ f́îńîśĥ ĺôád̂ín̂ǵ b̂éf̂ór̂é n̂áv̂íĝát̂ín̂ǵ âẃâý."
2419
2428
  },
2420
- "panels/application/BackForwardCacheStrings.ts | embedderAppBannerManager": {
2421
- "message": "Êḿb̂éd̂d́êŕÂṕp̂B́âńn̂ér̂Ḿâńâǵêŕ"
2422
- },
2423
- "panels/application/BackForwardCacheStrings.ts | embedderChromePasswordManagerClientBindCredentialManager": {
2424
- "message": "Êḿb̂éd̂d́êŕĈh́r̂óm̂éP̂áŝśŵór̂d́M̂án̂áĝér̂Ćl̂íêńt̂B́îńd̂Ćr̂éd̂én̂t́îál̂Ḿâńâǵêŕ"
2425
- },
2426
- "panels/application/BackForwardCacheStrings.ts | embedderDomDistillerSelfDeletingRequestDelegate": {
2427
- "message": "Êḿb̂éd̂d́êŕD̂óm̂D́îśt̂íl̂ĺêŕŜél̂f́D̂él̂ét̂ín̂ǵR̂éq̂úêśt̂D́êĺêǵât́ê"
2428
- },
2429
- "panels/application/BackForwardCacheStrings.ts | embedderDomDistillerViewerSource": {
2430
- "message": "Êḿb̂éd̂d́êŕD̂óm̂D́îśt̂íl̂ĺêŕV̂íêẃêŕŜóûŕĉé"
2431
- },
2432
- "panels/application/BackForwardCacheStrings.ts | embedderExtensionMessaging": {
2433
- "message": "Êḿb̂éd̂d́êŕÊx́t̂én̂śîón̂Ḿêśŝáĝín̂ǵ"
2434
- },
2435
- "panels/application/BackForwardCacheStrings.ts | embedderExtensionMessagingForOpenPort": {
2436
- "message": "Êḿb̂éd̂d́êŕÊx́t̂én̂śîón̂Ḿêśŝáĝín̂ǵF̂ór̂Óp̂én̂Ṕôŕt̂"
2437
- },
2438
- "panels/application/BackForwardCacheStrings.ts | embedderExtensions": {
2439
- "message": "Êḿb̂éd̂d́êŕÊx́t̂én̂śîón̂ś"
2440
- },
2441
- "panels/application/BackForwardCacheStrings.ts | embedderExtensionSentMessageToCachedFrame": {
2442
- "message": "Êḿb̂éd̂d́êŕÊx́t̂én̂śîón̂Śêńt̂ḾêśŝáĝéT̂óĈáĉh́êd́F̂ŕâḿê"
2443
- },
2444
- "panels/application/BackForwardCacheStrings.ts | embedderModalDialog": {
2445
- "message": "Êḿb̂éd̂d́êŕM̂ód̂ál̂D́îál̂óĝ"
2446
- },
2447
- "panels/application/BackForwardCacheStrings.ts | embedderOfflinePage": {
2448
- "message": "Êḿb̂éd̂d́êŕÔf́f̂ĺîńêṔâǵê"
2449
- },
2450
- "panels/application/BackForwardCacheStrings.ts | embedderOomInterventionTabHelper": {
2451
- "message": "Êḿb̂éd̂d́êŕÔóm̂Ín̂t́êŕv̂én̂t́îón̂T́âb́Ĥél̂ṕêŕ"
2452
- },
2453
- "panels/application/BackForwardCacheStrings.ts | embedderPermissionRequestManager": {
2454
- "message": "Êḿb̂éd̂d́êŕP̂ér̂ḿîśŝíôńR̂éq̂úêśt̂Ḿâńâǵêŕ"
2455
- },
2456
- "panels/application/BackForwardCacheStrings.ts | embedderPopupBlockerTabHelper": {
2457
- "message": "Êḿb̂éd̂d́êŕP̂óp̂úp̂B́l̂óĉḱêŕT̂áb̂H́êĺp̂ér̂"
2458
- },
2459
- "panels/application/BackForwardCacheStrings.ts | embedderSafeBrowsingThreatDetails": {
2460
- "message": "Êḿb̂éd̂d́êŕŜáf̂éB̂ŕôẃŝín̂ǵT̂h́r̂éât́D̂ét̂áîĺŝ"
2461
- },
2462
- "panels/application/BackForwardCacheStrings.ts | embedderSafeBrowsingTriggeredPopupBlocker": {
2463
- "message": "Êḿb̂éd̂d́êŕŜáf̂éB̂ŕôẃŝín̂ǵT̂ŕîǵĝér̂éd̂ṔôṕûṕB̂ĺôćk̂ér̂"
2464
- },
2465
2429
  "panels/application/BackForwardCacheStrings.ts | enteredBackForwardCacheBeforeServiceWorkerHostAdded": {
2466
2430
  "message": "Â śêŕv̂íĉé ŵór̂ḱêŕ ŵáŝ áĉt́îv́ât́êd́ ŵh́îĺê t́ĥé p̂áĝé ŵáŝ ín̂ b́âćk̂/f́ôŕŵár̂d́ ĉáĉh́ê."
2467
2431
  },
@@ -567,7 +567,6 @@ const extraPropertyValues = {
567
567
  'ui-monospace',
568
568
  'ui-rounded',
569
569
  '-webkit-body',
570
- '-webkit-pictograph',
571
570
  ],
572
571
  },
573
572
  'zoom': {values: ['normal']},
@@ -306,8 +306,8 @@ const UIStrings = {
306
306
  */
307
307
  enableCache: 'Enable cache',
308
308
  /**
309
- * @description Title of a setting under the Network category that can be invoked through the Command Menu
310
- */
309
+ * @description Title of a setting under the Network category that can be invoked through the Command Menu
310
+ */
311
311
  disableCache: 'Disable cache (while DevTools is open)',
312
312
  /**
313
313
  * @description The name of a checkbox setting in the Rendering tool. This setting
@@ -315,13 +315,25 @@ const UIStrings = {
315
315
  */
316
316
  emulateAutoDarkMode: 'Emulate auto dark mode',
317
317
  /**
318
- *@description Title of a setting for emulating enabled auto dark mode.
318
+ * @description Title of a setting for enabling auto dark mode.
319
+ */
320
+ enableEmulateAutoDarkMode: 'Enable auto dark mode',
321
+ /**
322
+ * @description Text to emulate enabled auto dark mode.
319
323
  */
320
324
  enabledDarkMode: 'Enable',
321
325
  /**
322
- * @description Title of a setting for emulating disabled auto dark mode.
323
- */
326
+ * @description Title of a setting for disabling auto dark mode.
327
+ */
328
+ disableEmulateAutoDarkMode: 'Disable auto dark mode',
329
+ /**
330
+ * @description Text to emulate disabled auto dark mode.
331
+ */
324
332
  disabledDarkMode: 'Disable',
333
+ /**
334
+ * @description Title of a setting for disabling dark mode emulation.
335
+ */
336
+ doNotEmulateDarkMode: 'Do not emulate auto dark mode',
325
337
  };
326
338
  const str_ = i18n.i18n.registerUIStrings('core/sdk/sdk-meta.ts', UIStrings);
327
339
  const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
@@ -1042,17 +1054,17 @@ Common.Settings.registerSettingExtension({
1042
1054
  defaultValue: 'default',
1043
1055
  options: [
1044
1056
  {
1045
- title: i18nLazyString(UIStrings.emulateAutoDarkMode),
1057
+ title: i18nLazyString(UIStrings.doNotEmulateDarkMode),
1046
1058
  text: i18nLazyString(UIStrings.noEmulation),
1047
1059
  value: 'default',
1048
1060
  },
1049
1061
  {
1050
- title: i18nLazyString(UIStrings.emulateAutoDarkMode),
1062
+ title: i18nLazyString(UIStrings.enableEmulateAutoDarkMode),
1051
1063
  text: i18nLazyString(UIStrings.enabledDarkMode),
1052
1064
  value: 'enabled',
1053
1065
  },
1054
1066
  {
1055
- title: i18nLazyString(UIStrings.emulateAutoDarkMode),
1067
+ title: i18nLazyString(UIStrings.disableEmulateAutoDarkMode),
1056
1068
  text: i18nLazyString(UIStrings.disabledDarkMode),
1057
1069
  value: 'disabled',
1058
1070
  },
@@ -306,6 +306,8 @@ export class MainImpl {
306
306
  Root.Runtime.experiments.register('timelineEventInitiators', 'Timeline: event initiators');
307
307
  Root.Runtime.experiments.register('timelineInvalidationTracking', 'Timeline: invalidation tracking', true);
308
308
  Root.Runtime.experiments.register('timelineShowAllEvents', 'Timeline: show all events', true);
309
+ Root.Runtime.experiments.register(
310
+ 'timelineV8RuntimeCallStats', 'Timeline: V8 Runtime Call Stats on Timeline', true);
309
311
  Root.Runtime.experiments.register('timelineWebGL', 'Timeline: WebGL-based flamechart');
310
312
  Root.Runtime.experiments.register('timelineReplayEvent', 'Timeline: Replay input events', true);
311
313
  Root.Runtime.experiments.register(
@@ -363,11 +365,15 @@ export class MainImpl {
363
365
  'Enable CSS <length> authoring tool in the Styles pane (https://goo.gle/length-feedback)', undefined,
364
366
  'https://developer.chrome.com/blog/new-in-devtools-96/#length');
365
367
 
368
+ // Display precise changes in the Changes tab.
369
+ Root.Runtime.experiments.register('preciseChanges', 'Display more precise changes in the Changes tab');
370
+
366
371
  Root.Runtime.experiments.enableExperimentsByDefault([
367
372
  'sourceOrderViewer',
368
373
  'hideIssuesFeature',
369
374
  'bfcacheDebugging',
370
375
  'cssTypeComponentLength',
376
+ 'preciseChanges',
371
377
  Root.Runtime.ExperimentName.SYNC_SETTINGS,
372
378
  ]);
373
379
 
@@ -10442,10 +10442,6 @@ declare namespace Protocol {
10442
10442
  * The fantasy font-family.
10443
10443
  */
10444
10444
  fantasy?: string;
10445
- /**
10446
- * The pictograph font-family.
10447
- */
10448
- pictograph?: string;
10449
10445
  }
10450
10446
 
10451
10447
  /**
@@ -502,14 +502,12 @@ export class EmulatedDevicesList extends Common.ObjectWrapper.ObjectWrapper<Even
502
502
  constructor() {
503
503
  super();
504
504
 
505
- this.#standardSetting = Common.Settings.Settings.instance().createSetting(
506
- 'standardEmulatedDeviceList', [], Common.Settings.SettingStorageType.Synced);
505
+ this.#standardSetting = Common.Settings.Settings.instance().createSetting('standardEmulatedDeviceList', []);
507
506
  this.#standardInternal = new Set();
508
507
  this.listFromJSONV1(this.#standardSetting.get(), this.#standardInternal);
509
508
  this.updateStandardDevices();
510
509
 
511
- this.#customSetting = Common.Settings.Settings.instance().createSetting(
512
- 'customEmulatedDeviceList', [], Common.Settings.SettingStorageType.Synced);
510
+ this.#customSetting = Common.Settings.Settings.instance().createSetting('customEmulatedDeviceList', []);
513
511
  this.#customInternal = new Set();
514
512
  if (!this.listFromJSONV1(this.#customSetting.get(), this.#customInternal)) {
515
513
  this.saveCustomDevices();
@@ -28,8 +28,6 @@
28
28
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
29
  */
30
30
 
31
- // TODO(crbug.com/1253323): All casts to RawPathString will be removed from this file when migration to branded types is complete.
32
-
33
31
  import * as Common from '../../core/common/common.js';
34
32
  import * as Host from '../../core/host/host.js';
35
33
  import * as i18n from '../../core/i18n/i18n.js';
@@ -175,8 +173,7 @@ export class IsolatedFileSystemManager extends Common.ObjectWrapper.ObjectWrappe
175
173
  private innerAddFileSystem(fileSystem: Host.InspectorFrontendHostAPI.DevToolsFileSystem, dispatchEvent: boolean):
176
174
  Promise<IsolatedFileSystem|null> {
177
175
  const embedderPath = fileSystem.fileSystemPath;
178
- const fileSystemURL =
179
- Common.ParsedURL.ParsedURL.rawPathToUrlString(fileSystem.fileSystemPath as Platform.DevToolsPath.RawPathString);
176
+ const fileSystemURL = Common.ParsedURL.ParsedURL.rawPathToUrlString(fileSystem.fileSystemPath);
180
177
  const promise = IsolatedFileSystem.create(
181
178
  this, fileSystemURL, embedderPath, fileSystem.type, fileSystem.fileSystemName, fileSystem.rootURL);
182
179
  return promise.then(storeFileSystem.bind(this));
@@ -221,10 +218,9 @@ export class IsolatedFileSystemManager extends Common.ObjectWrapper.ObjectWrappe
221
218
  }
222
219
  }
223
220
 
224
- private onFileSystemRemoved(event: Common.EventTarget.EventTargetEvent<string>): void {
221
+ private onFileSystemRemoved(event: Common.EventTarget.EventTargetEvent<Platform.DevToolsPath.RawPathString>): void {
225
222
  const embedderPath = event.data;
226
- const fileSystemPath =
227
- Common.ParsedURL.ParsedURL.rawPathToUrlString(embedderPath as Platform.DevToolsPath.RawPathString);
223
+ const fileSystemPath = Common.ParsedURL.ParsedURL.rawPathToUrlString(embedderPath);
228
224
  const isolatedFileSystem = this.fileSystemsInternal.get(fileSystemPath);
229
225
  if (!isolatedFileSystem) {
230
226
  return;
@@ -245,11 +241,11 @@ export class IsolatedFileSystemManager extends Common.ObjectWrapper.ObjectWrappe
245
241
  this.dispatchEventToListeners(Events.FileSystemFilesChanged, urlPaths);
246
242
 
247
243
  function groupFilePathsIntoFileSystemPaths(
248
- this: IsolatedFileSystemManager, embedderPaths: string[]): Platform.MapUtilities.Multimap<string, string> {
244
+ this: IsolatedFileSystemManager,
245
+ embedderPaths: Platform.DevToolsPath.RawPathString[]): Platform.MapUtilities.Multimap<string, string> {
249
246
  const paths = new Platform.MapUtilities.Multimap<string, string>();
250
247
  for (const embedderPath of embedderPaths) {
251
- const filePath =
252
- Common.ParsedURL.ParsedURL.rawPathToUrlString(embedderPath as Platform.DevToolsPath.RawPathString);
248
+ const filePath = Common.ParsedURL.ParsedURL.rawPathToUrlString(embedderPath);
253
249
  for (const fileSystemPath of this.fileSystemsInternal.keys()) {
254
250
  const fileSystem = this.fileSystemsInternal.get(fileSystemPath);
255
251
  if (fileSystem && fileSystem.isFileExcluded(embedderPath)) {
@@ -59,6 +59,7 @@ export class TimelineJSProfileProcessor {
59
59
 
60
60
  static generateJSFrameEvents(events: SDK.TracingModel.Event[], config: {
61
61
  showAllEvents: boolean,
62
+ showRuntimeCallStats: boolean,
62
63
  showNativeFunctions: boolean,
63
64
  }): SDK.TracingModel.Event[] {
64
65
  function equalFrames(frame1: Protocol.Runtime.CallFrame, frame2: Protocol.Runtime.CallFrame): boolean {
@@ -84,7 +85,7 @@ export class TimelineJSProfileProcessor {
84
85
  const lockedJsStackDepth: number[] = [];
85
86
  let ordinal = 0;
86
87
  let fakeJSInvocation = false;
87
- const {showAllEvents, showNativeFunctions} = config;
88
+ const {showAllEvents, showRuntimeCallStats, showNativeFunctions} = config;
88
89
 
89
90
  function onStartEvent(e: SDK.TracingModel.Event): void {
90
91
  if (fakeJSInvocation) {
@@ -134,10 +135,15 @@ export class TimelineJSProfileProcessor {
134
135
  jsFramesStack.length = depth;
135
136
  }
136
137
 
138
+ function showNativeName(name: string): boolean {
139
+ return showRuntimeCallStats && Boolean(TimelineJSProfileProcessor.nativeGroup(name));
140
+ }
141
+
137
142
  function filterStackFrames(stack: Protocol.Runtime.CallFrame[]): void {
138
143
  if (showAllEvents) {
139
144
  return;
140
145
  }
146
+ let previousNativeFrameName: (string|null)|null = null;
141
147
  let j = 0;
142
148
  for (let i = 0; i < stack.length; ++i) {
143
149
  const frame = stack[i];
@@ -147,9 +153,16 @@ export class TimelineJSProfileProcessor {
147
153
  continue;
148
154
  }
149
155
  const isNativeRuntimeFrame = TimelineJSProfileProcessor.isNativeRuntimeFrame(frame);
150
- if (!isNativeRuntimeFrame) {
151
- stack[j++] = frame;
156
+ if (isNativeRuntimeFrame && !showNativeName(frame.functionName)) {
157
+ continue;
158
+ }
159
+ const nativeFrameName =
160
+ isNativeRuntimeFrame ? TimelineJSProfileProcessor.nativeGroup(frame.functionName) : null;
161
+ if (previousNativeFrameName && previousNativeFrameName === nativeFrameName) {
162
+ continue;
152
163
  }
164
+ previousNativeFrameName = nativeFrameName;
165
+ stack[j++] = frame;
153
166
  }
154
167
  stack.length = j;
155
168
  }
@@ -678,6 +678,7 @@ export class TimelineModelImpl {
678
678
  if (jsSamples || events.some(e => e.name === RecordType.JSSample)) {
679
679
  const jsFrameEvents = TimelineJSProfileProcessor.generateJSFrameEvents(events, {
680
680
  showAllEvents: Root.Runtime.experiments.isEnabled('timelineShowAllEvents'),
681
+ showRuntimeCallStats: Root.Runtime.experiments.isEnabled('timelineV8RuntimeCallStats'),
681
682
  showNativeFunctions: Common.Settings.Settings.instance().moduleSetting('showNativeFunctionsInJSProfile').get(),
682
683
  });
683
684
  if (jsFrameEvents && jsFrameEvents.length) {
@@ -5,9 +5,14 @@
5
5
  import * as Common from '../../core/common/common.js';
6
6
  import * as Host from '../../core/host/host.js';
7
7
  import * as Diff from '../../third_party/diff/diff.js';
8
+ import * as FormatterModule from '../formatter/formatter.js';
8
9
  import * as Persistence from '../persistence/persistence.js';
9
10
  import * as Workspace from '../workspace/workspace.js';
10
11
 
12
+ interface DiffRequestOptions {
13
+ shouldFormatDiff: boolean;
14
+ }
15
+
11
16
  export class WorkspaceDiffImpl extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
12
17
  private readonly uiSourceCodeDiffs: WeakMap<Workspace.UISourceCode.UISourceCode, UISourceCodeDiff>;
13
18
  private readonly loadingUISourceCodes:
@@ -29,8 +34,9 @@ export class WorkspaceDiffImpl extends Common.ObjectWrapper.ObjectWrapper<EventT
29
34
  workspace.uiSourceCodes().forEach(this.updateModifiedState.bind(this));
30
35
  }
31
36
 
32
- requestDiff(uiSourceCode: Workspace.UISourceCode.UISourceCode): Promise<Diff.Diff.DiffArray|null> {
33
- return this.uiSourceCodeDiff(uiSourceCode).requestDiff();
37
+ requestDiff(uiSourceCode: Workspace.UISourceCode.UISourceCode, diffRequestOptions: DiffRequestOptions):
38
+ Promise<Diff.Diff.DiffArray|null> {
39
+ return this.uiSourceCodeDiff(uiSourceCode).requestDiff(diffRequestOptions);
34
40
  }
35
41
 
36
42
  subscribeToDiffChange(uiSourceCode: Workspace.UISourceCode.UISourceCode, callback: () => void, thisObj?: Object):
@@ -212,9 +218,9 @@ export class UISourceCodeDiff extends Common.ObjectWrapper.ObjectWrapper<UISourc
212
218
  }
213
219
  }
214
220
 
215
- requestDiff(): Promise<Diff.Diff.DiffArray|null> {
221
+ requestDiff(diffRequestOptions: DiffRequestOptions): Promise<Diff.Diff.DiffArray|null> {
216
222
  if (!this.requestDiffPromise) {
217
- this.requestDiffPromise = this.innerRequestDiff();
223
+ this.requestDiffPromise = this.innerRequestDiff(diffRequestOptions);
218
224
  }
219
225
  return this.requestDiffPromise;
220
226
  }
@@ -231,12 +237,12 @@ export class UISourceCodeDiff extends Common.ObjectWrapper.ObjectWrapper<UISourc
231
237
  return content.content || ('error' in content && content.error) || '';
232
238
  }
233
239
 
234
- private async innerRequestDiff(): Promise<Diff.Diff.DiffArray|null> {
240
+ private async innerRequestDiff({shouldFormatDiff}: DiffRequestOptions): Promise<Diff.Diff.DiffArray|null> {
235
241
  if (this.dispose) {
236
242
  return null;
237
243
  }
238
244
 
239
- const baseline = await this.originalContent();
245
+ let baseline = await this.originalContent();
240
246
  if (baseline === null) {
241
247
  return null;
242
248
  }
@@ -264,6 +270,14 @@ export class UISourceCodeDiff extends Common.ObjectWrapper.ObjectWrapper<UISourc
264
270
  if (current === null || baseline === null) {
265
271
  return null;
266
272
  }
273
+ if (shouldFormatDiff) {
274
+ baseline = (await FormatterModule.ScriptFormatter.format(
275
+ this.uiSourceCode.contentType(), this.uiSourceCode.mimeType(), baseline))
276
+ .formattedContent;
277
+ current = (await FormatterModule.ScriptFormatter.format(
278
+ this.uiSourceCode.contentType(), this.uiSourceCode.mimeType(), current))
279
+ .formattedContent;
280
+ }
267
281
  return Diff.Diff.DiffWrapper.lineDiff(baseline.split(/\r\n|\n|\r/), current.split(/\r\n|\n|\r/));
268
282
  }
269
283
  }
@@ -332,7 +332,7 @@ export class AnimationTimeline extends UI.Widget.VBox implements SDK.TargetManag
332
332
  show: (popover: UI.GlassPane.GlassPane): Promise<boolean> => {
333
333
  let animGroup;
334
334
  for (const [group, previewUI] of this.#previewMap) {
335
- if (previewUI.element === element.parentElement) {
335
+ if (previewUI.element === element || previewUI.element === element.parentElement) {
336
336
  animGroup = group;
337
337
  }
338
338
  }