chrome-devtools-frontend 1.0.951410 → 1.0.952713
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 +3 -0
- package/extension-api/ExtensionAPI.d.ts +1 -1
- package/front_end/.eslintrc.js +6 -0
- package/front_end/Tests.js +10 -0
- package/front_end/core/common/App.ts +0 -3
- package/front_end/core/common/AppProvider.ts +0 -3
- package/front_end/core/common/JavaScriptMetaData.ts +0 -3
- package/front_end/core/common/QueryParamHandler.ts +0 -3
- package/front_end/core/common/Runnable.ts +0 -3
- package/front_end/core/common/SimpleHistoryManager.ts +0 -3
- package/front_end/core/host/UserMetrics.ts +2 -1
- package/front_end/core/i18n/locales/en-US.json +3 -0
- package/front_end/core/i18n/locales/en-XL.json +3 -0
- package/front_end/core/root/Runtime.ts +4 -12
- package/front_end/core/sdk/OverlayPersistentHighlighter.ts +0 -12
- package/front_end/core/sdk/PageResourceLoader.ts +2 -1
- package/front_end/core/sdk/TracingManager.ts +0 -3
- package/front_end/entrypoints/formatter_worker/AcornTokenizer.ts +39 -39
- package/front_end/entrypoints/formatter_worker/CSSFormatter.ts +54 -54
- package/front_end/entrypoints/formatter_worker/ESTreeWalker.ts +20 -20
- package/front_end/entrypoints/formatter_worker/FormattedContentBuilder.ts +54 -54
- package/front_end/entrypoints/formatter_worker/HTMLFormatter.ts +145 -144
- package/front_end/entrypoints/formatter_worker/JavaScriptFormatter.ts +40 -40
- package/front_end/entrypoints/heap_snapshot_worker/AllocationProfile.ts +64 -69
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +203 -203
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshotLoader.ts +109 -108
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshotWorkerDispatcher.ts +17 -17
- package/front_end/entrypoints/inspector_main/InspectorMain.ts +30 -30
- package/front_end/entrypoints/inspector_main/RenderingOptions.ts +25 -25
- package/front_end/entrypoints/main/ExecutionContextSelector.ts +52 -55
- package/front_end/entrypoints/main/MainImpl.ts +49 -49
- package/front_end/entrypoints/node_app/NodeConnectionsPanel.ts +43 -43
- package/front_end/entrypoints/node_app/NodeMain.ts +38 -38
- package/front_end/generated/InspectorBackendCommands.js +5 -1
- package/front_end/generated/protocol.d.ts +16 -0
- package/front_end/legacy/legacy-defs.d.ts +0 -21
- package/front_end/models/bindings/CSSWorkspaceBinding.ts +0 -3
- package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +0 -3
- package/front_end/models/bindings/FileUtils.ts +0 -3
- package/front_end/models/extensions/ExtensionAPI.ts +2 -1
- package/front_end/models/extensions/ExtensionTraceProvider.ts +0 -3
- package/front_end/models/heap_snapshot_model/HeapSnapshotModel.ts +1 -1
- package/front_end/models/issues_manager/ClientHintIssue.ts +95 -0
- package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +6 -6
- package/front_end/models/issues_manager/ContrastCheckTrigger.ts +15 -15
- package/front_end/models/issues_manager/CorsIssue.ts +9 -9
- package/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.ts +5 -5
- package/front_end/models/issues_manager/DeprecationIssue.ts +7 -7
- package/front_end/models/issues_manager/GenericIssue.ts +5 -5
- package/front_end/models/issues_manager/HeavyAdIssue.ts +5 -5
- package/front_end/models/issues_manager/Issue.ts +10 -10
- package/front_end/models/issues_manager/IssueResolver.ts +11 -10
- package/front_end/models/issues_manager/IssuesManager.ts +61 -56
- package/front_end/models/issues_manager/LowTextContrastIssue.ts +4 -4
- package/front_end/models/issues_manager/MixedContentIssue.ts +7 -7
- package/front_end/models/issues_manager/NavigatorUserAgentIssue.ts +7 -7
- package/front_end/models/issues_manager/QuirksModeIssue.ts +4 -4
- package/front_end/models/issues_manager/SameSiteCookieIssue.ts +16 -16
- package/front_end/models/issues_manager/SharedArrayBufferIssue.ts +5 -5
- package/front_end/models/issues_manager/SourceFrameIssuesManager.ts +32 -31
- package/front_end/models/issues_manager/TrustedWebActivityIssue.ts +5 -5
- package/front_end/models/issues_manager/WasmCrossOriginModuleSharingIssue.ts +5 -5
- package/front_end/models/issues_manager/descriptions/clientHintMetaTagAllowListInvalidOrigin.md +4 -0
- package/front_end/models/issues_manager/descriptions/clientHintMetaTagModifiedHTML.md +4 -0
- package/front_end/models/issues_manager/issues_manager.ts +2 -0
- package/front_end/models/timeline_model/TimelineModel.ts +1 -1
- package/front_end/panels/application/components/BackForwardCacheView.ts +33 -33
- package/front_end/panels/application/components/EndpointsGrid.ts +12 -12
- package/front_end/panels/application/components/FrameDetailsView.ts +108 -110
- package/front_end/panels/application/components/OriginTrialTreeView.ts +45 -45
- package/front_end/panels/application/components/PermissionsPolicySection.ts +19 -19
- package/front_end/panels/application/components/ReportsGrid.ts +30 -30
- package/front_end/panels/application/components/StackTrace.ts +48 -47
- package/front_end/panels/application/components/TrustTokensView.ts +31 -31
- package/front_end/panels/console/ConsoleView.ts +1 -1
- package/front_end/panels/console/ConsoleViewMessage.ts +1 -25
- package/front_end/panels/console/consoleView.css +5 -0
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +41 -52
- package/front_end/panels/css_overview/CSSOverviewController.ts +2 -2
- package/front_end/panels/css_overview/CSSOverviewPanel.ts +18 -27
- package/front_end/panels/css_overview/CSSOverviewProcessingView.ts +2 -2
- package/front_end/panels/css_overview/CSSOverviewSidebarPanel.ts +6 -6
- package/front_end/panels/css_overview/components/CSSOverviewStartView.ts +4 -4
- package/front_end/panels/elements/ElementsTreeElement.ts +2 -6
- package/front_end/panels/elements/components/AccessibilityTreeNode.ts +17 -17
- package/front_end/panels/elements/components/AdornerManager.ts +21 -21
- package/front_end/panels/elements/components/AdornerSettingsPane.ts +14 -14
- package/front_end/panels/elements/components/CSSQuery.ts +16 -16
- package/front_end/panels/elements/components/ComputedStyleProperty.ts +14 -14
- package/front_end/panels/elements/components/ComputedStyleTrace.ts +15 -15
- package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +78 -78
- package/front_end/panels/elements/components/ElementsPanelLink.ts +16 -16
- package/front_end/panels/elements/components/LayoutPane.ts +47 -47
- package/front_end/panels/elements/components/NodeText.ts +18 -18
- package/front_end/panels/elements/components/QueryContainer.ts +40 -40
- package/front_end/panels/elements/components/StylePropertyEditor.ts +18 -18
- package/front_end/panels/emulation/components/DeviceSizeInputElement.ts +4 -4
- package/front_end/panels/event_listeners/EventListenersUtils.ts +2 -1
- package/front_end/panels/issues/AffectedBlockedByResponseView.ts +4 -4
- package/front_end/panels/issues/AffectedCookiesView.ts +4 -5
- package/front_end/panels/issues/AffectedDirectivesView.ts +19 -19
- package/front_end/panels/issues/AffectedDocumentsInQuirksModeView.ts +7 -8
- package/front_end/panels/issues/AffectedElementsView.ts +4 -4
- package/front_end/panels/issues/AffectedElementsWithLowContrastView.ts +7 -8
- package/front_end/panels/issues/AffectedHeavyAdView.ts +8 -8
- package/front_end/panels/issues/AffectedResourcesView.ts +25 -26
- package/front_end/panels/issues/AffectedSharedArrayBufferIssueDetailsView.ts +8 -8
- package/front_end/panels/issues/AffectedSourcesView.ts +4 -4
- package/front_end/panels/issues/AffectedTrustedWebActivityIssueDetailsView.ts +4 -4
- package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +17 -17
- package/front_end/panels/issues/CSPViolationsListView.ts +22 -23
- package/front_end/panels/issues/CSPViolationsView.ts +17 -17
- package/front_end/panels/issues/ComboBoxOfCheckBoxes.ts +13 -13
- package/front_end/panels/issues/CorsIssueDetailsView.ts +23 -23
- package/front_end/panels/issues/GenericIssueDetailsView.ts +4 -4
- package/front_end/panels/issues/HiddenIssuesRow.ts +7 -7
- package/front_end/panels/issues/IssueAggregator.ts +95 -95
- package/front_end/panels/issues/IssueKindView.ts +14 -14
- package/front_end/panels/issues/IssueView.ts +98 -98
- package/front_end/panels/issues/IssuesPane.ts +102 -102
- package/front_end/panels/issues/WasmCrossOriginModuleSharingAffectedResourcesView.ts +5 -5
- package/front_end/panels/issues/components/HideIssuesMenu.ts +10 -10
- package/front_end/panels/media/PlayerListView.ts +160 -97
- package/front_end/panels/media/PlayerMessagesView.ts +1 -0
- package/front_end/panels/media/playerListView.css +58 -0
- package/front_end/panels/network/NetworkLogView.ts +2 -6
- package/front_end/panels/network/NetworkWaterfallColumn.ts +2 -4
- package/front_end/panels/network/components/RequestTrustTokensView.ts +40 -40
- package/front_end/panels/network/components/WebBundleInfoView.ts +9 -9
- package/front_end/panels/performance_monitor/PerformanceMonitor.ts +92 -37
- package/front_end/panels/performance_monitor/performanceMonitor.css +32 -0
- package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +2 -2
- package/front_end/panels/search/SearchConfig.ts +0 -6
- package/front_end/panels/settings/KeybindsSettingsTab.ts +4 -0
- package/front_end/panels/settings/components/SyncSection.ts +14 -14
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +96 -96
- package/front_end/panels/sources/BreakpointEditDialog.ts +4 -3
- package/front_end/panels/sources/NavigatorView.ts +3 -9
- package/front_end/panels/sources/SourceMapNamesResolver.ts +3 -3
- package/front_end/panels/sources/SourcesPanel.ts +1 -3
- package/front_end/panels/sources/SourcesView.ts +0 -3
- package/front_end/panels/sources/TabbedEditorContainer.ts +0 -3
- package/front_end/panels/timeline/TimelineFlameChartView.ts +1 -1
- package/front_end/panels/timeline/TimelineLoader.ts +0 -3
- package/front_end/panels/timeline/TimelineTreeView.ts +1 -1
- package/front_end/panels/timeline/components/WebVitalsLane.ts +77 -76
- package/front_end/panels/timeline/components/WebVitalsTimeline.ts +133 -133
- package/front_end/panels/timeline/components/WebVitalsTooltip.ts +9 -9
- package/front_end/panels/webauthn/WebauthnPane.ts +203 -205
- package/front_end/third_party/codemirror.next/bundle.ts +3 -3
- package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/markdown.js +2 -1
- package/front_end/third_party/codemirror.next/codemirror.next.d.ts +10 -1
- package/front_end/third_party/codemirror.next/codemirror.next.js +2 -1
- package/front_end/third_party/codemirror.next/package.json +3 -3
- package/front_end/third_party/diff/DiffWrapper.ts +7 -0
- package/front_end/ui/components/adorners/Adorner.ts +2 -2
- package/front_end/ui/components/buttons/Button.ts +9 -9
- package/front_end/ui/components/data_grid/DataGrid.ts +64 -64
- package/front_end/ui/components/data_grid/DataGridController.ts +22 -22
- package/front_end/ui/components/data_grid/DataGridUtils.ts +3 -0
- package/front_end/ui/components/diff_view/DiffView.ts +6 -6
- package/front_end/ui/components/expandable_list/ExpandableList.ts +5 -5
- package/front_end/ui/components/icon_button/Icon.ts +4 -4
- package/front_end/ui/components/icon_button/IconButton.ts +4 -4
- package/front_end/ui/components/issue_counter/IssueCounter.ts +3 -3
- package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +11 -11
- package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspector.ts +50 -50
- package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorController.ts +6 -6
- package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorPane.ts +4 -4
- package/front_end/ui/components/linear_memory_inspector/LinearMemoryNavigator.ts +12 -12
- package/front_end/ui/components/linear_memory_inspector/LinearMemoryValueInterpreter.ts +11 -11
- package/front_end/ui/components/linear_memory_inspector/LinearMemoryViewer.ts +40 -39
- package/front_end/ui/components/linear_memory_inspector/ValueInterpreterDisplay.ts +18 -18
- package/front_end/ui/components/linear_memory_inspector/ValueInterpreterSettings.ts +6 -6
- package/front_end/ui/components/linkifier/LinkifierImpl.ts +4 -4
- package/front_end/ui/components/markdown_view/MarkdownImage.ts +5 -5
- package/front_end/ui/components/markdown_view/MarkdownLink.ts +2 -2
- package/front_end/ui/components/markdown_view/MarkdownView.ts +4 -4
- package/front_end/ui/components/panel_feedback/FeedbackButton.ts +2 -2
- package/front_end/ui/components/panel_feedback/PanelFeedback.ts +2 -2
- package/front_end/ui/components/panel_feedback/PreviewToggle.ts +4 -4
- package/front_end/ui/components/render_coordinator/RenderCoordinator.ts +22 -22
- package/front_end/ui/components/report_view/ReportView.ts +16 -16
- package/front_end/ui/components/request_link_icon/RequestLinkIcon.ts +14 -14
- package/front_end/ui/components/settings/SettingCheckbox.ts +5 -5
- package/front_end/ui/components/survey_link/SurveyLink.ts +8 -8
- package/front_end/ui/components/text_editor/TextEditor.ts +9 -9
- package/front_end/ui/components/text_editor/cursor_tooltip.ts +7 -1
- package/front_end/ui/components/text_prompt/TextPrompt.ts +18 -18
- package/front_end/ui/components/tree_outline/TreeOutline.ts +69 -70
- package/front_end/ui/legacy/ContextFlavorListener.ts +0 -4
- package/front_end/ui/legacy/SearchableView.ts +13 -4
- package/front_end/ui/legacy/SuggestBox.ts +0 -3
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +6 -6
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +0 -3
- package/front_end/ui/legacy/components/source_frame/JSONView.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +13 -12
- package/front_end/ui/legacy/components/source_frame/XMLView.ts +2 -2
- package/front_end/ui/legacy/themeColors.css +2 -0
- package/front_end/ui/legacy/theme_support/theme_support_impl.ts +34 -7
- package/package.json +1 -1
- package/scripts/eslint_rules/lib/use_private_class_members.js +41 -0
- package/scripts/eslint_rules/tests/use_private_class_members_test.js +62 -0
- package/scripts/migration/class-fields/migrate.js +2 -3
- package/scripts/migration/class-fields/migrate.sh +1 -3
- package/scripts/migration/class-fields/package.json +1 -1
- package/config/gni/all_devtools_files.gni +0 -255
- package/scripts/build/devtools_file_hashes.py +0 -82
- package/scripts/devtools_run/devtools_run_cli +0 -49
- package/scripts/devtools_run/package.json +0 -13
- package/scripts/unzip.py +0 -20
- package/scripts/visualize_deps/jquery_svg.html +0 -57
- package/scripts/visualize_deps/run_visualize.js +0 -119
|
@@ -45,123 +45,196 @@ export interface PlayerStatusMapElement {
|
|
|
45
45
|
playerTitleElement: HTMLElement|null;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
export class
|
|
49
|
-
|
|
50
|
-
private readonly
|
|
51
|
-
private readonly
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
59
|
-
|
|
60
|
-
|
|
48
|
+
export class PlayerListView extends UI.Widget.VBox implements TriggerDispatcher {
|
|
49
|
+
private readonly playerEntryFragments: Map<string, UI.Fragment.Fragment>;
|
|
50
|
+
private readonly playerEntriesWithHostnameFrameTitle: Set<string>;
|
|
51
|
+
private readonly mainContainer: MainView;
|
|
52
|
+
private currentlySelectedEntry: Element|null;
|
|
53
|
+
|
|
54
|
+
constructor(mainContainer: MainView) {
|
|
55
|
+
super(true);
|
|
56
|
+
|
|
57
|
+
this.playerEntryFragments = new Map();
|
|
58
|
+
this.playerEntriesWithHostnameFrameTitle = new Set();
|
|
59
|
+
|
|
60
|
+
// Container where new panels can be added based on clicks.
|
|
61
|
+
this.mainContainer = mainContainer;
|
|
62
|
+
|
|
63
|
+
this.currentlySelectedEntry = null;
|
|
64
|
+
this.contentElement.createChild('div', 'player-entry-header').textContent = i18nString(UIStrings.players);
|
|
61
65
|
}
|
|
62
66
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
67
|
+
private createPlayerListEntry(playerID: string): UI.Fragment.Fragment {
|
|
68
|
+
const entry = UI.Fragment.Fragment.build`
|
|
69
|
+
<div class="player-entry-row hbox">
|
|
70
|
+
<div class="player-entry-status-icon vbox">
|
|
71
|
+
<div $="icon" class="player-entry-status-icon-centering"></div>
|
|
72
|
+
</div>
|
|
73
|
+
<div $="frame-title" class="player-entry-frame-title">FrameTitle</div>
|
|
74
|
+
<div $="player-title" class="player-entry-player-title">PlayerTitle</div>
|
|
75
|
+
</div>
|
|
76
|
+
`;
|
|
77
|
+
const element = entry.element();
|
|
78
|
+
|
|
79
|
+
element.addEventListener('click', this.selectPlayer.bind(this, playerID, element));
|
|
80
|
+
element.addEventListener('contextmenu', this.rightClickPlayer.bind(this, playerID));
|
|
81
|
+
|
|
82
|
+
entry.$('icon').appendChild(UI.Icon.Icon.create('largeicon-pause-animation', 'media-player'));
|
|
83
|
+
return entry;
|
|
66
84
|
}
|
|
67
85
|
|
|
68
|
-
private
|
|
86
|
+
private selectPlayer(playerID: string, element: Element): void {
|
|
87
|
+
this.mainContainer.renderMainPanel(playerID);
|
|
88
|
+
if (this.currentlySelectedEntry !== null) {
|
|
89
|
+
this.currentlySelectedEntry.classList.remove('selected');
|
|
90
|
+
}
|
|
91
|
+
element.classList.add('selected');
|
|
92
|
+
this.currentlySelectedEntry = element;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
private rightClickPlayer(playerID: string, event: Event): boolean {
|
|
69
96
|
const contextMenu = new UI.ContextMenu.ContextMenu(event);
|
|
70
|
-
contextMenu.headerSection().appendItem(
|
|
71
|
-
|
|
72
|
-
contextMenu.headerSection().appendItem(
|
|
97
|
+
contextMenu.headerSection().appendItem(
|
|
98
|
+
i18nString(UIStrings.hidePlayer), this.mainContainer.markPlayerForDeletion.bind(this.mainContainer, playerID));
|
|
99
|
+
contextMenu.headerSection().appendItem(
|
|
100
|
+
i18nString(UIStrings.hideAllOthers),
|
|
101
|
+
this.mainContainer.markOtherPlayersForDeletion.bind(this.mainContainer, playerID));
|
|
102
|
+
contextMenu.headerSection().appendItem(
|
|
103
|
+
i18nString(UIStrings.savePlayerInfo), this.mainContainer.exportPlayerData.bind(this.mainContainer, playerID));
|
|
73
104
|
contextMenu.show();
|
|
74
105
|
return true;
|
|
75
106
|
}
|
|
76
107
|
|
|
77
|
-
private
|
|
78
|
-
|
|
79
|
-
|
|
108
|
+
private setMediaElementFrameTitle(playerID: string, frameTitle: string, isHostname: boolean): void {
|
|
109
|
+
// Only remove the title from the set if we arent setting a hostname title.
|
|
110
|
+
// Otherwise, if it has a non-hostname title, and the requested new title is
|
|
111
|
+
// a hostname, just drop it.
|
|
112
|
+
if (this.playerEntriesWithHostnameFrameTitle.has(playerID)) {
|
|
113
|
+
if (!isHostname) {
|
|
114
|
+
this.playerEntriesWithHostnameFrameTitle.delete(playerID);
|
|
115
|
+
}
|
|
116
|
+
} else if (isHostname) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
80
119
|
|
|
81
|
-
|
|
82
|
-
|
|
120
|
+
if (!this.playerEntryFragments.has(playerID)) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const fragment = this.playerEntryFragments.get(playerID);
|
|
124
|
+
if (fragment === undefined || fragment.element() === undefined) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
fragment.$('frame-title').textContent = frameTitle;
|
|
83
128
|
}
|
|
84
129
|
|
|
85
|
-
private
|
|
86
|
-
this.
|
|
130
|
+
private setMediaElementPlayerTitle(playerID: string, playerTitle: string): void {
|
|
131
|
+
if (!this.playerEntryFragments.has(playerID)) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const fragment = this.playerEntryFragments.get(playerID);
|
|
135
|
+
if (fragment === undefined) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
fragment.$('player-title').textContent = playerTitle;
|
|
87
139
|
}
|
|
88
|
-
}
|
|
89
140
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
141
|
+
private setMediaElementPlayerIcon(playerID: string, iconName: string): void {
|
|
142
|
+
if (!this.playerEntryFragments.has(playerID)) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const fragment = this.playerEntryFragments.get(playerID);
|
|
146
|
+
if (fragment === undefined) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const icon = fragment.$('icon');
|
|
150
|
+
if (icon === undefined) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
icon.textContent = '';
|
|
154
|
+
icon.appendChild(UI.Icon.Icon.create(iconName, 'media-player'));
|
|
155
|
+
}
|
|
103
156
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
157
|
+
private formatAndEvaluate(playerID: string, func: Function, candidate: string, min: number, max: number): void {
|
|
158
|
+
if (candidate.length <= min) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
if (candidate.length >= max) {
|
|
162
|
+
candidate = candidate.substring(0, max - 3) + '...';
|
|
163
|
+
}
|
|
164
|
+
func.bind(this)(playerID, candidate);
|
|
165
|
+
}
|
|
107
166
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
this.
|
|
167
|
+
addMediaElementItem(playerID: string): void {
|
|
168
|
+
const sidebarEntry = this.createPlayerListEntry(playerID);
|
|
169
|
+
this.contentElement.appendChild(sidebarEntry.element());
|
|
170
|
+
this.playerEntryFragments.set(playerID, sidebarEntry);
|
|
171
|
+
this.playerEntriesWithHostnameFrameTitle.add(playerID);
|
|
111
172
|
}
|
|
112
173
|
|
|
113
174
|
deletePlayer(playerID: string): void {
|
|
114
|
-
|
|
115
|
-
|
|
175
|
+
if (!this.playerEntryFragments.has(playerID)) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
const fragment = this.playerEntryFragments.get(playerID);
|
|
179
|
+
if (fragment === undefined || fragment.element() === undefined) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
this.contentElement.removeChild(fragment.element());
|
|
183
|
+
this.playerEntryFragments.delete(playerID);
|
|
116
184
|
}
|
|
117
185
|
|
|
118
|
-
|
|
119
|
-
const
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
186
|
+
onEvent(playerID: string, event: PlayerEvent): void {
|
|
187
|
+
const parsed = JSON.parse(event.value);
|
|
188
|
+
const eventType = parsed.event;
|
|
189
|
+
|
|
190
|
+
// Load events provide the actual underlying URL for the video, which makes
|
|
191
|
+
// a great way to identify a specific video within a page that potentially
|
|
192
|
+
// may have many videos. MSE videos have a special blob:http(s) protocol
|
|
193
|
+
// that we'd like to keep mind of, so we do prepend blob:
|
|
194
|
+
if (eventType === 'kLoad') {
|
|
195
|
+
const url = parsed.url as string;
|
|
196
|
+
const videoName = url.substring(url.lastIndexOf('/') + 1);
|
|
197
|
+
this.formatAndEvaluate(playerID, this.setMediaElementPlayerTitle, videoName, 1, 20);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
126
200
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
this.playerList.appendChild(playerElement);
|
|
132
|
-
}
|
|
201
|
+
if (eventType === 'kPlay') {
|
|
202
|
+
this.setMediaElementPlayerIcon(playerID, 'largeicon-play-animation');
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
133
205
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
if (sidebarEntry && (!isTitleExtractedFromUrl || sidebarEntry.titleFromUrl)) {
|
|
138
|
-
sidebarEntry.title = newTitle;
|
|
139
|
-
sidebarEntry.titleFromUrl = isTitleExtractedFromUrl;
|
|
140
|
-
}
|
|
206
|
+
if (eventType === 'kPause' || eventType === 'kEnded') {
|
|
207
|
+
this.setMediaElementPlayerIcon(playerID, 'largeicon-pause-animation');
|
|
208
|
+
return;
|
|
141
209
|
}
|
|
142
|
-
}
|
|
143
210
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
if (!sidebarEntry) {
|
|
148
|
-
throw new Error('sidebarEntry is expected to not be null');
|
|
149
|
-
}
|
|
150
|
-
sidebarEntry.setLeadingIcons([UI.Icon.Icon.create(iconName, 'media-player')]);
|
|
211
|
+
if (eventType === 'kWebMediaPlayerDestroyed') {
|
|
212
|
+
this.setMediaElementPlayerIcon(playerID, 'smallicon-videoplayer-destroyed');
|
|
213
|
+
return;
|
|
151
214
|
}
|
|
152
215
|
}
|
|
153
216
|
|
|
154
217
|
onProperty(playerID: string, property: Protocol.Media.PlayerProperty): void {
|
|
155
|
-
//
|
|
156
|
-
// by the
|
|
157
|
-
|
|
158
|
-
|
|
218
|
+
// FrameUrl is always present, and we can generate a basic frame title from
|
|
219
|
+
// it by grabbing the hostname. It's not possible to generate a "good" player
|
|
220
|
+
// title from the FrameUrl though, since the page location itself might not
|
|
221
|
+
// have any relevance to the video being played, and would be shared by all
|
|
222
|
+
// videos on the page.
|
|
223
|
+
if (property.name === PlayerPropertyKeys.FrameUrl) {
|
|
224
|
+
const frameTitle = new URL(property.value).hostname;
|
|
225
|
+
this.formatAndEvaluate(playerID, this.setMediaElementFrameTitle, frameTitle, 1, 20);
|
|
226
|
+
return;
|
|
159
227
|
}
|
|
160
228
|
|
|
161
|
-
//
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
229
|
+
// On the other hand, the page may set a title, which usually makes for a
|
|
230
|
+
// better frame title than a hostname. Unfortunately, its only "usually",
|
|
231
|
+
// since the site is free to set the title to _anything_, it might just be
|
|
232
|
+
// junk, or it might be super long. If it's empty, or 1 character, It's
|
|
233
|
+
// preferable to just drop it. Titles longer than 20 will have the first
|
|
234
|
+
// 17 characters kept and an elipsis appended.
|
|
235
|
+
if (property.name === PlayerPropertyKeys.FrameTitle && property.value) {
|
|
236
|
+
this.formatAndEvaluate(playerID, this.setMediaElementFrameTitle, property.value, 1, 20);
|
|
237
|
+
return;
|
|
165
238
|
}
|
|
166
239
|
}
|
|
167
240
|
|
|
@@ -173,18 +246,8 @@ export class PlayerListView extends UI.Widget.VBox implements TriggerDispatcher
|
|
|
173
246
|
// TODO(tmathmeyer) show a message count number next to the player name.
|
|
174
247
|
}
|
|
175
248
|
|
|
176
|
-
onEvent(playerID: string, event: PlayerEvent): void {
|
|
177
|
-
const eventType = JSON.parse(event.value).event;
|
|
178
|
-
if (eventType === 'kPlay') {
|
|
179
|
-
this.setMediaElementPlayerIcon(playerID, 'largeicon-play-animation');
|
|
180
|
-
} else if (eventType === 'kPause') {
|
|
181
|
-
this.setMediaElementPlayerIcon(playerID, 'largeicon-pause-animation');
|
|
182
|
-
} else if (eventType === 'kWebMediaPlayerDestroyed') {
|
|
183
|
-
this.setMediaElementPlayerIcon(playerID, 'smallicon-videoplayer-destroyed');
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
249
|
wasShown(): void {
|
|
187
250
|
super.wasShown();
|
|
188
|
-
this.
|
|
251
|
+
this.registerCSSFiles([playerListViewStyles]);
|
|
189
252
|
}
|
|
190
253
|
}
|
|
@@ -317,6 +317,7 @@ export class PlayerMessagesView extends UI.Widget.VBox {
|
|
|
317
317
|
this.bodyPanel.createChild('div', 'media-messages-message-container media-message-' + message.level);
|
|
318
318
|
UI.UIUtils.createTextChild(container, message.message);
|
|
319
319
|
}
|
|
320
|
+
|
|
320
321
|
wasShown(): void {
|
|
321
322
|
super.wasShown();
|
|
322
323
|
this.registerCSSFiles([playerMessagesViewStyles]);
|
|
@@ -20,3 +20,61 @@ li.storage-group-list-item:not(:first-child) {
|
|
|
20
20
|
li.storage-group-list-item::before {
|
|
21
21
|
display: none;
|
|
22
22
|
}
|
|
23
|
+
|
|
24
|
+
.player-entry-row {
|
|
25
|
+
height: 26px;
|
|
26
|
+
min-height: 26px;
|
|
27
|
+
line-height: 26px;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.player-entry-status-icon {
|
|
31
|
+
width: 28px;
|
|
32
|
+
min-width: 28px;
|
|
33
|
+
height: 26px;
|
|
34
|
+
border-right: 1px solid var(--color-details-hairline);
|
|
35
|
+
overflow: hidden;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.player-entry-status-icon-centering {
|
|
39
|
+
margin: auto;
|
|
40
|
+
display: inherit;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.player-entry-frame-title {
|
|
44
|
+
height: 26px;
|
|
45
|
+
padding: 0 10px;
|
|
46
|
+
border-right: 1px solid var(--color-details-hairline);
|
|
47
|
+
overflow: hidden;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.player-entry-player-title {
|
|
51
|
+
height: 26px;
|
|
52
|
+
padding-left: 10px;
|
|
53
|
+
overflow: hidden;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.player-entry-row:nth-child(odd) {
|
|
57
|
+
background: var(--color-background-elevation-0);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.player-entry-row:hover {
|
|
61
|
+
cursor: pointer;
|
|
62
|
+
background: var(--color-background-hover-overlay);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.player-entry-row.selected {
|
|
66
|
+
background: var(--color-primary-variant);
|
|
67
|
+
color: var(--legacy-selection-fg-color);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.player-entry-row.selected .player-entry-status-icon-centering {
|
|
71
|
+
filter: invert(100);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.player-entry-header {
|
|
75
|
+
height: 27px;
|
|
76
|
+
line-height: 27px;
|
|
77
|
+
min-height: 27px;
|
|
78
|
+
padding-left: 10px;
|
|
79
|
+
border-bottom: 1px solid var(--color-details-hairline);
|
|
80
|
+
}
|
|
@@ -2265,15 +2265,11 @@ export class NetworkLogView extends Common.ObjectWrapper.eventMixin<EventTypes,
|
|
|
2265
2265
|
}
|
|
2266
2266
|
|
|
2267
2267
|
static getDCLEventColor(): string {
|
|
2268
|
-
|
|
2269
|
-
return '#03A9F4';
|
|
2270
|
-
}
|
|
2271
|
-
return '#0867CB';
|
|
2268
|
+
return ThemeSupport.ThemeSupport.instance().getComputedValue('--color-syntax-3');
|
|
2272
2269
|
}
|
|
2273
2270
|
|
|
2274
2271
|
static getLoadEventColor(): string {
|
|
2275
|
-
return ThemeSupport.ThemeSupport.instance().
|
|
2276
|
-
'#B31412', ThemeSupport.ThemeSupport.ColorUsage.Foreground);
|
|
2272
|
+
return ThemeSupport.ThemeSupport.instance().getComputedValue('--color-syntax-1');
|
|
2277
2273
|
}
|
|
2278
2274
|
}
|
|
2279
2275
|
|
|
@@ -96,8 +96,7 @@ export class NetworkWaterfallColumn extends UI.Widget.VBox {
|
|
|
96
96
|
this.styleForWaitingResourceType = resourceStyleTuple[0];
|
|
97
97
|
this.styleForDownloadingResourceType = resourceStyleTuple[1];
|
|
98
98
|
|
|
99
|
-
const baseLineColor =
|
|
100
|
-
ThemeSupport.ThemeSupport.instance().patchColorText('#a5a5a5', ThemeSupport.ThemeSupport.ColorUsage.Foreground);
|
|
99
|
+
const baseLineColor = ThemeSupport.ThemeSupport.instance().getComputedValue('--color-text-disabled');
|
|
101
100
|
this.wiskerStyle = {borderColor: baseLineColor, lineWidth: 1, fillStyle: undefined};
|
|
102
101
|
this.hoverDetailsStyle = {fillStyle: baseLineColor, lineWidth: 1, borderColor: baseLineColor};
|
|
103
102
|
|
|
@@ -426,8 +425,7 @@ export class NetworkWaterfallColumn extends UI.Widget.VBox {
|
|
|
426
425
|
this.drawLayers(context, useTimingBars);
|
|
427
426
|
|
|
428
427
|
context.save();
|
|
429
|
-
context.fillStyle =
|
|
430
|
-
ThemeSupport.ThemeSupport.instance().patchColorText('#888', ThemeSupport.ThemeSupport.ColorUsage.Foreground);
|
|
428
|
+
context.fillStyle = ThemeSupport.ThemeSupport.instance().getComputedValue('--color-text-disabled');
|
|
431
429
|
for (const textData of this.textLayers) {
|
|
432
430
|
context.fillText(textData.text, textData.x, textData.y);
|
|
433
431
|
}
|
|
@@ -88,30 +88,30 @@ const str_ = i18n.i18n.registerUIStrings('panels/network/components/RequestTrust
|
|
|
88
88
|
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
89
89
|
|
|
90
90
|
export class RequestTrustTokensView extends UI.Widget.VBox {
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
readonly #reportView = new RequestTrustTokensReport();
|
|
92
|
+
readonly #request: SDK.NetworkRequest.NetworkRequest;
|
|
93
93
|
|
|
94
94
|
constructor(request: SDK.NetworkRequest.NetworkRequest) {
|
|
95
95
|
super();
|
|
96
|
-
this
|
|
96
|
+
this.#request = request;
|
|
97
97
|
|
|
98
|
-
this.contentElement.appendChild(this
|
|
98
|
+
this.contentElement.appendChild(this.#reportView);
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
wasShown(): void {
|
|
102
|
-
this
|
|
102
|
+
this.#request.addEventListener(SDK.NetworkRequest.Events.TrustTokenResultAdded, this.#refreshReportView, this);
|
|
103
103
|
|
|
104
|
-
this
|
|
104
|
+
this.#refreshReportView();
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
willHide(): void {
|
|
108
|
-
this
|
|
108
|
+
this.#request.removeEventListener(SDK.NetworkRequest.Events.TrustTokenResultAdded, this.#refreshReportView, this);
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
|
|
112
|
-
this
|
|
113
|
-
params: this
|
|
114
|
-
result: this
|
|
111
|
+
#refreshReportView(): void {
|
|
112
|
+
this.#reportView.data = {
|
|
113
|
+
params: this.#request.trustTokenParams(),
|
|
114
|
+
result: this.#request.trustTokenOperationDoneEvent(),
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
117
|
}
|
|
@@ -123,58 +123,58 @@ export interface RequestTrustTokensReportData {
|
|
|
123
123
|
|
|
124
124
|
export class RequestTrustTokensReport extends HTMLElement {
|
|
125
125
|
static readonly litTagName = LitHtml.literal`devtools-trust-token-report`;
|
|
126
|
-
|
|
127
|
-
|
|
126
|
+
readonly #shadow = this.attachShadow({mode: 'open'});
|
|
127
|
+
#trustTokenData?: Readonly<RequestTrustTokensReportData>;
|
|
128
128
|
|
|
129
129
|
set data(data: RequestTrustTokensReportData) {
|
|
130
|
-
this
|
|
131
|
-
this
|
|
130
|
+
this.#trustTokenData = data;
|
|
131
|
+
this.#render();
|
|
132
132
|
}
|
|
133
133
|
|
|
134
134
|
connectedCallback(): void {
|
|
135
|
-
this
|
|
135
|
+
this.#shadow.adoptedStyleSheets = [requestTrustTokensViewStyles];
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
-
|
|
139
|
-
if (!this
|
|
138
|
+
#render(): void {
|
|
139
|
+
if (!this.#trustTokenData) {
|
|
140
140
|
throw new Error('Trying to render a Trust Token report without providing data');
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
// Disabled until https://crbug.com/1079231 is fixed.
|
|
144
144
|
// clang-format off
|
|
145
145
|
LitHtml.render(LitHtml.html`<${ReportView.ReportView.Report.litTagName}>
|
|
146
|
-
${this
|
|
147
|
-
${this
|
|
146
|
+
${this.#renderParameterSection()}
|
|
147
|
+
${this.#renderResultSection()}
|
|
148
148
|
</${ReportView.ReportView.Report.litTagName}>
|
|
149
|
-
`, this
|
|
149
|
+
`, this.#shadow, {host: this});
|
|
150
150
|
// clang-format on
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
|
|
154
|
-
if (!this
|
|
153
|
+
#renderParameterSection(): LitHtml.TemplateResult|{} {
|
|
154
|
+
if (!this.#trustTokenData || !this.#trustTokenData.params) {
|
|
155
155
|
return LitHtml.nothing;
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
return LitHtml.html`
|
|
159
159
|
<${ReportView.ReportView.ReportSectionHeader.litTagName}>${i18nString(UIStrings.parameters)}</${
|
|
160
160
|
ReportView.ReportView.ReportSectionHeader.litTagName}>
|
|
161
|
-
${renderRowWithCodeValue(i18nString(UIStrings.type), this
|
|
162
|
-
${this
|
|
163
|
-
${this
|
|
164
|
-
${this
|
|
161
|
+
${renderRowWithCodeValue(i18nString(UIStrings.type), this.#trustTokenData.params.type.toString())}
|
|
162
|
+
${this.#renderRefreshPolicy(this.#trustTokenData.params)}
|
|
163
|
+
${this.#renderIssuers(this.#trustTokenData.params)}
|
|
164
|
+
${this.#renderIssuerAndTopLevelOriginFromResult()}
|
|
165
165
|
<${ReportView.ReportView.ReportSectionDivider.litTagName}></${
|
|
166
166
|
ReportView.ReportView.ReportSectionDivider.litTagName}>
|
|
167
167
|
`;
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
|
|
170
|
+
#renderRefreshPolicy(params: Protocol.Network.TrustTokenParams): LitHtml.TemplateResult|{} {
|
|
171
171
|
if (params.type !== Protocol.Network.TrustTokenOperationType.Redemption) {
|
|
172
172
|
return LitHtml.nothing;
|
|
173
173
|
}
|
|
174
174
|
return renderRowWithCodeValue(i18nString(UIStrings.refreshPolicy), params.refreshPolicy.toString());
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
|
|
177
|
+
#renderIssuers(params: Protocol.Network.TrustTokenParams): LitHtml.TemplateResult|{} {
|
|
178
178
|
if (!params.issuers || params.issuers.length === 0) {
|
|
179
179
|
return LitHtml.nothing;
|
|
180
180
|
}
|
|
@@ -193,18 +193,18 @@ export class RequestTrustTokensReport extends HTMLElement {
|
|
|
193
193
|
// The issuer and top level origin are technically parameters but reported in the
|
|
194
194
|
// result structure due to the timing when they are calculated in the backend.
|
|
195
195
|
// Nonetheless, we show them as part of the parameter section.
|
|
196
|
-
|
|
197
|
-
if (!this
|
|
196
|
+
#renderIssuerAndTopLevelOriginFromResult(): LitHtml.TemplateResult|{} {
|
|
197
|
+
if (!this.#trustTokenData || !this.#trustTokenData.result) {
|
|
198
198
|
return LitHtml.nothing;
|
|
199
199
|
}
|
|
200
200
|
|
|
201
201
|
return LitHtml.html`
|
|
202
|
-
${renderSimpleRowIfValuePresent(i18nString(UIStrings.topLevelOrigin), this
|
|
203
|
-
${renderSimpleRowIfValuePresent(i18nString(UIStrings.issuer), this
|
|
202
|
+
${renderSimpleRowIfValuePresent(i18nString(UIStrings.topLevelOrigin), this.#trustTokenData.result.topLevelOrigin)}
|
|
203
|
+
${renderSimpleRowIfValuePresent(i18nString(UIStrings.issuer), this.#trustTokenData.result.issuerOrigin)}`;
|
|
204
204
|
}
|
|
205
205
|
|
|
206
|
-
|
|
207
|
-
if (!this
|
|
206
|
+
#renderResultSection(): LitHtml.TemplateResult|{} {
|
|
207
|
+
if (!this.#trustTokenData || !this.#trustTokenData.result) {
|
|
208
208
|
return LitHtml.nothing;
|
|
209
209
|
}
|
|
210
210
|
return LitHtml.html`
|
|
@@ -215,19 +215,19 @@ export class RequestTrustTokensReport extends HTMLElement {
|
|
|
215
215
|
<${ReportView.ReportView.ReportValue.litTagName}>
|
|
216
216
|
<span>
|
|
217
217
|
<${IconButton.Icon.Icon.litTagName} class="status-icon"
|
|
218
|
-
.data=${getIconForStatusCode(this
|
|
218
|
+
.data=${getIconForStatusCode(this.#trustTokenData.result.status) as IconButton.Icon.IconData}>
|
|
219
219
|
</${IconButton.Icon.Icon.litTagName}>
|
|
220
|
-
<strong>${getSimplifiedStatusTextForStatusCode(this
|
|
221
|
-
${getDetailedTextForStatusCode(this
|
|
220
|
+
<strong>${getSimplifiedStatusTextForStatusCode(this.#trustTokenData.result.status)}</strong>
|
|
221
|
+
${getDetailedTextForStatusCode(this.#trustTokenData.result.status)}
|
|
222
222
|
</span>
|
|
223
223
|
</${ReportView.ReportView.ReportValue.litTagName}>
|
|
224
|
-
${this
|
|
224
|
+
${this.#renderIssuedTokenCount(this.#trustTokenData.result)}
|
|
225
225
|
<${ReportView.ReportView.ReportSectionDivider.litTagName}></${
|
|
226
226
|
ReportView.ReportView.ReportSectionDivider.litTagName}>
|
|
227
227
|
`;
|
|
228
228
|
}
|
|
229
229
|
|
|
230
|
-
|
|
230
|
+
#renderIssuedTokenCount(result: Protocol.Network.TrustTokenOperationDoneEvent): LitHtml.TemplateResult|{} {
|
|
231
231
|
if (result.type !== Protocol.Network.TrustTokenOperationType.Issuance) {
|
|
232
232
|
return LitHtml.nothing;
|
|
233
233
|
}
|
|
@@ -39,21 +39,21 @@ export class WebBundleInfoView extends UI.Widget.VBox {
|
|
|
39
39
|
|
|
40
40
|
export class WebBundleInfoElement extends HTMLElement {
|
|
41
41
|
static readonly litTagName = LitHtml.literal`devtools-web-bundle-info`;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
readonly #shadow = this.attachShadow({mode: 'open'});
|
|
43
|
+
#webBundleInfo: Readonly<SDK.NetworkRequest.WebBundleInfo>;
|
|
44
|
+
#webBundleName: Readonly<string>;
|
|
45
45
|
constructor(webBundleInfo: SDK.NetworkRequest.WebBundleInfo, webBundleName: string) {
|
|
46
46
|
super();
|
|
47
|
-
this
|
|
48
|
-
this
|
|
47
|
+
this.#webBundleInfo = webBundleInfo;
|
|
48
|
+
this.#webBundleName = webBundleName;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
connectedCallback(): void {
|
|
52
|
-
this
|
|
52
|
+
this.#shadow.adoptedStyleSheets = [webBundleInfoViewStyles];
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
render(): void {
|
|
56
|
-
const rows = this
|
|
56
|
+
const rows = this.#webBundleInfo.resourceUrls?.map(url => {
|
|
57
57
|
const mimeType = Common.ResourceType.ResourceType.mimeFromURL(url) || null;
|
|
58
58
|
const resourceType = Common.ResourceType.ResourceType.fromMimeTypeOverride(mimeType) ||
|
|
59
59
|
Common.ResourceType.ResourceType.fromMimeType(mimeType);
|
|
@@ -82,7 +82,7 @@ export class WebBundleInfoElement extends HTMLElement {
|
|
|
82
82
|
<${IconButton.Icon.Icon.litTagName} class="icon"
|
|
83
83
|
.data=${{color: '', iconName: 'resourceWebBundle', width: '16px'} as IconButton.Icon.IconData}>
|
|
84
84
|
</${IconButton.Icon.Icon.litTagName}>
|
|
85
|
-
<span>${this
|
|
85
|
+
<span>${this.#webBundleName}</span>
|
|
86
86
|
<x-link href="https://web.dev/web-bundles/#explaining-web-bundles">
|
|
87
87
|
<${IconButton.Icon.Icon.litTagName} class="icon"
|
|
88
88
|
.data=${
|
|
@@ -108,7 +108,7 @@ export class WebBundleInfoElement extends HTMLElement {
|
|
|
108
108
|
} as DataGrid.DataGrid.DataGridData}>
|
|
109
109
|
</${DataGrid.DataGrid.DataGrid.litTagName}>
|
|
110
110
|
</div>`,
|
|
111
|
-
this
|
|
111
|
+
this.#shadow);
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
|