chrome-devtools-frontend 1.0.1035409 → 1.0.1035963
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/gni/devtools_grd_files.gni +2 -0
- package/docs/workflows.md +4 -5
- package/front_end/core/i18n/locales/en-US.json +21 -6
- package/front_end/core/i18n/locales/en-XL.json +21 -6
- package/front_end/core/root/Runtime.ts +8 -3
- package/front_end/entrypoints/main/MainImpl.ts +6 -5
- package/front_end/generated/InspectorBackendCommands.js +2 -2
- package/front_end/generated/SupportedCSSProperties.js +8 -4
- package/front_end/generated/protocol.ts +7 -1
- package/front_end/panels/application/components/Prerender2.ts +5 -7
- package/front_end/panels/settings/SettingsScreen.ts +12 -0
- package/front_end/panels/settings/settingsScreen.css +6 -0
- package/front_end/panels/sources/NavigatorView.ts +0 -7
- package/front_end/panels/sources/ScopeChainSidebarPane.ts +4 -3
- package/front_end/panels/sources/SourcesNavigator.ts +0 -37
- package/front_end/panels/sources/SourcesPanel.ts +34 -22
- package/front_end/panels/sources/components/BreakpointsView.ts +206 -0
- package/front_end/panels/sources/components/breakpointsView.css +95 -0
- package/front_end/panels/sources/components/components.ts +2 -0
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +2 -2
- package/package.json +1 -1
@@ -1265,8 +1265,10 @@ grd_files_debug_sources = [
|
|
1265
1265
|
"front_end/panels/sources/WatchExpressionsSidebarPane.js",
|
1266
1266
|
"front_end/panels/sources/breakpointEditDialog.css.js",
|
1267
1267
|
"front_end/panels/sources/callStackSidebarPane.css.js",
|
1268
|
+
"front_end/panels/sources/components/BreakpointsView.js",
|
1268
1269
|
"front_end/panels/sources/components/HeadersView.css.js",
|
1269
1270
|
"front_end/panels/sources/components/HeadersView.js",
|
1271
|
+
"front_end/panels/sources/components/breakpointsView.css.js",
|
1270
1272
|
"front_end/panels/sources/debuggerPausedMessage.css.js",
|
1271
1273
|
"front_end/panels/sources/dialog.css.js",
|
1272
1274
|
"front_end/panels/sources/javaScriptBreakpointsSidebarPane.css.js",
|
package/docs/workflows.md
CHANGED
@@ -44,8 +44,7 @@ gn gen out/fast-build --args='devtools_skip_typecheck=true'
|
|
44
44
|
To update to latest tip of tree version:
|
45
45
|
|
46
46
|
```bash
|
47
|
-
git fetch origin
|
48
|
-
git checkout origin/main
|
47
|
+
git fetch origin; git checkout origin/main # or, alternatively: git rebase-update
|
49
48
|
gclient sync
|
50
49
|
```
|
51
50
|
|
@@ -68,7 +67,7 @@ Open DevTools via F12 or Ctrl+Shift+J on Windows/Linux or Cmd+Option+I on Mac.
|
|
68
67
|
|
69
68
|
If you get errors along the line of `Uncaught TypeError: Cannot read property 'setInspectedTabId'` you probably specified an incorrect path - the path has to be absolute. On Mac and Linux, the file url will start with __three__ slashes: `file:///Users/...`.
|
70
69
|
|
71
|
-
Tip
|
70
|
+
**Tip**: You can inspect DevTools with DevTools by undocking DevTools and then opening a second instance of DevTools (see keyboard shortcut above).
|
72
71
|
|
73
72
|
##### Running from remote URL
|
74
73
|
|
@@ -82,7 +81,7 @@ Then point to that web server when starting Chromium, for example:
|
|
82
81
|
<path-to-devtools-frontend>/third_party/chrome/chrome-<platform>/chrome --custom-devtools-frontend=http://localhost:8000/
|
83
82
|
```
|
84
83
|
|
85
|
-
Open DevTools via F12 on Windows/Linux or Cmd+Option+I on Mac.
|
84
|
+
Open DevTools via F12 or Ctrl+Shift+J on Windows/Linux or Cmd+Option+I on Mac.
|
86
85
|
|
87
86
|
##### Running in hosted mode
|
88
87
|
|
@@ -117,7 +116,7 @@ gclient sync
|
|
117
116
|
Then, disable `gclient sync` for DevTools frontend inside of Chromium by editing `.gclient` config. From `chromium/src/`, run
|
118
117
|
|
119
118
|
```bash
|
120
|
-
vim $(gclient root)/.gclient
|
119
|
+
vim "$(gclient root)/.gclient"
|
121
120
|
```
|
122
121
|
|
123
122
|
In the `custom_deps` section, insert this line:
|
@@ -3272,6 +3272,9 @@
|
|
3272
3272
|
"panels/application/components/Prerender2.ts | CrossOriginRedirect": {
|
3273
3273
|
"message": "Attempted to prerender a URL which redirected to a cross-origin URL. Currently prerendering cross-origin pages is disallowed."
|
3274
3274
|
},
|
3275
|
+
"panels/application/components/Prerender2.ts | DataSaverEnabled": {
|
3276
|
+
"message": "Data saver enabled"
|
3277
|
+
},
|
3275
3278
|
"panels/application/components/Prerender2.ts | Destroyed": {
|
3276
3279
|
"message": "A prerendered page was abandoned for unknown reasons."
|
3277
3280
|
},
|
@@ -3284,9 +3287,6 @@
|
|
3284
3287
|
"panels/application/components/Prerender2.ts | EmbedderTriggeredAndCrossOriginRedirected": {
|
3285
3288
|
"message": "Prerendering triggered by Chrome internal (e.g., Omnibox prerendering) is is canceled because the navigation is redirected to another cross-origin page."
|
3286
3289
|
},
|
3287
|
-
"panels/application/components/Prerender2.ts | EmbedderTriggeredAndDestroyed": {
|
3288
|
-
"message": "Prerendering triggered by Chrome internal (e.g., Omnibox prerendering) is is destroyed in the destructor."
|
3289
|
-
},
|
3290
3290
|
"panels/application/components/Prerender2.ts | EmbedderTriggeredAndSameOriginRedirected": {
|
3291
3291
|
"message": "Prerendering triggered by Chrome internal (e.g., Omnibox prerendering) is canceled because the navigation is redirected to another same-origin page."
|
3292
3292
|
},
|
@@ -9725,6 +9725,9 @@
|
|
9725
9725
|
"panels/settings/SettingsScreen.ts | restoreDefaultsAndReload": {
|
9726
9726
|
"message": "Restore defaults and reload"
|
9727
9727
|
},
|
9728
|
+
"panels/settings/SettingsScreen.ts | sendFeedback": {
|
9729
|
+
"message": "Send feedback"
|
9730
|
+
},
|
9728
9731
|
"panels/settings/SettingsScreen.ts | settings": {
|
9729
9732
|
"message": "Settings"
|
9730
9733
|
},
|
@@ -9830,6 +9833,18 @@
|
|
9830
9833
|
"panels/sources/CallStackSidebarPane.ts | showMore": {
|
9831
9834
|
"message": "Show more"
|
9832
9835
|
},
|
9836
|
+
"panels/sources/components/BreakpointsView.ts | breakpointHit": {
|
9837
|
+
"message": "{PH1} breakpoint hit"
|
9838
|
+
},
|
9839
|
+
"panels/sources/components/BreakpointsView.ts | checked": {
|
9840
|
+
"message": "checked"
|
9841
|
+
},
|
9842
|
+
"panels/sources/components/BreakpointsView.ts | indeterminate": {
|
9843
|
+
"message": "mixed"
|
9844
|
+
},
|
9845
|
+
"panels/sources/components/BreakpointsView.ts | unchecked": {
|
9846
|
+
"message": "unchecked"
|
9847
|
+
},
|
9833
9848
|
"panels/sources/components/HeadersView.ts | addHeader": {
|
9834
9849
|
"message": "Add a header"
|
9835
9850
|
},
|
@@ -10460,9 +10475,6 @@
|
|
10460
10475
|
"panels/sources/sources-meta.ts | watch": {
|
10461
10476
|
"message": "Watch"
|
10462
10477
|
},
|
10463
|
-
"panels/sources/SourcesNavigator.ts | authoredDescription": {
|
10464
|
-
"message": "Group files by Authored/Deployed"
|
10465
|
-
},
|
10466
10478
|
"panels/sources/SourcesNavigator.ts | clearConfiguration": {
|
10467
10479
|
"message": "Clear configuration"
|
10468
10480
|
},
|
@@ -10541,6 +10553,9 @@
|
|
10541
10553
|
"panels/sources/SourcesPanel.ts | hideDebugger": {
|
10542
10554
|
"message": "Hide debugger"
|
10543
10555
|
},
|
10556
|
+
"panels/sources/SourcesPanel.ts | hideIgnoreListed": {
|
10557
|
+
"message": "Hide ignore-listed sources"
|
10558
|
+
},
|
10544
10559
|
"panels/sources/SourcesPanel.ts | hideNavigator": {
|
10545
10560
|
"message": "Hide navigator"
|
10546
10561
|
},
|
@@ -3272,6 +3272,9 @@
|
|
3272
3272
|
"panels/application/components/Prerender2.ts | CrossOriginRedirect": {
|
3273
3273
|
"message": "Ât́t̂ém̂ṕt̂éd̂ t́ô ṕr̂ér̂én̂d́êŕ â ÚR̂Ĺ ŵh́îćĥ ŕêd́îŕêćt̂éd̂ t́ô á ĉŕôśŝ-ór̂íĝín̂ ÚR̂Ĺ. Ĉúr̂ŕêńt̂ĺŷ ṕr̂ér̂én̂d́êŕîńĝ ćr̂óŝś-ôŕîǵîń p̂áĝéŝ íŝ d́îśâĺl̂óŵéd̂."
|
3274
3274
|
},
|
3275
|
+
"panels/application/components/Prerender2.ts | DataSaverEnabled": {
|
3276
|
+
"message": "D̂át̂á ŝáv̂ér̂ én̂áb̂ĺêd́"
|
3277
|
+
},
|
3275
3278
|
"panels/application/components/Prerender2.ts | Destroyed": {
|
3276
3279
|
"message": "Â ṕr̂ér̂én̂d́êŕêd́ p̂áĝé ŵáŝ áb̂án̂d́ôńêd́ f̂ór̂ ún̂ḱn̂óŵń r̂éâśôńŝ."
|
3277
3280
|
},
|
@@ -3284,9 +3287,6 @@
|
|
3284
3287
|
"panels/application/components/Prerender2.ts | EmbedderTriggeredAndCrossOriginRedirected": {
|
3285
3288
|
"message": "P̂ŕêŕêńd̂ér̂ín̂ǵ t̂ŕîǵĝér̂éd̂ b́ŷ Ćĥŕôḿê ín̂t́êŕn̂ál̂ (é.ĝ., Óm̂ńîb́ôx́ p̂ŕêŕêńd̂ér̂ín̂ǵ) îś îś ĉán̂ćêĺêd́ b̂éĉáûśê t́ĥé n̂áv̂íĝát̂íôń îś r̂éd̂ír̂éĉt́êd́ t̂ó âńôt́ĥér̂ ćr̂óŝś-ôŕîǵîń p̂áĝé."
|
3286
3289
|
},
|
3287
|
-
"panels/application/components/Prerender2.ts | EmbedderTriggeredAndDestroyed": {
|
3288
|
-
"message": "P̂ŕêŕêńd̂ér̂ín̂ǵ t̂ŕîǵĝér̂éd̂ b́ŷ Ćĥŕôḿê ín̂t́êŕn̂ál̂ (é.ĝ., Óm̂ńîb́ôx́ p̂ŕêŕêńd̂ér̂ín̂ǵ) îś îś d̂éŝt́r̂óŷéd̂ ín̂ t́ĥé d̂éŝt́r̂úĉt́ôŕ."
|
3289
|
-
},
|
3290
3290
|
"panels/application/components/Prerender2.ts | EmbedderTriggeredAndSameOriginRedirected": {
|
3291
3291
|
"message": "P̂ŕêŕêńd̂ér̂ín̂ǵ t̂ŕîǵĝér̂éd̂ b́ŷ Ćĥŕôḿê ín̂t́êŕn̂ál̂ (é.ĝ., Óm̂ńîb́ôx́ p̂ŕêŕêńd̂ér̂ín̂ǵ) îś ĉán̂ćêĺêd́ b̂éĉáûśê t́ĥé n̂áv̂íĝát̂íôń îś r̂éd̂ír̂éĉt́êd́ t̂ó âńôt́ĥér̂ śâḿê-ór̂íĝín̂ ṕâǵê."
|
3292
3292
|
},
|
@@ -9725,6 +9725,9 @@
|
|
9725
9725
|
"panels/settings/SettingsScreen.ts | restoreDefaultsAndReload": {
|
9726
9726
|
"message": "R̂éŝt́ôŕê d́êf́âúl̂t́ŝ án̂d́ r̂él̂óâd́"
|
9727
9727
|
},
|
9728
|
+
"panels/settings/SettingsScreen.ts | sendFeedback": {
|
9729
|
+
"message": "Ŝén̂d́ f̂éêd́b̂áĉḱ"
|
9730
|
+
},
|
9728
9731
|
"panels/settings/SettingsScreen.ts | settings": {
|
9729
9732
|
"message": "Ŝét̂t́îńĝś"
|
9730
9733
|
},
|
@@ -9830,6 +9833,18 @@
|
|
9830
9833
|
"panels/sources/CallStackSidebarPane.ts | showMore": {
|
9831
9834
|
"message": "Ŝh́ôẃ m̂ór̂é"
|
9832
9835
|
},
|
9836
|
+
"panels/sources/components/BreakpointsView.ts | breakpointHit": {
|
9837
|
+
"message": "{PH1} b̂ŕêák̂ṕôín̂t́ ĥít̂"
|
9838
|
+
},
|
9839
|
+
"panels/sources/components/BreakpointsView.ts | checked": {
|
9840
|
+
"message": "ĉh́êćk̂éd̂"
|
9841
|
+
},
|
9842
|
+
"panels/sources/components/BreakpointsView.ts | indeterminate": {
|
9843
|
+
"message": "m̂íx̂éd̂"
|
9844
|
+
},
|
9845
|
+
"panels/sources/components/BreakpointsView.ts | unchecked": {
|
9846
|
+
"message": "ûńĉh́êćk̂éd̂"
|
9847
|
+
},
|
9833
9848
|
"panels/sources/components/HeadersView.ts | addHeader": {
|
9834
9849
|
"message": "Âd́d̂ á ĥéâd́êŕ"
|
9835
9850
|
},
|
@@ -10460,9 +10475,6 @@
|
|
10460
10475
|
"panels/sources/sources-meta.ts | watch": {
|
10461
10476
|
"message": "Ŵát̂ćĥ"
|
10462
10477
|
},
|
10463
|
-
"panels/sources/SourcesNavigator.ts | authoredDescription": {
|
10464
|
-
"message": "Ĝŕôúp̂ f́îĺêś b̂ý Âút̂h́ôŕêd́/D̂ép̂ĺôýêd́"
|
10465
|
-
},
|
10466
10478
|
"panels/sources/SourcesNavigator.ts | clearConfiguration": {
|
10467
10479
|
"message": "Ĉĺêár̂ ćôńf̂íĝúr̂át̂íôń"
|
10468
10480
|
},
|
@@ -10541,6 +10553,9 @@
|
|
10541
10553
|
"panels/sources/SourcesPanel.ts | hideDebugger": {
|
10542
10554
|
"message": "Ĥíd̂é d̂éb̂úĝǵêŕ"
|
10543
10555
|
},
|
10556
|
+
"panels/sources/SourcesPanel.ts | hideIgnoreListed": {
|
10557
|
+
"message": "Ĥíd̂é îǵn̂ór̂é-l̂íŝt́êd́ ŝóûŕĉéŝ"
|
10558
|
+
},
|
10544
10559
|
"panels/sources/SourcesPanel.ts | hideNavigator": {
|
10545
10560
|
"message": "Ĥíd̂é n̂áv̂íĝát̂ór̂"
|
10546
10561
|
},
|
@@ -152,13 +152,16 @@ export class ExperimentsSupport {
|
|
152
152
|
self.localStorage['experiments'] = JSON.stringify(value);
|
153
153
|
}
|
154
154
|
|
155
|
-
register(
|
155
|
+
register(
|
156
|
+
experimentName: string, experimentTitle: string, unstable?: boolean, docLink?: string,
|
157
|
+
feedbackLink?: string): void {
|
156
158
|
Platform.DCHECK(
|
157
159
|
() => !this.#experimentNames.has(experimentName), 'Duplicate registration of experiment ' + experimentName);
|
158
160
|
this.#experimentNames.add(experimentName);
|
159
161
|
this.#experiments.push(new Experiment(
|
160
162
|
this, experimentName, experimentTitle, Boolean(unstable),
|
161
|
-
docLink as Platform.DevToolsPath.UrlString ?? Platform.DevToolsPath.EmptyUrlString
|
163
|
+
docLink as Platform.DevToolsPath.UrlString ?? Platform.DevToolsPath.EmptyUrlString,
|
164
|
+
feedbackLink as Platform.DevToolsPath.UrlString ?? Platform.DevToolsPath.EmptyUrlString));
|
162
165
|
}
|
163
166
|
|
164
167
|
isEnabled(experimentName: string): boolean {
|
@@ -257,14 +260,16 @@ export class Experiment {
|
|
257
260
|
title: string;
|
258
261
|
unstable: boolean;
|
259
262
|
docLink?: Platform.DevToolsPath.UrlString;
|
263
|
+
readonly feedbackLink?: Platform.DevToolsPath.UrlString;
|
260
264
|
readonly #experiments: ExperimentsSupport;
|
261
265
|
constructor(
|
262
266
|
experiments: ExperimentsSupport, name: string, title: string, unstable: boolean,
|
263
|
-
docLink: Platform.DevToolsPath.UrlString) {
|
267
|
+
docLink: Platform.DevToolsPath.UrlString, feedbackLink: Platform.DevToolsPath.UrlString) {
|
264
268
|
this.name = name;
|
265
269
|
this.title = title;
|
266
270
|
this.unstable = unstable;
|
267
271
|
this.docLink = docLink;
|
272
|
+
this.feedbackLink = feedbackLink;
|
268
273
|
this.#experiments = experiments;
|
269
274
|
}
|
270
275
|
|
@@ -341,7 +341,8 @@ export class MainImpl {
|
|
341
341
|
// Full Accessibility Tree
|
342
342
|
Root.Runtime.experiments.register(
|
343
343
|
'fullAccessibilityTree', 'Enable full accessibility tree view in the Elements panel', undefined,
|
344
|
-
'https://developer.chrome.com/blog/new-in-devtools-90/#accesibility-tree'
|
344
|
+
'https://developer.chrome.com/blog/new-in-devtools-90/#accesibility-tree',
|
345
|
+
'https://g.co/devtools/a11y-tree-feedback');
|
345
346
|
|
346
347
|
// Font Editor
|
347
348
|
Root.Runtime.experiments.register(
|
@@ -373,9 +374,8 @@ export class MainImpl {
|
|
373
374
|
|
374
375
|
// CSS <length> authoring tool.
|
375
376
|
Root.Runtime.experiments.register(
|
376
|
-
'cssTypeComponentLength',
|
377
|
-
'
|
378
|
-
'https://developer.chrome.com/blog/new-in-devtools-96/#length');
|
377
|
+
'cssTypeComponentLength', 'Enable CSS <length> authoring tool in the Styles pane', undefined,
|
378
|
+
'https://developer.chrome.com/blog/new-in-devtools-96/#length', 'https://g.co/devtools/length-feedback');
|
379
379
|
|
380
380
|
// Display precise changes in the Changes tab.
|
381
381
|
Root.Runtime.experiments.register(
|
@@ -407,7 +407,8 @@ export class MainImpl {
|
|
407
407
|
|
408
408
|
// Change grouping of sources panel to use Authored/Deployed trees
|
409
409
|
Root.Runtime.experiments.register(
|
410
|
-
Root.Runtime.ExperimentName.AUTHORED_DEPLOYED_GROUPING, 'Group sources into Authored and Deployed trees'
|
410
|
+
Root.Runtime.ExperimentName.AUTHORED_DEPLOYED_GROUPING, 'Group sources into Authored and Deployed trees',
|
411
|
+
undefined, 'https://goo.gle/authored-deployed', 'https://goo.gle/authored-deployed-feedback');
|
411
412
|
|
412
413
|
// Hide third party code (as determined by ignore lists or source maps)
|
413
414
|
Root.Runtime.experiments.register(
|
@@ -554,7 +554,7 @@ inspectorBackend.registerEnum("Page.AdFrameExplanation", {ParentIsAd: "ParentIsA
|
|
554
554
|
inspectorBackend.registerEnum("Page.SecureContextType", {Secure: "Secure", SecureLocalhost: "SecureLocalhost", InsecureScheme: "InsecureScheme", InsecureAncestor: "InsecureAncestor"});
|
555
555
|
inspectorBackend.registerEnum("Page.CrossOriginIsolatedContextType", {Isolated: "Isolated", NotIsolated: "NotIsolated", NotIsolatedFeatureDisabled: "NotIsolatedFeatureDisabled"});
|
556
556
|
inspectorBackend.registerEnum("Page.GatedAPIFeatures", {SharedArrayBuffers: "SharedArrayBuffers", SharedArrayBuffersTransferAllowed: "SharedArrayBuffersTransferAllowed", PerformanceMeasureMemory: "PerformanceMeasureMemory", PerformanceProfile: "PerformanceProfile"});
|
557
|
-
inspectorBackend.registerEnum("Page.PermissionsPolicyFeature", {Accelerometer: "accelerometer", AmbientLightSensor: "ambient-light-sensor", AttributionReporting: "attribution-reporting", Autoplay: "autoplay", Bluetooth: "bluetooth", BrowsingTopics: "browsing-topics", Camera: "camera", ChDpr: "ch-dpr", ChDeviceMemory: "ch-device-memory", ChDownlink: "ch-downlink", ChEct: "ch-ect", ChPrefersColorScheme: "ch-prefers-color-scheme", ChRtt: "ch-rtt", ChSaveData: "ch-save-data", ChUa: "ch-ua", ChUaArch: "ch-ua-arch", ChUaBitness: "ch-ua-bitness", ChUaPlatform: "ch-ua-platform", ChUaModel: "ch-ua-model", ChUaMobile: "ch-ua-mobile", ChUaFull: "ch-ua-full", ChUaFullVersion: "ch-ua-full-version", ChUaFullVersionList: "ch-ua-full-version-list", ChUaPlatformVersion: "ch-ua-platform-version", ChUaReduced: "ch-ua-reduced", ChUaWow64: "ch-ua-wow64", ChViewportHeight: "ch-viewport-height", ChViewportWidth: "ch-viewport-width", ChWidth: "ch-width", ClipboardRead: "clipboard-read", ClipboardWrite: "clipboard-write", CrossOriginIsolated: "cross-origin-isolated", DirectSockets: "direct-sockets", DisplayCapture: "display-capture", DocumentDomain: "document-domain", EncryptedMedia: "encrypted-media", ExecutionWhileOutOfViewport: "execution-while-out-of-viewport", ExecutionWhileNotRendered: "execution-while-not-rendered", FederatedCredentials: "federated-credentials", FocusWithoutUserActivation: "focus-without-user-activation", Fullscreen: "fullscreen", Frobulate: "frobulate", Gamepad: "gamepad", Geolocation: "geolocation", Gyroscope: "gyroscope", Hid: "hid", IdleDetection: "idle-detection", InterestCohort: "interest-cohort", JoinAdInterestGroup: "join-ad-interest-group", KeyboardMap: "keyboard-map", LocalFonts: "local-fonts", Magnetometer: "magnetometer", Microphone: "microphone", Midi: "midi", OtpCredentials: "otp-credentials", Payment: "payment", PictureInPicture: "picture-in-picture", PublickeyCredentialsGet: "publickey-credentials-get", RunAdAuction: "run-ad-auction", ScreenWakeLock: "screen-wake-lock", Serial: "serial", SharedAutofill: "shared-autofill", SharedStorage: "shared-storage", StorageAccessAPI: "storage-access-api", SyncXhr: "sync-xhr", TrustTokenRedemption: "trust-token-redemption", Usb: "usb", VerticalScroll: "vertical-scroll", WebShare: "web-share", WindowPlacement: "window-placement", XrSpatialTracking: "xr-spatial-tracking"});
|
557
|
+
inspectorBackend.registerEnum("Page.PermissionsPolicyFeature", {Accelerometer: "accelerometer", AmbientLightSensor: "ambient-light-sensor", AttributionReporting: "attribution-reporting", Autoplay: "autoplay", Bluetooth: "bluetooth", BrowsingTopics: "browsing-topics", Camera: "camera", ChDpr: "ch-dpr", ChDeviceMemory: "ch-device-memory", ChDownlink: "ch-downlink", ChEct: "ch-ect", ChPrefersColorScheme: "ch-prefers-color-scheme", ChRtt: "ch-rtt", ChSaveData: "ch-save-data", ChUa: "ch-ua", ChUaArch: "ch-ua-arch", ChUaBitness: "ch-ua-bitness", ChUaPlatform: "ch-ua-platform", ChUaModel: "ch-ua-model", ChUaMobile: "ch-ua-mobile", ChUaFull: "ch-ua-full", ChUaFullVersion: "ch-ua-full-version", ChUaFullVersionList: "ch-ua-full-version-list", ChUaPlatformVersion: "ch-ua-platform-version", ChUaReduced: "ch-ua-reduced", ChUaWow64: "ch-ua-wow64", ChViewportHeight: "ch-viewport-height", ChViewportWidth: "ch-viewport-width", ChWidth: "ch-width", ClipboardRead: "clipboard-read", ClipboardWrite: "clipboard-write", CrossOriginIsolated: "cross-origin-isolated", DirectSockets: "direct-sockets", DisplayCapture: "display-capture", DocumentDomain: "document-domain", EncryptedMedia: "encrypted-media", ExecutionWhileOutOfViewport: "execution-while-out-of-viewport", ExecutionWhileNotRendered: "execution-while-not-rendered", FederatedCredentials: "federated-credentials", FocusWithoutUserActivation: "focus-without-user-activation", Fullscreen: "fullscreen", Frobulate: "frobulate", Gamepad: "gamepad", Geolocation: "geolocation", Gyroscope: "gyroscope", Hid: "hid", IdleDetection: "idle-detection", InterestCohort: "interest-cohort", JoinAdInterestGroup: "join-ad-interest-group", KeyboardMap: "keyboard-map", LocalFonts: "local-fonts", Magnetometer: "magnetometer", Microphone: "microphone", Midi: "midi", OtpCredentials: "otp-credentials", Payment: "payment", PictureInPicture: "picture-in-picture", PublickeyCredentialsGet: "publickey-credentials-get", RunAdAuction: "run-ad-auction", ScreenWakeLock: "screen-wake-lock", Serial: "serial", SharedAutofill: "shared-autofill", SharedStorage: "shared-storage", StorageAccessAPI: "storage-access-api", SyncXhr: "sync-xhr", TrustTokenRedemption: "trust-token-redemption", Unload: "unload", Usb: "usb", VerticalScroll: "vertical-scroll", WebShare: "web-share", WindowPlacement: "window-placement", XrSpatialTracking: "xr-spatial-tracking"});
|
558
558
|
inspectorBackend.registerEnum("Page.PermissionsPolicyBlockReason", {Header: "Header", IframeAttribute: "IframeAttribute", InFencedFrameTree: "InFencedFrameTree", InIsolatedApp: "InIsolatedApp"});
|
559
559
|
inspectorBackend.registerEnum("Page.OriginTrialTokenStatus", {Success: "Success", NotSupported: "NotSupported", Insecure: "Insecure", Expired: "Expired", WrongOrigin: "WrongOrigin", InvalidSignature: "InvalidSignature", Malformed: "Malformed", WrongVersion: "WrongVersion", FeatureDisabled: "FeatureDisabled", TokenDisabled: "TokenDisabled", FeatureDisabledForUser: "FeatureDisabledForUser", UnknownTrial: "UnknownTrial"});
|
560
560
|
inspectorBackend.registerEnum("Page.OriginTrialStatus", {Enabled: "Enabled", ValidTokenNotProvided: "ValidTokenNotProvided", OSNotSupported: "OSNotSupported", TrialNotAllowed: "TrialNotAllowed"});
|
@@ -567,7 +567,7 @@ inspectorBackend.registerEnum("Page.ReferrerPolicy", {NoReferrer: "noReferrer",
|
|
567
567
|
inspectorBackend.registerEnum("Page.NavigationType", {Navigation: "Navigation", BackForwardCacheRestore: "BackForwardCacheRestore"});
|
568
568
|
inspectorBackend.registerEnum("Page.BackForwardCacheNotRestoredReason", {NotPrimaryMainFrame: "NotPrimaryMainFrame", BackForwardCacheDisabled: "BackForwardCacheDisabled", RelatedActiveContentsExist: "RelatedActiveContentsExist", HTTPStatusNotOK: "HTTPStatusNotOK", SchemeNotHTTPOrHTTPS: "SchemeNotHTTPOrHTTPS", Loading: "Loading", WasGrantedMediaAccess: "WasGrantedMediaAccess", DisableForRenderFrameHostCalled: "DisableForRenderFrameHostCalled", DomainNotAllowed: "DomainNotAllowed", HTTPMethodNotGET: "HTTPMethodNotGET", SubframeIsNavigating: "SubframeIsNavigating", Timeout: "Timeout", CacheLimit: "CacheLimit", JavaScriptExecution: "JavaScriptExecution", RendererProcessKilled: "RendererProcessKilled", RendererProcessCrashed: "RendererProcessCrashed", SchedulerTrackedFeatureUsed: "SchedulerTrackedFeatureUsed", ConflictingBrowsingInstance: "ConflictingBrowsingInstance", CacheFlushed: "CacheFlushed", ServiceWorkerVersionActivation: "ServiceWorkerVersionActivation", SessionRestored: "SessionRestored", ServiceWorkerPostMessage: "ServiceWorkerPostMessage", EnteredBackForwardCacheBeforeServiceWorkerHostAdded: "EnteredBackForwardCacheBeforeServiceWorkerHostAdded", RenderFrameHostReused_SameSite: "RenderFrameHostReused_SameSite", RenderFrameHostReused_CrossSite: "RenderFrameHostReused_CrossSite", ServiceWorkerClaim: "ServiceWorkerClaim", IgnoreEventAndEvict: "IgnoreEventAndEvict", HaveInnerContents: "HaveInnerContents", TimeoutPuttingInCache: "TimeoutPuttingInCache", BackForwardCacheDisabledByLowMemory: "BackForwardCacheDisabledByLowMemory", BackForwardCacheDisabledByCommandLine: "BackForwardCacheDisabledByCommandLine", NetworkRequestDatAPIpeDrainedAsBytesConsumer: "NetworkRequestDatapipeDrainedAsBytesConsumer", NetworkRequestRedirected: "NetworkRequestRedirected", NetworkRequestTimeout: "NetworkRequestTimeout", NetworkExceedsBufferLimit: "NetworkExceedsBufferLimit", NavigationCancelledWhileRestoring: "NavigationCancelledWhileRestoring", NotMostRecentNavigationEntry: "NotMostRecentNavigationEntry", BackForwardCacheDisabledForPrerender: "BackForwardCacheDisabledForPrerender", UserAgentOverrideDiffers: "UserAgentOverrideDiffers", ForegroundCacheLimit: "ForegroundCacheLimit", BrowsingInstanceNotSwapped: "BrowsingInstanceNotSwapped", BackForwardCacheDisabledForDelegate: "BackForwardCacheDisabledForDelegate", UnloadHandlerExistsInMainFrame: "UnloadHandlerExistsInMainFrame", UnloadHandlerExistsInSubFrame: "UnloadHandlerExistsInSubFrame", ServiceWorkerUnregistration: "ServiceWorkerUnregistration", CacheControlNoStore: "CacheControlNoStore", CacheControlNoStoreCookieModified: "CacheControlNoStoreCookieModified", CacheControlNoStoreHTTPOnlyCookieModified: "CacheControlNoStoreHTTPOnlyCookieModified", NoResponseHead: "NoResponseHead", Unknown: "Unknown", ActivationNavigationsDisallowedForBug1234857: "ActivationNavigationsDisallowedForBug1234857", ErrorDocument: "ErrorDocument", FencedFramesEmbedder: "FencedFramesEmbedder", WebSocket: "WebSocket", WebTransport: "WebTransport", WebRTC: "WebRTC", MainResourceHasCacheControlNoStore: "MainResourceHasCacheControlNoStore", MainResourceHasCacheControlNoCache: "MainResourceHasCacheControlNoCache", SubresourceHasCacheControlNoStore: "SubresourceHasCacheControlNoStore", SubresourceHasCacheControlNoCache: "SubresourceHasCacheControlNoCache", ContainsPlugins: "ContainsPlugins", DocumentLoaded: "DocumentLoaded", DedicatedWorkerOrWorklet: "DedicatedWorkerOrWorklet", OutstandingNetworkRequestOthers: "OutstandingNetworkRequestOthers", OutstandingIndexedDBTransaction: "OutstandingIndexedDBTransaction", RequestedNotificationsPermission: "RequestedNotificationsPermission", RequestedMIDIPermission: "RequestedMIDIPermission", RequestedAudioCapturePermission: "RequestedAudioCapturePermission", RequestedVideoCapturePermission: "RequestedVideoCapturePermission", RequestedBackForwardCacheBlockedSensors: "RequestedBackForwardCacheBlockedSensors", RequestedBackgroundWorkPermission: "RequestedBackgroundWorkPermission", BroadcastChannel: "BroadcastChannel", IndexedDBConnection: "IndexedDBConnection", WebXR: "WebXR", SharedWorker: "SharedWorker", WebLocks: "WebLocks", WebHID: "WebHID", WebShare: "WebShare", RequestedStorageAccessGrant: "RequestedStorageAccessGrant", WebNfc: "WebNfc", OutstandingNetworkRequestFetch: "OutstandingNetworkRequestFetch", OutstandingNetworkRequestXHR: "OutstandingNetworkRequestXHR", AppBanner: "AppBanner", Printing: "Printing", WebDatabase: "WebDatabase", PictureInPicture: "PictureInPicture", Portal: "Portal", SpeechRecognizer: "SpeechRecognizer", IdleManager: "IdleManager", PaymentManager: "PaymentManager", SpeechSynthesis: "SpeechSynthesis", KeyboardLock: "KeyboardLock", WebOTPService: "WebOTPService", OutstandingNetworkRequestDirectSocket: "OutstandingNetworkRequestDirectSocket", InjectedJavascript: "InjectedJavascript", InjectedStyleSheet: "InjectedStyleSheet", Dummy: "Dummy", ContentSecurityHandler: "ContentSecurityHandler", ContentWebAuthenticationAPI: "ContentWebAuthenticationAPI", ContentFileChooser: "ContentFileChooser", ContentSerial: "ContentSerial", ContentFileSystemAccess: "ContentFileSystemAccess", ContentMediaDevicesDispatcherHost: "ContentMediaDevicesDispatcherHost", ContentWebBluetooth: "ContentWebBluetooth", ContentWebUSB: "ContentWebUSB", ContentMediaSessionService: "ContentMediaSessionService", ContentScreenReader: "ContentScreenReader", EmbedderPopupBlockerTabHelper: "EmbedderPopupBlockerTabHelper", EmbedderSafeBrowsingTriggeredPopupBlocker: "EmbedderSafeBrowsingTriggeredPopupBlocker", EmbedderSafeBrowsingThreatDetails: "EmbedderSafeBrowsingThreatDetails", EmbedderAppBannerManager: "EmbedderAppBannerManager", EmbedderDomDistillerViewerSource: "EmbedderDomDistillerViewerSource", EmbedderDomDistillerSelfDeletingRequestDelegate: "EmbedderDomDistillerSelfDeletingRequestDelegate", EmbedderOomInterventionTabHelper: "EmbedderOomInterventionTabHelper", EmbedderOfflinePage: "EmbedderOfflinePage", EmbedderChromePasswordManagerClientBindCredentialManager: "EmbedderChromePasswordManagerClientBindCredentialManager", EmbedderPermissionRequestManager: "EmbedderPermissionRequestManager", EmbedderModalDialog: "EmbedderModalDialog", EmbedderExtensions: "EmbedderExtensions", EmbedderExtensionMessaging: "EmbedderExtensionMessaging", EmbedderExtensionMessagingForOpenPort: "EmbedderExtensionMessagingForOpenPort", EmbedderExtensionSentMessageToCachedFrame: "EmbedderExtensionSentMessageToCachedFrame"});
|
569
569
|
inspectorBackend.registerEnum("Page.BackForwardCacheNotRestoredReasonType", {SupportPending: "SupportPending", PageSupportNeeded: "PageSupportNeeded", Circumstantial: "Circumstantial"});
|
570
|
-
inspectorBackend.registerEnum("Page.PrerenderFinalStatus", {Activated: "Activated", Destroyed: "Destroyed", LowEndDevice: "LowEndDevice", CrossOriginRedirect: "CrossOriginRedirect", CrossOriginNavigation: "CrossOriginNavigation", InvalidSchemeRedirect: "InvalidSchemeRedirect", InvalidSchemeNavigation: "InvalidSchemeNavigation", InProgressNavigation: "InProgressNavigation", NavigationRequestBlockedByCsp: "NavigationRequestBlockedByCsp", MainFrameNavigation: "MainFrameNavigation", MojoBinderPolicy: "MojoBinderPolicy", RendererProcessCrashed: "RendererProcessCrashed", RendererProcessKilled: "RendererProcessKilled", Download: "Download", TriggerDestroyed: "TriggerDestroyed", NavigationNotCommitted: "NavigationNotCommitted", NavigationBadHttpStatus: "NavigationBadHttpStatus", ClientCertRequested: "ClientCertRequested", NavigationRequestNetworkError: "NavigationRequestNetworkError", MaxNumOfRunningPrerendersExceeded: "MaxNumOfRunningPrerendersExceeded", CancelAllHostsForTesting: "CancelAllHostsForTesting", DidFailLoad: "DidFailLoad", Stop: "Stop", SslCertificateError: "SslCertificateError", LoginAuthRequested: "LoginAuthRequested", UaChangeRequiresReload: "UaChangeRequiresReload", BlockedByClient: "BlockedByClient", AudioOutputDeviceRequested: "AudioOutputDeviceRequested", MixedContent: "MixedContent", TriggerBackgrounded: "TriggerBackgrounded", EmbedderTriggeredAndSameOriginRedirected: "EmbedderTriggeredAndSameOriginRedirected", EmbedderTriggeredAndCrossOriginRedirected: "EmbedderTriggeredAndCrossOriginRedirected",
|
570
|
+
inspectorBackend.registerEnum("Page.PrerenderFinalStatus", {Activated: "Activated", Destroyed: "Destroyed", LowEndDevice: "LowEndDevice", CrossOriginRedirect: "CrossOriginRedirect", CrossOriginNavigation: "CrossOriginNavigation", InvalidSchemeRedirect: "InvalidSchemeRedirect", InvalidSchemeNavigation: "InvalidSchemeNavigation", InProgressNavigation: "InProgressNavigation", NavigationRequestBlockedByCsp: "NavigationRequestBlockedByCsp", MainFrameNavigation: "MainFrameNavigation", MojoBinderPolicy: "MojoBinderPolicy", RendererProcessCrashed: "RendererProcessCrashed", RendererProcessKilled: "RendererProcessKilled", Download: "Download", TriggerDestroyed: "TriggerDestroyed", NavigationNotCommitted: "NavigationNotCommitted", NavigationBadHttpStatus: "NavigationBadHttpStatus", ClientCertRequested: "ClientCertRequested", NavigationRequestNetworkError: "NavigationRequestNetworkError", MaxNumOfRunningPrerendersExceeded: "MaxNumOfRunningPrerendersExceeded", CancelAllHostsForTesting: "CancelAllHostsForTesting", DidFailLoad: "DidFailLoad", Stop: "Stop", SslCertificateError: "SslCertificateError", LoginAuthRequested: "LoginAuthRequested", UaChangeRequiresReload: "UaChangeRequiresReload", BlockedByClient: "BlockedByClient", AudioOutputDeviceRequested: "AudioOutputDeviceRequested", MixedContent: "MixedContent", TriggerBackgrounded: "TriggerBackgrounded", EmbedderTriggeredAndSameOriginRedirected: "EmbedderTriggeredAndSameOriginRedirected", EmbedderTriggeredAndCrossOriginRedirected: "EmbedderTriggeredAndCrossOriginRedirected", MemoryLimitExceeded: "MemoryLimitExceeded", FailToGetMemoryUsage: "FailToGetMemoryUsage", DataSaverEnabled: "DataSaverEnabled"});
|
571
571
|
inspectorBackend.registerEvent("Page.domContentEventFired", ["timestamp"]);
|
572
572
|
inspectorBackend.registerEnum("Page.FileChooserOpenedEventMode", {SelectSingle: "selectSingle", SelectMultiple: "selectMultiple"});
|
573
573
|
inspectorBackend.registerEvent("Page.fileChooserOpened", ["frameId", "mode", "backendNodeId"]);
|
@@ -90,10 +90,6 @@ export const generatedProperties = [
|
|
90
90
|
"inherited": true,
|
91
91
|
"name": "-webkit-highlight"
|
92
92
|
},
|
93
|
-
{
|
94
|
-
"inherited": true,
|
95
|
-
"name": "-webkit-hyphenate-character"
|
96
|
-
},
|
97
93
|
{
|
98
94
|
"inherited": true,
|
99
95
|
"keywords": [
|
@@ -1912,6 +1908,10 @@ export const generatedProperties = [
|
|
1912
1908
|
],
|
1913
1909
|
"name": "height"
|
1914
1910
|
},
|
1911
|
+
{
|
1912
|
+
"inherited": true,
|
1913
|
+
"name": "hyphenate-character"
|
1914
|
+
},
|
1915
1915
|
{
|
1916
1916
|
"inherited": true,
|
1917
1917
|
"keywords": [
|
@@ -5591,6 +5591,10 @@ export const generatedAliasesFor = new Map([
|
|
5591
5591
|
"-webkit-font-feature-settings",
|
5592
5592
|
"font-feature-settings"
|
5593
5593
|
],
|
5594
|
+
[
|
5595
|
+
"-webkit-hyphenate-character",
|
5596
|
+
"hyphenate-character"
|
5597
|
+
],
|
5594
5598
|
[
|
5595
5599
|
"-webkit-justify-content",
|
5596
5600
|
"justify-content"
|
@@ -2135,6 +2135,11 @@ export namespace CSS {
|
|
2135
2135
|
* The entire property range in the enclosing style declaration (if available).
|
2136
2136
|
*/
|
2137
2137
|
range?: SourceRange;
|
2138
|
+
/**
|
2139
|
+
* Parsed longhand components of this property if it is a shorthand.
|
2140
|
+
* This field will be empty if the given property is not a shorthand.
|
2141
|
+
*/
|
2142
|
+
longhandProperties?: CSSProperty[];
|
2138
2143
|
}
|
2139
2144
|
|
2140
2145
|
export const enum CSSMediaSource {
|
@@ -10377,6 +10382,7 @@ export namespace Page {
|
|
10377
10382
|
StorageAccessAPI = 'storage-access-api',
|
10378
10383
|
SyncXhr = 'sync-xhr',
|
10379
10384
|
TrustTokenRedemption = 'trust-token-redemption',
|
10385
|
+
Unload = 'unload',
|
10380
10386
|
Usb = 'usb',
|
10381
10387
|
VerticalScroll = 'vertical-scroll',
|
10382
10388
|
WebShare = 'web-share',
|
@@ -11154,9 +11160,9 @@ export namespace Page {
|
|
11154
11160
|
TriggerBackgrounded = 'TriggerBackgrounded',
|
11155
11161
|
EmbedderTriggeredAndSameOriginRedirected = 'EmbedderTriggeredAndSameOriginRedirected',
|
11156
11162
|
EmbedderTriggeredAndCrossOriginRedirected = 'EmbedderTriggeredAndCrossOriginRedirected',
|
11157
|
-
EmbedderTriggeredAndDestroyed = 'EmbedderTriggeredAndDestroyed',
|
11158
11163
|
MemoryLimitExceeded = 'MemoryLimitExceeded',
|
11159
11164
|
FailToGetMemoryUsage = 'FailToGetMemoryUsage',
|
11165
|
+
DataSaverEnabled = 'DataSaverEnabled',
|
11160
11166
|
}
|
11161
11167
|
|
11162
11168
|
export interface AddScriptToEvaluateOnLoadRequest {
|
@@ -139,12 +139,6 @@ const UIStrings = {
|
|
139
139
|
*/
|
140
140
|
EmbedderTriggeredAndCrossOriginRedirected:
|
141
141
|
'Prerendering triggered by Chrome internal (e.g., Omnibox prerendering) is is canceled because the navigation is redirected to another cross-origin page.',
|
142
|
-
/**
|
143
|
-
*@description Description text for Prerender2 cancellation status EmbedderTriggeredAndDestroyed.
|
144
|
-
*/
|
145
|
-
EmbedderTriggeredAndDestroyed:
|
146
|
-
'Prerendering triggered by Chrome internal (e.g., Omnibox prerendering) is is destroyed in the destructor.',
|
147
|
-
|
148
142
|
/**
|
149
143
|
*@description Description text for Prerender2 cancellation status MemoryLimitExceeded.
|
150
144
|
*/
|
@@ -154,6 +148,10 @@ const UIStrings = {
|
|
154
148
|
*@description Description text for Prerender2 cancellation status FailToGetMemoryUsage.
|
155
149
|
*/
|
156
150
|
FailToGetMemoryUsage: 'Fail to get memory usage',
|
151
|
+
/**
|
152
|
+
*@description Description text for Prerender2 cancellation status DataSaverEnabled.
|
153
|
+
*/
|
154
|
+
DataSaverEnabled: 'Data saver enabled',
|
157
155
|
};
|
158
156
|
|
159
157
|
const str_ = i18n.i18n.registerUIStrings('panels/application/components/Prerender2.ts', UIStrings);
|
@@ -194,7 +192,7 @@ export const Prerender2ReasonDescription = {
|
|
194
192
|
{name: i18nLazyString(UIStrings.EmbedderTriggeredAndSameOriginRedirected)},
|
195
193
|
'EmbedderTriggeredAndCrossOriginRedirected':
|
196
194
|
{name: i18nLazyString(UIStrings.EmbedderTriggeredAndCrossOriginRedirected)},
|
197
|
-
'EmbedderTriggeredAndDestroyed': {name: i18nLazyString(UIStrings.EmbedderTriggeredAndDestroyed)},
|
198
195
|
'MemoryLimitExceeded': {name: i18nLazyString(UIStrings.MemoryLimitExceeded)},
|
199
196
|
'FailToGetMemoryUsage': {name: i18nLazyString(UIStrings.FailToGetMemoryUsage)},
|
197
|
+
'DataSaverEnabled': {name: i18nLazyString(UIStrings.DataSaverEnabled)},
|
200
198
|
};
|
@@ -93,6 +93,10 @@ const UIStrings = {
|
|
93
93
|
*@description Text that is usually a hyperlink to more documentation
|
94
94
|
*/
|
95
95
|
learnMore: 'Learn more',
|
96
|
+
/**
|
97
|
+
*@description Text that is usually a hyperlink to a feedback form
|
98
|
+
*/
|
99
|
+
sendFeedback: 'Send feedback',
|
96
100
|
};
|
97
101
|
const str_ = i18n.i18n.registerUIStrings('panels/settings/SettingsScreen.ts', UIStrings);
|
98
102
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
@@ -489,6 +493,14 @@ export class ExperimentsSettingsTab extends SettingsTab {
|
|
489
493
|
p.appendChild(link);
|
490
494
|
}
|
491
495
|
|
496
|
+
if (experiment.feedbackLink) {
|
497
|
+
const link = UI.XLink.XLink.create(experiment.feedbackLink);
|
498
|
+
link.textContent = i18nString(UIStrings.sendFeedback);
|
499
|
+
link.classList.add('feedback-link');
|
500
|
+
|
501
|
+
p.appendChild(link);
|
502
|
+
}
|
503
|
+
|
492
504
|
return p;
|
493
505
|
}
|
494
506
|
}
|
@@ -199,6 +199,12 @@ label {
|
|
199
199
|
color: var(--color-text-secondary);
|
200
200
|
}
|
201
201
|
|
202
|
+
.settings-experiment .feedback-link {
|
203
|
+
color: var(--color-primary);
|
204
|
+
text-decoration-line: underline;
|
205
|
+
margin-left: 4px;
|
206
|
+
}
|
207
|
+
|
202
208
|
@media (forced-colors: active) {
|
203
209
|
.settings-window-title {
|
204
210
|
color: canvastext;
|
@@ -1034,17 +1034,10 @@ export class NavigatorView extends UI.Widget.VBox implements SDK.TargetManager.O
|
|
1034
1034
|
}
|
1035
1035
|
}
|
1036
1036
|
|
1037
|
-
/**
|
1038
|
-
* Subclasses can override to listen to grouping changes.
|
1039
|
-
*/
|
1040
|
-
onGroupingChanged(): void {
|
1041
|
-
}
|
1042
|
-
|
1043
1037
|
private groupingChanged(): void {
|
1044
1038
|
this.reset(true);
|
1045
1039
|
this.initGrouping();
|
1046
1040
|
// Reset the workspace to repopulate filesystem folders.
|
1047
|
-
this.onGroupingChanged();
|
1048
1041
|
this.resetWorkspace(Workspace.Workspace.WorkspaceImpl.instance());
|
1049
1042
|
this.workspaceInternal.uiSourceCodes().forEach(this.addUISourceCode.bind(this));
|
1050
1043
|
}
|
@@ -317,16 +317,17 @@ export class OpenLinearMemoryInspector extends UI.Widget.VBox implements UI.Cont
|
|
317
317
|
if (target instanceof ObjectUI.ObjectPropertiesSection.ObjectPropertyTreeElement) {
|
318
318
|
if (target.property && target.property.value &&
|
319
319
|
LinearMemoryInspector.LinearMemoryInspectorController.isMemoryObjectProperty(target.property.value)) {
|
320
|
+
const expression = target.path();
|
320
321
|
contextMenu.debugSection().appendItem(
|
321
322
|
i18nString(UIStrings.revealInMemoryInspectorPanel),
|
322
|
-
this.openMemoryInspector.bind(this,
|
323
|
+
this.openMemoryInspector.bind(this, expression, target.property.value));
|
323
324
|
}
|
324
325
|
}
|
325
326
|
}
|
326
327
|
|
327
|
-
private async openMemoryInspector(
|
328
|
+
private async openMemoryInspector(expression: string, obj: SDK.RemoteObject.RemoteObject): Promise<void> {
|
328
329
|
const controller = LinearMemoryInspector.LinearMemoryInspectorController.LinearMemoryInspectorController.instance();
|
329
330
|
Host.userMetrics.linearMemoryInspectorRevealedFrom(Host.UserMetrics.LinearMemoryInspectorRevealedFrom.ContextMenu);
|
330
|
-
void controller.openInspectorView(obj,
|
331
|
+
void controller.openInspectorView(obj, /* address */ undefined, expression);
|
331
332
|
}
|
332
333
|
}
|
@@ -32,11 +32,9 @@ import * as Common from '../../core/common/common.js';
|
|
32
32
|
import * as Host from '../../core/host/host.js';
|
33
33
|
import * as i18n from '../../core/i18n/i18n.js';
|
34
34
|
import * as Platform from '../../core/platform/platform.js';
|
35
|
-
import * as Root from '../../core/root/root.js';
|
36
35
|
import * as SDK from '../../core/sdk/sdk.js';
|
37
36
|
import * as Persistence from '../../models/persistence/persistence.js';
|
38
37
|
import * as Workspace from '../../models/workspace/workspace.js';
|
39
|
-
import * as Feedback from '../../ui/components/panel_feedback/panel_feedback.js';
|
40
38
|
import * as UI from '../../ui/legacy/legacy.js';
|
41
39
|
import * as Snippets from '../snippets/snippets.js';
|
42
40
|
|
@@ -102,61 +100,26 @@ const UIStrings = {
|
|
102
100
|
*@description Text to save content as a specific file type
|
103
101
|
*/
|
104
102
|
saveAs: 'Save as...',
|
105
|
-
/**
|
106
|
-
*@description Description of the new experimental Authored/Deployed view
|
107
|
-
*/
|
108
|
-
authoredDescription: 'Group files by Authored/Deployed',
|
109
103
|
};
|
110
104
|
const str_ = i18n.i18n.registerUIStrings('panels/sources/SourcesNavigator.ts', UIStrings);
|
111
105
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
112
106
|
let networkNavigatorViewInstance: NetworkNavigatorView;
|
113
107
|
|
114
108
|
export class NetworkNavigatorView extends NavigatorView {
|
115
|
-
private previewToggle: Feedback.PreviewToggle.PreviewToggle;
|
116
109
|
private constructor() {
|
117
110
|
super(true);
|
118
111
|
SDK.TargetManager.TargetManager.instance().addEventListener(
|
119
112
|
SDK.TargetManager.Events.InspectedURLChanged, this.inspectedURLChanged, this);
|
120
113
|
|
121
|
-
this.previewToggle = new Feedback.PreviewToggle.PreviewToggle();
|
122
|
-
this.onGroupingChanged();
|
123
|
-
|
124
|
-
const div = UI.Fragment.html`<div class="border-container"></div>`;
|
125
|
-
div.append(this.previewToggle);
|
126
|
-
this.contentElement.prepend(div);
|
127
|
-
|
128
114
|
// Record the sources tool load time after the file navigator has loaded.
|
129
115
|
Host.userMetrics.panelLoaded('sources', 'DevTools.Launch.Sources');
|
130
116
|
}
|
131
117
|
|
132
|
-
onGroupingChanged(): void {
|
133
|
-
// Setting the data will re-render it.
|
134
|
-
this.previewToggle.data = {
|
135
|
-
name: i18nString(UIStrings.authoredDescription),
|
136
|
-
helperText: null,
|
137
|
-
experiment: Root.Runtime.ExperimentName.AUTHORED_DEPLOYED_GROUPING,
|
138
|
-
learnMoreURL: 'https://goo.gle/authored-deployed',
|
139
|
-
feedbackURL: 'https://goo.gle/authored-deployed-feedback',
|
140
|
-
onChangeCallback: this.onAuthoredDeployedChanged,
|
141
|
-
};
|
142
|
-
}
|
143
|
-
|
144
118
|
wasShown(): void {
|
145
119
|
this.registerCSSFiles([sourcesNavigatorStyles]);
|
146
120
|
super.wasShown();
|
147
121
|
}
|
148
122
|
|
149
|
-
private onAuthoredDeployedChanged(checked: boolean): void {
|
150
|
-
Host.userMetrics.experimentChanged(Root.Runtime.ExperimentName.AUTHORED_DEPLOYED_GROUPING, checked);
|
151
|
-
// Need to signal to the NavigatorView that grouping has changed. Unfortunately,
|
152
|
-
// it can't listen to an experiment, and this class doesn't directly interact
|
153
|
-
// with it, so we will convince it a different grouping setting changed. When we switch
|
154
|
-
// from using an experiment to a setting, it will listen to that setting and we
|
155
|
-
// won't need to do this.
|
156
|
-
const groupByFolderSetting = Common.Settings.Settings.instance().moduleSetting('navigatorGroupByFolder');
|
157
|
-
groupByFolderSetting.set(groupByFolderSetting.get());
|
158
|
-
}
|
159
|
-
|
160
123
|
static instance(opts: {
|
161
124
|
forceNew: boolean|null,
|
162
125
|
} = {forceNew: null}): NetworkNavigatorView {
|
@@ -112,6 +112,10 @@ const UIStrings = {
|
|
112
112
|
*/
|
113
113
|
groupByAuthored: 'Group by Authored/Deployed',
|
114
114
|
/**
|
115
|
+
*@description Text in Sources Panel of the Sources panel
|
116
|
+
*/
|
117
|
+
hideIgnoreListed: 'Hide ignore-listed sources',
|
118
|
+
/**
|
115
119
|
*@description Text for pausing the debugger on exceptions
|
116
120
|
*/
|
117
121
|
pauseOnExceptions: 'Pause on exceptions',
|
@@ -563,36 +567,44 @@ export class SourcesPanel extends UI.Panel.Panel implements UI.ContextMenu.Provi
|
|
563
567
|
}
|
564
568
|
}
|
565
569
|
|
566
|
-
private
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
570
|
+
private addExperimentMenuItem(
|
571
|
+
menuSection: UI.ContextMenu.Section, experiment: string, menuItem: Common.UIString.LocalizedString): void {
|
572
|
+
// menu handler
|
573
|
+
function toggleExperiment(): void {
|
574
|
+
const checked = Root.Runtime.experiments.isEnabled(experiment);
|
575
|
+
Root.Runtime.experiments.setEnabled(experiment, !checked);
|
576
|
+
Host.userMetrics.experimentChanged(experiment, checked);
|
577
|
+
// Need to signal to the NavigatorView that grouping has changed. Unfortunately,
|
578
|
+
// it can't listen to an experiment, and this class doesn't directly interact
|
579
|
+
// with it, so we will convince it a different grouping setting changed. When we switch
|
580
|
+
// from using an experiment to a setting, it will listen to that setting and we
|
581
|
+
// won't need to do this.
|
582
|
+
const groupByFolderSetting = Common.Settings.Settings.instance().moduleSetting('navigatorGroupByFolder');
|
583
|
+
groupByFolderSetting.set(groupByFolderSetting.get());
|
584
|
+
}
|
579
585
|
|
580
|
-
private populateNavigatorMenu(contextMenu: UI.ContextMenu.ContextMenu): void {
|
581
|
-
const groupByFolderSetting = Common.Settings.Settings.instance().moduleSetting('navigatorGroupByFolder');
|
582
|
-
contextMenu.appendItemsAtLocation('navigatorMenu');
|
583
|
-
contextMenu.viewSection().appendCheckboxItem(
|
584
|
-
i18nString(UIStrings.groupByFolder), () => groupByFolderSetting.set(!groupByFolderSetting.get()),
|
585
|
-
groupByFolderSetting.get());
|
586
586
|
const previewIcon = new IconButton.Icon.Icon();
|
587
|
-
const experiment = Root.Runtime.ExperimentName.AUTHORED_DEPLOYED_GROUPING;
|
588
587
|
previewIcon.data = {
|
589
588
|
iconName: 'ic_preview_feature',
|
590
589
|
color: 'var(--icon-color)',
|
591
590
|
width: '14px',
|
592
591
|
};
|
592
|
+
menuSection.appendCheckboxItem(
|
593
|
+
menuItem, toggleExperiment, Root.Runtime.experiments.isEnabled(experiment), false, previewIcon);
|
594
|
+
}
|
595
|
+
|
596
|
+
private populateNavigatorMenu(contextMenu: UI.ContextMenu.ContextMenu): void {
|
597
|
+
const groupByFolderSetting = Common.Settings.Settings.instance().moduleSetting('navigatorGroupByFolder');
|
598
|
+
contextMenu.appendItemsAtLocation('navigatorMenu');
|
593
599
|
contextMenu.viewSection().appendCheckboxItem(
|
594
|
-
i18nString(UIStrings.
|
595
|
-
|
600
|
+
i18nString(UIStrings.groupByFolder), () => groupByFolderSetting.set(!groupByFolderSetting.get()),
|
601
|
+
groupByFolderSetting.get());
|
602
|
+
|
603
|
+
this.addExperimentMenuItem(
|
604
|
+
contextMenu.viewSection(), Root.Runtime.ExperimentName.AUTHORED_DEPLOYED_GROUPING,
|
605
|
+
i18nString(UIStrings.groupByAuthored));
|
606
|
+
this.addExperimentMenuItem(
|
607
|
+
contextMenu.viewSection(), Root.Runtime.ExperimentName.JUST_MY_CODE, i18nString(UIStrings.hideIgnoreListed));
|
596
608
|
}
|
597
609
|
|
598
610
|
setIgnoreExecutionLineEvents(ignoreExecutionLineEvents: boolean): void {
|
@@ -0,0 +1,206 @@
|
|
1
|
+
// Copyright (c) 2022 The Chromium Authors. All rights reserved.
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
3
|
+
// found in the LICENSE file.
|
4
|
+
|
5
|
+
import * as i18n from '../../../core/i18n/i18n.js';
|
6
|
+
import * as Platform from '../../../core/platform/platform.js';
|
7
|
+
import * as ComponentHelpers from '../../../ui/components/helpers/helpers.js';
|
8
|
+
import * as IconButton from '../../../ui/components/icon_button/icon_button.js';
|
9
|
+
import * as LitHtml from '../../../ui/lit-html/lit-html.js';
|
10
|
+
|
11
|
+
import breakpointsViewStyles from './breakpointsView.css.js';
|
12
|
+
|
13
|
+
const UIStrings = {
|
14
|
+
/**
|
15
|
+
*@description Text exposed to screen readers on checked items.
|
16
|
+
*/
|
17
|
+
checked: 'checked',
|
18
|
+
/**
|
19
|
+
*@description Accessible text exposed to screen readers when the screen reader encounters an unchecked checkbox.
|
20
|
+
*/
|
21
|
+
unchecked: 'unchecked',
|
22
|
+
/**
|
23
|
+
*@description Accessible text for a breakpoint collection with a combination of checked states.
|
24
|
+
*/
|
25
|
+
indeterminate: 'mixed',
|
26
|
+
/**
|
27
|
+
*@description Accessibility label for hit breakpoints in the Sources panel.
|
28
|
+
*@example {checked} PH1
|
29
|
+
*/
|
30
|
+
breakpointHit: '{PH1} breakpoint hit',
|
31
|
+
|
32
|
+
};
|
33
|
+
const str_ = i18n.i18n.registerUIStrings('panels/sources/components/BreakpointsView.ts', UIStrings);
|
34
|
+
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
35
|
+
|
36
|
+
const MAX_SNIPPET_LENGTH = 200;
|
37
|
+
|
38
|
+
export interface BreakpointsViewData {
|
39
|
+
groups: BreakpointGroup[];
|
40
|
+
}
|
41
|
+
|
42
|
+
export interface BreakpointGroup {
|
43
|
+
name: string;
|
44
|
+
url: Platform.DevToolsPath.UrlString;
|
45
|
+
expanded: boolean;
|
46
|
+
breakpointItems: BreakpointItem[];
|
47
|
+
}
|
48
|
+
|
49
|
+
export interface BreakpointItem {
|
50
|
+
location: string;
|
51
|
+
codeSnippet: string;
|
52
|
+
isHit: boolean;
|
53
|
+
status: BreakpointStatus;
|
54
|
+
hoverText?: string;
|
55
|
+
}
|
56
|
+
|
57
|
+
export const enum BreakpointStatus {
|
58
|
+
ENABLED = 'ENABLED',
|
59
|
+
DISABLED = 'DISABLED',
|
60
|
+
INDETERMINATE = 'INDETERMINATE',
|
61
|
+
}
|
62
|
+
|
63
|
+
export class CheckboxToggledEvent extends Event {
|
64
|
+
static readonly eventName = 'checkboxtoggled';
|
65
|
+
data: {breakpointItem: BreakpointItem, checked: boolean};
|
66
|
+
|
67
|
+
constructor(breakpointItem: BreakpointItem, checked: boolean) {
|
68
|
+
super(CheckboxToggledEvent.eventName);
|
69
|
+
this.data = {breakpointItem: breakpointItem, checked};
|
70
|
+
}
|
71
|
+
}
|
72
|
+
|
73
|
+
export class ExpandedStateChangedEvent extends Event {
|
74
|
+
static readonly eventName = 'expandedstatechanged';
|
75
|
+
data: {url: Platform.DevToolsPath.UrlString, expanded: boolean};
|
76
|
+
|
77
|
+
constructor(url: Platform.DevToolsPath.UrlString, expanded: boolean) {
|
78
|
+
super(ExpandedStateChangedEvent.eventName);
|
79
|
+
this.data = {url, expanded};
|
80
|
+
}
|
81
|
+
}
|
82
|
+
|
83
|
+
export class BreakpointSelectedEvent extends Event {
|
84
|
+
static readonly eventName = 'breakpointselected';
|
85
|
+
data: {breakpointItem: BreakpointItem};
|
86
|
+
|
87
|
+
constructor(breakpointItem: BreakpointItem) {
|
88
|
+
super(BreakpointSelectedEvent.eventName);
|
89
|
+
this.data = {breakpointItem: breakpointItem};
|
90
|
+
}
|
91
|
+
}
|
92
|
+
|
93
|
+
export class BreakpointsView extends HTMLElement {
|
94
|
+
static readonly litTagName = LitHtml.literal`devtools-breakpoint-view`;
|
95
|
+
readonly #shadow = this.attachShadow({mode: 'open'});
|
96
|
+
readonly #boundRender = this.#render.bind(this);
|
97
|
+
|
98
|
+
#breakpointGroups: BreakpointGroup[] = [];
|
99
|
+
|
100
|
+
set data(data: BreakpointsViewData) {
|
101
|
+
this.#breakpointGroups = data.groups;
|
102
|
+
void ComponentHelpers.ScheduledRender.scheduleRender(this, this.#boundRender);
|
103
|
+
}
|
104
|
+
|
105
|
+
connectedCallback(): void {
|
106
|
+
this.#shadow.adoptedStyleSheets = [breakpointsViewStyles];
|
107
|
+
void ComponentHelpers.ScheduledRender.scheduleRender(this, this.#boundRender);
|
108
|
+
}
|
109
|
+
|
110
|
+
#render(): void {
|
111
|
+
const renderedGroups = this.#breakpointGroups.map((group, index) => {
|
112
|
+
const out = this.#renderBreakpointGroup(group);
|
113
|
+
if (index === this.#breakpointGroups.length - 1) {
|
114
|
+
return out;
|
115
|
+
}
|
116
|
+
return LitHtml.html`${out}<div class='divider'></div>`;
|
117
|
+
});
|
118
|
+
LitHtml.render(LitHtml.html`${renderedGroups}`, this.#shadow, {host: this});
|
119
|
+
}
|
120
|
+
|
121
|
+
#renderBreakpointGroup(group: BreakpointGroup): LitHtml.TemplateResult {
|
122
|
+
const groupClassMap = {
|
123
|
+
'expanded': group.expanded,
|
124
|
+
};
|
125
|
+
// clang-format off
|
126
|
+
return LitHtml.html`
|
127
|
+
<div data-group='true' class=${LitHtml.Directives.classMap(groupClassMap)}>
|
128
|
+
<div class='group-header' @click=${(): void => this.#onGroupExpandToggled(group)}>
|
129
|
+
<span class='triangle'></span>
|
130
|
+
${this.#renderFileIcon()}
|
131
|
+
<span class='group-header-title'>${group.name}</span>
|
132
|
+
</div>
|
133
|
+
${group.expanded? LitHtml.html`
|
134
|
+
${group.breakpointItems.map(entry => this.#renderBreakpointEntry(entry))}` : LitHtml.nothing}
|
135
|
+
</div>
|
136
|
+
`;
|
137
|
+
// clang-format on
|
138
|
+
}
|
139
|
+
|
140
|
+
#renderFileIcon(): LitHtml.TemplateResult {
|
141
|
+
return LitHtml.html`
|
142
|
+
<${IconButton.Icon.Icon.litTagName} .data=${
|
143
|
+
{iconName: 'ic_file_script', color: 'var(--color-ic-file-script)', width: '16px', height: '16px'} as
|
144
|
+
IconButton.Icon.IconWithName}></${IconButton.Icon.Icon.litTagName}>
|
145
|
+
`;
|
146
|
+
}
|
147
|
+
|
148
|
+
#renderBreakpointEntry(breakpointItem: BreakpointItem): LitHtml.TemplateResult {
|
149
|
+
const classMap = {
|
150
|
+
'breakpoint-item': true,
|
151
|
+
'hit': breakpointItem.isHit,
|
152
|
+
};
|
153
|
+
const breakpointItemDescription = this.#getBreakpointItemDescription(breakpointItem);
|
154
|
+
const codeSnippet = Platform.StringUtilities.trimEndWithMaxLength(breakpointItem.codeSnippet, MAX_SNIPPET_LENGTH);
|
155
|
+
|
156
|
+
// clang-format off
|
157
|
+
return LitHtml.html`
|
158
|
+
<div class=${LitHtml.Directives.classMap(classMap)} aria-label=${breakpointItemDescription} tabIndex=${breakpointItem.isHit ? 0 : 1}>
|
159
|
+
<label class='checkbox-label'>
|
160
|
+
<input type='checkbox' aria-label=${breakpointItem.location} ?indeterminate=${breakpointItem.status === BreakpointStatus.INDETERMINATE} ?checked=${breakpointItem.status === BreakpointStatus.ENABLED} @change=${(e: Event): void => this.#onCheckboxToggled(e, breakpointItem)}>
|
161
|
+
</label>
|
162
|
+
<span class='code-snippet' @click=${():void => {this.dispatchEvent(new BreakpointSelectedEvent(breakpointItem));}}>${codeSnippet}</span>
|
163
|
+
<span class='location'>${breakpointItem.location}</span>
|
164
|
+
</div>
|
165
|
+
`;
|
166
|
+
// clang-format on
|
167
|
+
}
|
168
|
+
|
169
|
+
#getBreakpointItemDescription(breakpointItem: BreakpointItem): Platform.UIString.LocalizedString {
|
170
|
+
let checkboxDescription;
|
171
|
+
switch (breakpointItem.status) {
|
172
|
+
case BreakpointStatus.ENABLED:
|
173
|
+
checkboxDescription = i18nString(UIStrings.checked);
|
174
|
+
break;
|
175
|
+
case BreakpointStatus.DISABLED:
|
176
|
+
checkboxDescription = i18nString(UIStrings.unchecked);
|
177
|
+
break;
|
178
|
+
case BreakpointStatus.INDETERMINATE:
|
179
|
+
checkboxDescription = i18nString(UIStrings.indeterminate);
|
180
|
+
break;
|
181
|
+
}
|
182
|
+
if (!breakpointItem.isHit) {
|
183
|
+
return checkboxDescription;
|
184
|
+
}
|
185
|
+
return i18nString(UIStrings.breakpointHit, {PH1: checkboxDescription});
|
186
|
+
}
|
187
|
+
|
188
|
+
#onGroupExpandToggled(group: BreakpointGroup): void {
|
189
|
+
group.expanded = !group.expanded;
|
190
|
+
this.dispatchEvent(new ExpandedStateChangedEvent(group.url, group.expanded));
|
191
|
+
void ComponentHelpers.ScheduledRender.scheduleRender(this, this.#boundRender);
|
192
|
+
}
|
193
|
+
|
194
|
+
#onCheckboxToggled(e: Event, item: BreakpointItem): void {
|
195
|
+
const element = e.target as HTMLInputElement;
|
196
|
+
this.dispatchEvent(new CheckboxToggledEvent(item, element.checked));
|
197
|
+
}
|
198
|
+
}
|
199
|
+
|
200
|
+
ComponentHelpers.CustomElements.defineComponent('devtools-breakpoint-view', BreakpointsView);
|
201
|
+
|
202
|
+
declare global {
|
203
|
+
interface HTMLElementTagNameMap {
|
204
|
+
'devtools-breakpoint-view': BreakpointsView;
|
205
|
+
}
|
206
|
+
}
|
@@ -0,0 +1,95 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2022 The Chromium Authors. All rights reserved.
|
3
|
+
* Use of this source code is governed by a BSD-style license that can be
|
4
|
+
* found in the LICENSE file.
|
5
|
+
*/
|
6
|
+
|
7
|
+
:host {
|
8
|
+
flex: auto;
|
9
|
+
display: flex;
|
10
|
+
flex-direction: column;
|
11
|
+
}
|
12
|
+
|
13
|
+
.divider {
|
14
|
+
height: 1px;
|
15
|
+
width: inherit;
|
16
|
+
background-color: var(--color-details-hairline);
|
17
|
+
}
|
18
|
+
|
19
|
+
.code-snippet {
|
20
|
+
width: 100%;
|
21
|
+
padding-left: 6px;
|
22
|
+
font-family: var(--source-code-font-family);
|
23
|
+
font-size: var(--source-code-font-size);
|
24
|
+
color: var(--color-text-secondary);
|
25
|
+
text-overflow: ellipsis;
|
26
|
+
overflow: hidden;
|
27
|
+
white-space: nowrap;
|
28
|
+
flex-shrink: 100;
|
29
|
+
}
|
30
|
+
|
31
|
+
input {
|
32
|
+
height: 12px;
|
33
|
+
width: 12px;
|
34
|
+
flex-shrink: 0;
|
35
|
+
margin: 3px 0;
|
36
|
+
}
|
37
|
+
|
38
|
+
.triangle {
|
39
|
+
margin-left: 6px;
|
40
|
+
margin-right: 4px;
|
41
|
+
display: inline-block;
|
42
|
+
-webkit-mask-image: var(--image-file-treeoutlineTriangles);
|
43
|
+
-webkit-mask-size: 32px 24px;
|
44
|
+
-webkit-mask-position: 0 0;
|
45
|
+
background-color: var(--color-text-primary);
|
46
|
+
height: 12px;
|
47
|
+
width: 8px;
|
48
|
+
}
|
49
|
+
|
50
|
+
.group-header {
|
51
|
+
display: flex;
|
52
|
+
align-items: center;
|
53
|
+
height: 18px;
|
54
|
+
}
|
55
|
+
|
56
|
+
.expanded > .group-header > .triangle {
|
57
|
+
-webkit-mask-position: -16px 0;
|
58
|
+
}
|
59
|
+
|
60
|
+
.group-header-title {
|
61
|
+
margin-left: 4px;
|
62
|
+
font-weight: 500;
|
63
|
+
font-size: var(--source-code-font-size);
|
64
|
+
text-overflow: ellipsis;
|
65
|
+
overflow: hidden;
|
66
|
+
white-space: nowrap;
|
67
|
+
}
|
68
|
+
|
69
|
+
.breakpoint-item {
|
70
|
+
display: flex;
|
71
|
+
align-items: center;
|
72
|
+
line-height: 13px;
|
73
|
+
height: 18px;
|
74
|
+
}
|
75
|
+
|
76
|
+
.breakpoint-item:hover {
|
77
|
+
background-color: var(--color-background-elevation-1);
|
78
|
+
}
|
79
|
+
|
80
|
+
.breakpoint-item.hit {
|
81
|
+
--override-breakpoint-hit-background: rgb(255 255 194);
|
82
|
+
|
83
|
+
background-color: var(--override-breakpoint-hit-background);
|
84
|
+
}
|
85
|
+
|
86
|
+
.checkbox-label {
|
87
|
+
padding-left: 24px;
|
88
|
+
display: flex;
|
89
|
+
align-items: center;
|
90
|
+
}
|
91
|
+
|
92
|
+
.location {
|
93
|
+
line-height: 14px;
|
94
|
+
margin: 0 8px;
|
95
|
+
}
|
@@ -2,8 +2,10 @@
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
3
3
|
// found in the LICENSE file.
|
4
4
|
|
5
|
+
import * as BreakpointsView from './BreakpointsView.js';
|
5
6
|
import * as HeadersView from './HeadersView.js';
|
6
7
|
|
7
8
|
export {
|
9
|
+
BreakpointsView,
|
8
10
|
HeadersView,
|
9
11
|
};
|
@@ -396,7 +396,7 @@ export class ObjectPropertiesSection extends UI.TreeOutline.TreeOutlineInShadow
|
|
396
396
|
value, wasThrown, showPreview, parentElement, linkifier, variableName);
|
397
397
|
}
|
398
398
|
|
399
|
-
static appendMemoryIcon(element: Element, obj: SDK.RemoteObject.RemoteObject,
|
399
|
+
static appendMemoryIcon(element: Element, obj: SDK.RemoteObject.RemoteObject, expression?: string): void {
|
400
400
|
// We show the memory icon only on ArrayBuffer, WebAssembly.Memory and DWARF memory instances.
|
401
401
|
// TypedArrays DataViews are also supported, but showing the icon next to their
|
402
402
|
// previews is quite a significant visual overhead, and users can easily get to
|
@@ -419,7 +419,7 @@ export class ObjectPropertiesSection extends UI.TreeOutline.TreeOutlineInShadow
|
|
419
419
|
const controller =
|
420
420
|
LinearMemoryInspector.LinearMemoryInspectorController.LinearMemoryInspectorController.instance();
|
421
421
|
Host.userMetrics.linearMemoryInspectorRevealedFrom(Host.UserMetrics.LinearMemoryInspectorRevealedFrom.MemoryIcon);
|
422
|
-
void controller.openInspectorView(obj,
|
422
|
+
void controller.openInspectorView(obj, /* address */ undefined, expression);
|
423
423
|
};
|
424
424
|
|
425
425
|
UI.Tooltip.Tooltip.install(memoryIcon, 'Reveal in Memory Inspector panel');
|
package/package.json
CHANGED