chrome-devtools-frontend 1.0.941208 → 1.0.943182
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/WATCHLISTS +1 -1
- package/config/gni/all_devtools_files.gni +0 -64
- package/config/gni/devtools_grd_files.gni +54 -19
- package/config/gni/devtools_image_files.gni +1 -3
- package/front_end/.eslintrc.js +11 -1
- package/front_end/Images/src/{feedback_thin_16x16_icon.svg → survey_feedback_icon.svg} +1 -1
- package/front_end/Tests.js +1 -32
- package/front_end/core/common/Color.ts +5 -0
- package/front_end/core/i18n/locales/en-US.json +17 -29
- package/front_end/core/i18n/locales/en-XL.json +17 -29
- package/front_end/core/sdk/CPUProfilerModel.ts +7 -9
- package/front_end/core/sdk/ConsoleModel.ts +27 -33
- package/front_end/core/sdk/DebuggerModel.ts +4 -14
- package/front_end/core/sdk/sdk-meta.ts +17 -3
- package/front_end/entrypoints/device_mode_emulation_frame/device_mode_emulation_frame.ts +1 -1
- package/front_end/entrypoints/devtools_app/devtools_app.js +1 -1
- package/front_end/entrypoints/devtools_app/devtools_app.json +1 -12
- package/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.ts +1 -1
- package/front_end/entrypoints/heap_snapshot_worker/heap_snapshot_worker-entrypoint.ts +1 -1
- package/front_end/entrypoints/inspector/inspector.js +1 -1
- package/front_end/entrypoints/inspector/inspector.json +1 -3
- package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +2 -3
- package/front_end/entrypoints/js_app/js_app.js +1 -1
- package/front_end/entrypoints/js_app/js_app.json +1 -3
- package/front_end/entrypoints/main/MainImpl.ts +26 -0
- package/front_end/entrypoints/main/main-meta.ts +1 -2
- package/front_end/entrypoints/ndb_app/ndb_app.js +1 -1
- package/front_end/entrypoints/node_app/node_app-meta.ts +0 -2
- package/front_end/entrypoints/node_app/node_app.js +1 -1
- package/front_end/entrypoints/node_app/node_app.json +1 -3
- package/front_end/entrypoints/node_main/node_main-meta.ts +0 -1
- package/front_end/entrypoints/shell/shell.js +0 -11
- package/front_end/entrypoints/shell/shell.json +1 -5
- package/front_end/entrypoints/wasmparser_worker/wasmparser_worker-entrypoint.ts +1 -1
- package/front_end/entrypoints/worker_app/worker_app.js +1 -1
- package/front_end/entrypoints/worker_app/worker_app.json +1 -7
- package/front_end/generated/InspectorBackendCommands.js +19 -0
- package/front_end/generated/protocol-mapping.d.ts +31 -1
- package/front_end/generated/protocol-proxy-api.d.ts +34 -2
- package/front_end/generated/protocol.d.ts +81 -6
- package/front_end/legacy_test_runner/bindings_test_runner/IsolatedFilesystemTestRunner.js +2 -2
- package/front_end/legacy_test_runner/console_test_runner/console_test_runner.js +5 -1
- package/front_end/legacy_test_runner/legacy_test_runner.ts +10 -1
- package/front_end/legacy_test_runner/test_runner/TestRunner.js +3 -1
- package/front_end/models/formatter/SourceFormatter.ts +0 -10
- package/front_end/models/persistence/persistence-meta.ts +0 -1
- package/front_end/models/workspace/UISourceCode.ts +9 -42
- package/front_end/panels/accessibility/accessibility-meta.ts +0 -1
- package/front_end/panels/animation/AnimationTimeline.ts +3 -3
- package/front_end/panels/animation/animation-meta.ts +0 -1
- package/front_end/panels/application/ApplicationPanelSidebar.ts +3 -3
- package/front_end/panels/application/BackForwardCacheStrings.ts +3 -1
- package/front_end/panels/application/application-meta.ts +0 -4
- package/front_end/panels/application/components/EndpointsGrid.ts +1 -1
- package/front_end/panels/application/components/ReportsGrid.ts +1 -1
- package/front_end/panels/application/components/stackTraceRow.css +8 -0
- package/front_end/panels/browser_debugger/browser_debugger-meta.ts +1 -2
- package/front_end/panels/changes/changes-meta.ts +0 -1
- package/front_end/panels/console/ConsolePinPane.ts +23 -32
- package/front_end/panels/console/ConsoleViewMessage.ts +8 -1
- package/front_end/panels/console/console-meta.ts +0 -1
- package/front_end/panels/console_counters/console_counters-meta.ts +0 -1
- package/front_end/panels/coverage/CoverageDecorationManager.ts +4 -5
- package/front_end/panels/coverage/CoverageView.ts +2 -105
- package/front_end/panels/coverage/coverage-meta.ts +0 -1
- package/front_end/panels/css_overview/components/CSSOverviewStartView.ts +11 -56
- package/front_end/panels/css_overview/components/cssOverviewStartView.css +1 -8
- package/front_end/panels/css_overview/css_overview-meta.ts +0 -1
- package/front_end/panels/developer_resources/developer_resources-meta.ts +0 -1
- package/front_end/panels/elements/ElementsTreeElement.ts +4 -9
- package/front_end/panels/elements/components/StylePropertyEditor.ts +2 -0
- package/front_end/panels/elements/components/adornerSettingsPane.css +0 -4
- package/front_end/panels/elements/elements-meta.ts +0 -1
- package/front_end/panels/emulation/DeviceModeToolbar.ts +3 -1
- package/front_end/panels/emulation/DeviceModeView.ts +2 -1
- package/front_end/panels/emulation/InspectedPagePlaceholder.ts +3 -1
- package/front_end/panels/emulation/MediaQueryInspector.ts +3 -1
- package/front_end/panels/emulation/emulation-meta.ts +2 -5
- package/front_end/panels/help/help-meta.ts +0 -1
- package/front_end/panels/input/input-meta.ts +0 -1
- package/front_end/panels/issues/issues-meta.ts +0 -3
- package/front_end/panels/js_profiler/js_profiler-meta.ts +0 -4
- package/front_end/panels/layers/layers-meta.ts +0 -4
- package/front_end/panels/lighthouse/LighthousePanel.ts +2 -4
- package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +1 -4
- package/front_end/panels/lighthouse/lighthouse-meta.ts +0 -1
- package/front_end/panels/lighthouse/lighthouseStartView.css +4 -0
- package/front_end/panels/lighthouse/module.json +0 -6
- package/front_end/panels/media/media-meta.ts +0 -4
- package/front_end/panels/mobile_throttling/mobile_throttling-meta.ts +0 -1
- package/front_end/panels/network/ResourceWebSocketFrameView.ts +2 -1
- package/front_end/panels/network/network-meta.ts +1 -5
- package/front_end/panels/performance_monitor/performance_monitor-meta.ts +0 -1
- package/front_end/panels/profiler/CPUProfileView.ts +10 -3
- package/front_end/panels/profiler/profiler-meta.ts +0 -3
- package/front_end/panels/protocol_monitor/protocol_monitor-meta.ts +0 -1
- package/front_end/panels/screencast/screencast-meta.ts +0 -4
- package/front_end/panels/security/security-meta.ts +0 -4
- package/front_end/panels/sensors/sensors-meta.ts +0 -1
- package/front_end/panels/settings/emulation/emulation-meta.ts +0 -1
- package/front_end/panels/settings/settings-meta.ts +0 -1
- package/front_end/panels/sources/BreakpointEditDialog.ts +16 -30
- package/front_end/panels/sources/CSSPlugin.ts +310 -331
- package/front_end/panels/sources/CallStackSidebarPane.ts +28 -34
- package/front_end/panels/sources/CoveragePlugin.ts +121 -6
- package/front_end/panels/sources/DebuggerPlugin.ts +1166 -1243
- package/front_end/panels/sources/EditingLocationHistoryManager.ts +71 -101
- package/front_end/panels/sources/GoToLineQuickOpen.ts +4 -3
- package/front_end/panels/sources/InplaceFormatterEditorAction.ts +3 -3
- package/front_end/panels/sources/JavaScriptCompilerPlugin.ts +26 -23
- package/front_end/panels/sources/Plugin.ts +20 -4
- package/front_end/panels/sources/ProfilePlugin.ts +185 -0
- package/front_end/panels/sources/ScriptFormatterEditorAction.ts +3 -3
- package/front_end/panels/sources/ScriptOriginPlugin.ts +0 -10
- package/front_end/panels/sources/SnippetsPlugin.ts +1 -10
- package/front_end/panels/sources/SourcesPanel.ts +6 -5
- package/front_end/panels/sources/SourcesView.ts +10 -8
- package/front_end/panels/sources/TabbedEditorContainer.ts +31 -27
- package/front_end/panels/sources/UISourceCodeFrame.ts +335 -470
- package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +3 -2
- package/front_end/panels/sources/sources-legacy.ts +0 -6
- package/front_end/panels/sources/sources-meta.ts +2 -6
- package/front_end/panels/sources/sources.ts +0 -2
- package/front_end/panels/timeline/timeline-meta.ts +2 -9
- package/front_end/panels/web_audio/web_audio-meta.ts +0 -1
- package/front_end/panels/webauthn/webauthn-meta.ts +0 -1
- package/front_end/third_party/codemirror.next/bundle.ts +9 -13
- package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/javascript.js +2 -2
- package/front_end/third_party/codemirror.next/chunk/markdown.js +2 -6
- package/front_end/third_party/codemirror.next/chunk/php.js +2 -6
- package/front_end/third_party/codemirror.next/chunk/python.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/wast.js +1 -1
- package/front_end/third_party/codemirror.next/chunk/xml.js +2 -2
- package/front_end/third_party/codemirror.next/codemirror.next.d.ts +279 -198
- package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
- package/front_end/third_party/codemirror.next/package.json +13 -11
- package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +1128 -1158
- package/front_end/third_party/lighthouse/locales/ar-XB.json +211 -79
- package/front_end/third_party/lighthouse/locales/ar.json +213 -81
- package/front_end/third_party/lighthouse/locales/bg.json +211 -79
- package/front_end/third_party/lighthouse/locales/ca.json +212 -80
- package/front_end/third_party/lighthouse/locales/cs.json +211 -79
- package/front_end/third_party/lighthouse/locales/da.json +211 -79
- package/front_end/third_party/lighthouse/locales/de.json +211 -79
- package/front_end/third_party/lighthouse/locales/el.json +213 -81
- package/front_end/third_party/lighthouse/locales/en-GB.json +211 -79
- package/front_end/third_party/lighthouse/locales/en-US.json +186 -75
- package/front_end/third_party/lighthouse/locales/en-XA.json +211 -79
- package/front_end/third_party/lighthouse/locales/en-XL.json +186 -75
- package/front_end/third_party/lighthouse/locales/es-419.json +211 -79
- package/front_end/third_party/lighthouse/locales/es.json +212 -80
- package/front_end/third_party/lighthouse/locales/fi.json +211 -79
- package/front_end/third_party/lighthouse/locales/fil.json +211 -79
- package/front_end/third_party/lighthouse/locales/fr.json +211 -79
- package/front_end/third_party/lighthouse/locales/he.json +212 -80
- package/front_end/third_party/lighthouse/locales/hi.json +214 -82
- package/front_end/third_party/lighthouse/locales/hr.json +211 -79
- package/front_end/third_party/lighthouse/locales/hu.json +211 -79
- package/front_end/third_party/lighthouse/locales/id.json +211 -79
- package/front_end/third_party/lighthouse/locales/it.json +211 -79
- package/front_end/third_party/lighthouse/locales/ja.json +211 -79
- package/front_end/third_party/lighthouse/locales/ko.json +211 -79
- package/front_end/third_party/lighthouse/locales/lt.json +211 -79
- package/front_end/third_party/lighthouse/locales/lv.json +214 -82
- package/front_end/third_party/lighthouse/locales/nl.json +211 -79
- package/front_end/third_party/lighthouse/locales/no.json +211 -79
- package/front_end/third_party/lighthouse/locales/pl.json +211 -79
- package/front_end/third_party/lighthouse/locales/pt-PT.json +211 -79
- package/front_end/third_party/lighthouse/locales/pt.json +211 -79
- package/front_end/third_party/lighthouse/locales/ro.json +212 -80
- package/front_end/third_party/lighthouse/locales/ru.json +211 -79
- package/front_end/third_party/lighthouse/locales/sk.json +211 -79
- package/front_end/third_party/lighthouse/locales/sl.json +211 -79
- package/front_end/third_party/lighthouse/locales/sr-Latn.json +211 -79
- package/front_end/third_party/lighthouse/locales/sr.json +211 -79
- package/front_end/third_party/lighthouse/locales/sv.json +211 -79
- package/front_end/third_party/lighthouse/locales/ta.json +218 -86
- package/front_end/third_party/lighthouse/locales/te.json +251 -119
- package/front_end/third_party/lighthouse/locales/th.json +211 -79
- package/front_end/third_party/lighthouse/locales/tr.json +211 -79
- package/front_end/third_party/lighthouse/locales/uk.json +212 -80
- package/front_end/third_party/lighthouse/locales/vi.json +211 -79
- package/front_end/third_party/lighthouse/locales/zh-HK.json +211 -79
- package/front_end/third_party/lighthouse/locales/zh-TW.json +211 -79
- package/front_end/third_party/lighthouse/locales/zh.json +211 -79
- package/front_end/third_party/lighthouse/report/bundle.d.ts +72 -34
- package/front_end/third_party/lighthouse/report/bundle.js +698 -492
- package/front_end/third_party/lighthouse/report-assets/report-generator.js +1 -2
- package/front_end/third_party/lighthouse/report-assets/report.js +40 -35
- package/front_end/third_party/lighthouse/report-assets/standalone-template.html +2 -4
- package/front_end/ui/components/code_highlighter/CodeHighlighter.ts +60 -68
- package/front_end/ui/components/data_grid/dataGrid.css +12 -10
- package/front_end/ui/components/docs/component_docs.ts +14 -0
- package/front_end/ui/components/docs/create_breadcrumbs.ts +1 -1
- package/front_end/ui/components/docs/css_overview/start_view.html +25 -0
- package/front_end/ui/components/docs/css_overview/start_view.ts +14 -0
- package/front_end/ui/components/docs/icon_button/basic.ts +3 -3
- package/front_end/ui/components/docs/toggle_dark_mode.ts +1 -0
- package/front_end/ui/components/docs/toggle_fonts.ts +2 -0
- package/front_end/ui/components/helpers/get-stylesheet.ts +0 -15
- package/front_end/ui/components/linear_memory_inspector/linear_memory_inspector-meta.ts +1 -2
- package/front_end/ui/components/markdown_view/MarkdownImagesMap.ts +1 -1
- package/front_end/ui/components/survey_link/SurveyLink.ts +1 -1
- package/front_end/ui/components/text_editor/TextEditor.ts +79 -36
- package/front_end/ui/components/text_editor/config.ts +42 -26
- package/front_end/ui/components/text_editor/javascript.ts +2 -3
- package/front_end/ui/components/text_editor/position.ts +17 -0
- package/front_end/ui/components/text_editor/text_editor.ts +1 -0
- package/front_end/ui/components/text_editor/theme.ts +5 -1
- package/front_end/ui/components/tree_outline/TreeOutline.ts +63 -8
- package/front_end/ui/components/tree_outline/TreeOutlineUtils.ts +8 -6
- package/front_end/ui/legacy/Dialog.ts +3 -1
- package/front_end/ui/legacy/DropTarget.ts +2 -1
- package/front_end/ui/legacy/EmptyWidget.ts +2 -1
- package/front_end/ui/legacy/FilterBar.ts +2 -1
- package/front_end/ui/legacy/GlassPane.ts +4 -2
- package/front_end/ui/legacy/Infobar.ts +5 -8
- package/front_end/ui/legacy/InspectorView.ts +6 -1
- package/front_end/ui/legacy/ListWidget.ts +2 -1
- package/front_end/ui/legacy/PopoverHelper.ts +2 -1
- package/front_end/ui/legacy/ProgressIndicator.ts +2 -1
- package/front_end/ui/legacy/RemoteDebuggingTerminatedScreen.ts +2 -1
- package/front_end/ui/legacy/ReportView.ts +2 -1
- package/front_end/ui/legacy/RootView.ts +2 -1
- package/front_end/ui/legacy/SearchableView.ts +2 -1
- package/front_end/ui/legacy/ShortcutRegistry.ts +11 -7
- package/front_end/ui/legacy/SoftContextMenu.ts +3 -2
- package/front_end/ui/legacy/SoftDropDown.ts +4 -2
- package/front_end/ui/legacy/SplitWidget.ts +2 -1
- package/front_end/ui/legacy/SuggestBox.ts +2 -1
- package/front_end/ui/legacy/TabbedPane.ts +2 -1
- package/front_end/ui/legacy/TargetCrashedScreen.ts +2 -1
- package/front_end/ui/legacy/TextPrompt.ts +2 -1
- package/front_end/ui/legacy/Toolbar.ts +3 -2
- package/front_end/ui/legacy/Treeoutline.ts +4 -3
- package/front_end/ui/legacy/UIUtils.ts +17 -14
- package/front_end/ui/legacy/ViewManager.ts +2 -1
- package/front_end/ui/legacy/components/inline_editor/CSSAngle.ts +1 -2
- package/front_end/ui/legacy/components/inline_editor/cssAngle.css +4 -0
- package/front_end/ui/legacy/components/object_ui/JavaScriptREPL.ts +2 -2
- package/front_end/ui/legacy/components/object_ui/object_ui-meta.ts +0 -4
- package/front_end/ui/legacy/components/perf_ui/LineLevelProfile.ts +35 -131
- package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +0 -3
- package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +2 -2
- package/front_end/ui/legacy/components/quick_open/quick_open-meta.ts +2 -3
- package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +3 -6
- package/front_end/ui/legacy/components/source_frame/FontView.ts +4 -1
- package/front_end/ui/legacy/components/source_frame/ImageView.ts +4 -1
- package/front_end/ui/legacy/components/source_frame/JSONView.ts +4 -1
- package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +21 -15
- package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +501 -252
- package/front_end/ui/legacy/components/source_frame/XMLView.ts +7 -2
- package/front_end/ui/legacy/components/source_frame/source_frame-legacy.ts +0 -11
- package/front_end/ui/legacy/components/source_frame/source_frame.ts +0 -2
- package/front_end/ui/legacy/components/text_editor/CodeMirrorTextEditor.ts +2 -0
- package/front_end/ui/legacy/components/text_editor/cmdevtools.css +3 -1
- package/front_end/ui/legacy/components/text_editor/module.json +0 -3
- package/front_end/ui/legacy/components/utils/Linkifier.ts +7 -15
- package/front_end/ui/legacy/radioButton.css +1 -13
- package/front_end/ui/legacy/textButton.css +5 -4
- package/front_end/ui/legacy/themeColors.css +36 -0
- package/front_end/ui/legacy/theme_support/theme_support_impl.ts +7 -9
- package/front_end/ui/legacy/utils/create-shadow-root-with-core-styles.ts +2 -2
- package/front_end/ui/legacy/utils/inject-core-styles.ts +7 -4
- package/package.json +1 -1
- package/scripts/check_gn.js +0 -35
- package/scripts/eslint_rules/lib/es_modules_import.js +15 -8
- package/scripts/eslint_rules/tests/es_modules_import_test.js +8 -0
- package/front_end/Images/radioDot-dark-theme.png +0 -0
- package/front_end/Images/radioDot.png +0 -0
- package/front_end/emulated_devices/module.json +0 -6
- package/front_end/panels/application/module.json +0 -6
- package/front_end/panels/emulation/module.json +0 -11
- package/front_end/panels/issues/module.json +0 -6
- package/front_end/panels/js_profiler/module.json +0 -5
- package/front_end/panels/layer_viewer/module.json +0 -5
- package/front_end/panels/layers/module.json +0 -5
- package/front_end/panels/media/module.json +0 -5
- package/front_end/panels/network/module.json +0 -5
- package/front_end/panels/profiler/module.json +0 -5
- package/front_end/panels/screencast/module.json +0 -6
- package/front_end/panels/security/module.json +0 -5
- package/front_end/panels/timeline/module.json +0 -7
- package/front_end/third_party/lighthouse/report-assets/report.css +0 -1774
- package/front_end/ui/legacy/components/source_frame/SourcesTextEditor.ts +0 -1030
- package/front_end/ui/legacy/components/source_frame/messagesPopover.css +0 -32
- package/front_end/ui/legacy/components/source_frame/module.json +0 -14
- package/front_end/ui/legacy/module.json +0 -41
|
@@ -2,6 +2,7 @@
|
|
|
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 rootViewStyles from './rootView.css.legacy.js';
|
|
5
6
|
import {VBox} from './Widget.js';
|
|
6
7
|
import {ZoomManager} from './ZoomManager.js';
|
|
7
8
|
|
|
@@ -11,7 +12,7 @@ export class RootView extends VBox {
|
|
|
11
12
|
super();
|
|
12
13
|
this.markAsRoot();
|
|
13
14
|
this.element.classList.add('root-view');
|
|
14
|
-
this.registerRequiredCSS(
|
|
15
|
+
this.registerRequiredCSS(rootViewStyles);
|
|
15
16
|
this.element.setAttribute('spellcheck', 'false');
|
|
16
17
|
}
|
|
17
18
|
|
|
@@ -39,6 +39,7 @@ import * as i18n from '../../core/i18n/i18n.js';
|
|
|
39
39
|
import * as ARIAUtils from './ARIAUtils.js';
|
|
40
40
|
import {HistoryInput} from './HistoryInput.js';
|
|
41
41
|
import {InspectorView} from './InspectorView.js';
|
|
42
|
+
import searchableViewStyles from './searchableView.css.legacy.js';
|
|
42
43
|
import {Toolbar, ToolbarButton, ToolbarToggle} from './Toolbar.js';
|
|
43
44
|
import {Tooltip} from './Tooltip.js';
|
|
44
45
|
import {createTextButton} from './UIUtils.js';
|
|
@@ -123,7 +124,7 @@ export class SearchableView extends VBox {
|
|
|
123
124
|
|
|
124
125
|
constructor(searchable: Searchable, replaceable: Replaceable|null, settingName?: string) {
|
|
125
126
|
super(true);
|
|
126
|
-
this.registerRequiredCSS(
|
|
127
|
+
this.registerRequiredCSS(searchableViewStyles);
|
|
127
128
|
searchableViewsByElement.set(this.element, this);
|
|
128
129
|
|
|
129
130
|
this.searchProvider = searchable;
|
|
@@ -144,27 +144,31 @@ export class ShortcutRegistry {
|
|
|
144
144
|
return this.devToolsDefaultShortcutActions.has(actionId);
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
}): (arg0: Event) => void {
|
|
147
|
+
getShortcutListener(handlers: {[x: string]: () => Promise<boolean>}): (event: KeyboardEvent) => void {
|
|
148
|
+
const shortcuts = Object.keys(handlers).flatMap(action => [...this.actionToShortcut.get(action)]);
|
|
150
149
|
// We only want keys for these specific actions to get handled this
|
|
151
150
|
// way; all others should be allowed to bubble up.
|
|
152
151
|
const allowlistKeyMap = new ShortcutTreeNode(0, 0);
|
|
153
|
-
const shortcuts = Object.keys(handlers).flatMap(action => [...this.actionToShortcut.get(action)]);
|
|
154
152
|
shortcuts.forEach(shortcut => {
|
|
155
153
|
allowlistKeyMap.addKeyMapping(shortcut.descriptors.map(descriptor => descriptor.key), shortcut.action);
|
|
156
154
|
});
|
|
157
155
|
|
|
158
|
-
|
|
159
|
-
const key = KeyboardShortcut.makeKeyFromEvent(
|
|
156
|
+
return (event: KeyboardEvent): void => {
|
|
157
|
+
const key = KeyboardShortcut.makeKeyFromEvent(event);
|
|
160
158
|
const keyMap = this.activePrefixKey ? allowlistKeyMap.getNode(this.activePrefixKey.key()) : allowlistKeyMap;
|
|
161
159
|
if (!keyMap) {
|
|
162
160
|
return;
|
|
163
161
|
}
|
|
164
162
|
if (keyMap.getNode(key)) {
|
|
165
|
-
this.handleShortcut(
|
|
163
|
+
this.handleShortcut(event, handlers);
|
|
166
164
|
}
|
|
167
165
|
};
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
addShortcutListener(element: Element, handlers: {
|
|
169
|
+
[x: string]: () => Promise<boolean>,
|
|
170
|
+
}): (arg0: Event) => void {
|
|
171
|
+
const listener = this.getShortcutListener(handlers) as (event: Event) => void;
|
|
168
172
|
element.addEventListener('keydown', listener);
|
|
169
173
|
return listener;
|
|
170
174
|
}
|
|
@@ -35,8 +35,9 @@ import type * as Platform from '../../core/platform/platform.js';
|
|
|
35
35
|
import * as ARIAUtils from './ARIAUtils.js';
|
|
36
36
|
import {AnchorBehavior, GlassPane, MarginBehavior, PointerEventsBehavior, SizeBehavior} from './GlassPane.js';
|
|
37
37
|
import {Icon} from './Icon.js';
|
|
38
|
-
import * as ThemeSupport from './theme_support/theme_support.js';
|
|
38
|
+
import * as ThemeSupport from './theme_support/theme_support.js';
|
|
39
39
|
import {createTextChild, ElementFocusRestorer} from './UIUtils.js';
|
|
40
|
+
import softContextMenuStyles from './softContextMenu.css.legacy.js';
|
|
40
41
|
|
|
41
42
|
const UIStrings = {
|
|
42
43
|
/**
|
|
@@ -101,7 +102,7 @@ export class SoftContextMenu {
|
|
|
101
102
|
this.glassPane = new GlassPane();
|
|
102
103
|
this.glassPane.setPointerEventsBehavior(
|
|
103
104
|
this.parentMenu ? PointerEventsBehavior.PierceGlassPane : PointerEventsBehavior.BlockedByGlassPane);
|
|
104
|
-
this.glassPane.registerRequiredCSS(
|
|
105
|
+
this.glassPane.registerRequiredCSS(softContextMenuStyles);
|
|
105
106
|
this.glassPane.setContentAnchorBox(anchorBox);
|
|
106
107
|
this.glassPane.setSizeBehavior(SizeBehavior.MeasureContent);
|
|
107
108
|
this.glassPane.setMarginBehavior(MarginBehavior.NoMargin);
|
|
@@ -14,6 +14,8 @@ import type {ListDelegate} from './ListControl.js';
|
|
|
14
14
|
import {ListControl, ListMode} from './ListControl.js';
|
|
15
15
|
import type {ItemsReplacedEvent, ListModel} from './ListModel.js';
|
|
16
16
|
import {Events as ListModelEvents} from './ListModel.js';
|
|
17
|
+
import softDropDownStyles from './softDropDown.css.legacy.js';
|
|
18
|
+
import softDropDownButtonStyles from './softDropDownButton.css.legacy.js';
|
|
17
19
|
|
|
18
20
|
const UIStrings = {
|
|
19
21
|
/**
|
|
@@ -46,7 +48,7 @@ export class SoftDropDown<T> implements ListDelegate<T> {
|
|
|
46
48
|
|
|
47
49
|
this.element = document.createElement('button');
|
|
48
50
|
this.element.classList.add('soft-dropdown');
|
|
49
|
-
Utils.appendStyle(this.element,
|
|
51
|
+
Utils.appendStyle(this.element, softDropDownButtonStyles);
|
|
50
52
|
this.titleElement = this.element.createChild('span', 'title');
|
|
51
53
|
const dropdownArrowIcon = Icon.create('smallicon-triangle-down');
|
|
52
54
|
this.element.appendChild(dropdownArrowIcon);
|
|
@@ -63,7 +65,7 @@ export class SoftDropDown<T> implements ListDelegate<T> {
|
|
|
63
65
|
this.width = 315;
|
|
64
66
|
Utils
|
|
65
67
|
.createShadowRootWithCoreStyles(this.glassPane.contentElement, {
|
|
66
|
-
cssFile:
|
|
68
|
+
cssFile: softDropDownStyles,
|
|
67
69
|
delegatesFocus: undefined,
|
|
68
70
|
})
|
|
69
71
|
.appendChild(this.list.element);
|
|
@@ -37,6 +37,7 @@ import {Events as ResizerWidgetEvents, SimpleResizerWidget} from './ResizerWidge
|
|
|
37
37
|
import {ToolbarButton} from './Toolbar.js';
|
|
38
38
|
import {Widget} from './Widget.js';
|
|
39
39
|
import {Events as ZoomManagerEvents, ZoomManager} from './ZoomManager.js';
|
|
40
|
+
import splitWidgetStyles from './splitWidget.css.legacy.js';
|
|
40
41
|
|
|
41
42
|
export class SplitWidget extends Common.ObjectWrapper.eventMixin<EventTypes, typeof Widget>(Widget) {
|
|
42
43
|
private sidebarElementInternal: HTMLElement;
|
|
@@ -77,7 +78,7 @@ export class SplitWidget extends Common.ObjectWrapper.eventMixin<EventTypes, typ
|
|
|
77
78
|
defaultSidebarHeight?: number, constraintsInDip?: boolean) {
|
|
78
79
|
super(true);
|
|
79
80
|
this.element.classList.add('split-widget');
|
|
80
|
-
this.registerRequiredCSS(
|
|
81
|
+
this.registerRequiredCSS(splitWidgetStyles);
|
|
81
82
|
|
|
82
83
|
this.contentElement.classList.add('shadow-split-widget');
|
|
83
84
|
this.sidebarElementInternal =
|
|
@@ -41,6 +41,7 @@ import type {ListDelegate} from './ListControl.js';
|
|
|
41
41
|
import {ListControl, ListMode} from './ListControl.js';
|
|
42
42
|
import {ListModel} from './ListModel.js';
|
|
43
43
|
import {measurePreferredSize} from './UIUtils.js';
|
|
44
|
+
import suggestBoxStyles from './suggestBox.css.legacy.js';
|
|
44
45
|
|
|
45
46
|
const UIStrings = {
|
|
46
47
|
/**
|
|
@@ -107,7 +108,7 @@ export class SuggestBox implements ListDelegate<Suggestion> {
|
|
|
107
108
|
this.glassPane.setAnchorBehavior(AnchorBehavior.PreferBottom);
|
|
108
109
|
this.glassPane.setOutsideClickCallback(this.hide.bind(this));
|
|
109
110
|
const shadowRoot = Utils.createShadowRootWithCoreStyles(
|
|
110
|
-
this.glassPane.contentElement, {cssFile:
|
|
111
|
+
this.glassPane.contentElement, {cssFile: suggestBoxStyles, delegatesFocus: undefined});
|
|
111
112
|
shadowRoot.appendChild(this.element);
|
|
112
113
|
}
|
|
113
114
|
|
|
@@ -43,6 +43,7 @@ import {installDragHandle, invokeOnceAfterBatchUpdate} from './UIUtils.js';
|
|
|
43
43
|
import type {Widget} from './Widget.js';
|
|
44
44
|
import {VBox} from './Widget.js';
|
|
45
45
|
import {Events as ZoomManagerEvents, ZoomManager} from './ZoomManager.js';
|
|
46
|
+
import tabbedPaneStyles from './tabbedPane.css.legacy.js';
|
|
46
47
|
|
|
47
48
|
const UIStrings = {
|
|
48
49
|
/**
|
|
@@ -110,7 +111,7 @@ export class TabbedPane extends Common.ObjectWrapper.eventMixin<EventTypes, type
|
|
|
110
111
|
|
|
111
112
|
constructor() {
|
|
112
113
|
super(true);
|
|
113
|
-
this.registerRequiredCSS(
|
|
114
|
+
this.registerRequiredCSS(tabbedPaneStyles);
|
|
114
115
|
this.element.classList.add('tabbed-pane');
|
|
115
116
|
this.contentElement.classList.add('tabbed-pane-shadow');
|
|
116
117
|
this.contentElement.tabIndex = -1;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import * as i18n from '../../core/i18n/i18n.js';
|
|
6
6
|
|
|
7
|
+
import targetCrashedScreenStyles from './targetCrashedScreen.css.legacy.js';
|
|
7
8
|
import {VBox} from './Widget.js';
|
|
8
9
|
|
|
9
10
|
const UIStrings = {
|
|
@@ -22,7 +23,7 @@ export class TargetCrashedScreen extends VBox {
|
|
|
22
23
|
private readonly hideCallback: () => void;
|
|
23
24
|
constructor(hideCallback: () => void) {
|
|
24
25
|
super(true);
|
|
25
|
-
this.registerRequiredCSS(
|
|
26
|
+
this.registerRequiredCSS(targetCrashedScreenStyles);
|
|
26
27
|
this.contentElement.createChild('div', 'message').textContent =
|
|
27
28
|
i18nString(UIStrings.devtoolsWasDisconnectedFromThe);
|
|
28
29
|
this.contentElement.createChild('div', 'message').textContent =
|
|
@@ -43,6 +43,7 @@ import type {SuggestBoxDelegate, Suggestion} from './SuggestBox.js';
|
|
|
43
43
|
import {SuggestBox} from './SuggestBox.js';
|
|
44
44
|
import {Tooltip} from './Tooltip.js';
|
|
45
45
|
import {ElementFocusRestorer} from './UIUtils.js';
|
|
46
|
+
import textPromptStyles from './textPrompt.css.legacy.js';
|
|
46
47
|
|
|
47
48
|
export class TextPrompt extends Common.ObjectWrapper.ObjectWrapper<EventTypes> implements SuggestBoxDelegate {
|
|
48
49
|
private proxyElement!: HTMLElement|undefined;
|
|
@@ -135,7 +136,7 @@ export class TextPrompt extends Common.ObjectWrapper.ObjectWrapper<EventTypes> i
|
|
|
135
136
|
this.boundOnMouseWheel = this.onMouseWheel.bind(this);
|
|
136
137
|
this.boundClearAutocomplete = this.clearAutocomplete.bind(this);
|
|
137
138
|
this.proxyElement = element.ownerDocument.createElement('span');
|
|
138
|
-
Utils.appendStyle(this.proxyElement,
|
|
139
|
+
Utils.appendStyle(this.proxyElement, textPromptStyles);
|
|
139
140
|
this.contentElement = this.proxyElement.createChild('div', 'text-prompt-root');
|
|
140
141
|
this.proxyElement.style.display = this.proxyElementDisplay;
|
|
141
142
|
if (element.parentElement) {
|
|
@@ -46,6 +46,7 @@ import type {Suggestion} from './SuggestBox.js';
|
|
|
46
46
|
import {Events as TextPromptEvents, TextPrompt} from './TextPrompt.js';
|
|
47
47
|
import {Tooltip} from './Tooltip.js';
|
|
48
48
|
import {CheckboxLabel, LongClickController} from './UIUtils.js';
|
|
49
|
+
import toolbarStyles from './toolbar.css.legacy.js';
|
|
49
50
|
|
|
50
51
|
const UIStrings = {
|
|
51
52
|
/**
|
|
@@ -75,8 +76,8 @@ export class Toolbar {
|
|
|
75
76
|
this.element.className = className;
|
|
76
77
|
this.element.classList.add('toolbar');
|
|
77
78
|
this.enabled = true;
|
|
78
|
-
this.shadowRoot =
|
|
79
|
-
this.element, {cssFile:
|
|
79
|
+
this.shadowRoot =
|
|
80
|
+
Utils.createShadowRootWithCoreStyles(this.element, {cssFile: toolbarStyles, delegatesFocus: undefined});
|
|
80
81
|
this.contentElement = this.shadowRoot.createChild('div', 'toolbar-shadow');
|
|
81
82
|
this.insertionPoint = this.contentElement.createChild('slot');
|
|
82
83
|
}
|
|
@@ -45,6 +45,7 @@ import {InplaceEditor} from './InplaceEditor.js';
|
|
|
45
45
|
import {Keys} from './KeyboardShortcut.js';
|
|
46
46
|
import {Tooltip} from './Tooltip.js';
|
|
47
47
|
import {deepElementFromPoint, enclosingNodeOrSelfWithNodeNameInArray, isEditing} from './UIUtils.js';
|
|
48
|
+
import treeoutlineStyles from './treeoutline.css.legacy.js';
|
|
48
49
|
|
|
49
50
|
const nodeToParentTreeElementMap = new WeakMap<Node, TreeElement>();
|
|
50
51
|
|
|
@@ -391,14 +392,14 @@ export class TreeOutlineInShadow extends TreeOutline {
|
|
|
391
392
|
super();
|
|
392
393
|
this.contentElement.classList.add('tree-outline');
|
|
393
394
|
this.element = document.createElement('div');
|
|
394
|
-
this.shadowRoot =
|
|
395
|
-
this.element, {cssFile:
|
|
395
|
+
this.shadowRoot =
|
|
396
|
+
Utils.createShadowRootWithCoreStyles(this.element, {cssFile: treeoutlineStyles, delegatesFocus: undefined});
|
|
396
397
|
this.disclosureElement = this.shadowRoot.createChild('div', 'tree-outline-disclosure');
|
|
397
398
|
this.disclosureElement.appendChild(this.contentElement);
|
|
398
399
|
this.renderSelection = true;
|
|
399
400
|
}
|
|
400
401
|
|
|
401
|
-
registerRequiredCSS(cssFile: string): void {
|
|
402
|
+
registerRequiredCSS(cssFile: string|{cssContent: string}): void {
|
|
402
403
|
Utils.appendStyle(this.shadowRoot, cssFile);
|
|
403
404
|
}
|
|
404
405
|
|
|
@@ -46,13 +46,20 @@ import {Size} from './Geometry.js';
|
|
|
46
46
|
import {GlassPane, PointerEventsBehavior, SizeBehavior} from './GlassPane.js';
|
|
47
47
|
import {Icon} from './Icon.js';
|
|
48
48
|
import {KeyboardShortcut} from './KeyboardShortcut.js';
|
|
49
|
-
import * as ThemeSupport from './theme_support/theme_support.js';
|
|
49
|
+
import * as ThemeSupport from './theme_support/theme_support.js';
|
|
50
50
|
import * as Utils from './utils/utils.js';
|
|
51
51
|
|
|
52
52
|
import type {ToolbarButton} from './Toolbar.js';
|
|
53
53
|
import {Toolbar} from './Toolbar.js';
|
|
54
54
|
import {Tooltip} from './Tooltip.js';
|
|
55
55
|
import type {TreeOutline} from './Treeoutline.js';
|
|
56
|
+
import checkboxTextLabelStyles from './checkboxTextLabel.css.legacy.js';
|
|
57
|
+
import closeButtonStyles from './closeButton.css.legacy.js';
|
|
58
|
+
import confirmDialogStyles from './confirmDialog.css.legacy.js';
|
|
59
|
+
import inlineButtonStyles from './inlineButton.css.legacy.js';
|
|
60
|
+
import radioButtonStyles from './radioButton.css.legacy.js';
|
|
61
|
+
import sliderStyles from './slider.css.legacy.js';
|
|
62
|
+
import smallBubbleStyles from './smallBubble.css.legacy.js';
|
|
56
63
|
|
|
57
64
|
const UIStrings = {
|
|
58
65
|
/**
|
|
@@ -1186,8 +1193,8 @@ export class CheckboxLabel extends HTMLSpanElement {
|
|
|
1186
1193
|
super();
|
|
1187
1194
|
CheckboxLabel.lastId = CheckboxLabel.lastId + 1;
|
|
1188
1195
|
const id = 'ui-checkbox-label' + CheckboxLabel.lastId;
|
|
1189
|
-
this.shadowRootInternal =
|
|
1190
|
-
this, {cssFile:
|
|
1196
|
+
this.shadowRootInternal =
|
|
1197
|
+
Utils.createShadowRootWithCoreStyles(this, {cssFile: checkboxTextLabelStyles, delegatesFocus: undefined});
|
|
1191
1198
|
this.checkboxElement = (this.shadowRootInternal.createChild('input') as HTMLInputElement);
|
|
1192
1199
|
this.checkboxElement.type = 'checkbox';
|
|
1193
1200
|
this.checkboxElement.setAttribute('id', id);
|
|
@@ -1268,8 +1275,7 @@ export class DevToolsRadioButton extends HTMLSpanElement {
|
|
|
1268
1275
|
this.radioElement.id = id;
|
|
1269
1276
|
this.radioElement.type = 'radio';
|
|
1270
1277
|
this.labelElement.htmlFor = id;
|
|
1271
|
-
const root =
|
|
1272
|
-
Utils.createShadowRootWithCoreStyles(this, {cssFile: 'ui/legacy/radioButton.css', delegatesFocus: undefined});
|
|
1278
|
+
const root = Utils.createShadowRootWithCoreStyles(this, {cssFile: radioButtonStyles, delegatesFocus: undefined});
|
|
1273
1279
|
root.createChild('slot');
|
|
1274
1280
|
this.addEventListener('click', this.radioClickHandler.bind(this), false);
|
|
1275
1281
|
}
|
|
@@ -1291,8 +1297,7 @@ export class DevToolsSlider extends HTMLSpanElement {
|
|
|
1291
1297
|
|
|
1292
1298
|
constructor() {
|
|
1293
1299
|
super();
|
|
1294
|
-
const root =
|
|
1295
|
-
Utils.createShadowRootWithCoreStyles(this, {cssFile: 'ui/legacy/slider.css', delegatesFocus: undefined});
|
|
1300
|
+
const root = Utils.createShadowRootWithCoreStyles(this, {cssFile: sliderStyles, delegatesFocus: undefined});
|
|
1296
1301
|
this.sliderElement = document.createElement('input');
|
|
1297
1302
|
this.sliderElement.classList.add('dt-range-input');
|
|
1298
1303
|
this.sliderElement.type = 'range';
|
|
@@ -1315,8 +1320,7 @@ export class DevToolsSmallBubble extends HTMLSpanElement {
|
|
|
1315
1320
|
|
|
1316
1321
|
constructor() {
|
|
1317
1322
|
super();
|
|
1318
|
-
const root =
|
|
1319
|
-
Utils.createShadowRootWithCoreStyles(this, {cssFile: 'ui/legacy/smallBubble.css', delegatesFocus: undefined});
|
|
1323
|
+
const root = Utils.createShadowRootWithCoreStyles(this, {cssFile: smallBubbleStyles, delegatesFocus: undefined});
|
|
1320
1324
|
this.textElement = root.createChild('div');
|
|
1321
1325
|
this.textElement.className = 'info';
|
|
1322
1326
|
this.textElement.createChild('slot');
|
|
@@ -1336,8 +1340,7 @@ export class DevToolsCloseButton extends HTMLDivElement {
|
|
|
1336
1340
|
|
|
1337
1341
|
constructor() {
|
|
1338
1342
|
super();
|
|
1339
|
-
const root =
|
|
1340
|
-
Utils.createShadowRootWithCoreStyles(this, {cssFile: 'ui/legacy/closeButton.css', delegatesFocus: undefined});
|
|
1343
|
+
const root = Utils.createShadowRootWithCoreStyles(this, {cssFile: closeButtonStyles, delegatesFocus: undefined});
|
|
1341
1344
|
this.buttonElement = (root.createChild('div', 'close-button') as HTMLElement);
|
|
1342
1345
|
Tooltip.install(this.buttonElement, i18nString(UIStrings.close));
|
|
1343
1346
|
ARIAUtils.setAccessibleName(this.buttonElement, i18nString(UIStrings.close));
|
|
@@ -1566,7 +1569,7 @@ export class MessageDialog {
|
|
|
1566
1569
|
dialog.setSizeBehavior(SizeBehavior.MeasureContent);
|
|
1567
1570
|
dialog.setDimmed(true);
|
|
1568
1571
|
const shadowRoot = Utils.createShadowRootWithCoreStyles(
|
|
1569
|
-
dialog.contentElement, {cssFile:
|
|
1572
|
+
dialog.contentElement, {cssFile: confirmDialogStyles, delegatesFocus: undefined});
|
|
1570
1573
|
const content = shadowRoot.createChild('div', 'widget');
|
|
1571
1574
|
await new Promise(resolve => {
|
|
1572
1575
|
const okButton = createTextButton(i18nString(UIStrings.ok), resolve, '', true);
|
|
@@ -1590,7 +1593,7 @@ export class ConfirmDialog {
|
|
|
1590
1593
|
dialog.setDimmed(true);
|
|
1591
1594
|
ARIAUtils.setAccessibleName(dialog.contentElement, message);
|
|
1592
1595
|
const shadowRoot = Utils.createShadowRootWithCoreStyles(
|
|
1593
|
-
dialog.contentElement, {cssFile:
|
|
1596
|
+
dialog.contentElement, {cssFile: confirmDialogStyles, delegatesFocus: undefined});
|
|
1594
1597
|
const content = shadowRoot.createChild('div', 'widget');
|
|
1595
1598
|
content.createChild('div', 'message').createChild('span').textContent = message;
|
|
1596
1599
|
const buttonsBar = content.createChild('div', 'button');
|
|
@@ -1615,7 +1618,7 @@ export class ConfirmDialog {
|
|
|
1615
1618
|
export function createInlineButton(toolbarButton: ToolbarButton): Element {
|
|
1616
1619
|
const element = document.createElement('span');
|
|
1617
1620
|
const shadowRoot =
|
|
1618
|
-
Utils.createShadowRootWithCoreStyles(element, {cssFile:
|
|
1621
|
+
Utils.createShadowRootWithCoreStyles(element, {cssFile: inlineButtonStyles, delegatesFocus: undefined});
|
|
1619
1622
|
element.classList.add('inline-button');
|
|
1620
1623
|
const toolbar = new Toolbar('');
|
|
1621
1624
|
toolbar.appendToolbarItem(toolbarButton);
|
|
@@ -18,6 +18,7 @@ import type {TabbedViewLocation, View, ViewLocation, ViewLocationResolver} from
|
|
|
18
18
|
import {getRegisteredLocationResolvers, getRegisteredViewExtensions, maybeRemoveViewExtension, registerLocationResolver, registerViewExtension, ViewLocationCategoryValues, ViewLocationValues, ViewPersistence, ViewRegistration} from './ViewRegistration.js';
|
|
19
19
|
import type {Widget, WidgetElement} from './Widget.js';
|
|
20
20
|
import {VBox} from './Widget.js';
|
|
21
|
+
import viewContainersStyles from './viewContainers.css.legacy.js';
|
|
21
22
|
|
|
22
23
|
const UIStrings = {
|
|
23
24
|
/**
|
|
@@ -418,7 +419,7 @@ export class _ExpandableContainerWidget extends VBox {
|
|
|
418
419
|
constructor(view: View) {
|
|
419
420
|
super(true);
|
|
420
421
|
this.element.classList.add('flex-none');
|
|
421
|
-
this.registerRequiredCSS(
|
|
422
|
+
this.registerRequiredCSS(viewContainersStyles);
|
|
422
423
|
|
|
423
424
|
this.titleElement = document.createElement('div');
|
|
424
425
|
this.titleElement.classList.add('expandable-view-title');
|
|
@@ -222,8 +222,7 @@ export class CSSAngle extends HTMLElement {
|
|
|
222
222
|
.data=${{
|
|
223
223
|
angle: this.angle,
|
|
224
224
|
} as CSSAngleSwatchData}>
|
|
225
|
-
</${CSSAngleSwatch.litTagName}><slot></slot>
|
|
226
|
-
</div>
|
|
225
|
+
</${CSSAngleSwatch.litTagName}><slot></slot></div>
|
|
227
226
|
${this.popoverOpen ? this.renderPopover() : null}
|
|
228
227
|
</div>
|
|
229
228
|
`, this.shadow, {
|
|
@@ -36,7 +36,7 @@ export class JavaScriptREPL {
|
|
|
36
36
|
|
|
37
37
|
static async evaluateAndBuildPreview(
|
|
38
38
|
text: string, throwOnSideEffect: boolean, replMode: boolean, timeout?: number, allowErrors?: boolean,
|
|
39
|
-
objectGroup?: string): Promise<{
|
|
39
|
+
objectGroup?: string, awaitPromise: boolean = false): Promise<{
|
|
40
40
|
preview: DocumentFragment,
|
|
41
41
|
result: SDK.RuntimeModel.EvaluationResult|null,
|
|
42
42
|
}> {
|
|
@@ -60,7 +60,7 @@ export class JavaScriptREPL {
|
|
|
60
60
|
returnByValue: undefined,
|
|
61
61
|
allowUnsafeEvalBlockedByCSP: undefined,
|
|
62
62
|
};
|
|
63
|
-
const result = await executionContext.evaluate(options, false /* userGesture */,
|
|
63
|
+
const result = await executionContext.evaluate(options, false /* userGesture */, awaitPromise);
|
|
64
64
|
const preview = JavaScriptREPL.buildEvaluationPreview(result, allowErrors);
|
|
65
65
|
return {preview, result};
|
|
66
66
|
}
|
|
@@ -2,19 +2,15 @@
|
|
|
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 Root from '../../../../core/root/root.js';
|
|
6
5
|
import * as SDK from '../../../../core/sdk/sdk.js';
|
|
7
6
|
import * as UI from '../../legacy.js';
|
|
8
7
|
|
|
9
|
-
// eslint-disable-next-line rulesdir/es_modules_import
|
|
10
8
|
import type * as ObjectUI from './object_ui.js';
|
|
11
9
|
|
|
12
10
|
let loadedObjectUIModule: (typeof ObjectUI|undefined);
|
|
13
11
|
|
|
14
12
|
async function loadObjectUIModule(): Promise<typeof ObjectUI> {
|
|
15
13
|
if (!loadedObjectUIModule) {
|
|
16
|
-
// Side-effect import resources in module.json
|
|
17
|
-
await Root.Runtime.Runtime.instance().loadModulePromise('ui/legacy/components/object_ui');
|
|
18
14
|
loadedObjectUIModule = await import('./object_ui.js');
|
|
19
15
|
}
|
|
20
16
|
return loadedObjectUIModule;
|
|
@@ -2,37 +2,19 @@
|
|
|
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 i18n from '../../../../core/i18n/i18n.js';
|
|
6
|
-
import * as Platform from '../../../../core/platform/platform.js';
|
|
7
5
|
import * as SDK from '../../../../core/sdk/sdk.js';
|
|
8
6
|
import * as Bindings from '../../../../models/bindings/bindings.js';
|
|
9
7
|
import * as Workspace from '../../../../models/workspace/workspace.js';
|
|
10
8
|
import * as SourceFrame from '../source_frame/source_frame.js';
|
|
11
9
|
import type * as Protocol from '../../../../generated/protocol.js';
|
|
12
10
|
|
|
13
|
-
const UIStrings = {
|
|
14
|
-
/**
|
|
15
|
-
*@description The milisecond unit
|
|
16
|
-
*/
|
|
17
|
-
ms: 'ms',
|
|
18
|
-
/**
|
|
19
|
-
*@description Unit for data size in DevTools
|
|
20
|
-
*/
|
|
21
|
-
mb: 'MB',
|
|
22
|
-
/**
|
|
23
|
-
*@description A unit
|
|
24
|
-
*/
|
|
25
|
-
kb: 'kB',
|
|
26
|
-
};
|
|
27
|
-
const str_ = i18n.i18n.registerUIStrings('ui/legacy/components/perf_ui/LineLevelProfile.ts', UIStrings);
|
|
28
|
-
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
|
|
29
11
|
let performanceInstance: Performance;
|
|
30
12
|
|
|
31
13
|
export class Performance {
|
|
32
14
|
private readonly helper: Helper;
|
|
33
15
|
|
|
34
16
|
private constructor() {
|
|
35
|
-
this.helper = new Helper(
|
|
17
|
+
this.helper = new Helper(SourceFrame.SourceFrame.DecoratorType.PERFORMANCE);
|
|
36
18
|
}
|
|
37
19
|
|
|
38
20
|
static instance(opts: {
|
|
@@ -112,7 +94,7 @@ let memoryInstance: Memory;
|
|
|
112
94
|
export class Memory {
|
|
113
95
|
private readonly helper: Helper;
|
|
114
96
|
private constructor() {
|
|
115
|
-
this.helper = new Helper(
|
|
97
|
+
this.helper = new Helper(SourceFrame.SourceFrame.DecoratorType.MEMORY);
|
|
116
98
|
}
|
|
117
99
|
|
|
118
100
|
static instance(opts: {
|
|
@@ -193,10 +175,12 @@ export class Helper {
|
|
|
193
175
|
}, 0);
|
|
194
176
|
}
|
|
195
177
|
|
|
196
|
-
private doUpdate(): void {
|
|
178
|
+
private async doUpdate(): Promise<void> {
|
|
197
179
|
this.locationPool.disposeAll();
|
|
198
|
-
|
|
199
|
-
|
|
180
|
+
// Map from sources to line->value profile maps.
|
|
181
|
+
const decorationsBySource = new Map<Workspace.UISourceCode.UISourceCode, Map<number, number>>();
|
|
182
|
+
const pending: Promise<void>[] = [];
|
|
183
|
+
|
|
200
184
|
for (const targetToScript of this.lineData) {
|
|
201
185
|
const target = (targetToScript[0] as SDK.Target.Target | null);
|
|
202
186
|
const debuggerModel = target ? target.model(SDK.DebuggerModel.DebuggerModel) : null;
|
|
@@ -206,124 +190,44 @@ export class Helper {
|
|
|
206
190
|
const lineToDataMap = (scriptToLine[1] as Map<number, number>);
|
|
207
191
|
// debuggerModel is null when the profile is loaded from file.
|
|
208
192
|
// Try to get UISourceCode by the URL in this case.
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
for (const lineToData of lineToDataMap) {
|
|
216
|
-
const line = (lineToData[0] as number) - 1;
|
|
217
|
-
const data = (lineToData[1] as number);
|
|
218
|
-
if (uiSourceCode) {
|
|
219
|
-
uiSourceCode.addLineDecoration(line, this.type, data);
|
|
220
|
-
continue;
|
|
221
|
-
}
|
|
222
|
-
if (debuggerModel) {
|
|
193
|
+
const workspace = Workspace.Workspace.WorkspaceImpl.instance();
|
|
194
|
+
if (debuggerModel) {
|
|
195
|
+
const workspaceBinding = Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance();
|
|
196
|
+
for (const lineToData of lineToDataMap) {
|
|
197
|
+
const line = lineToData[0] - 1;
|
|
198
|
+
const data = lineToData[1];
|
|
223
199
|
const rawLocation = typeof scriptIdOrUrl === 'string' ?
|
|
224
200
|
debuggerModel.createRawLocationByURL(scriptIdOrUrl, line, 0) :
|
|
225
201
|
debuggerModel.createRawLocationByScriptId(String(scriptIdOrUrl) as Protocol.Runtime.ScriptId, line, 0);
|
|
226
202
|
if (rawLocation) {
|
|
227
|
-
|
|
203
|
+
pending.push(workspaceBinding.rawLocationToUILocation(rawLocation).then((uiLocation): void => {
|
|
204
|
+
if (uiLocation) {
|
|
205
|
+
let lineMap = decorationsBySource.get(uiLocation.uiSourceCode);
|
|
206
|
+
if (!lineMap) {
|
|
207
|
+
lineMap = new Map<number, number>();
|
|
208
|
+
decorationsBySource.set(uiLocation.uiSourceCode, lineMap);
|
|
209
|
+
}
|
|
210
|
+
lineMap.set(uiLocation.lineNumber + 1, data);
|
|
211
|
+
}
|
|
212
|
+
}));
|
|
228
213
|
}
|
|
229
214
|
}
|
|
215
|
+
} else if (typeof scriptIdOrUrl === 'string') {
|
|
216
|
+
const uiSourceCode = workspace.uiSourceCodeForURL(scriptIdOrUrl);
|
|
217
|
+
if (uiSourceCode) {
|
|
218
|
+
decorationsBySource.set(uiSourceCode, lineToDataMap);
|
|
219
|
+
}
|
|
230
220
|
}
|
|
231
221
|
}
|
|
222
|
+
await Promise.all(pending);
|
|
223
|
+
for (const [uiSourceCode, lineMap] of decorationsBySource) {
|
|
224
|
+
uiSourceCode.setDecorationData(this.type, lineMap);
|
|
225
|
+
}
|
|
232
226
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
export class Presentation {
|
|
237
|
-
private readonly type: string;
|
|
238
|
-
private readonly time: number;
|
|
239
|
-
private uiLocation: Workspace.UISourceCode.UILocation|null;
|
|
240
|
-
|
|
241
|
-
constructor(
|
|
242
|
-
rawLocation: SDK.DebuggerModel.Location, type: string, time: number,
|
|
243
|
-
locationPool: Bindings.LiveLocation.LiveLocationPool) {
|
|
244
|
-
this.type = type;
|
|
245
|
-
this.time = time;
|
|
246
|
-
this.uiLocation = null;
|
|
247
|
-
Bindings.DebuggerWorkspaceBinding.DebuggerWorkspaceBinding.instance().createLiveLocation(
|
|
248
|
-
rawLocation, this.updateLocation.bind(this), locationPool);
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
async updateLocation(liveLocation: Bindings.LiveLocation.LiveLocation): Promise<void> {
|
|
252
|
-
if (this.uiLocation) {
|
|
253
|
-
this.uiLocation.uiSourceCode.removeDecorationsForType(this.type);
|
|
254
|
-
}
|
|
255
|
-
this.uiLocation = await liveLocation.uiLocation();
|
|
256
|
-
if (this.uiLocation) {
|
|
257
|
-
this.uiLocation.uiSourceCode.addLineDecoration(this.uiLocation.lineNumber, this.type, this.time);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
let lineDecoratorInstance: LineDecorator;
|
|
263
|
-
|
|
264
|
-
export class LineDecorator implements SourceFrame.SourceFrame.LineDecorator {
|
|
265
|
-
static instance(opts: {
|
|
266
|
-
forceNew: boolean|null,
|
|
267
|
-
} = {forceNew: null}): LineDecorator {
|
|
268
|
-
const {forceNew} = opts;
|
|
269
|
-
if (!lineDecoratorInstance || forceNew) {
|
|
270
|
-
lineDecoratorInstance = new LineDecorator();
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
return lineDecoratorInstance;
|
|
274
|
-
}
|
|
275
|
-
decorate(
|
|
276
|
-
uiSourceCode: Workspace.UISourceCode.UISourceCode, textEditor: SourceFrame.SourcesTextEditor.SourcesTextEditor,
|
|
277
|
-
type: string): void {
|
|
278
|
-
const gutterType = `CodeMirror-gutter-${type}`;
|
|
279
|
-
const decorations = uiSourceCode.decorationsForType(type);
|
|
280
|
-
textEditor.uninstallGutter(gutterType);
|
|
281
|
-
if (!decorations || !decorations.size) {
|
|
282
|
-
return;
|
|
283
|
-
}
|
|
284
|
-
textEditor.installGutter(gutterType, false);
|
|
285
|
-
for (const decoration of decorations) {
|
|
286
|
-
const value = (decoration.data() as number);
|
|
287
|
-
const element = this.createElement(type, value);
|
|
288
|
-
textEditor.setGutterDecoration(decoration.range().startLine, gutterType, element);
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
private createElement(type: string, value: number): Element {
|
|
293
|
-
const element = document.createElement('div');
|
|
294
|
-
element.classList.add('text-editor-line-marker-text');
|
|
295
|
-
if (type === 'performance') {
|
|
296
|
-
const intensity = Platform.NumberUtilities.clamp(Math.log10(1 + 10 * value) / 5, 0.02, 1);
|
|
297
|
-
element.textContent = value.toFixed(1);
|
|
298
|
-
element.style.backgroundColor = `hsla(44, 100%, 50%, ${intensity.toFixed(3)})`;
|
|
299
|
-
element.createChild('span', 'line-marker-units').textContent = i18nString(UIStrings.ms);
|
|
300
|
-
} else {
|
|
301
|
-
const intensity = Platform.NumberUtilities.clamp(Math.log10(1 + 2e-3 * value) / 5, 0.02, 1);
|
|
302
|
-
element.style.backgroundColor = `hsla(217, 100%, 70%, ${intensity.toFixed(3)})`;
|
|
303
|
-
value /= 1e3;
|
|
304
|
-
let units;
|
|
305
|
-
let fractionDigits;
|
|
306
|
-
if (value >= 1e3) {
|
|
307
|
-
units = i18nString(UIStrings.mb);
|
|
308
|
-
value /= 1e3;
|
|
309
|
-
fractionDigits = value >= 20 ? 0 : 1;
|
|
310
|
-
} else {
|
|
311
|
-
units = i18nString(UIStrings.kb);
|
|
312
|
-
fractionDigits = 0;
|
|
227
|
+
for (const uiSourceCode of Workspace.Workspace.WorkspaceImpl.instance().uiSourceCodes()) {
|
|
228
|
+
if (!decorationsBySource.has(uiSourceCode)) {
|
|
229
|
+
uiSourceCode.setDecorationData(this.type, undefined);
|
|
313
230
|
}
|
|
314
|
-
element.textContent = value.toFixed(fractionDigits);
|
|
315
|
-
element.createChild('span', 'line-marker-units').textContent = units;
|
|
316
231
|
}
|
|
317
|
-
return element;
|
|
318
232
|
}
|
|
319
233
|
}
|
|
320
|
-
|
|
321
|
-
SourceFrame.SourceFrame.registerLineDecorator({
|
|
322
|
-
lineDecorator: LineDecorator.instance,
|
|
323
|
-
decoratorType: SourceFrame.SourceFrame.DecoratorType.MEMORY,
|
|
324
|
-
});
|
|
325
|
-
|
|
326
|
-
SourceFrame.SourceFrame.registerLineDecorator({
|
|
327
|
-
lineDecorator: LineDecorator.instance,
|
|
328
|
-
decoratorType: SourceFrame.SourceFrame.DecoratorType.PERFORMANCE,
|
|
329
|
-
});
|