chrome-devtools-frontend 1.0.1536371 → 1.0.1537268
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/front_end/core/host/AidaClient.ts +64 -5
- package/front_end/core/host/DispatchHttpRequestClient.ts +62 -0
- package/front_end/core/host/GdpClient.ts +8 -57
- package/front_end/core/host/host.ts +2 -0
- package/front_end/core/protocol_client/CDPConnection.ts +10 -8
- package/front_end/core/protocol_client/InspectorBackend.ts +36 -42
- package/front_end/core/sdk/EnhancedTracesParser.ts +20 -5
- package/front_end/core/sdk/RehydratingConnection.ts +112 -4
- package/front_end/core/sdk/RehydratingObject.ts +8 -0
- package/front_end/core/sdk/TraceObject.ts +5 -1
- package/front_end/models/javascript_metadata/NativeFunctions.js +1 -1
- package/front_end/models/trace/types/File.ts +9 -0
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +5 -9
- package/front_end/panels/ai_assistance/components/ChatView.ts +58 -70
- package/front_end/panels/application/BackForwardCacheTreeElement.ts +2 -6
- package/front_end/panels/application/components/BackForwardCacheView.ts +74 -69
- package/front_end/panels/application/components/FrameDetailsView.ts +8 -11
- package/front_end/panels/application/components/OriginTrialTreeView.ts +65 -69
- package/front_end/panels/application/components/backForwardCacheView.css +4 -0
- package/front_end/panels/application/components/badge.css +1 -1
- package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +44 -53
- package/front_end/panels/recorder/RecorderController.ts +1 -2
- package/front_end/panels/recorder/components/CreateRecordingView.ts +153 -129
- package/front_end/panels/settings/AISettingsTab.ts +162 -171
- package/front_end/panels/settings/SettingsScreen.ts +3 -7
- package/front_end/panels/settings/aiSettingsTab.css +151 -148
- package/front_end/panels/settings/settings-meta.ts +1 -2
- package/front_end/panels/sources/AddSourceMapURLDialog.ts +23 -26
- package/front_end/panels/timeline/TimelinePanel.ts +60 -11
- package/front_end/panels/timeline/components/ExportTraceOptions.ts +33 -34
- package/front_end/third_party/chromium/README.chromium +2 -2
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +9 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +13 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js +5 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Realm.d.ts +1 -12
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Realm.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts +6 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +6 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/disposable.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/disposable.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/disposable.js +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/disposable.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/util.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/util.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/util.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/util.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +28 -3
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +21 -10
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +9 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +13 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js +5 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Realm.d.ts +1 -12
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Realm.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts +6 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +6 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/disposable.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/disposable.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/disposable.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/disposable.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/util.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/util.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/util.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/util.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +28 -3
- package/front_end/third_party/puppeteer/package/package.json +2 -2
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +13 -1
- package/front_end/third_party/puppeteer/package/src/api/BrowserContext.ts +7 -2
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +14 -1
- package/front_end/third_party/puppeteer/package/src/bidi/BrowserContext.ts +8 -5
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +5 -2
- package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +8 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +11 -2
- package/front_end/third_party/puppeteer/package/src/cdp/BrowserContext.ts +3 -2
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +5 -5
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/disposable.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/util/util.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +280 -0
- package/front_end/ui/components/text_editor/text_editor.ts +1 -0
- package/front_end/ui/components/tooltips/Tooltip.ts +1 -1
- package/front_end/ui/legacy/Dialog.ts +0 -1
- package/front_end/ui/legacy/SettingsUI.ts +0 -14
- package/front_end/ui/legacy/XLink.ts +0 -3
- package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +9 -0
- package/front_end/ui/legacy/components/utils/Linkifier.ts +9 -3
- package/front_end/ui/visual_logging/KnownContextValues.ts +1 -1
- package/mcp/mcp.ts +5 -0
- package/package.json +1 -1
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatterBounds.snapshot.txt +0 -4
- package/front_end/ui/components/docs/breadcrumbs_perf/initial-breadcrumb-perf.html +0 -20
- package/front_end/ui/components/docs/breadcrumbs_perf/initial-breadcrumb-perf.ts +0 -25
- package/front_end/ui/components/docs/breadcrumbs_perf/nested-breadcrumbs-perf.html +0 -20
- package/front_end/ui/components/docs/breadcrumbs_perf/nested-breadcrumbs-perf.ts +0 -36
|
@@ -4,185 +4,188 @@
|
|
|
4
4
|
* found in the LICENSE file.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
*
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
@scope to (devtools-widget > *){
|
|
8
|
+
.ai-settings-container {
|
|
9
|
+
container-type: inline-size;
|
|
10
|
+
container-name: ai-settings;
|
|
11
|
+
|
|
12
|
+
@container ai-settings (min-width: 480px) {
|
|
13
|
+
.settings-container-wrapper {
|
|
14
|
+
align-items: center;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
max-width: var(--sys-size-35);
|
|
21
|
-
min-width: var(--sys-size-28);
|
|
19
|
+
* {
|
|
20
|
+
box-sizing: border-box;
|
|
21
|
+
min-height: auto;
|
|
22
|
+
}
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
.shared-disclaimer {
|
|
25
|
+
background: linear-gradient(135deg, var(--sys-color-gradient-primary), var(--sys-color-gradient-tertiary));
|
|
26
|
+
border-radius: var(--sys-size-5);
|
|
27
|
+
padding: var(--sys-size-9) var(--sys-size-11);
|
|
28
|
+
max-width: var(--sys-size-35);
|
|
29
|
+
min-width: var(--sys-size-28);
|
|
30
|
+
|
|
31
|
+
h2 {
|
|
32
|
+
font: var(--sys-typescale-headline5);
|
|
33
|
+
margin: 0 0 var(--sys-size-6);
|
|
34
|
+
}
|
|
26
35
|
}
|
|
27
|
-
}
|
|
28
36
|
|
|
29
|
-
.disclaimer-list-header {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
37
|
+
.disclaimer-list-header {
|
|
38
|
+
font: var(--sys-typescale-body5-medium);
|
|
39
|
+
margin: 0;
|
|
40
|
+
}
|
|
33
41
|
|
|
34
|
-
.disclaimer-list {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
42
|
+
.disclaimer-list {
|
|
43
|
+
padding: var(--sys-size-6) 0 0;
|
|
44
|
+
display: grid;
|
|
45
|
+
grid-template-columns: var(--sys-size-12) auto;
|
|
46
|
+
gap: var(--sys-size-6) 0;
|
|
47
|
+
line-height: var(--sys-typescale-body5-line-height);
|
|
48
|
+
}
|
|
41
49
|
|
|
42
|
-
.settings-container {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
50
|
+
.settings-container {
|
|
51
|
+
display: grid;
|
|
52
|
+
grid-template-columns: 1fr auto auto;
|
|
53
|
+
border-radius: var(--sys-size-5);
|
|
54
|
+
box-shadow: var(--sys-elevation-level2);
|
|
55
|
+
margin: var(--sys-size-11) 0 var(--sys-size-4);
|
|
56
|
+
line-height: var(--sys-typescale-body5-line-height);
|
|
57
|
+
min-width: var(--sys-size-28);
|
|
58
|
+
max-width: var(--sys-size-35);
|
|
59
|
+
background-color: var(--app-color-card-background);
|
|
60
|
+
}
|
|
53
61
|
|
|
54
|
-
.accordion-header {
|
|
55
|
-
|
|
56
|
-
|
|
62
|
+
.accordion-header {
|
|
63
|
+
display: grid;
|
|
64
|
+
grid-template-columns: auto 1fr auto;
|
|
57
65
|
|
|
58
|
-
|
|
59
|
-
|
|
66
|
+
&:hover {
|
|
67
|
+
background-color: var(--sys-color-state-hover-on-subtle);
|
|
68
|
+
}
|
|
60
69
|
}
|
|
61
|
-
}
|
|
62
70
|
|
|
63
|
-
.icon-container,
|
|
64
|
-
.dropdown {
|
|
65
|
-
|
|
66
|
-
}
|
|
71
|
+
.icon-container,
|
|
72
|
+
.dropdown {
|
|
73
|
+
padding: 0 var(--sys-size-8);
|
|
74
|
+
}
|
|
67
75
|
|
|
68
|
-
.toggle-container {
|
|
69
|
-
|
|
76
|
+
.toggle-container {
|
|
77
|
+
padding: 0 var(--sys-size-8) 0 var(--sys-size-9);
|
|
70
78
|
|
|
71
|
-
|
|
72
|
-
|
|
79
|
+
&:hover {
|
|
80
|
+
background-color: var(--sys-color-state-hover-on-subtle);
|
|
81
|
+
}
|
|
73
82
|
}
|
|
74
|
-
}
|
|
75
83
|
|
|
76
|
-
.expansion-grid {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
+
.expansion-grid {
|
|
85
|
+
padding: var(--sys-size-4) var(--sys-size-8) var(--sys-size-6);
|
|
86
|
+
display: grid;
|
|
87
|
+
grid-template-columns: var(--sys-size-9) auto;
|
|
88
|
+
gap: var(--sys-size-6) var(--sys-size-8);
|
|
89
|
+
line-height: var(--sys-typescale-body5-line-height);
|
|
90
|
+
color: var(--sys-color-on-surface-subtle);
|
|
91
|
+
}
|
|
84
92
|
|
|
85
|
-
.expansion-grid-whole-row {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
+
.expansion-grid-whole-row {
|
|
94
|
+
grid-column: span 2;
|
|
95
|
+
font-weight: var(--ref-typeface-weight-medium);
|
|
96
|
+
color: var(--sys-color-on-surface);
|
|
97
|
+
padding-top: var(--sys-size-4);
|
|
98
|
+
margin: 0;
|
|
99
|
+
font-size: inherit;
|
|
100
|
+
}
|
|
93
101
|
|
|
94
|
-
.setting-description {
|
|
95
|
-
|
|
96
|
-
}
|
|
102
|
+
.setting-description {
|
|
103
|
+
color: var(--sys-color-on-surface-subtle);
|
|
104
|
+
}
|
|
97
105
|
|
|
98
|
-
.centered {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
106
|
+
.centered {
|
|
107
|
+
display: grid;
|
|
108
|
+
place-content: center;
|
|
109
|
+
}
|
|
102
110
|
|
|
103
|
-
.setting-card {
|
|
104
|
-
|
|
111
|
+
.setting-card {
|
|
112
|
+
padding: var(--sys-size-6) 0;
|
|
105
113
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
114
|
+
h2 {
|
|
115
|
+
margin: 0;
|
|
116
|
+
font: inherit;
|
|
117
|
+
}
|
|
109
118
|
}
|
|
110
|
-
}
|
|
111
119
|
|
|
112
|
-
.divider {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
.accordion-header ~ .accordion-header,
|
|
118
|
-
.divider ~ .divider,
|
|
119
|
-
.toggle-container ~ .toggle-container {
|
|
120
|
-
border-top: var(--sys-size-1) solid var(--sys-color-divider);
|
|
121
|
-
}
|
|
120
|
+
.divider {
|
|
121
|
+
margin: var(--sys-size-5) 0;
|
|
122
|
+
border-left: var(--sys-size-1) solid var(--sys-color-divider);
|
|
123
|
+
}
|
|
122
124
|
|
|
123
|
-
.
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
transition: grid-template-rows var(--sys-motion-duration-short4) ease-in;
|
|
129
|
-
}
|
|
125
|
+
.accordion-header ~ .accordion-header,
|
|
126
|
+
.divider ~ .divider,
|
|
127
|
+
.toggle-container ~ .toggle-container {
|
|
128
|
+
border-top: var(--sys-size-1) solid var(--sys-color-divider);
|
|
129
|
+
}
|
|
130
130
|
|
|
131
|
-
.whole-row
|
|
132
|
-
|
|
133
|
-
|
|
131
|
+
.whole-row {
|
|
132
|
+
grid-column: span 5;
|
|
133
|
+
overflow: hidden;
|
|
134
|
+
display: grid;
|
|
135
|
+
grid-template-rows: 0fr;
|
|
136
|
+
transition: grid-template-rows var(--sys-motion-duration-short4) ease-in;
|
|
137
|
+
}
|
|
134
138
|
|
|
135
|
-
.
|
|
136
|
-
|
|
137
|
-
}
|
|
139
|
+
.whole-row.open {
|
|
140
|
+
grid-template-rows: 1fr;
|
|
141
|
+
}
|
|
138
142
|
|
|
139
|
-
.
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
text-decoration: underline;
|
|
143
|
-
cursor: pointer;
|
|
144
|
-
outline-offset: var(--sys-size-2);
|
|
145
|
-
padding: 0;
|
|
146
|
-
font-weight: var(--ref-typeface-weight-regular);
|
|
147
|
-
}
|
|
143
|
+
.overflow-hidden {
|
|
144
|
+
overflow: hidden;
|
|
145
|
+
}
|
|
148
146
|
|
|
149
|
-
.
|
|
150
|
-
|
|
151
|
-
|
|
147
|
+
.link,
|
|
148
|
+
.devtools-link {
|
|
149
|
+
color: var(--sys-color-primary);
|
|
150
|
+
text-decoration: underline;
|
|
151
|
+
cursor: pointer;
|
|
152
|
+
outline-offset: var(--sys-size-2);
|
|
153
|
+
padding: 0;
|
|
154
|
+
font-weight: var(--ref-typeface-weight-regular);
|
|
155
|
+
}
|
|
152
156
|
|
|
153
|
-
.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
overflow: auto;
|
|
157
|
-
padding: var(--sys-size-3) var(--sys-size-6) var(--sys-size-6);
|
|
158
|
-
display: flex;
|
|
159
|
-
flex-direction: column;
|
|
160
|
-
}
|
|
157
|
+
.padded {
|
|
158
|
+
padding: var(--sys-size-2) 0;
|
|
159
|
+
}
|
|
161
160
|
|
|
162
|
-
@container ai-settings (min-width: 480px) {
|
|
163
161
|
.settings-container-wrapper {
|
|
164
|
-
|
|
162
|
+
position: absolute;
|
|
163
|
+
inset: var(--sys-size-8) 0 0;
|
|
164
|
+
overflow: auto;
|
|
165
|
+
padding: var(--sys-size-3) var(--sys-size-6) var(--sys-size-6);
|
|
166
|
+
display: flex;
|
|
167
|
+
flex-direction: column;
|
|
165
168
|
}
|
|
166
|
-
}
|
|
167
169
|
|
|
168
|
-
header {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}
|
|
170
|
+
header {
|
|
171
|
+
font-size: var(--sys-typescale-headline3-size);
|
|
172
|
+
font-weight: var(--ref-typeface-weight-regular);
|
|
173
|
+
}
|
|
172
174
|
|
|
173
|
-
.disabled-explainer {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}
|
|
175
|
+
.disabled-explainer {
|
|
176
|
+
background-color: var(--sys-color-surface-yellow);
|
|
177
|
+
border-radius: var(--sys-shape-corner-medium-small);
|
|
178
|
+
margin-top: var(--sys-size-11);
|
|
179
|
+
padding: var(--sys-size-6) var(--sys-size-11) var(--sys-size-8);
|
|
180
|
+
width: 100%;
|
|
181
|
+
max-width: var(--sys-size-35);
|
|
182
|
+
min-width: var(--sys-size-28);
|
|
183
|
+
color: var(--sys-color-yellow);
|
|
184
|
+
}
|
|
183
185
|
|
|
184
|
-
.disabled-explainer-row {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
186
|
+
.disabled-explainer-row {
|
|
187
|
+
display: flex;
|
|
188
|
+
gap: var(--sys-size-6);
|
|
189
|
+
margin-top: var(--sys-size-4);
|
|
190
|
+
}
|
|
188
191
|
}
|
|
@@ -7,7 +7,6 @@ import './emulation/emulation-meta.js';
|
|
|
7
7
|
import * as Common from '../../core/common/common.js';
|
|
8
8
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
9
9
|
import * as Root from '../../core/root/root.js';
|
|
10
|
-
import * as LegacyWrapper from '../../ui/components/legacy_wrapper/legacy_wrapper.js';
|
|
11
10
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
12
11
|
|
|
13
12
|
import type * as Settings from './settings.js';
|
|
@@ -117,7 +116,7 @@ UI.ViewManager.registerViewExtension({
|
|
|
117
116
|
order: 2,
|
|
118
117
|
async loadView() {
|
|
119
118
|
const Settings = await loadSettingsModule();
|
|
120
|
-
return
|
|
119
|
+
return new Settings.AISettingsTab.AISettingsTab();
|
|
121
120
|
},
|
|
122
121
|
iconName: 'button-magic',
|
|
123
122
|
settings: ['console-insights-enabled'],
|
|
@@ -6,7 +6,7 @@ import * as i18n from '../../core/i18n/i18n.js';
|
|
|
6
6
|
import type * as Platform from '../../core/platform/platform.js';
|
|
7
7
|
import * as Buttons from '../../ui/components/buttons/buttons.js';
|
|
8
8
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
9
|
-
import {
|
|
9
|
+
import {html, render} from '../../ui/lit/lit.js';
|
|
10
10
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
|
11
11
|
|
|
12
12
|
import dialogStyles from './dialog.css.js';
|
|
@@ -27,28 +27,29 @@ const UIStrings = {
|
|
|
27
27
|
} as const;
|
|
28
28
|
const str_ = i18n.i18n.registerUIStrings('panels/sources/AddSourceMapURLDialog.ts', UIStrings);
|
|
29
29
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
30
|
-
const {ref} = Directives;
|
|
31
30
|
|
|
32
31
|
interface ViewInput {
|
|
33
32
|
label: Platform.UIString.LocalizedString;
|
|
34
|
-
|
|
33
|
+
onEnter: (value: string) => void;
|
|
34
|
+
onInputChange: (value: string) => void;
|
|
35
35
|
apply: () => void;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
input: HTMLInputElement;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
type View = (input: ViewInput, output: ViewOutput, target: HTMLElement) => void;
|
|
38
|
+
type View = (input: ViewInput, output: undefined, target: HTMLElement) => void;
|
|
43
39
|
|
|
44
|
-
export const DEFAULT_VIEW: View = (input,
|
|
40
|
+
export const DEFAULT_VIEW: View = (input, _output, target) => {
|
|
45
41
|
// clang-format off
|
|
46
42
|
render(html`
|
|
47
43
|
<style>${dialogStyles}</style>
|
|
48
44
|
<label>${input.label}</label>
|
|
49
45
|
<input class="harmony-input add-source-map" spellcheck="false" type="text"
|
|
50
46
|
jslog=${VisualLogging.textField('url').track({keydown: 'Enter', change: true})}
|
|
51
|
-
@keydown=${
|
|
47
|
+
@keydown=${(e: KeyboardEvent) => { if (e.key === 'Enter') {
|
|
48
|
+
e.consume(true);
|
|
49
|
+
input.onEnter((e.target as HTMLInputElement).value); }
|
|
50
|
+
}}
|
|
51
|
+
@change=${(e: Event) => input.onInputChange((e.target as HTMLInputElement).value)}
|
|
52
|
+
autofocus>
|
|
52
53
|
<devtools-button @click=${input.apply} .jslogContext=${'add'}
|
|
53
54
|
.variant=${Buttons.Button.Variant.OUTLINED}>${i18nString(UIStrings.add)}</devtools-button>`,
|
|
54
55
|
target);
|
|
@@ -56,7 +57,7 @@ export const DEFAULT_VIEW: View = (input, output, target) => {
|
|
|
56
57
|
};
|
|
57
58
|
|
|
58
59
|
export class AddDebugInfoURLDialog extends UI.Widget.HBox {
|
|
59
|
-
private
|
|
60
|
+
private url = '';
|
|
60
61
|
private readonly dialog: UI.Dialog.Dialog;
|
|
61
62
|
private readonly callback: (arg0: Platform.DevToolsPath.UrlString) => void;
|
|
62
63
|
private constructor(
|
|
@@ -66,20 +67,14 @@ export class AddDebugInfoURLDialog extends UI.Widget.HBox {
|
|
|
66
67
|
|
|
67
68
|
const viewInput = {
|
|
68
69
|
label,
|
|
69
|
-
|
|
70
|
+
onEnter: this.onEnter.bind(this),
|
|
71
|
+
onInputChange: this.onInputChange.bind(this),
|
|
70
72
|
apply: this.apply.bind(this),
|
|
71
73
|
};
|
|
72
|
-
|
|
73
|
-
const viewOutput = {
|
|
74
|
-
set input(input: HTMLInputElement) {
|
|
75
|
-
that.input = input;
|
|
76
|
-
},
|
|
77
|
-
};
|
|
78
|
-
view(viewInput, viewOutput, this.contentElement);
|
|
74
|
+
view(viewInput, undefined, this.contentElement);
|
|
79
75
|
|
|
80
76
|
this.dialog = new UI.Dialog.Dialog(jslogContext);
|
|
81
77
|
this.dialog.setSizeBehavior(UI.GlassPane.SizeBehavior.MEASURE_CONTENT);
|
|
82
|
-
this.dialog.setDefaultFocusedElement(this.input);
|
|
83
78
|
|
|
84
79
|
this.callback = callback;
|
|
85
80
|
}
|
|
@@ -103,14 +98,16 @@ export class AddDebugInfoURLDialog extends UI.Widget.HBox {
|
|
|
103
98
|
this.callback(value);
|
|
104
99
|
}
|
|
105
100
|
|
|
101
|
+
private onInputChange(value: string): void {
|
|
102
|
+
this.url = value;
|
|
103
|
+
}
|
|
104
|
+
|
|
106
105
|
private apply(): void {
|
|
107
|
-
this.done(this.
|
|
106
|
+
this.done(this.url as Platform.DevToolsPath.UrlString);
|
|
108
107
|
}
|
|
109
108
|
|
|
110
|
-
private
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
this.apply();
|
|
114
|
-
}
|
|
109
|
+
private onEnter(value: string): void {
|
|
110
|
+
this.url = value;
|
|
111
|
+
this.apply();
|
|
115
112
|
}
|
|
116
113
|
}
|
|
@@ -42,7 +42,7 @@ import * as i18n from '../../core/i18n/i18n.js';
|
|
|
42
42
|
import * as Platform from '../../core/platform/platform.js';
|
|
43
43
|
import * as Root from '../../core/root/root.js';
|
|
44
44
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
45
|
-
import
|
|
45
|
+
import * as Protocol from '../../generated/protocol.js';
|
|
46
46
|
import * as AiAssistanceModel from '../../models/ai_assistance/ai_assistance.js';
|
|
47
47
|
import * as Badges from '../../models/badges/badges.js';
|
|
48
48
|
import * as CrUXManager from '../../models/crux-manager/crux-manager.js';
|
|
@@ -1364,7 +1364,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
1364
1364
|
}
|
|
1365
1365
|
|
|
1366
1366
|
async saveToFile(config: {
|
|
1367
|
-
|
|
1367
|
+
includeResourceContent: boolean,
|
|
1368
1368
|
includeSourceMaps: boolean,
|
|
1369
1369
|
/**
|
|
1370
1370
|
* Includes many things:
|
|
@@ -1399,9 +1399,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
1399
1399
|
if (Trace.Types.Events.isAnyScriptSourceEvent(event) && event.name !== 'StubScriptCatchup') {
|
|
1400
1400
|
const mappedScript = scriptByIdMap.get(`${event.args.data.isolate}.${event.args.data.scriptId}`);
|
|
1401
1401
|
|
|
1402
|
-
|
|
1403
|
-
// extension we dont include the script content.
|
|
1404
|
-
if (!config.includeScriptContent ||
|
|
1402
|
+
if (!config.includeResourceContent ||
|
|
1405
1403
|
(mappedScript?.url && Trace.Helpers.Trace.isExtensionUrl(mappedScript.url))) {
|
|
1406
1404
|
return {
|
|
1407
1405
|
cat: event.cat,
|
|
@@ -1434,7 +1432,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
1434
1432
|
|
|
1435
1433
|
try {
|
|
1436
1434
|
await this.innerSaveToFile(traceEvents, metadata, {
|
|
1437
|
-
|
|
1435
|
+
includeResourceContent: config.includeResourceContent,
|
|
1438
1436
|
includeSourceMaps: config.includeSourceMaps,
|
|
1439
1437
|
addModifications: config.addModifications,
|
|
1440
1438
|
shouldCompress: config.shouldCompress,
|
|
@@ -1454,7 +1452,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
1454
1452
|
}
|
|
1455
1453
|
|
|
1456
1454
|
async innerSaveToFile(traceEvents: readonly Trace.Types.Events.Event[], metadata: Trace.Types.File.MetaData, config: {
|
|
1457
|
-
|
|
1455
|
+
includeResourceContent: boolean,
|
|
1458
1456
|
includeSourceMaps: boolean,
|
|
1459
1457
|
addModifications: boolean,
|
|
1460
1458
|
shouldCompress: boolean,
|
|
@@ -1464,9 +1462,9 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
1464
1462
|
Platform.DateUtilities.toISO8601Compact(metadata.startTime ? new Date(metadata.startTime) : new Date());
|
|
1465
1463
|
|
|
1466
1464
|
const isCpuProfile = metadata.dataOrigin === Trace.Types.File.DataOrigin.CPU_PROFILE;
|
|
1467
|
-
const {
|
|
1465
|
+
const {includeResourceContent, includeSourceMaps} = config;
|
|
1468
1466
|
metadata.enhancedTraceVersion =
|
|
1469
|
-
|
|
1467
|
+
includeResourceContent ? SDK.EnhancedTracesParser.EnhancedTracesParser.enhancedTraceVersion : undefined;
|
|
1470
1468
|
|
|
1471
1469
|
let fileName =
|
|
1472
1470
|
(isCpuProfile ? `CPU-${isoDate}.cpuprofile` : `Trace-${isoDate}.json`) as Platform.DevToolsPath.RawPathString;
|
|
@@ -1477,10 +1475,12 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
1477
1475
|
blobParts = [JSON.stringify(profile)];
|
|
1478
1476
|
} else {
|
|
1479
1477
|
const filteredMetadataSourceMaps =
|
|
1480
|
-
|
|
1478
|
+
includeResourceContent && includeSourceMaps ? this.#filterMetadataSourceMaps(metadata) : undefined;
|
|
1479
|
+
const filteredResources = includeResourceContent ? this.#filterMetadataResoures(metadata) : undefined;
|
|
1481
1480
|
const formattedTraceIter = traceJsonGenerator(traceEvents, {
|
|
1482
1481
|
...metadata,
|
|
1483
1482
|
sourceMaps: filteredMetadataSourceMaps,
|
|
1483
|
+
resources: filteredResources,
|
|
1484
1484
|
});
|
|
1485
1485
|
blobParts = Array.from(formattedTraceIter);
|
|
1486
1486
|
}
|
|
@@ -1531,7 +1531,7 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
1531
1531
|
this.saveButton.element as TimelineComponents.ExportTraceOptions.ExportTraceOptions;
|
|
1532
1532
|
const state = exportTraceOptionsElement.state;
|
|
1533
1533
|
await this.saveToFile({
|
|
1534
|
-
|
|
1534
|
+
includeResourceContent: state.includeResourceContent,
|
|
1535
1535
|
includeSourceMaps: state.includeSourceMaps,
|
|
1536
1536
|
addModifications: state.includeAnnotations,
|
|
1537
1537
|
shouldCompress: state.shouldCompress,
|
|
@@ -1550,6 +1550,14 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
1550
1550
|
});
|
|
1551
1551
|
}
|
|
1552
1552
|
|
|
1553
|
+
#filterMetadataResoures(metadata: Trace.Types.File.MetaData): Trace.Types.File.MetadataResource[]|undefined {
|
|
1554
|
+
if (!metadata.resources) {
|
|
1555
|
+
return undefined;
|
|
1556
|
+
}
|
|
1557
|
+
|
|
1558
|
+
return metadata.resources;
|
|
1559
|
+
}
|
|
1560
|
+
|
|
1553
1561
|
#showExportTraceErrorDialog(error: Error): void {
|
|
1554
1562
|
if (this.statusDialog) {
|
|
1555
1563
|
this.statusDialog.remove();
|
|
@@ -2744,6 +2752,45 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
2744
2752
|
};
|
|
2745
2753
|
}
|
|
2746
2754
|
|
|
2755
|
+
async #retainResourceContentsForEnhancedTrace(
|
|
2756
|
+
parsedTrace: Trace.TraceModel.ParsedTrace, metadata: Trace.Types.File.MetaData): Promise<void> {
|
|
2757
|
+
// Scripts are already stored as trace events.
|
|
2758
|
+
const resourceTypesToRetain =
|
|
2759
|
+
new Set([Protocol.Network.ResourceType.Document, Protocol.Network.ResourceType.Stylesheet]);
|
|
2760
|
+
|
|
2761
|
+
for (const request of parsedTrace.data.NetworkRequests.byId.values()) {
|
|
2762
|
+
if (!resourceTypesToRetain.has(request.args.data.resourceType)) {
|
|
2763
|
+
continue;
|
|
2764
|
+
}
|
|
2765
|
+
|
|
2766
|
+
const url = request.args.data.url as Platform.DevToolsPath.UrlString;
|
|
2767
|
+
const resource = SDK.ResourceTreeModel.ResourceTreeModel.resourceForURL(url);
|
|
2768
|
+
if (!resource) {
|
|
2769
|
+
continue;
|
|
2770
|
+
}
|
|
2771
|
+
|
|
2772
|
+
const content = await resource.requestContentData();
|
|
2773
|
+
if ('error' in content) {
|
|
2774
|
+
continue;
|
|
2775
|
+
}
|
|
2776
|
+
|
|
2777
|
+
if (!content.isTextContent) {
|
|
2778
|
+
continue;
|
|
2779
|
+
}
|
|
2780
|
+
|
|
2781
|
+
if (!metadata.resources) {
|
|
2782
|
+
metadata.resources = [];
|
|
2783
|
+
}
|
|
2784
|
+
|
|
2785
|
+
metadata.resources.push({
|
|
2786
|
+
url,
|
|
2787
|
+
frame: resource.frameId ?? '',
|
|
2788
|
+
content: content.text,
|
|
2789
|
+
mimeType: content.mimeType,
|
|
2790
|
+
});
|
|
2791
|
+
}
|
|
2792
|
+
}
|
|
2793
|
+
|
|
2747
2794
|
async #executeNewTrace(
|
|
2748
2795
|
collectedEvents: Trace.Types.Events.Event[], isFreshRecording: boolean,
|
|
2749
2796
|
metadata: Trace.Types.File.MetaData|null): Promise<void> {
|
|
@@ -2772,11 +2819,13 @@ export class TimelinePanel extends Common.ObjectWrapper.eventMixin<EventTypes, t
|
|
|
2772
2819
|
|
|
2773
2820
|
// Store all source maps on the trace metadata.
|
|
2774
2821
|
// If not fresh, we can't validate the maps are still accurate.
|
|
2822
|
+
// Also handle HTML content.
|
|
2775
2823
|
if (isFreshRecording && metadata) {
|
|
2776
2824
|
const traceIndex = this.#traceEngineModel.lastTraceIndex();
|
|
2777
2825
|
const parsedTrace = this.#traceEngineModel.parsedTrace(traceIndex);
|
|
2778
2826
|
if (parsedTrace) {
|
|
2779
2827
|
await this.#retainSourceMapsForEnhancedTrace(parsedTrace, metadata);
|
|
2828
|
+
await this.#retainResourceContentsForEnhancedTrace(parsedTrace, metadata);
|
|
2780
2829
|
}
|
|
2781
2830
|
}
|
|
2782
2831
|
}
|