@react-native/debugger-frontend 0.73.0-nightly-20230922-52104c6ee
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/BUILD_INFO +10 -0
- package/README.md +22 -0
- package/dist/third-party/LICENSE +28 -0
- package/dist/third-party/front_end/Images/3d-center.svg +1 -0
- package/dist/third-party/front_end/Images/3d-pan.svg +1 -0
- package/dist/third-party/front_end/Images/3d-rotate.svg +1 -0
- package/dist/third-party/front_end/Images/Images.js +223 -0
- package/dist/third-party/front_end/Images/accelerometer-back.svg +1 -0
- package/dist/third-party/front_end/Images/accelerometer-bottom.png +0 -0
- package/dist/third-party/front_end/Images/accelerometer-front.svg +1 -0
- package/dist/third-party/front_end/Images/accelerometer-left.png +0 -0
- package/dist/third-party/front_end/Images/accelerometer-right.png +0 -0
- package/dist/third-party/front_end/Images/accelerometer-top.png +0 -0
- package/dist/third-party/front_end/Images/align-content-center.svg +1 -0
- package/dist/third-party/front_end/Images/align-content-end.svg +1 -0
- package/dist/third-party/front_end/Images/align-content-space-around.svg +1 -0
- package/dist/third-party/front_end/Images/align-content-space-between.svg +1 -0
- package/dist/third-party/front_end/Images/align-content-space-evenly.svg +1 -0
- package/dist/third-party/front_end/Images/align-content-start.svg +1 -0
- package/dist/third-party/front_end/Images/align-content-stretch.svg +1 -0
- package/dist/third-party/front_end/Images/align-items-baseline.svg +1 -0
- package/dist/third-party/front_end/Images/align-items-center.svg +1 -0
- package/dist/third-party/front_end/Images/align-items-end.svg +1 -0
- package/dist/third-party/front_end/Images/align-items-start.svg +1 -0
- package/dist/third-party/front_end/Images/align-items-stretch.svg +1 -0
- package/dist/third-party/front_end/Images/align-self-center.svg +1 -0
- package/dist/third-party/front_end/Images/align-self-end.svg +1 -0
- package/dist/third-party/front_end/Images/align-self-start.svg +1 -0
- package/dist/third-party/front_end/Images/align-self-stretch.svg +1 -0
- package/dist/third-party/front_end/Images/arrow-down.svg +1 -0
- package/dist/third-party/front_end/Images/arrow-drop-down-dark.svg +1 -0
- package/dist/third-party/front_end/Images/arrow-drop-down-light.svg +1 -0
- package/dist/third-party/front_end/Images/arrow-up-down-circle.svg +1 -0
- package/dist/third-party/front_end/Images/arrow-up-down.svg +1 -0
- package/dist/third-party/front_end/Images/arrow-up.svg +1 -0
- package/dist/third-party/front_end/Images/bell.svg +1 -0
- package/dist/third-party/front_end/Images/bezier-curve-filled.svg +1 -0
- package/dist/third-party/front_end/Images/bin.svg +1 -0
- package/dist/third-party/front_end/Images/bottom-panel-close.svg +1 -0
- package/dist/third-party/front_end/Images/bottom-panel-open.svg +1 -0
- package/dist/third-party/front_end/Images/brackets.svg +1 -0
- package/dist/third-party/front_end/Images/breakpoint-circle.svg +1 -0
- package/dist/third-party/front_end/Images/breakpoint-crossed-filled.svg +1 -0
- package/dist/third-party/front_end/Images/breakpoint-crossed.svg +1 -0
- package/dist/third-party/front_end/Images/brush-filled.svg +1 -0
- package/dist/third-party/front_end/Images/brush.svg +1 -0
- package/dist/third-party/front_end/Images/bug.svg +1 -0
- package/dist/third-party/front_end/Images/bundle.svg +1 -0
- package/dist/third-party/front_end/Images/check-circle.svg +1 -0
- package/dist/third-party/front_end/Images/check-double.svg +1 -0
- package/dist/third-party/front_end/Images/checker.svg +1 -0
- package/dist/third-party/front_end/Images/checkmark.svg +1 -0
- package/dist/third-party/front_end/Images/chevron-double-right.svg +1 -0
- package/dist/third-party/front_end/Images/chevron-down.svg +1 -0
- package/dist/third-party/front_end/Images/chevron-left-dot.svg +1 -0
- package/dist/third-party/front_end/Images/chevron-left.svg +1 -0
- package/dist/third-party/front_end/Images/chevron-right.svg +1 -0
- package/dist/third-party/front_end/Images/chevron-up.svg +1 -0
- package/dist/third-party/front_end/Images/chromeLeft.avif +0 -0
- package/dist/third-party/front_end/Images/chromeMiddle.avif +0 -0
- package/dist/third-party/front_end/Images/chromeRight.avif +0 -0
- package/dist/third-party/front_end/Images/clear-list.svg +1 -0
- package/dist/third-party/front_end/Images/clear.svg +1 -0
- package/dist/third-party/front_end/Images/cloud.svg +1 -0
- package/dist/third-party/front_end/Images/code-circle.svg +1 -0
- package/dist/third-party/front_end/Images/code.svg +1 -0
- package/dist/third-party/front_end/Images/colon.svg +1 -0
- package/dist/third-party/front_end/Images/color-picker-filled.svg +1 -0
- package/dist/third-party/front_end/Images/color-picker.svg +1 -0
- package/dist/third-party/front_end/Images/console-conditional-breakpoint.svg +1 -0
- package/dist/third-party/front_end/Images/console-logpoint.svg +1 -0
- package/dist/third-party/front_end/Images/cookie.svg +1 -0
- package/dist/third-party/front_end/Images/copy.svg +1 -0
- package/dist/third-party/front_end/Images/credit-card.svg +1 -0
- package/dist/third-party/front_end/Images/cross-circle-filled.svg +1 -0
- package/dist/third-party/front_end/Images/cross-circle.svg +1 -0
- package/dist/third-party/front_end/Images/cross.svg +1 -0
- package/dist/third-party/front_end/Images/cssoverview_icons_2x.avif +0 -0
- package/dist/third-party/front_end/Images/custom-typography.svg +1 -0
- package/dist/third-party/front_end/Images/database.svg +1 -0
- package/dist/third-party/front_end/Images/deployed.svg +1 -0
- package/dist/third-party/front_end/Images/device-fold.svg +1 -0
- package/dist/third-party/front_end/Images/devices.svg +1 -0
- package/dist/third-party/front_end/Images/dock-bottom.svg +1 -0
- package/dist/third-party/front_end/Images/dock-left.svg +1 -0
- package/dist/third-party/front_end/Images/dock-right.svg +1 -0
- package/dist/third-party/front_end/Images/dock-window.svg +1 -0
- package/dist/third-party/front_end/Images/document.svg +1 -0
- package/dist/third-party/front_end/Images/dots-horizontal.svg +1 -0
- package/dist/third-party/front_end/Images/dots-vertical.svg +1 -0
- package/dist/third-party/front_end/Images/download.svg +1 -0
- package/dist/third-party/front_end/Images/edit.svg +1 -0
- package/dist/third-party/front_end/Images/empty.svg +1 -0
- package/dist/third-party/front_end/Images/errorWave.svg +1 -0
- package/dist/third-party/front_end/Images/exclamation.svg +1 -0
- package/dist/third-party/front_end/Images/experiment-check.svg +1 -0
- package/dist/third-party/front_end/Images/experiment.svg +1 -0
- package/dist/third-party/front_end/Images/eye.svg +1 -0
- package/dist/third-party/front_end/Images/file-document.svg +1 -0
- package/dist/third-party/front_end/Images/file-font.svg +1 -0
- package/dist/third-party/front_end/Images/file-generic.svg +1 -0
- package/dist/third-party/front_end/Images/file-image.svg +1 -0
- package/dist/third-party/front_end/Images/file-script.svg +1 -0
- package/dist/third-party/front_end/Images/file-snippet.svg +1 -0
- package/dist/third-party/front_end/Images/file-stylesheet.svg +1 -0
- package/dist/third-party/front_end/Images/filter-clear.svg +1 -0
- package/dist/third-party/front_end/Images/filter-filled.svg +1 -0
- package/dist/third-party/front_end/Images/filter.svg +1 -0
- package/dist/third-party/front_end/Images/flex-direction.svg +1 -0
- package/dist/third-party/front_end/Images/flex-no-wrap.svg +1 -0
- package/dist/third-party/front_end/Images/flex-wrap.svg +1 -0
- package/dist/third-party/front_end/Images/flow.svg +1 -0
- package/dist/third-party/front_end/Images/fold-more.svg +1 -0
- package/dist/third-party/front_end/Images/folder.svg +1 -0
- package/dist/third-party/front_end/Images/frame-crossed.svg +1 -0
- package/dist/third-party/front_end/Images/frame-icon.svg +1 -0
- package/dist/third-party/front_end/Images/frame.svg +1 -0
- package/dist/third-party/front_end/Images/gear-filled.svg +1 -0
- package/dist/third-party/front_end/Images/gear.svg +1 -0
- package/dist/third-party/front_end/Images/gears.svg +1 -0
- package/dist/third-party/front_end/Images/heap-snapshot.svg +1 -0
- package/dist/third-party/front_end/Images/heap-snapshots.svg +1 -0
- package/dist/third-party/front_end/Images/help.svg +1 -0
- package/dist/third-party/front_end/Images/iframe-crossed.svg +1 -0
- package/dist/third-party/front_end/Images/iframe.svg +1 -0
- package/dist/third-party/front_end/Images/import.svg +1 -0
- package/dist/third-party/front_end/Images/info-filled.svg +1 -0
- package/dist/third-party/front_end/Images/info.svg +1 -0
- package/dist/third-party/front_end/Images/issue-cross-filled.svg +1 -0
- package/dist/third-party/front_end/Images/issue-exclamation-filled.svg +1 -0
- package/dist/third-party/front_end/Images/issue-questionmark-filled.svg +1 -0
- package/dist/third-party/front_end/Images/issue-text-filled.svg +1 -0
- package/dist/third-party/front_end/Images/justify-content-center.svg +1 -0
- package/dist/third-party/front_end/Images/justify-content-end.svg +1 -0
- package/dist/third-party/front_end/Images/justify-content-space-around.svg +1 -0
- package/dist/third-party/front_end/Images/justify-content-space-between.svg +1 -0
- package/dist/third-party/front_end/Images/justify-content-space-evenly.svg +1 -0
- package/dist/third-party/front_end/Images/justify-content-start.svg +1 -0
- package/dist/third-party/front_end/Images/justify-items-center.svg +1 -0
- package/dist/third-party/front_end/Images/justify-items-end.svg +1 -0
- package/dist/third-party/front_end/Images/justify-items-start.svg +1 -0
- package/dist/third-party/front_end/Images/justify-items-stretch.svg +1 -0
- package/dist/third-party/front_end/Images/keyboard-pen.svg +1 -0
- package/dist/third-party/front_end/Images/large-arrow-right-filled.svg +1 -0
- package/dist/third-party/front_end/Images/largeIcons.svg +2 -0
- package/dist/third-party/front_end/Images/layers-filled.svg +1 -0
- package/dist/third-party/front_end/Images/layers.svg +1 -0
- package/dist/third-party/front_end/Images/left-panel-close.svg +1 -0
- package/dist/third-party/front_end/Images/left-panel-open.svg +1 -0
- package/dist/third-party/front_end/Images/lighthouse_logo.svg +1 -0
- package/dist/third-party/front_end/Images/list.svg +1 -0
- package/dist/third-party/front_end/Images/mediumIcons.svg +1 -0
- package/dist/third-party/front_end/Images/memory.svg +1 -0
- package/dist/third-party/front_end/Images/minus.svg +1 -0
- package/dist/third-party/front_end/Images/minus_icon.svg +1 -0
- package/dist/third-party/front_end/Images/navigationControls.png +0 -0
- package/dist/third-party/front_end/Images/navigationControls_2x.png +0 -0
- package/dist/third-party/front_end/Images/network-settings.svg +1 -0
- package/dist/third-party/front_end/Images/nodeIcon.avif +0 -0
- package/dist/third-party/front_end/Images/node_search_icon.svg +1 -0
- package/dist/third-party/front_end/Images/open-externally.svg +1 -0
- package/dist/third-party/front_end/Images/pause.svg +1 -0
- package/dist/third-party/front_end/Images/performance.svg +1 -0
- package/dist/third-party/front_end/Images/person.svg +1 -0
- package/dist/third-party/front_end/Images/play.svg +1 -0
- package/dist/third-party/front_end/Images/plus.svg +1 -0
- package/dist/third-party/front_end/Images/popoverArrows.png +0 -0
- package/dist/third-party/front_end/Images/popup.svg +1 -0
- package/dist/third-party/front_end/Images/preview_feature_video_thumbnail.svg +1 -0
- package/dist/third-party/front_end/Images/profile.svg +1 -0
- package/dist/third-party/front_end/Images/react_native/welcomeIcon.png +0 -0
- package/dist/third-party/front_end/Images/record-start.svg +1 -0
- package/dist/third-party/front_end/Images/record-stop.svg +1 -0
- package/dist/third-party/front_end/Images/redo.svg +1 -0
- package/dist/third-party/front_end/Images/refresh.svg +1 -0
- package/dist/third-party/front_end/Images/replace.svg +1 -0
- package/dist/third-party/front_end/Images/replay.svg +1 -0
- package/dist/third-party/front_end/Images/resizeDiagonal.svg +1 -0
- package/dist/third-party/front_end/Images/resizeHorizontal.svg +1 -0
- package/dist/third-party/front_end/Images/resizeVertical.svg +1 -0
- package/dist/third-party/front_end/Images/resume.svg +1 -0
- package/dist/third-party/front_end/Images/review.svg +1 -0
- package/dist/third-party/front_end/Images/right-panel-close.svg +1 -0
- package/dist/third-party/front_end/Images/right-panel-open.svg +1 -0
- package/dist/third-party/front_end/Images/screen-rotation.svg +1 -0
- package/dist/third-party/front_end/Images/search.svg +1 -0
- package/dist/third-party/front_end/Images/securityIcons.svg +1 -0
- package/dist/third-party/front_end/Images/select-element.svg +1 -0
- package/dist/third-party/front_end/Images/settings_14x14_icon.svg +1 -0
- package/dist/third-party/front_end/Images/shadow.svg +1 -0
- package/dist/third-party/front_end/Images/smallIcons.svg +1 -0
- package/dist/third-party/front_end/Images/snippet.svg +1 -0
- package/dist/third-party/front_end/Images/star.svg +1 -0
- package/dist/third-party/front_end/Images/step-into.svg +1 -0
- package/dist/third-party/front_end/Images/step-out.svg +1 -0
- package/dist/third-party/front_end/Images/step-over.svg +1 -0
- package/dist/third-party/front_end/Images/step.svg +1 -0
- package/dist/third-party/front_end/Images/stop.svg +1 -0
- package/dist/third-party/front_end/Images/symbol.svg +1 -0
- package/dist/third-party/front_end/Images/sync.svg +1 -0
- package/dist/third-party/front_end/Images/table.svg +1 -0
- package/dist/third-party/front_end/Images/toolbarResizerVertical.png +0 -0
- package/dist/third-party/front_end/Images/top-panel-close.svg +1 -0
- package/dist/third-party/front_end/Images/top-panel-open.svg +1 -0
- package/dist/third-party/front_end/Images/touchCursor.png +0 -0
- package/dist/third-party/front_end/Images/touchCursor_2x.png +0 -0
- package/dist/third-party/front_end/Images/triangle-bottom-right.svg +1 -0
- package/dist/third-party/front_end/Images/triangle-down.svg +1 -0
- package/dist/third-party/front_end/Images/triangle-left.svg +1 -0
- package/dist/third-party/front_end/Images/triangle-right.svg +1 -0
- package/dist/third-party/front_end/Images/triangle-up.svg +1 -0
- package/dist/third-party/front_end/Images/undo.svg +1 -0
- package/dist/third-party/front_end/Images/warning-filled.svg +1 -0
- package/dist/third-party/front_end/Images/warning.svg +1 -0
- package/dist/third-party/front_end/Images/warning_icon.svg +1 -0
- package/dist/third-party/front_end/Images/watch.svg +1 -0
- package/dist/third-party/front_end/Images/whatsnew.avif +0 -0
- package/dist/third-party/front_end/Images/width.svg +1 -0
- package/dist/third-party/front_end/Tests.js +1662 -0
- package/dist/third-party/front_end/core/common/common-legacy.js +1 -0
- package/dist/third-party/front_end/core/common/common.js +1 -0
- package/dist/third-party/front_end/core/dom_extension/dom_extension.js +1 -0
- package/dist/third-party/front_end/core/host/host-legacy.js +1 -0
- package/dist/third-party/front_end/core/host/host.js +1 -0
- package/dist/third-party/front_end/core/i18n/i18n.js +1 -0
- package/dist/third-party/front_end/core/i18n/locales/en-US.json +1 -0
- package/dist/third-party/front_end/core/i18n/locales/zh.json +1 -0
- package/dist/third-party/front_end/core/platform/platform.js +1 -0
- package/dist/third-party/front_end/core/protocol_client/protocol_client-legacy.js +1 -0
- package/dist/third-party/front_end/core/protocol_client/protocol_client.js +1 -0
- package/dist/third-party/front_end/core/root/root-legacy.js +1 -0
- package/dist/third-party/front_end/core/root/root.js +1 -0
- package/dist/third-party/front_end/core/sdk/sdk-legacy.js +1 -0
- package/dist/third-party/front_end/core/sdk/sdk-meta.js +1 -0
- package/dist/third-party/front_end/core/sdk/sdk.js +1 -0
- package/dist/third-party/front_end/device_mode_emulation_frame.html +20 -0
- package/dist/third-party/front_end/devtools_app.html +20 -0
- package/dist/third-party/front_end/devtools_compatibility.js +1595 -0
- package/dist/third-party/front_end/emulated_devices/optimized/MotoG4-landscape.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/MotoG4-portrait.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/Nexus5X-landscape.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/Nexus5X-portrait.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/Nexus6P-landscape.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/Nexus6P-portrait.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nest-hub-horizontal.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nest-hub-max-horizontal.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5-horizontal-default-1x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5-horizontal-default-2x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-1x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-2x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5-horizontal-navigation-1x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5-horizontal-navigation-2x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5-vertical-default-1x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5-vertical-default-2x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5-vertical-keyboard-1x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5-vertical-keyboard-2x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5-vertical-navigation-1x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5-vertical-navigation-2x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-default-1x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-default-2x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-1x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-2x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-1x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-2x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5x-vertical-default-1x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5x-vertical-default-2x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-1x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-2x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5x-vertical-navigation-1x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/google-nexus-5x-vertical-navigation-2x.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/iPad-landscape.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/iPad-portrait.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/iPhone5-landscape.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/iPhone5-portrait.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/iPhone6-landscape.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/iPhone6-portrait.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/iPhone6Plus-landscape.avif +0 -0
- package/dist/third-party/front_end/emulated_devices/optimized/iPhone6Plus-portrait.avif +0 -0
- package/dist/third-party/front_end/entrypoints/device_mode_emulation_frame/device_mode_emulation_frame.js +1 -0
- package/dist/third-party/front_end/entrypoints/devtools_app/devtools_app.js +1 -0
- package/dist/third-party/front_end/entrypoints/formatter_worker/FormatterActions.js +1 -0
- package/dist/third-party/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.js +1 -0
- package/dist/third-party/front_end/entrypoints/formatter_worker/formatter_worker.js +1 -0
- package/dist/third-party/front_end/entrypoints/heap_snapshot_worker/heap_snapshot_worker-entrypoint.js +1 -0
- package/dist/third-party/front_end/entrypoints/heap_snapshot_worker/heap_snapshot_worker-legacy.js +1 -0
- package/dist/third-party/front_end/entrypoints/heap_snapshot_worker/heap_snapshot_worker.js +1 -0
- package/dist/third-party/front_end/entrypoints/inspector/inspector.js +1 -0
- package/dist/third-party/front_end/entrypoints/inspector_main/inspector_main-meta.js +1 -0
- package/dist/third-party/front_end/entrypoints/inspector_main/inspector_main.js +1 -0
- package/dist/third-party/front_end/entrypoints/js_app/js_app.js +1 -0
- package/dist/third-party/front_end/entrypoints/lighthouse_worker/lighthouse_worker.js +1 -0
- package/dist/third-party/front_end/entrypoints/main/main-legacy.js +1 -0
- package/dist/third-party/front_end/entrypoints/main/main-meta.js +1 -0
- package/dist/third-party/front_end/entrypoints/main/main.js +1 -0
- package/dist/third-party/front_end/entrypoints/ndb_app/ndb_app.js +1 -0
- package/dist/third-party/front_end/entrypoints/node_app/node_app.js +1 -0
- package/dist/third-party/front_end/entrypoints/rn_inspector/rn_inspector.js +1 -0
- package/dist/third-party/front_end/entrypoints/shell/shell.js +1 -0
- package/dist/third-party/front_end/entrypoints/wasmparser_worker/wasmparser_worker-entrypoint.js +1 -0
- package/dist/third-party/front_end/entrypoints/wasmparser_worker/wasmparser_worker.js +1 -0
- package/dist/third-party/front_end/entrypoints/worker_app/worker_app.js +1 -0
- package/dist/third-party/front_end/inspector.html +20 -0
- package/dist/third-party/front_end/integration_test_runner.html +40 -0
- package/dist/third-party/front_end/js_app.html +20 -0
- package/dist/third-party/front_end/legacy_test_runner/legacy_test_runner.js +36 -0
- package/dist/third-party/front_end/legacy_test_runner/test_runner/test_runner.js +1 -0
- package/dist/third-party/front_end/models/bindings/bindings-legacy.js +1 -0
- package/dist/third-party/front_end/models/bindings/bindings.js +1 -0
- package/dist/third-party/front_end/models/breakpoints/breakpoints-legacy.js +1 -0
- package/dist/third-party/front_end/models/breakpoints/breakpoints.js +1 -0
- package/dist/third-party/front_end/models/emulation/emulation.js +1 -0
- package/dist/third-party/front_end/models/extensions/extensions-legacy.js +1 -0
- package/dist/third-party/front_end/models/extensions/extensions.js +1 -0
- package/dist/third-party/front_end/models/formatter/formatter-legacy.js +1 -0
- package/dist/third-party/front_end/models/formatter/formatter.js +1 -0
- package/dist/third-party/front_end/models/har/har.js +1 -0
- package/dist/third-party/front_end/models/heap_snapshot_model/heap_snapshot_model-legacy.js +1 -0
- package/dist/third-party/front_end/models/heap_snapshot_model/heap_snapshot_model.js +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/CoepCoopSandboxedIframeCannotNavigateToCoopPage.md +4 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/CoepCorpNotSameOrigin.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md +18 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/CoepCorpNotSameSite.md +7 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/CoepFrameResourceNeedsCoepHeader.md +10 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/CompatibilityModeQuirks.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/CookieAttributeValueExceedsMaxSize.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/LowTextContrast.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeRead.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeSet.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/SameSiteExcludeNavigationContextDowngrade.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/SameSiteInvalidSameParty.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureErrorRead.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureErrorSet.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureWarnRead.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureWarnSet.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeRead.md +9 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeSet.md +9 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/SameSiteUnspecifiedTreatedAsLaxRead.md +9 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/SameSiteUnspecifiedTreatedAsLaxSet.md +9 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeRead.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeSet.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/SameSiteWarnStrictLaxDowngradeStrict.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/arInsecureContext.md +7 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/arInvalidRegisterOsSourceHeader.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/arInvalidRegisterOsTriggerHeader.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/arInvalidRegisterSourceHeader.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/arInvalidRegisterTriggerHeader.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/arOsSourceIgnored.md +18 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/arOsTriggerIgnored.md +19 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/arPermissionPolicyDisabled.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/arSourceAndTriggerHeaders.md +9 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/arSourceIgnored.md +13 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/arTriggerIgnored.md +12 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/arUntrustworthyReportingOrigin.md +10 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/arWebAndOsHeaders.md +11 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/bounceTrackingMitigations.md +3 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/clientHintMetaTagAllowListInvalidOrigin.md +4 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/clientHintMetaTagModifiedHTML.md +4 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/cookieExcludeBlockedWithinFirstPartySet.md +4 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/cookieExcludeDomainNonAscii.md +11 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/cookieWarnDomainNonAscii.md +11 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/corsAllowCredentialsRequired.md +6 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/corsDisabledScheme.md +7 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/corsDisallowedByMode.md +7 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/corsHeaderDisallowedByPreflightResponse.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/corsInsecurePrivateNetwork.md +10 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/corsInvalidHeaderValues.md +7 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/corsMethodDisallowedByPreflightResponse.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/corsNoCorsRedirectModeNotFollow.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/corsOriginMismatch.md +6 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/corsPreflightAllowPrivateNetworkError.md +10 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/corsPreflightResponseInvalid.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/corsRedirectContainsCredentials.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/corsWildcardOriginNotAllowed.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/cspEvalViolation.md +9 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/cspInlineViolation.md +10 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/cspTrustedTypesPolicyViolation.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/cspTrustedTypesSinkViolation.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/cspURLViolation.md +10 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/deprecation.md +3 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestAccountsHttpNotFound.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestAccountsInvalidResponse.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestAccountsNoResponse.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestApprovalDeclined.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestCanceled.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataHttpNotFound.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataInvalidResponse.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataNoResponse.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestErrorFetchingSignin.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestErrorIdToken.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenHttpNotFound.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidRequest.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidResponse.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenNoResponse.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestInvalidSigninResponse.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestHttpNotFound.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestInvalidResponse.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestNoResponse.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthRequestTooManyRequests.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidAccountsResponse.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoAccountSharingPermission.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoApiPermission.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotIframe.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSameOrigin.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSignedInWithIdp.md +1 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/genericCrossOriginPortalPostMessageError.md +3 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/genericFormAriaLabelledByToNonExistingId.md +8 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/genericFormAutocompleteAttributeEmptyError.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/genericFormDuplicateIdForInputError.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/genericFormEmptyIdAndNameAttributesForInputError.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/genericFormInputHasWrongButWellIntendedAutocompleteValueError.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/genericFormInputWithNoLabelError.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/genericFormLabelForMatchesNonExistingIdError.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/genericFormLabelForNameError.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/genericFormLabelHasNeitherForNorNestedInput.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/heavyAd.md +10 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/mixedContent.md +5 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/sharedArrayBuffer.md +7 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/stylesheetLateImport.md +4 -0
- package/dist/third-party/front_end/models/issues_manager/descriptions/stylesheetRequestFailed.md +3 -0
- package/dist/third-party/front_end/models/issues_manager/issues_manager.js +1 -0
- package/dist/third-party/front_end/models/javascript_metadata/javascript_metadata.js +1 -0
- package/dist/third-party/front_end/models/logs/logs-meta.js +1 -0
- package/dist/third-party/front_end/models/logs/logs.js +1 -0
- package/dist/third-party/front_end/models/persistence/persistence-legacy.js +1 -0
- package/dist/third-party/front_end/models/persistence/persistence-meta.js +1 -0
- package/dist/third-party/front_end/models/persistence/persistence.js +1 -0
- package/dist/third-party/front_end/models/source_map_scopes/source_map_scopes.js +1 -0
- package/dist/third-party/front_end/models/text_utils/text_utils-legacy.js +1 -0
- package/dist/third-party/front_end/models/text_utils/text_utils.js +1 -0
- package/dist/third-party/front_end/models/timeline_model/timeline_model-legacy.js +1 -0
- package/dist/third-party/front_end/models/timeline_model/timeline_model.js +1 -0
- package/dist/third-party/front_end/models/trace/extras/extras.js +1 -0
- package/dist/third-party/front_end/models/trace/handlers/handlers.js +1 -0
- package/dist/third-party/front_end/models/trace/helpers/helpers.js +1 -0
- package/dist/third-party/front_end/models/trace/trace.js +1 -0
- package/dist/third-party/front_end/models/trace/types/types.js +1 -0
- package/dist/third-party/front_end/models/workspace/workspace-legacy.js +1 -0
- package/dist/third-party/front_end/models/workspace/workspace.js +1 -0
- package/dist/third-party/front_end/models/workspace_diff/workspace_diff-legacy.js +1 -0
- package/dist/third-party/front_end/models/workspace_diff/workspace_diff.js +1 -0
- package/dist/third-party/front_end/ndb_app.html +20 -0
- package/dist/third-party/front_end/node_app.html +20 -0
- package/dist/third-party/front_end/panels/accessibility/accessibility-legacy.js +1 -0
- package/dist/third-party/front_end/panels/accessibility/accessibility-meta.js +1 -0
- package/dist/third-party/front_end/panels/accessibility/accessibility.js +1 -0
- package/dist/third-party/front_end/panels/animation/animation-legacy.js +1 -0
- package/dist/third-party/front_end/panels/animation/animation-meta.js +1 -0
- package/dist/third-party/front_end/panels/animation/animation.js +1 -0
- package/dist/third-party/front_end/panels/application/application-legacy.js +1 -0
- package/dist/third-party/front_end/panels/application/application-meta.js +1 -0
- package/dist/third-party/front_end/panels/application/application.js +1 -0
- package/dist/third-party/front_end/panels/application/components/components.js +1 -0
- package/dist/third-party/front_end/panels/application/preloading/components/components.js +1 -0
- package/dist/third-party/front_end/panels/browser_debugger/browser_debugger-legacy.js +1 -0
- package/dist/third-party/front_end/panels/browser_debugger/browser_debugger-meta.js +1 -0
- package/dist/third-party/front_end/panels/browser_debugger/browser_debugger.js +1 -0
- package/dist/third-party/front_end/panels/changes/changes-legacy.js +1 -0
- package/dist/third-party/front_end/panels/changes/changes-meta.js +1 -0
- package/dist/third-party/front_end/panels/changes/changes.js +1 -0
- package/dist/third-party/front_end/panels/console/console-legacy.js +1 -0
- package/dist/third-party/front_end/panels/console/console-meta.js +1 -0
- package/dist/third-party/front_end/panels/console/console.js +6 -0
- package/dist/third-party/front_end/panels/console_counters/console_counters-meta.js +1 -0
- package/dist/third-party/front_end/panels/console_counters/console_counters.js +1 -0
- package/dist/third-party/front_end/panels/coverage/coverage-legacy.js +1 -0
- package/dist/third-party/front_end/panels/coverage/coverage-meta.js +1 -0
- package/dist/third-party/front_end/panels/coverage/coverage.js +1 -0
- package/dist/third-party/front_end/panels/css_overview/components/components.js +1 -0
- package/dist/third-party/front_end/panels/css_overview/css_overview-meta.js +1 -0
- package/dist/third-party/front_end/panels/css_overview/css_overview.js +144 -0
- package/dist/third-party/front_end/panels/developer_resources/developer_resources-meta.js +1 -0
- package/dist/third-party/front_end/panels/developer_resources/developer_resources.js +1 -0
- package/dist/third-party/front_end/panels/elements/components/components.js +1 -0
- package/dist/third-party/front_end/panels/elements/elements-legacy.js +1 -0
- package/dist/third-party/front_end/panels/elements/elements-meta.js +1 -0
- package/dist/third-party/front_end/panels/elements/elements.js +1 -0
- package/dist/third-party/front_end/panels/emulation/components/components.js +22 -0
- package/dist/third-party/front_end/panels/emulation/emulation-legacy.js +1 -0
- package/dist/third-party/front_end/panels/emulation/emulation-meta.js +1 -0
- package/dist/third-party/front_end/panels/emulation/emulation.js +1 -0
- package/dist/third-party/front_end/panels/event_listeners/event_listeners.js +1 -0
- package/dist/third-party/front_end/panels/issues/components/components.js +1 -0
- package/dist/third-party/front_end/panels/issues/issues-meta.js +1 -0
- package/dist/third-party/front_end/panels/issues/issues.js +1 -0
- package/dist/third-party/front_end/panels/js_profiler/js_profiler-meta.js +1 -0
- package/dist/third-party/front_end/panels/js_profiler/js_profiler.js +1 -0
- package/dist/third-party/front_end/panels/layer_viewer/layer_viewer-legacy.js +1 -0
- package/dist/third-party/front_end/panels/layer_viewer/layer_viewer-meta.js +1 -0
- package/dist/third-party/front_end/panels/layer_viewer/layer_viewer.js +1 -0
- package/dist/third-party/front_end/panels/layers/layers-meta.js +1 -0
- package/dist/third-party/front_end/panels/layers/layers.js +1 -0
- package/dist/third-party/front_end/panels/lighthouse/lighthouse-legacy.js +1 -0
- package/dist/third-party/front_end/panels/lighthouse/lighthouse-meta.js +1 -0
- package/dist/third-party/front_end/panels/lighthouse/lighthouse.js +66 -0
- package/dist/third-party/front_end/panels/media/media-meta.js +1 -0
- package/dist/third-party/front_end/panels/media/media.js +25 -0
- package/dist/third-party/front_end/panels/mobile_throttling/mobile_throttling-legacy.js +1 -0
- package/dist/third-party/front_end/panels/mobile_throttling/mobile_throttling-meta.js +1 -0
- package/dist/third-party/front_end/panels/mobile_throttling/mobile_throttling.js +1 -0
- package/dist/third-party/front_end/panels/network/components/components.js +1 -0
- package/dist/third-party/front_end/panels/network/forward/forward.js +1 -0
- package/dist/third-party/front_end/panels/network/network-legacy.js +1 -0
- package/dist/third-party/front_end/panels/network/network-meta.js +1 -0
- package/dist/third-party/front_end/panels/network/network.js +1 -0
- package/dist/third-party/front_end/panels/performance_monitor/performance_monitor-meta.js +1 -0
- package/dist/third-party/front_end/panels/performance_monitor/performance_monitor.js +1 -0
- package/dist/third-party/front_end/panels/profiler/profiler-legacy.js +1 -0
- package/dist/third-party/front_end/panels/profiler/profiler-meta.js +1 -0
- package/dist/third-party/front_end/panels/profiler/profiler.js +7 -0
- package/dist/third-party/front_end/panels/protocol_monitor/components/components.js +1 -0
- package/dist/third-party/front_end/panels/protocol_monitor/protocol_monitor-meta.js +1 -0
- package/dist/third-party/front_end/panels/protocol_monitor/protocol_monitor.js +1 -0
- package/dist/third-party/front_end/panels/recorder/components/components.js +1 -0
- package/dist/third-party/front_end/panels/recorder/controllers/controllers.js +1 -0
- package/dist/third-party/front_end/panels/recorder/converters/converters.js +1 -0
- package/dist/third-party/front_end/panels/recorder/extensions/extensions.js +1 -0
- package/dist/third-party/front_end/panels/recorder/injected/injected.generated.js +1 -0
- package/dist/third-party/front_end/panels/recorder/injected/injected.js +1 -0
- package/dist/third-party/front_end/panels/recorder/models/models.js +1 -0
- package/dist/third-party/front_end/panels/recorder/recorder-actions.js +1 -0
- package/dist/third-party/front_end/panels/recorder/recorder-meta.js +1 -0
- package/dist/third-party/front_end/panels/recorder/recorder.js +1 -0
- package/dist/third-party/front_end/panels/recorder/util/util.js +1 -0
- package/dist/third-party/front_end/panels/rn_welcome/rn_welcome-meta.js +1 -0
- package/dist/third-party/front_end/panels/rn_welcome/rn_welcome.js +1 -0
- package/dist/third-party/front_end/panels/screencast/screencast-meta.js +1 -0
- package/dist/third-party/front_end/panels/screencast/screencast.js +1 -0
- package/dist/third-party/front_end/panels/search/search-legacy.js +1 -0
- package/dist/third-party/front_end/panels/search/search.js +1 -0
- package/dist/third-party/front_end/panels/security/security-legacy.js +1 -0
- package/dist/third-party/front_end/panels/security/security-meta.js +1 -0
- package/dist/third-party/front_end/panels/security/security.js +1 -0
- package/dist/third-party/front_end/panels/sensors/sensors-meta.js +1 -0
- package/dist/third-party/front_end/panels/sensors/sensors.js +1 -0
- package/dist/third-party/front_end/panels/settings/components/components.js +1 -0
- package/dist/third-party/front_end/panels/settings/emulation/components/components.js +1 -0
- package/dist/third-party/front_end/panels/settings/emulation/emulation-meta.js +1 -0
- package/dist/third-party/front_end/panels/settings/emulation/emulation.js +1 -0
- package/dist/third-party/front_end/panels/settings/emulation/utils/utils.js +1 -0
- package/dist/third-party/front_end/panels/settings/settings-legacy.js +1 -0
- package/dist/third-party/front_end/panels/settings/settings-meta.js +1 -0
- package/dist/third-party/front_end/panels/settings/settings.js +1 -0
- package/dist/third-party/front_end/panels/snippets/snippets-legacy.js +1 -0
- package/dist/third-party/front_end/panels/snippets/snippets.js +1 -0
- package/dist/third-party/front_end/panels/sources/components/components.js +1 -0
- package/dist/third-party/front_end/panels/sources/sources-legacy.js +1 -0
- package/dist/third-party/front_end/panels/sources/sources-meta.js +1 -0
- package/dist/third-party/front_end/panels/sources/sources.js +1 -0
- package/dist/third-party/front_end/panels/timeline/timeline-legacy.js +1 -0
- package/dist/third-party/front_end/panels/timeline/timeline-meta.js +1 -0
- package/dist/third-party/front_end/panels/timeline/timeline.js +1 -0
- package/dist/third-party/front_end/panels/utils/utils.js +1 -0
- package/dist/third-party/front_end/panels/web_audio/graph_visualizer/graph_visualizer.js +1 -0
- package/dist/third-party/front_end/panels/web_audio/web_audio-legacy.js +1 -0
- package/dist/third-party/front_end/panels/web_audio/web_audio-meta.js +1 -0
- package/dist/third-party/front_end/panels/web_audio/web_audio.js +1 -0
- package/dist/third-party/front_end/panels/webauthn/webauthn-meta.js +1 -0
- package/dist/third-party/front_end/panels/webauthn/webauthn.js +1 -0
- package/dist/third-party/front_end/rn_inspector.html +20 -0
- package/dist/third-party/front_end/services/puppeteer/puppeteer.js +1 -0
- package/dist/third-party/front_end/services/tracing/tracing.js +1 -0
- package/dist/third-party/front_end/services/window_bounds/window_bounds.js +1 -0
- package/dist/third-party/front_end/third_party/acorn/acorn.js +1 -0
- package/dist/third-party/front_end/third_party/chromium/client-variations/client-variations.js +1 -0
- package/dist/third-party/front_end/third_party/codemirror.next/chunk/angular.js +2 -0
- package/dist/third-party/front_end/third_party/codemirror.next/chunk/codemirror.js +2 -0
- package/dist/third-party/front_end/third_party/codemirror.next/chunk/cpp.js +2 -0
- package/dist/third-party/front_end/third_party/codemirror.next/chunk/java.js +2 -0
- package/dist/third-party/front_end/third_party/codemirror.next/chunk/json.js +2 -0
- package/dist/third-party/front_end/third_party/codemirror.next/chunk/legacy.js +2 -0
- package/dist/third-party/front_end/third_party/codemirror.next/chunk/less.js +2 -0
- package/dist/third-party/front_end/third_party/codemirror.next/chunk/markdown.js +2 -0
- package/dist/third-party/front_end/third_party/codemirror.next/chunk/php.js +2 -0
- package/dist/third-party/front_end/third_party/codemirror.next/chunk/python.js +2 -0
- package/dist/third-party/front_end/third_party/codemirror.next/chunk/sass.js +2 -0
- package/dist/third-party/front_end/third_party/codemirror.next/chunk/svelte.js +2 -0
- package/dist/third-party/front_end/third_party/codemirror.next/chunk/vue.js +2 -0
- package/dist/third-party/front_end/third_party/codemirror.next/chunk/wast.js +2 -0
- package/dist/third-party/front_end/third_party/codemirror.next/chunk/xml.js +2 -0
- package/dist/third-party/front_end/third_party/codemirror.next/codemirror.next.js +2 -0
- package/dist/third-party/front_end/third_party/diff/diff-legacy.js +1 -0
- package/dist/third-party/front_end/third_party/diff/diff.js +1 -0
- package/dist/third-party/front_end/third_party/i18n/i18n.js +1 -0
- package/dist/third-party/front_end/third_party/intl-messageformat/intl-messageformat.js +15 -0
- package/dist/third-party/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +1297 -0
- package/dist/third-party/front_end/third_party/lighthouse/report/report.js +222 -0
- package/dist/third-party/front_end/third_party/lit/lit.js +98 -0
- package/dist/third-party/front_end/third_party/marked/marked.js +1 -0
- package/dist/third-party/front_end/third_party/puppeteer/puppeteer.js +1 -0
- package/dist/third-party/front_end/third_party/puppeteer-replay/puppeteer-replay.js +1 -0
- package/dist/third-party/front_end/third_party/wasmparser/wasmparser.js +1 -0
- package/dist/third-party/front_end/ui/components/adorners/adorners.js +1 -0
- package/dist/third-party/front_end/ui/components/buttons/buttons.js +1 -0
- package/dist/third-party/front_end/ui/components/chrome_link/chrome_link.js +1 -0
- package/dist/third-party/front_end/ui/components/code_highlighter/code_highlighter.js +1 -0
- package/dist/third-party/front_end/ui/components/data_grid/data_grid.js +1 -0
- package/dist/third-party/front_end/ui/components/dialogs/dialogs.js +1 -0
- package/dist/third-party/front_end/ui/components/diff_view/diff_view.js +1 -0
- package/dist/third-party/front_end/ui/components/expandable_list/expandable_list.js +1 -0
- package/dist/third-party/front_end/ui/components/helpers/helpers.js +1 -0
- package/dist/third-party/front_end/ui/components/icon_button/icon_button.js +1 -0
- package/dist/third-party/front_end/ui/components/input/input.js +1 -0
- package/dist/third-party/front_end/ui/components/issue_counter/issue_counter.js +1 -0
- package/dist/third-party/front_end/ui/components/legacy_wrapper/legacy_wrapper.js +1 -0
- package/dist/third-party/front_end/ui/components/linear_memory_inspector/linear_memory_inspector-meta.js +1 -0
- package/dist/third-party/front_end/ui/components/linear_memory_inspector/linear_memory_inspector.js +1 -0
- package/dist/third-party/front_end/ui/components/linkifier/linkifier.js +1 -0
- package/dist/third-party/front_end/ui/components/markdown_view/markdown_view.js +1 -0
- package/dist/third-party/front_end/ui/components/menus/menus.js +1 -0
- package/dist/third-party/front_end/ui/components/node_text/node_text.js +1 -0
- package/dist/third-party/front_end/ui/components/panel_feedback/panel_feedback.js +1 -0
- package/dist/third-party/front_end/ui/components/panel_introduction_steps/panel_introduction_steps.js +1 -0
- package/dist/third-party/front_end/ui/components/render_coordinator/render_coordinator.js +1 -0
- package/dist/third-party/front_end/ui/components/report_view/report_view.js +1 -0
- package/dist/third-party/front_end/ui/components/request_link_icon/request_link_icon.js +1 -0
- package/dist/third-party/front_end/ui/components/settings/settings.js +1 -0
- package/dist/third-party/front_end/ui/components/srgb_overlay/srgb_overlay.js +1 -0
- package/dist/third-party/front_end/ui/components/survey_link/survey_link.js +1 -0
- package/dist/third-party/front_end/ui/components/text_editor/text_editor.js +1 -0
- package/dist/third-party/front_end/ui/components/text_prompt/text_prompt.js +1 -0
- package/dist/third-party/front_end/ui/components/tree_outline/tree_outline.js +1 -0
- package/dist/third-party/front_end/ui/components/two_states_counter/two_states_counter.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/color_picker/color_picker-legacy.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/color_picker/color_picker.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/cookie_table/cookie_table-legacy.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/cookie_table/cookie_table.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/data_grid/data_grid-legacy.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/data_grid/data_grid.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/inline_editor/inline_editor-legacy.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/inline_editor/inline_editor.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/object_ui/object_ui-legacy.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/object_ui/object_ui-meta.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/object_ui/object_ui.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/perf_ui/perf_ui-legacy.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/perf_ui/perf_ui-meta.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/perf_ui/perf_ui.js +12 -0
- package/dist/third-party/front_end/ui/legacy/components/quick_open/quick_open-legacy.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/quick_open/quick_open-meta.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/quick_open/quick_open.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/source_frame/source_frame-legacy.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/source_frame/source_frame-meta.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/source_frame/source_frame.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/utils/utils-legacy.js +1 -0
- package/dist/third-party/front_end/ui/legacy/components/utils/utils.js +1 -0
- package/dist/third-party/front_end/ui/legacy/legacy-legacy.js +1 -0
- package/dist/third-party/front_end/ui/legacy/legacy.js +1 -0
- package/dist/third-party/front_end/ui/legacy/theme_support/theme_support.js +1 -0
- package/dist/third-party/front_end/ui/legacy/utils/utils.js +1 -0
- package/dist/third-party/front_end/ui/lit-html/lit-html.js +1 -0
- package/dist/third-party/front_end/worker_app.html +20 -0
- package/index.js +15 -0
- package/package.json +25 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../core/i18n/i18n.js";import*as r from"../../ui/legacy/legacy.js";const o={recorder:"Recorder",showRecorder:"Show Recorder",startStopRecording:"Start/Stop recording",createRecording:"Create a new recording",replayRecording:"Replay recording",toggleCode:"Toggle code view"},t=e.i18n.registerUIStrings("panels/recorder/recorder-meta.ts",o),c=e.i18n.getLazilyComputedLocalizedString.bind(void 0,t);let n;async function i(){return n||(n=await import("./recorder.js")),n}function a(e,r){return void 0===n?[]:r&&n.RecorderPanel.RecorderPanel.instance().isActionPossible(r)?e(n):[]}r.ViewManager.defaultOptionsForTabs.chrome_recorder=!0,r.ViewManager.registerViewExtension({location:"panel",id:"chrome_recorder",commandPrompt:c(o.showRecorder),title:c(o.recorder),order:90,persistence:"closeable",isPreviewFeature:!0,loadView:async()=>(await i()).RecorderPanel.RecorderPanel.instance()}),r.ActionRegistration.registerActionExtension({category:"Recorder",actionId:"chrome_recorder.create-recording",title:c(o.createRecording),loadActionDelegate:async()=>(await i()).RecorderPanel.ActionDelegate.instance()}),r.ActionRegistration.registerActionExtension({category:"Recorder",actionId:"chrome_recorder.start-recording",title:c(o.startStopRecording),contextTypes:()=>a((e=>[e.RecorderPanel.RecorderPanel]),"chrome_recorder.start-recording"),loadActionDelegate:async()=>(await i()).RecorderPanel.ActionDelegate.instance(),bindings:[{shortcut:"Ctrl+E",platform:"windows,linux"},{shortcut:"Meta+E",platform:"mac"}]}),r.ActionRegistration.registerActionExtension({category:"Recorder",actionId:"chrome_recorder.replay-recording",title:c(o.replayRecording),contextTypes:()=>a((e=>[e.RecorderPanel.RecorderPanel]),"chrome_recorder.replay-recording"),loadActionDelegate:async()=>(await i()).RecorderPanel.ActionDelegate.instance(),bindings:[{shortcut:"Ctrl+Enter",platform:"windows,linux"},{shortcut:"Meta+Enter",platform:"mac"}]}),r.ActionRegistration.registerActionExtension({category:"Recorder",actionId:"chrome_recorder.toggle-code-view",title:c(o.toggleCode),contextTypes:()=>a((e=>[e.RecorderPanel.RecorderPanel]),"chrome_recorder.toggle-code-view"),loadActionDelegate:async()=>(await i()).RecorderPanel.ActionDelegate.instance(),bindings:[{shortcut:"Ctrl+B",platform:"windows,linux"},{shortcut:"Meta+B",platform:"mac"}]});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../core/common/common.js";import*as t from"../../core/host/host.js";import*as r from"../../core/i18n/i18n.js";import*as i from"../../core/sdk/sdk.js";import*as o from"../../models/bindings/bindings.js";import*as n from"../../models/extensions/extensions.js";import*as s from"../emulation/emulation.js";import*as a from"../timeline/timeline.js";import*as c from"../../ui/components/buttons/buttons.js";import*as d from"../../ui/components/helpers/helpers.js";import*as l from"../../ui/components/icon_button/icon_button.js";import*as g from"../../ui/legacy/legacy.js";import*as h from"../../ui/lit-html/lit-html.js";import*as p from"../../services/tracing/tracing.js";import*as u from"../../ui/components/menus/menus.js";import*as R from"../../ui/components/dialogs/dialogs.js";import*as w from"./components/components.js";import*as m from"./converters/converters.js";import*as v from"./extensions/extensions.js";import*as S from"./models/models.js";const y=new CSSStyleSheet;y.replaceSync("*{margin:0;padding:0;box-sizing:border-box;font-size:inherit}*:focus,\n*:focus-visible{outline:none}:host{overflow-x:auto}:host,\ndevtools-recording-view,\ndevtools-create-recording-view{display:flex;flex-direction:column;flex:1;min-height:0}.wrapper{display:flex;flex-direction:column;height:100%}.header{background-color:var(--color-background);display:flex;flex-direction:row;align-items:center;border-bottom:1px solid var(--color-details-hairline);padding:0 5px;min-height:29px;max-height:29px;gap:3px}.separator{background-color:var(--color-details-hairline);width:1px;height:17px;margin:0}select{border-radius:2px;border:1px solid transparent;height:24px;max-width:180px;min-width:140px;padding:0 5px;position:relative;color:var(--color-text-primary);background-color:var(--color-background);text-overflow:ellipsis}select:disabled{color:var(--color-input-text-disabled)}select:not([disabled]):hover,\nselect:not([disabled]):focus-visible,\nselect:not([disabled]):active{background-color:var(--color-iconbutton-hover)}select:not([disabled]):focus-visible{box-shadow:0 0 0 2px var(--color-button-outline-focus)}select option{background-color:var(--color-background-elevation-1);color:var(--color-text-primary)}devtools-menu{width:0;height:0;position:absolute}devtools-recording-list-view{overflow:auto}.error{color:var(--color-error-text);border:1px solid var(--color-error-border);background-color:var(--color-error-background);padding:4px}.feedback{margin-left:auto;margin-right:4px}.feedback .x-link{letter-spacing:0.03em;text-decoration-line:underline;font-size:9px;line-height:16px;color:var(--color-text-secondary);outline-offset:3px}.feedback .x-link:focus-visible{outline:-webkit-focus-ring-color auto 1px}.continue-button{border:none;background-color:transparent;width:24px;height:24px;border-radius:2px}.continue-button devtools-icon{width:24px;height:24px;--icon-color:var(--color-primary)}.continue-button:hover,\n.continue-button:focus-visible{background-color:var(--color-iconbutton-hover)}.continue-button:disabled{background:var(--color-background);color:var(--color-text-disabled);cursor:not-allowed}.continue-button:disabled devtools-icon{--icon-color:var(--icon-disabled)}devtools-shortcut-dialog{padding-right:6px}\n/*# sourceURL=recorderController.css */\n");class f extends Event{static eventName="replayfinished";constructor(){super(f.eventName,{bubbles:!0,composed:!0})}}class x extends Event{recording;static eventName="recordingstatechanged";constructor(e){super(x.eventName,{bubbles:!0,composed:!0}),this.recording=e}}var P=Object.freeze({__proto__:null,ReplayFinishedEvent:f,RecordingStateChangedEvent:x}),b=self&&self.__decorate||function(e,t,r,i){var o,n=arguments.length,s=n<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,r):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,i);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(n<3?o(s):n>3?o(t,r,s):o(t,r))||s);return n>3&&s&&Object.defineProperty(t,r,s),s};const{html:E,Decorators:C,LitElement:T}=h,{customElement:k,state:N}=C,$={createRecording:"Create a new recording",importRecording:"Import recording",deleteRecording:"Delete recording",continueReplay:"Continue",stepOverReplay:"Execute one step",exportRecording:"Export",startStopRecording:"Start/Stop recording",replayRecording:"Replay recording",copyShortcut:"Copy recording or selected step",toggleCode:"Toggle code view",export:"Export",exportViaExtensions:"Export via extensions",getExtensions:"Get extensions…",sendFeedback:"Send feedback"},M=r.i18n.registerUIStrings("panels/recorder/RecorderController.ts",$),I=r.i18n.getLocalizedString.bind(void 0,M),B={json:t.UserMetrics.RecordingExported.ToJSON,"@puppeteer/replay":t.UserMetrics.RecordingExported.ToPuppeteerReplay,puppeteer:t.UserMetrics.RecordingExported.ToPuppeteer,lighthouse:t.UserMetrics.RecordingExported.ToLighthouse};let F=class extends T{static styles=[y];#e=S.RecordingStorage.RecordingStorage.instance();#t=S.ScreenshotStorage.ScreenshotStorage.instance();#r=!0;#i={isPlaying:!1,isPausedOnBreakpoint:!1};#o;#n;#s=new Set;#a;#c=new S.RecorderSettings.RecorderSettings;#d=new S.RecorderShortcutHelper.RecorderShortcutHelper;constructor(){super(),this.isRecording=!1,this.isToggling=!1,this.exportMenuExpanded=!1,this.currentPage="StartPage",this.#e.getRecordings().length&&this.#l("AllRecordingsPage");const t=e.Settings.Settings.instance().moduleSetting("textEditorIndent").get();this.#a=Object.freeze([new m.JSONConverter.JSONConverter(t),new m.PuppeteerReplayConverter.PuppeteerReplayConverter(t),new m.PuppeteerConverter.PuppeteerConverter(t),new m.LighthouseConverter.LighthouseConverter(t)]);const r=v.ExtensionManager.ExtensionManager.instance();this.#g(r.extensions()),r.addEventListener(v.ExtensionManager.Events.ExtensionsUpdated,(e=>{this.#g(e.data)})),this.addEventListener("setrecording",(e=>this.#h(e)))}disconnectedCallback(){super.disconnectedCallback(),this.currentRecordingSession&&this.currentRecordingSession.stop()}#g(e){this.extensionConverters=e.filter((e=>e.getCapabilities().includes("export"))).map(((e,t)=>new m.ExtensionConverter.ExtensionConverter(t,e))),this.replayExtensions=e.filter((e=>e.getCapabilities().includes("replay")))}setIsRecordingStateForTesting(e){this.isRecording=e}setRecordingStateForTesting(e){this.#i.isPlaying=e.isPlaying,this.#i.isPausedOnBreakpoint=e.isPausedOnBreakpoint}setCurrentPageForTesting(e){this.#l(e)}getCurrentPageForTesting(){return this.currentPage}getCurrentRecordingForTesting(){return this.currentRecording}getStepBreakpointIndexesForTesting(){return[...this.#s.values()]}#p(){this.importError=void 0}async#u(t){const r=new e.StringOutputStream.StringOutputStream,i=new o.FileUtils.ChunkedFileReader(t,1e7);if(!await i.read(r))throw i.error();let n;try{n=S.SchemaUtils.parse(JSON.parse(r.data()))}catch(e){return void(this.importError=e)}this.#R(await this.#e.saveRecording(n)),this.#l("RecordingPage"),this.#p()}setCurrentRecordingForTesting(e){this.#R(e)}getSectionsForTesting(){return this.sections}#R(e,t={}){const{keepBreakpoints:r=!1,updateSession:i=!1}=t;this.recordingPlayer?.abort(),this.currentStep=void 0,this.recordingError=void 0,this.lastReplayResult=void 0,this.recordingPlayer=void 0,this.#i.isPlaying=!1,this.#i.isPausedOnBreakpoint=!1,this.#s=r?this.#s:new Set,e?(this.currentRecording=e,this.sections=S.Section.buildSections(e.flow.steps),this.settings=this.#w(e.flow),i&&this.currentRecordingSession&&this.currentRecordingSession.overwriteUserFlow(e.flow)):(this.currentRecording=void 0,this.sections=void 0,this.settings=void 0),this.#m()}#l(e){e!==this.currentPage&&(this.previousPage=this.currentPage,this.currentPage=e)}#w(e){const t=e.steps,r=t.findIndex((e=>"navigate"===e.type)),o={timeout:e.timeout};for(let e=r-1;e>=0;e--){const r=t[e];if(o.viewportSettings||"setViewport"!==r.type||(o.viewportSettings=r),!o.networkConditionsSettings&&"emulateNetworkConditions"===r.type){o.networkConditionsSettings={...r};for(const e of[i.NetworkManager.OfflineConditions,i.NetworkManager.Slow3GConditions,i.NetworkManager.Fast3GConditions])i.NetworkManager.networkConditionsEqual({...e,title:e.i18nTitleKey||""},{...r,title:e.i18nTitleKey||""})&&(o.networkConditionsSettings.title=e.title instanceof Function?e.title():e.title,o.networkConditionsSettings.i18nTitleKey=e.i18nTitleKey)}}return o}#v(){const e=i.TargetManager.TargetManager.instance().primaryPageTarget();if(!e)throw new Error("Missing main page target");return e}#S(e){if(!this.sections)return null;for(const t of this.sections)if(-1!==t.steps.indexOf(e))return t;return null}#m(){if(!this.sections||!this.currentRecording)return;const e=this.currentRecording.storageName;for(let t=0;t<this.sections.length;t++){const r=this.#t.getScreenshotForSection(e,t);this.sections[t].screenshot=r||void 0}this.requestUpdate()}#y(){this.recordingPlayer?.abort()}async#f(e){if(!this.currentRecording||!this.#r)return;const r=n.RecorderPluginManager.RecorderPluginManager.instance().once(n.RecorderPluginManager.Events.ShowViewRequested);e.replay(this.currentRecording.flow);const i=await r;this.viewDescriptor=i,t.userMetrics.recordingReplayStarted(t.UserMetrics.RecordingReplayStarted.ReplayViaExtension)}async#x(e){if(!this.currentRecording||!this.#r)return;if(this.viewDescriptor&&(this.viewDescriptor=void 0),e.data.extension)return this.#f(e.data.extension);t.userMetrics.recordingReplayStarted("chrome_recorder"!==e.data.targetPanel?t.UserMetrics.RecordingReplayStarted.ReplayWithPerformanceTracing:t.UserMetrics.RecordingReplayStarted.ReplayOnly),this.#i.isPlaying=!0,this.currentStep=void 0,this.recordingError=void 0,this.lastReplayResult=void 0;const r=this.currentRecording;this.#p(),await this.#P(),this.recordingPlayer=new S.RecordingPlayer.RecordingPlayer(this.currentRecording.flow,{speed:e.data.speed,breakpointIndexes:this.#s});const i="timeline"===e.data.targetPanel,o=new Set;this.recordingPlayer.addEventListener("Step",(async({data:{step:e,resolve:t}})=>{this.currentStep=e;const i=this.#S(e);if(this.sections&&i&&!o.has(i)){o.add(i);const e=this.sections.indexOf(i),t=await S.ScreenshotUtils.takeScreenshot();i.screenshot=t,S.ScreenshotStorage.ScreenshotStorage.instance().storeScreenshotForSection(r.storageName,e,t)}t()})),this.recordingPlayer.addEventListener("Stop",(()=>{this.#i.isPausedOnBreakpoint=!0,this.requestUpdate()})),this.recordingPlayer.addEventListener("Continue",(()=>{this.#i.isPausedOnBreakpoint=!1,this.requestUpdate()})),this.recordingPlayer.addEventListener("Error",(({data:e})=>{this.recordingError=e,i||(this.#i.isPlaying=!1,this.recordingPlayer=void 0),this.lastReplayResult="Failure";const r=e.message.toLowerCase();r.startsWith("could not find element")?t.userMetrics.recordingReplayFinished(t.UserMetrics.RecordingReplayFinished.TimeoutErrorSelectors):r.startsWith("waiting for target failed")?t.userMetrics.recordingReplayFinished(t.UserMetrics.RecordingReplayFinished.TimeoutErrorTarget):t.userMetrics.recordingReplayFinished(t.UserMetrics.RecordingReplayFinished.OtherError)})),this.recordingPlayer.addEventListener("Done",(()=>{i||(this.#i.isPlaying=!1,this.recordingPlayer=void 0),this.lastReplayResult="Success",this.dispatchEvent(new f),t.userMetrics.recordingReplayFinished(t.UserMetrics.RecordingReplayFinished.Success)})),this.recordingPlayer.addEventListener("Abort",(()=>{this.currentStep=void 0,this.recordingError=void 0,this.lastReplayResult=void 0,this.#i.isPlaying=!1}));let n=e=>{};const s=new Promise((e=>{n=e}));let c=null;if("timeline"===e.data?.targetPanel)c=new p.PerformanceTracing.PerformanceTracing(this.#v(),{tracingBufferUsage(){},eventsRetrievalProgress(){},tracingComplete(e){n(e)}});if(c&&await c.start(),this.#b(!1),await this.recordingPlayer.play(),this.#b(!0),c){await c.stop();const t=await s;if(this.#i.isPlaying=!1,this.recordingPlayer=void 0,await g.InspectorView.InspectorView.instance().showPanel(e.data?.targetPanel),"timeline"===e.data?.targetPanel)a.TimelinePanel.TimelinePanel.instance().loadFromEvents(t)}}async#P(){try{const e=s.DeviceModeWrapper.DeviceModeWrapper.instance();if(e.isDeviceModeOn()){e.toggleDeviceMode();const t=this.#v().model(i.EmulationModel.EmulationModel);await(t?.emulateDevice(null))}}catch{}}#b(e){this.#v().model(i.EmulationModel.EmulationModel)?.setTouchEmulationAllowed(e)}async#h(e){const t=JSON.parse(e.detail);this.#R(await this.#e.saveRecording(S.SchemaUtils.parse(t))),this.#l("RecordingPage"),this.#p()}getUserFlow(){return this.currentRecording?.flow}async#E(e){if(!this.currentRecording)throw new Error("Current recording expected to be defined.");const t={...this.currentRecording,flow:{...this.currentRecording.flow,steps:this.currentRecording.flow.steps.map((t=>t===e.currentStep?e.newStep:t))}};this.#R(await this.#e.updateRecording(t.storageName,t.flow),{keepBreakpoints:!0,updateSession:!0})}async#C(e){if(!this.currentRecording)throw new Error("Current recording expected to be defined.");const r=e.stepOrSection;let i,o=e.position;if("steps"in r){const t=this.sections?.indexOf(r);if(void 0===t||-1===t)throw new Error("There is no section to add a step to");if("after"===e.position)this.sections?.[t].steps.length?(i=this.sections?.[t].steps[0],o="before"):(i=this.sections?.[t].causingStep,o="after");else{if(t<=0)throw new Error("There is no section to add a step to");const e=this.sections?.[t-1];i=e?.steps[e.steps.length-1],o="after"}}else i=r;if(!i)throw new Error("Anchor step is not found when adding a step");const n=this.currentRecording.flow.steps,s=n.indexOf(i)+("before"===o?0:1);n.splice(s,0,{type:S.Schema.StepType.WaitForElement,selectors:["body"]});const a={...this.currentRecording,flow:{...this.currentRecording.flow,steps:n}};t.userMetrics.recordingEdited(t.UserMetrics.RecordingEdited.StepAdded),this.#s=new Set([...this.#s.values()].map((e=>s>e?e:e+1))),this.#R(await this.#e.updateRecording(a.storageName,a.flow),{keepBreakpoints:!0,updateSession:!0})}async#T(e){if(!this.currentRecording)throw new Error("Current recording expected to be defined.");const t={...this.currentRecording.flow,title:e.title};this.#R(await this.#e.updateRecording(this.currentRecording.storageName,t))}async#k(e){if(!this.currentRecording)throw new Error("Current recording expected to be defined.");const r=this.currentRecording.flow.steps,i=r.indexOf(e.step);r.splice(i,1);const o={...this.currentRecording.flow,steps:r};t.userMetrics.recordingEdited(t.UserMetrics.RecordingEdited.StepRemoved),this.#s=new Set([...this.#s.values()].map((e=>i>e?e:i===e?-1:e-1)).filter((e=>e>=0))),this.#R(await this.#e.updateRecording(this.currentRecording.storageName,o),{keepBreakpoints:!0,updateSession:!0})}async#N(e){if(!this.currentRecording)throw new Error("Current recording expected to be defined.");const t=this.currentRecording.flow.steps.findIndex((e=>"navigate"===e.type));if(-1===t)throw new Error("Current recording does not have a navigate step");const r=this.currentRecording.flow.steps.findIndex(((e,r)=>!(r>=t)&&"emulateNetworkConditions"===e.type));if(e.data)if(-1===r)this.currentRecording.flow.steps.splice(0,0,S.SchemaUtils.createEmulateNetworkConditionsStep({download:e.data.download,upload:e.data.upload,latency:e.data.latency}));else{const t=this.currentRecording.flow.steps[r];t.download=e.data.download,t.upload=e.data.upload,t.latency=e.data.latency}else-1!==r&&this.currentRecording.flow.steps.splice(r,1);this.#R(await this.#e.updateRecording(this.currentRecording.storageName,this.currentRecording.flow))}async#$(e){if(!this.currentRecording)throw new Error("Current recording expected to be defined.");this.currentRecording.flow.timeout=e.data,this.#R(await this.#e.updateRecording(this.currentRecording.storageName,this.currentRecording.flow))}async#M(e){if(e.stopPropagation(),e instanceof w.RecordingListView.DeleteRecordingEvent)await this.#e.deleteRecording(e.storageName),this.#t.deleteScreenshotsForRecording(e.storageName),this.requestUpdate();else{if(!this.currentRecording)return;await this.#e.deleteRecording(this.currentRecording.storageName),this.#t.deleteScreenshotsForRecording(this.currentRecording.storageName)}(await this.#e.getRecordings()).length?this.#l("AllRecordingsPage"):this.#l("StartPage"),this.#R(void 0),this.#p()}#I(e){e?.stopPropagation(),this.#l("CreateRecordingPage"),this.#p()}async#B(e){await this.#P(),this.isToggling=!0,this.#p(),t.userMetrics.recordingToggled(t.UserMetrics.RecordingToggled.RecordingStarted),this.currentRecordingSession=new S.RecordingSession.RecordingSession(this.#v(),{title:e.name,selectorAttribute:e.selectorAttribute,selectorTypesToRecord:e.selectorTypesToRecord.length?e.selectorTypesToRecord:Object.values(S.Schema.SelectorType)}),this.#R(await this.#e.saveRecording(this.currentRecordingSession.cloneUserFlow()));let r,i=-1;const o=async e=>{if(!this.sections)throw new Error("Could not find sections.");const t=this.sections.length-1,o=this.sections[t];if(r||i===t)return;r=S.ScreenshotUtils.takeScreenshot();const n=await r;r=void 0,o.screenshot=n,S.ScreenshotStorage.ScreenshotStorage.instance().storeScreenshotForSection(e.storageName,t,n),i=t,this.#m()};this.currentRecordingSession.addEventListener("recordingupdated",(async({data:e})=>{if(!this.currentRecording)throw new Error("No current recording found");this.#R(await this.#e.updateRecording(this.currentRecording.storageName,e));const t=this.shadowRoot?.querySelector("devtools-recording-view");t?.scrollToBottom(),await o(this.currentRecording)})),this.currentRecordingSession.addEventListener("recordingstopped",(async({data:e})=>{if(!this.currentRecording)throw new Error("No current recording found");t.userMetrics.keyboardShortcutFired("chrome_recorder.start-recording"),this.#R(await this.#e.updateRecording(this.currentRecording.storageName,e)),await this.#F()})),await this.currentRecordingSession.start(),this.isToggling=!1,this.isRecording=!0,this.#l("RecordingPage"),this.dispatchEvent(new x(this.currentRecording.flow))}async#F(){if(!this.currentRecording||!this.currentRecordingSession)throw new Error("Recording was never started");this.isToggling=!0,this.#p(),t.userMetrics.recordingToggled(t.UserMetrics.RecordingToggled.RecordingFinished),await this.currentRecordingSession.stop(),this.currentRecordingSession=void 0,this.isToggling=!1,this.isRecording=!1,this.dispatchEvent(new x(this.currentRecording.flow))}async#A(){this.previousPage&&this.#l(this.previousPage)}async#V(e){const t=e instanceof w.RecordingListView.OpenRecordingEvent||e instanceof w.RecordingListView.PlayRecordingEvent?e.storageName:e.target?.value;this.#R(await this.#e.getRecording(t)),this.currentRecording?this.#l("RecordingPage"):"StartPage"===t?this.#l("StartPage"):"AllRecordingsPage"===t&&this.#l("AllRecordingsPage")}async#O(e){if("string"!=typeof e.itemValue)throw new Error("Invalid export option value");if("get-extensions-link"===e.itemValue)return void t.InspectorFrontendHost.InspectorFrontendHostInstance.openInNewTab("https://goo.gle/recorder-extension-list");if(!this.currentRecording)throw new Error("No recording selected");const r=e.itemValue,i=e=>e.getId()===r,o=this.#a.find(i)||this.extensionConverters.find(i);if(!o)throw new Error("No recording selected");const[n]=await o.stringify(this.currentRecording.flow);await this.#U(o.getFilename(this.currentRecording.flow),n);const s=B[o.getId()];if(s)t.userMetrics.recordingExported(s);else{if(!o.getId().startsWith(m.ExtensionConverter.EXTENSION_PREFIX))throw new Error("Could not find a metric for the export option with id = "+r);t.userMetrics.recordingExported(t.UserMetrics.RecordingExported.ToExtension)}}async#U(e,t){try{const r=await window.showSaveFilePicker({suggestedName:e}),i=await r.createWritable();await i.write(t),await i.close()}catch(e){if("AbortError"===e.name)return;throw e}}async#_(){if(!this.currentRecordingSession||!this.currentRecording)return;const e=this.currentRecordingSession.cloneUserFlow();e.steps.push({type:"waitForElement",selectors:[[".cls"]]}),this.#R(await this.#e.updateRecording(this.currentRecording.storageName,e),{keepBreakpoints:!0,updateSession:!0}),t.userMetrics.recordingAssertion(t.UserMetrics.RecordingAssertion.AssertionAdded),await this.updateComplete,this.renderRoot.querySelector("devtools-recording-view")?.shadowRoot?.querySelector(".section:last-child devtools-step-view:last-of-type")?.shadowRoot?.querySelector(".action")?.click()}#D(e){e.stopPropagation(),this.#p(),this.#o=g.UIUtils.createFileSelectorElement(this.#u.bind(this)),this.#o.click()}async#j(e){await this.#V(e),await this.#x(new w.RecordingView.PlayRecordingEvent({targetPanel:"chrome_recorder",speed:this.#c.speed}))}#L=e=>{this.#s.add(e.index),this.recordingPlayer?.updateBreakpointIndexes(this.#s),this.requestUpdate()};#q=e=>{this.#s.delete(e.index),this.recordingPlayer?.updateBreakpointIndexes(this.#s),this.requestUpdate()};#W(){this.viewDescriptor=void 0}handleActions(e){if(this.isActionPossible(e))switch(e){case"chrome_recorder.create-recording":return void this.#I();case"chrome_recorder.start-recording":if("CreateRecordingPage"===this.currentPage||this.isRecording)if("CreateRecordingPage"===this.currentPage){const e=this.renderRoot.querySelector("devtools-create-recording-view");e&&this.#d.handleShortcut(e.startRecording.bind(e))}else this.isRecording&&this.#F();else this.#d.handleShortcut(this.#B.bind(this,new w.CreateRecordingView.RecordingStartedEvent(this.#c.defaultTitle,this.#c.defaultSelectors,this.#c.selectorAttribute)));return;case"chrome_recorder.replay-recording":return void this.#x(new w.RecordingView.PlayRecordingEvent({targetPanel:"chrome_recorder",speed:this.#c.speed}));case"chrome_recorder.toggle-code-view":{const e=this.renderRoot.querySelector("devtools-recording-view");return void(e&&e.showCodeToggle())}}}isActionPossible(e){switch(e){case"chrome_recorder.create-recording":return!this.isRecording&&!this.#i.isPlaying;case"chrome_recorder.start-recording":return!this.#i.isPlaying;case"chrome_recorder.replay-recording":return"RecordingPage"===this.currentPage&&!this.#i.isPlaying;case"chrome_recorder.toggle-code-view":return"RecordingPage"===this.currentPage}}#z(){const e=e=>g.ShortcutRegistry.ShortcutRegistry.instance().shortcutsForAction(e).map((e=>e.title()));return[{title:I($.startStopRecording),bindings:e("chrome_recorder.start-recording")},{title:I($.replayRecording),bindings:e("chrome_recorder.replay-recording")},{title:I($.copyShortcut),bindings:[""+(t.Platform.isMac()?"⌘ C":"Ctrl+C")]},{title:I($.toggleCode),bindings:e("chrome_recorder.toggle-code-view")}]}#H(){switch(this.currentPage){case"StartPage":return this.#G();case"AllRecordingsPage":return this.#J();case"RecordingPage":return this.#K();case"CreateRecordingPage":return this.#X()}}#J(){const e=this.#e.getRecordings();return E` <${w.RecordingListView.RecordingListView.litTagName} .recordings="${e.map((e=>({storageName:e.storageName,name:e.flow.title})))}" .replayAllowed="${this.#r}" @createrecording="${this.#I}" @deleterecording="${this.#M}" @openrecording="${this.#V}" @playrecording="${this.#j}"> </${w.RecordingListView.RecordingListView.litTagName}> `}#G(){return E` <${w.StartView.StartView.litTagName} @createrecording="${this.#I}"></${w.StartView.StartView.litTagName}> `}#K(){return E` <${w.RecordingView.RecordingView.litTagName} .data="${{recording:this.currentRecording?.flow,replayState:this.#i,isRecording:this.isRecording,recordingTogglingInProgress:this.isToggling,currentStep:this.currentStep,currentError:this.recordingError,sections:this.sections,settings:this.settings,recorderSettings:this.#c,lastReplayResult:this.lastReplayResult,replayAllowed:this.#r,breakpointIndexes:this.#s,builtInConverters:this.#a,extensionConverters:this.extensionConverters,replayExtensions:this.replayExtensions,extensionDescriptor:this.viewDescriptor}}" @networkconditionschanged="${this.#N}" @timeoutchanged="${this.#$}" @requestselectorattribute="${e=>{e.send(this.currentRecording?.flow.selectorAttribute)}}" @recordingfinished="${this.#F}" @stepchanged="${this.#E.bind(this)}" @recordingtitlechanged="${this.#T.bind(this)}" @addstep="${this.#C.bind(this)}" @removestep="${this.#k.bind(this)}" @addbreakpoint="${this.#L}" @removebreakpoint="${this.#q}" @playrecording="${this.#x}" @abortreplay="${this.#y}" @recorderextensionviewclosed="${this.#W}" @addassertion="${this.#_}"></${w.RecordingView.RecordingView.litTagName}> `}#X(){return E` <${w.CreateRecordingView.CreateRecordingView.litTagName} .data="${{recorderSettings:this.#c}}" @recordingstarted="${this.#B}" @recordingcancelled="${this.#A}"></${w.CreateRecordingView.CreateRecordingView.litTagName}> `}#Q=()=>{if(!this.#n)throw new Error("#exportMenuButton not found");return this.#n};#Y(e){e.stopPropagation(),this.#p(),this.exportMenuExpanded=!this.exportMenuExpanded}#Z(){this.exportMenuExpanded=!1}render(){const e=this.#e.getRecordings(),t=this.currentRecording?this.currentRecording.storageName:this.currentPage,r=[0===e.length?{value:"StartPage",name:"No recordings",selected:"StartPage"===t}:{value:"AllRecordingsPage",name:`${e.length} recording(s)`,selected:"AllRecordingsPage"===t},...e.map((e=>({value:e.storageName,name:e.flow.title,selected:t===e.storageName})))];return E` <div class="wrapper"> <div class="header"> <${c.Button.Button.litTagName} @click="${this.#I}" .data="${{variant:"toolbar",iconName:"plus",disabled:this.#i.isPlaying||this.isRecording||this.isToggling,title:S.Tooltip.getTooltipForActions(I($.createRecording),"chrome_recorder.create-recording")}}"></${c.Button.Button.litTagName}> <div class="separator"></div> <select .disabled="${0===e.length||this.#i.isPlaying||this.isRecording||this.isToggling}" @click="${e=>e.stopPropagation()}" @change="${this.#V}"> ${h.Directives.repeat(r,(e=>e.value),(e=>E`<option .selected="${e.selected}" value="${e.value}">${e.name}`))} </select> <div class="separator"></div> <${c.Button.Button.litTagName} @click="${this.#D}" .data="${{variant:"toolbar",iconName:"import",title:I($.importRecording)}}"></${c.Button.Button.litTagName}> <${c.Button.Button.litTagName} id="origin" @click="${this.#Y}" on-render="${d.Directives.nodeRenderedCallback((e=>{this.#n=e}))}" .data="${{variant:"toolbar",iconName:"download",title:I($.exportRecording),disabled:!this.currentRecording}}"></${c.Button.Button.litTagName}> <${u.Menu.Menu.litTagName} @menucloserequest="${this.#Z}" @menuitemselected="${this.#O}" .origin="${this.#Q}" .showDivider="${!1}" .showSelectedItem="${!1}" .showConnector="${!1}" .open="${this.exportMenuExpanded}"> <${u.Menu.MenuGroup.litTagName} .name="${I($.export)}"> ${h.Directives.repeat(this.#a,(e=>E` <${u.Menu.MenuItem.litTagName} .value="${e.getId()}"> ${e.getFormatName()} </${u.Menu.MenuItem.litTagName}> `))} </${u.Menu.MenuGroup.litTagName}> <${u.Menu.MenuGroup.litTagName} .name="${I($.exportViaExtensions)}"> ${h.Directives.repeat(this.extensionConverters,(e=>E` <${u.Menu.MenuItem.litTagName} .value="${e.getId()}"> ${e.getFormatName()} </${u.Menu.MenuItem.litTagName}> `))} <${u.Menu.MenuItem.litTagName} .value="${"get-extensions-link"}"> ${I($.getExtensions)} </${u.Menu.MenuItem.litTagName}> </${u.Menu.MenuGroup.litTagName}> </${u.Menu.Menu.litTagName}> <${c.Button.Button.litTagName} @click="${this.#M}" .data="${{variant:"toolbar",iconName:"bin",disabled:!this.currentRecording||this.#i.isPlaying||this.isRecording||this.isToggling,title:I($.deleteRecording)}}"></${c.Button.Button.litTagName}> <div class="separator"></div> <button class="continue-button" .disabled="${!this.recordingPlayer||!this.#i.isPausedOnBreakpoint}" title="${I($.continueReplay)}" @click="${()=>this.recordingPlayer?.continue()}"> <${l.Icon.Icon.litTagName} .data="${{iconName:"resume",color:"var(--icon-color)"}}"></${l.Icon.Icon.litTagName}> </button> <${c.Button.Button.litTagName} @click="${()=>this.recordingPlayer?.stepOver()}" .data="${{variant:"toolbar",iconName:"step-over",disabled:!this.recordingPlayer||!this.#i.isPausedOnBreakpoint,title:I($.stepOverReplay)}}"></${c.Button.Button.litTagName}> <div class="feedback"> <x-link class="x-link" href="${w.StartView.FEEDBACK_URL}">${I($.sendFeedback)}</x-link> </div> <div class="separator"></div> <${R.ShortcutDialog.ShortcutDialog.litTagName} .data="${{shortcuts:this.#z()}}"></${R.ShortcutDialog.ShortcutDialog.litTagName}> </div> ${this.importError?E`<div class="error">Import error: ${this.importError.message}</div>`:""} ${this.#H()} </div> `}};b([N()],F.prototype,"currentRecordingSession",void 0),b([N()],F.prototype,"currentRecording",void 0),b([N()],F.prototype,"currentStep",void 0),b([N()],F.prototype,"recordingError",void 0),b([N()],F.prototype,"isRecording",void 0),b([N()],F.prototype,"isToggling",void 0),b([N()],F.prototype,"recordingPlayer",void 0),b([N()],F.prototype,"lastReplayResult",void 0),b([N()],F.prototype,"currentPage",void 0),b([N()],F.prototype,"previousPage",void 0),b([N()],F.prototype,"sections",void 0),b([N()],F.prototype,"settings",void 0),b([N()],F.prototype,"importError",void 0),b([N()],F.prototype,"exportMenuExpanded",void 0),b([N()],F.prototype,"extensionConverters",void 0),b([N()],F.prototype,"replayExtensions",void 0),b([N()],F.prototype,"viewDescriptor",void 0),F=b([k("devtools-recorder-controller")],F);var A=Object.freeze({__proto__:null,get RecorderController(){return F}});let V,O;class U extends g.Panel.Panel{static panelName="chrome_recorder";#ee;constructor(){super(U.panelName),this.#ee=new F,this.contentElement.append(this.#ee),this.contentElement.style.minWidth="400px"}static instance(e={forceNew:null}){const{forceNew:t}=e;return V&&!t||(V=new U),V}wasShown(){g.Context.Context.instance().setFlavor(U,this),this.#ee.focus()}willHide(){g.Context.Context.instance().setFlavor(U,null)}handleActions(e){this.#ee.handleActions(e)}isActionPossible(e){return this.#ee.isActionPossible(e)}}class _{static instance(e={forceNew:null}){const{forceNew:t}=e;return O&&!t||(O=new _),O}handleAction(e,t){return(async()=>{await g.ViewManager.ViewManager.instance().showView(U.panelName);const e=g.ViewManager.ViewManager.instance().view(U.panelName);if(e){(await e.widget()).handleActions(t)}})(),!0}}var D=Object.freeze({__proto__:null,RecorderPanel:U,ActionDelegate:_});export{A as RecorderController,P as RecorderEvents,D as RecorderPanel};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as t from"../../../core/platform/platform.js";import*as e from"../../../core/common/common.js";var r=Object.freeze({__proto__:null,SharedObject:class{#t=new e.Mutex.Mutex;#e=0;#r;#a;#s;constructor(t,e){this.#a=t,this.#s=e}async acquire(){return await this.#t.run((async()=>{0===this.#e&&(this.#r=await this.#a()),++this.#e})),[this.#r,this.#i.bind(this,{released:!1})]}async run(t){const[e,r]=await this.acquire();try{return await t(e)}finally{await r()}}async#i(t){if(t.released)throw new Error("Attempted to release object multiple times.");try{t.released=!0,await this.#t.run((async()=>{1===this.#e&&(await this.#s(this.#r),this.#r=void 0),--this.#e}))}catch(e){throw t.released=!1,e}}}});let a;try{a=!1}catch{a=!0}const s="devtools_recorder";class i{static#c;static async get(){return this.#c||(this.#c=(await fetch(new URL("../injected/injected.generated.js",import.meta.url))).text()),this.#c}}export{s as DEVTOOLS_RECORDER_WORLD_NAME,i as InjectedScript,r as SharedObject,a as isDebugBuild};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../core/i18n/i18n.js";import*as o from"../../core/root/root.js";import*as n from"../../ui/legacy/legacy.js";const i={rnWelcome:"⚛️ Welcome",showRnWelcome:"Show React Native Welcome panel"},r=e.i18n.registerUIStrings("panels/rn_welcome/rn_welcome-meta.ts",i),t=e.i18n.getLazilyComputedLocalizedString.bind(void 0,r);let m;n.ViewManager.registerViewExtension({location:"panel",id:"rn-welcome",title:t(i.rnWelcome),commandPrompt:t(i.showRnWelcome),order:-10,persistence:"permanent",loadView:async()=>(await async function(){return m||(m=await import("./rn_welcome.js")),m}()).RNWelcome.RNWelcomeImpl.instance(),experiment:o.Runtime.ExperimentName.REACT_NATIVE_SPECIFIC_UI});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../ui/legacy/legacy.js";import*as t from"../../core/i18n/i18n.js";import*as n from"../../ui/lit-html/lit-html.js";const i=new CSSStyleSheet;i.replaceSync('.rn-welcome-panel{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:16px;text-align:center;background-color:var(--color-background-elevation-0)}.rn-welcome-header{display:flex;align-items:center;margin-bottom:16px}.rn-welcome-icon{width:30px;height:30px;border-radius:4px;margin-right:12px}.rn-welcome-title{font-size:20px;color:var(--color-text-primary)}.rn-welcome-tagline{margin-bottom:24px;font-size:1rem;line-height:1.3;color:var(--color-text-secondary)}.rn-welcome-links{display:flex;align-items:center}.rn-welcome-links > .devtools-link{position:relative;margin:0 16px;font-size:14px}.rn-welcome-links > .devtools-link:not(:last-child)::after{content:"";position:absolute;right:-16px;height:16px;border-right:1px solid var(--color-details-hairline)}\n/*# sourceURL=rnWelcome.css */\n');const o={debuggerBrandName:"React Native JS Inspector",welcomeMessage:"Welcome to debugging in React Native",docsLabel:"Debugging docs",whatsNewLabel:"What's new"},{render:r,html:l}=n,s=t.i18n.registerUIStrings("panels/rn_welcome/RNWelcome.ts",o),c=t.i18n.getLocalizedString.bind(void 0,s);let a;class d extends e.Widget.VBox{static instance(e={forceNew:null}){const{forceNew:t}=e;return a&&!t||(a=new d),a}constructor(){super(!0,!0)}wasShown(){super.wasShown(),this.registerCSSFiles([i]),this.render(),e.InspectorView.InspectorView.instance().showDrawer(!0)}render(){const e=new URL("../../Images/react_native/welcomeIcon.png",import.meta.url).toString();r(l` <div class="rn-welcome-panel"> <div class="rn-welcome-header"> <img class="rn-welcome-icon" src="${e}" role="presentation"> <div class="rn-welcome-title"> ${c(o.debuggerBrandName)} </div> </div> <div class="rn-welcome-tagline"> ${c(o.welcomeMessage)} </div> <div class="rn-welcome-links"> <x-link class="devtools-link" href="https://reactnative.dev/docs/next/debugging"> ${c(o.docsLabel)} </x-link> <x-link class="devtools-link" href="https://reactnative.dev/blog/tags/debugging"> ${c(o.whatsNewLabel)} </x-link> </div> </div> `,this.contentElement,{host:this})}}var g=Object.freeze({__proto__:null,RNWelcomeImpl:d});export{g as RNWelcome};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as o from"../../core/common/common.js";import*as e from"../../ui/legacy/legacy.js";let r;async function t(){return r||(r=await import("./screencast.js")),r}e.Toolbar.registerToolbarItem({loadItem:async()=>(await t()).ScreencastApp.ToolbarButtonProvider.instance(),order:1,location:e.Toolbar.ToolbarItemLocation.MAIN_TOOLBAR_LEFT,showLabel:void 0,condition:void 0,separator:void 0,actionId:void 0}),o.AppProvider.registerAppProvider({loadAppProvider:async()=>(await t()).ScreencastApp.ScreencastAppProvider.instance(),order:1,condition:void 0}),e.ContextMenu.registerItem({location:e.ContextMenu.ItemLocation.MAIN_MENU,order:10,actionId:"components.request-app-banner"});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../core/sdk/sdk.js";import*as t from"../../core/common/common.js";import*as i from"../../core/i18n/i18n.js";import*as s from"../../ui/legacy/legacy.js";import*as n from"../../core/host/host.js";class o extends e.SDKModel.SDKModel{inputAgent;activeTouchOffsetTop;activeTouchParams;constructor(e){super(e),this.inputAgent=e.inputAgent(),this.activeTouchOffsetTop=null,this.activeTouchParams=null}emitKeyEvent(e){let t;switch(e.type){case"keydown":t="keyDown";break;case"keyup":t="keyUp";break;case"keypress":t="char";break;default:return}const i=e,s="keypress"===e.type?String.fromCharCode(i.charCode):void 0;this.inputAgent.invoke_dispatchKeyEvent({type:t,modifiers:this.modifiersForEvent(i),text:s,unmodifiedText:s?s.toLowerCase():void 0,keyIdentifier:i.keyIdentifier,code:i.code,key:i.key,windowsVirtualKeyCode:i.keyCode,nativeVirtualKeyCode:i.keyCode,autoRepeat:!1,isKeypad:!1,isSystemKey:!1})}emitTouchFromMouseEvent(e,t,i){const s=["none","left","middle","right"],n={mousedown:"mousePressed",mouseup:"mouseReleased",mousemove:"mouseMoved",mousewheel:"mouseWheel"},o=e.type;if(!(o in n))return;const a=e;if(!(a.which in s))return;if("mousewheel"!==o&&"none"===s[a.which])return;"mousedown"!==o&&null!==this.activeTouchOffsetTop||(this.activeTouchOffsetTop=t);const r=Math.round(a.offsetX/i);let l=Math.round(a.offsetY/i);l=Math.round(l-this.activeTouchOffsetTop);const h={type:n[o],x:r,y:l,modifiers:0,button:s[a.which],clickCount:0};if("mousewheel"===e.type){const e=a;h.deltaX=e.deltaX/i,h.deltaY=-e.deltaY/i}else this.activeTouchParams=h;"mouseup"===e.type&&(this.activeTouchOffsetTop=null),this.inputAgent.invoke_emulateTouchFromMouseEvent(h)}cancelTouch(){if(null!==this.activeTouchParams){const e=this.activeTouchParams;this.activeTouchParams=null,e.type="mouseReleased",this.inputAgent.invoke_emulateTouchFromMouseEvent(e)}}modifiersForEvent(e){return(e.altKey?1:0)|(e.ctrlKey?2:0)|(e.metaKey?4:0)|(e.shiftKey?8:0)}}e.SDKModel.SDKModel.register(o,{capabilities:e.Target.Capability.Input,autostart:!1});var a=Object.freeze({__proto__:null,InputModel:o});const r=new CSSStyleSheet;r.replaceSync(".screencast{overflow:hidden}.screencast-navigation{flex-direction:row;display:flex;flex:24px 0 0;position:relative;padding-left:1px;border-bottom:1px solid var(--color-details-hairline);background-origin:padding-box;background-clip:padding-box}.screencast-navigation button{border-radius:2px;background-color:transparent;background-image:image-set(var(--image-file-navigationControls) 1x,var(--image-file-navigationControls_2x) 2x);background-clip:content-box;background-origin:content-box;background-repeat:no-repeat;border:1px solid transparent;height:23px;padding:2px;width:23px}.screencast-navigation button:hover,\n.screencast-navigation button:focus{border-color:var(--legacy-accent-color-hover)}.screencast-navigation button:active{border-color:var(--color-background-elevation-2)}.screencast-navigation button[disabled]{opacity:50%}.screencast-navigation button.back{background-position-x:-1px}.screencast-navigation button.forward{background-position-x:-18px}.screencast-navigation button.reload{background-position-x:-37px}.screencast-navigation input{flex:1;margin:2px;max-height:19px}.screencast-navigation .progress{--override-progress-background-color:rgb(66 129 235);background-color:var(--override-progress-background-color);height:3px;left:0;position:absolute;top:100%;width:0;z-index:2}.-theme-with-dark-background .screencast-navigation .progress,\n:host-context(.-theme-with-dark-background) .screencast-navigation .progress{--override-progress-background-color:rgb(20 83 189)}.screencast-viewport{display:flex;border:1px solid var(--color-details-hairline);border-radius:20px;flex:none;padding:20px;margin:10px;background-color:var(--color-background-elevation-2)}.screencast-canvas-container{flex:auto;display:flex;border:1px solid var(--color-details-hairline);position:relative;cursor:image-set(var(--image-file-touchCursor) 1x,var(--image-file-touchCursor_2x) 2x),default}.screencast canvas{flex:auto;position:relative}.screencast-element-title{position:absolute;z-index:10}.screencast-tag-name{color:var(--color-token-tag)}.screencast-attribute{color:var(--color-token-attribute)}.screencast-dimension{--override-dimension-color:hsl(0deg 0% 45%);color:var(--override-dimension-color)}.screencast-glasspane{background-color:var(--color-background-opacity-80);font-size:30px;z-index:100;display:flex;justify-content:center;align-items:center}\n/*# sourceURL=screencastView.css */\n");const l={screencastViewOfDebugTarget:"Screencast view of debug target",theTabIsInactive:"The tab is inactive",profilingInProgress:"Profiling in progress",back:"back",forward:"forward",reload:"reload",addressBar:"Address bar"},h=i.i18n.registerUIStrings("panels/screencast/ScreencastView.ts",l),d=i.i18n.getLocalizedString.bind(void 0,h);class c extends s.Widget.VBox{screenCaptureModel;domModel;overlayModel;resourceTreeModel;networkManager;inputModel;shortcuts;scrollOffsetX;scrollOffsetY;screenZoom;screenOffsetTop;pageScaleFactor;imageElement;viewportElement;glassPaneElement;canvasElement;titleElement;context;imageZoom;tagNameElement;attributeElement;nodeWidthElement;nodeHeightElement;model;highlightConfig;navigationUrl;navigationBack;navigationForward;canvasContainerElement;isCasting;checkerboardPattern;targetInactive;deferredCasting;highlightNode;config;node;inspectModeConfig;navigationBar;navigationReload;navigationProgressBar;historyIndex;historyEntries;constructor(t){super(),this.screenCaptureModel=t,this.domModel=t.target().model(e.DOMModel.DOMModel),this.overlayModel=t.target().model(e.OverlayModel.OverlayModel),this.resourceTreeModel=t.target().model(e.ResourceTreeModel.ResourceTreeModel),this.networkManager=t.target().model(e.NetworkManager.NetworkManager),this.inputModel=t.target().model(o),this.setMinimumSize(150,150),this.shortcuts={},this.scrollOffsetX=0,this.scrollOffsetY=0,this.screenZoom=1,this.screenOffsetTop=0,this.pageScaleFactor=1,this.imageZoom=1}initialize(){this.element.classList.add("screencast"),this.createNavigationBar(),this.viewportElement=this.element.createChild("div","screencast-viewport hidden"),this.canvasContainerElement=this.viewportElement.createChild("div","screencast-canvas-container"),this.glassPaneElement=this.canvasContainerElement.createChild("div","screencast-glasspane fill hidden"),this.canvasElement=this.canvasContainerElement.createChild("canvas"),s.ARIAUtils.setLabel(this.canvasElement,d(l.screencastViewOfDebugTarget)),this.canvasElement.tabIndex=0,this.canvasElement.addEventListener("mousedown",this.handleMouseEvent.bind(this),!1),this.canvasElement.addEventListener("mouseup",this.handleMouseEvent.bind(this),!1),this.canvasElement.addEventListener("mousemove",this.handleMouseEvent.bind(this),!1),this.canvasElement.addEventListener("mousewheel",this.handleMouseEvent.bind(this),!1),this.canvasElement.addEventListener("click",this.handleMouseEvent.bind(this),!1),this.canvasElement.addEventListener("contextmenu",this.handleContextMenuEvent.bind(this),!1),this.canvasElement.addEventListener("keydown",this.handleKeyEvent.bind(this),!1),this.canvasElement.addEventListener("keyup",this.handleKeyEvent.bind(this),!1),this.canvasElement.addEventListener("keypress",this.handleKeyEvent.bind(this),!1),this.canvasElement.addEventListener("blur",this.handleBlurEvent.bind(this),!1),this.titleElement=this.canvasContainerElement.createChild("div","screencast-element-title monospace hidden"),this.tagNameElement=this.titleElement.createChild("span","screencast-tag-name"),this.attributeElement=this.titleElement.createChild("span","screencast-attribute"),s.UIUtils.createTextChild(this.titleElement," ");const t=this.titleElement.createChild("span","screencast-dimension");this.nodeWidthElement=t.createChild("span"),s.UIUtils.createTextChild(t," × "),this.nodeHeightElement=t.createChild("span"),this.titleElement.style.top="0",this.titleElement.style.left="0",this.imageElement=new Image,this.isCasting=!1,this.context=this.canvasElement.getContext("2d"),this.checkerboardPattern=this.createCheckerboardPattern(this.context),this.shortcuts[s.KeyboardShortcut.KeyboardShortcut.makeKey("l",s.KeyboardShortcut.Modifiers.Ctrl)]=this.focusNavigationBar.bind(this),e.TargetManager.TargetManager.instance().addEventListener(e.TargetManager.Events.SuspendStateChanged,this.onSuspendStateChange,this),this.updateGlasspane()}wasShown(){this.startCasting(),this.registerCSSFiles([r])}willHide(){this.stopCasting()}startCasting(){if(e.TargetManager.TargetManager.instance().allTargetsSuspended())return;if(this.isCasting)return;this.isCasting=!0;const t=this.viewportDimensions();if(t.width<0||t.height<0)this.isCasting=!1;else{t.width*=window.devicePixelRatio,t.height*=window.devicePixelRatio,this.screenCaptureModel.startScreencast("jpeg",80,Math.floor(Math.min(2048,t.width)),Math.floor(Math.min(2048,t.height)),void 0,this.screencastFrame.bind(this),this.screencastVisibilityChanged.bind(this));for(const t of e.TargetManager.TargetManager.instance().models(e.EmulationModel.EmulationModel))t.overrideEmulateTouch(!0);this.overlayModel&&this.overlayModel.setHighlighter(this)}}stopCasting(){if(this.isCasting){this.isCasting=!1,this.screenCaptureModel.stopScreencast();for(const t of e.TargetManager.TargetManager.instance().models(e.EmulationModel.EmulationModel))t.overrideEmulateTouch(!1);this.overlayModel&&this.overlayModel.setHighlighter(null)}}screencastFrame(e,t){this.imageElement.onload=()=>{this.pageScaleFactor=t.pageScaleFactor,this.screenOffsetTop=t.offsetTop,this.scrollOffsetX=t.scrollOffsetX,this.scrollOffsetY=t.scrollOffsetY;const e=t.deviceHeight/t.deviceWidth,i=this.viewportDimensions();this.imageZoom=Math.min(i.width/this.imageElement.naturalWidth,i.height/(this.imageElement.naturalWidth*e)),this.viewportElement.classList.remove("hidden");const s=g;this.imageZoom<1.01/window.devicePixelRatio&&(this.imageZoom=1/window.devicePixelRatio),this.screenZoom=this.imageElement.naturalWidth*this.imageZoom/t.deviceWidth,this.viewportElement.style.width=t.deviceWidth*this.screenZoom+s+"px",this.viewportElement.style.height=t.deviceHeight*this.screenZoom+s+"px";const n=this.highlightNode?{node:this.highlightNode,selectorList:void 0}:{clear:!0};this.updateHighlightInOverlayAndRepaint(n,this.highlightConfig)},this.imageElement.src="data:image/jpg;base64,"+e}isGlassPaneActive(){return!this.glassPaneElement.classList.contains("hidden")}screencastVisibilityChanged(e){this.targetInactive=!e,this.updateGlasspane()}onSuspendStateChange(){e.TargetManager.TargetManager.instance().allTargetsSuspended()?this.stopCasting():this.startCasting(),this.updateGlasspane()}updateGlasspane(){this.targetInactive?(this.glassPaneElement.textContent=d(l.theTabIsInactive),this.glassPaneElement.classList.remove("hidden")):e.TargetManager.TargetManager.instance().allTargetsSuspended()?(this.glassPaneElement.textContent=d(l.profilingInProgress),this.glassPaneElement.classList.remove("hidden")):this.glassPaneElement.classList.add("hidden")}async handleMouseEvent(e){if(this.isGlassPaneActive())return void e.consume();if(!this.pageScaleFactor||!this.domModel)return;if(!this.inspectModeConfig||"mousewheel"===e.type)return this.inputModel&&this.inputModel.emitTouchFromMouseEvent(e,this.screenOffsetTop,this.screenZoom),e.preventDefault(),void("mousedown"===e.type&&this.canvasElement.focus());const i=this.convertIntoScreenSpace(e),s=await this.domModel.nodeForLocation(Math.floor(i.x/this.pageScaleFactor+this.scrollOffsetX),Math.floor(i.y/this.pageScaleFactor+this.scrollOffsetY),t.Settings.Settings.instance().moduleSetting("showUAShadowDOM").get());s&&("mousemove"===e.type?(this.updateHighlightInOverlayAndRepaint({node:s,selectorList:void 0},this.inspectModeConfig),this.domModel.overlayModel().nodeHighlightRequested({nodeId:s.id})):"click"===e.type&&this.domModel.overlayModel().inspectNodeRequested({backendNodeId:s.backendNodeId()}))}handleKeyEvent(e){if(this.isGlassPaneActive())return void e.consume();const t=s.KeyboardShortcut.KeyboardShortcut.makeKeyFromEvent(e),i=this.shortcuts[t];i&&i(e)?e.consume():(this.inputModel&&this.inputModel.emitKeyEvent(e),e.consume(),this.canvasElement.focus())}handleContextMenuEvent(e){e.consume(!0)}handleBlurEvent(e){this.inputModel&&this.inputModel.cancelTouch()}convertIntoScreenSpace(e){return{x:Math.round(e.offsetX/this.screenZoom),y:Math.round(e.offsetY/this.screenZoom-this.screenOffsetTop)}}onResize(){this.deferredCasting&&(clearTimeout(this.deferredCasting),delete this.deferredCasting),this.stopCasting(),this.deferredCasting=window.setTimeout(this.startCasting.bind(this),100)}highlightInOverlay(e,t){this.updateHighlightInOverlayAndRepaint(e,t)}async updateHighlightInOverlayAndRepaint(t,i){let s=null;if("node"in t&&(s=t.node),!s&&"deferredNode"in t&&(s=await t.deferredNode.resolvePromise()),!s&&"object"in t){const i=t.object.runtimeModel().target().model(e.DOMModel.DOMModel);i&&(s=await i.pushObjectAsNodeToFrontend(t.object))}if(this.highlightNode=s,this.highlightConfig=i,!s)return this.model=null,this.config=null,this.node=null,this.titleElement.classList.add("hidden"),void this.repaint();this.node=s,s.boxModel().then((e=>{e&&this.pageScaleFactor?(this.model=this.scaleModel(e),this.config=i,this.repaint()):this.repaint()}))}scaleModel(e){function t(e){for(let t=0;t<e.length;t+=2)e[t]=e[t]*this.pageScaleFactor*this.screenZoom,e[t+1]=(e[t+1]*this.pageScaleFactor+this.screenOffsetTop)*this.screenZoom}return t.call(this,e.content),t.call(this,e.padding),t.call(this,e.border),t.call(this,e.margin),e}repaint(){const e=this.model,t=this.config,i=this.canvasElement.getBoundingClientRect().width,s=this.canvasElement.getBoundingClientRect().height;if(this.canvasElement.width=window.devicePixelRatio*i,this.canvasElement.height=window.devicePixelRatio*s,this.context.save(),this.context.scale(window.devicePixelRatio,window.devicePixelRatio),this.context.save(),this.checkerboardPattern&&(this.context.fillStyle=this.checkerboardPattern),this.context.fillRect(0,0,i,this.screenOffsetTop*this.screenZoom),this.context.fillRect(0,this.screenOffsetTop*this.screenZoom+this.imageElement.naturalHeight*this.imageZoom,i,s),this.context.restore(),e&&t){this.context.save();const i=[],s=e=>Boolean(e.a&&0===e.a);e.content&&t.contentColor&&!s(t.contentColor)&&i.push({quad:e.content,color:t.contentColor}),e.padding&&t.paddingColor&&!s(t.paddingColor)&&i.push({quad:e.padding,color:t.paddingColor}),e.border&&t.borderColor&&!s(t.borderColor)&&i.push({quad:e.border,color:t.borderColor}),e.margin&&t.marginColor&&!s(t.marginColor)&&i.push({quad:e.margin,color:t.marginColor});for(let e=i.length-1;e>0;--e)this.drawOutlinedQuadWithClip(i[e].quad,i[e-1].quad,i[e].color);i.length>0&&this.drawOutlinedQuad(i[0].quad,i[0].color),this.context.restore(),this.drawElementTitle(),this.context.globalCompositeOperation="destination-over"}this.context.drawImage(this.imageElement,0,this.screenOffsetTop*this.screenZoom,this.imageElement.naturalWidth*this.imageZoom,this.imageElement.naturalHeight*this.imageZoom),this.context.restore()}cssColor(e){return e?t.Color.Legacy.fromRGBA([e.r,e.g,e.b,void 0!==e.a?e.a:1]).asString("rgba")||"":"transparent"}quadToPath(e){return this.context.beginPath(),this.context.moveTo(e[0],e[1]),this.context.lineTo(e[2],e[3]),this.context.lineTo(e[4],e[5]),this.context.lineTo(e[6],e[7]),this.context.closePath(),this.context}drawOutlinedQuad(e,t){this.context.save(),this.context.lineWidth=2,this.quadToPath(e).clip(),this.context.fillStyle=this.cssColor(t),this.context.fill(),this.context.restore()}drawOutlinedQuadWithClip(e,t,i){this.context.fillStyle=this.cssColor(i),this.context.save(),this.context.lineWidth=0,this.quadToPath(e).fill(),this.context.globalCompositeOperation="destination-out",this.context.fillStyle="red",this.quadToPath(t).fill(),this.context.restore()}drawElementTitle(){if(!this.node)return;const e=this.canvasElement.getBoundingClientRect().width,t=this.canvasElement.getBoundingClientRect().height,i=this.node.localName()||this.node.nodeName().toLowerCase();this.tagNameElement.textContent=i,this.attributeElement.textContent=function(e){const t=e.getAttribute("id"),i=e.getAttribute("class");let s=t?"#"+t:"";i&&(s+="."+i.trim().replace(/\s+/g,"."));s.length>50&&(s=s.substring(0,50)+"…");return s}(this.node),this.nodeWidthElement.textContent=String(this.model?this.model.width:0),this.nodeHeightElement.textContent=String(this.model?this.model.height:0),this.titleElement.classList.remove("hidden");const s=this.titleElement.offsetWidth+6,n=this.titleElement.offsetHeight+4,o=this.model?this.model.margin[1]:0,a=this.model?this.model.margin[7]:0;let r,l=!1,h=!1,d=Math.max(2,this.model?this.model.margin[0]:0);d+s>e&&(d=e-s-2),o>t?(r=t-n-7,h=!0):a<0?(r=7,l=!0):a+n+7<t?(r=a+7-4,l=!0):o-n-7>0?(r=o-n-7+3,h=!0):r=7,this.context.save(),this.context.translate(.5,.5),this.context.beginPath(),this.context.moveTo(d,r),l&&(this.context.lineTo(d+14,r),this.context.lineTo(d+21,r-7),this.context.lineTo(d+28,r)),this.context.lineTo(d+s,r),this.context.lineTo(d+s,r+n),h&&(this.context.lineTo(d+28,r+n),this.context.lineTo(d+21,r+n+7),this.context.lineTo(d+14,r+n)),this.context.lineTo(d,r+n),this.context.closePath(),this.context.fillStyle="rgb(255, 255, 194)",this.context.fill(),this.context.strokeStyle="rgb(128, 128, 128)",this.context.stroke(),this.context.restore(),this.titleElement.style.top=r+3+"px",this.titleElement.style.left=d+3+"px"}viewportDimensions(){const e=g;return{width:this.element.offsetWidth-e-30,height:this.element.offsetHeight-e-30-u}}setInspectMode(e,t){return this.inspectModeConfig="none"!==e?t:null,Promise.resolve()}highlightFrame(e){}createCheckerboardPattern(e){const t=document.createElement("canvas"),i=32;t.width=64,t.height=64;const s=t.getContext("2d");return s.fillStyle="rgb(195, 195, 195)",s.fillRect(0,0,64,64),s.fillStyle="rgb(225, 225, 225)",s.fillRect(0,0,i,i),s.fillRect(i,i,i,i),e.createPattern(t,"repeat")}createNavigationBar(){this.navigationBar=this.element.createChild("div","screencast-navigation"),this.navigationBack=this.navigationBar.createChild("button","back"),this.navigationBack.disabled=!0,s.ARIAUtils.setLabel(this.navigationBack,d(l.back)),this.navigationForward=this.navigationBar.createChild("button","forward"),this.navigationForward.disabled=!0,s.ARIAUtils.setLabel(this.navigationForward,d(l.forward)),this.navigationReload=this.navigationBar.createChild("button","reload"),s.ARIAUtils.setLabel(this.navigationReload,d(l.reload)),this.navigationUrl=s.UIUtils.createInput(),s.ARIAUtils.setLabel(this.navigationUrl,d(l.addressBar)),this.navigationBar.appendChild(this.navigationUrl),this.navigationUrl.type="text",this.navigationProgressBar=new p(this.resourceTreeModel,this.networkManager,this.navigationBar.createChild("div","progress")),this.resourceTreeModel&&(this.navigationBack.addEventListener("click",this.navigateToHistoryEntry.bind(this,-1),!1),this.navigationForward.addEventListener("click",this.navigateToHistoryEntry.bind(this,1),!1),this.navigationReload.addEventListener("click",this.navigateReload.bind(this),!1),this.navigationUrl.addEventListener("keyup",this.navigationUrlKeyUp.bind(this),!0),this.requestNavigationHistory(),this.resourceTreeModel.addEventListener(e.ResourceTreeModel.Events.PrimaryPageChanged,this.requestNavigationHistoryEvent,this),this.resourceTreeModel.addEventListener(e.ResourceTreeModel.Events.CachedResourcesLoaded,this.requestNavigationHistoryEvent,this))}navigateToHistoryEntry(e){if(!this.resourceTreeModel)return;const t=(this.historyIndex||0)+e;!this.historyEntries||t<0||t>=this.historyEntries.length||(this.resourceTreeModel.navigateToHistoryEntry(this.historyEntries[t]),this.requestNavigationHistory())}navigateReload(){this.resourceTreeModel&&this.resourceTreeModel.reloadPage()}navigationUrlKeyUp(e){if("Enter"!==e.key)return;let t=this.navigationUrl.value;t&&(t.match(v)||(t="http://"+t),this.resourceTreeModel&&this.resourceTreeModel.navigate(encodeURI(decodeURI(t))),this.canvasElement.focus())}requestNavigationHistoryEvent(){this.requestNavigationHistory()}async requestNavigationHistory(){const e=this.resourceTreeModel?await this.resourceTreeModel.navigationHistory():null;if(!e)return;this.historyIndex=e.currentIndex,this.historyEntries=e.entries,this.navigationBack.disabled=0===this.historyIndex,this.navigationForward.disabled=this.historyIndex===this.historyEntries.length-1;let t=this.historyEntries[this.historyIndex].url;const i=t.match(m);i&&(t=i[1]),n.InspectorFrontendHost.InspectorFrontendHostInstance.inspectedURLChanged(t),this.navigationUrl.value=decodeURI(t)}focusNavigationBar(){return this.navigationUrl.focus(),this.navigationUrl.select(),!0}}const g=44,u=29,m=/^http:\/\/(.+)/,v=/^(https?|about|chrome):/;class p{element;requestIds;startedRequests;finishedRequests;maxDisplayedProgress;constructor(t,i,s){this.element=s,t&&(t.addEventListener(e.ResourceTreeModel.Events.PrimaryPageChanged,this.onPrimaryPageChanged,this),t.addEventListener(e.ResourceTreeModel.Events.Load,this.onLoad,this)),i&&(i.addEventListener(e.NetworkManager.Events.RequestStarted,this.onRequestStarted,this),i.addEventListener(e.NetworkManager.Events.RequestFinished,this.onRequestFinished,this)),this.requestIds=null,this.startedRequests=0,this.finishedRequests=0,this.maxDisplayedProgress=0}onPrimaryPageChanged(){this.requestIds=new Map,this.startedRequests=0,this.finishedRequests=0,this.maxDisplayedProgress=0,this.updateProgress(.1)}onLoad(){this.requestIds=null,this.updateProgress(1),window.setTimeout((()=>{this.navigationProgressVisible()||this.displayProgress(0)}),500)}navigationProgressVisible(){return null!==this.requestIds}onRequestStarted(e){if(!this.navigationProgressVisible())return;const i=e.data.request;i.resourceType()!==t.ResourceType.resourceTypes.WebSocket&&(this.requestIds&&this.requestIds.set(i.requestId(),i),++this.startedRequests)}onRequestFinished(e){if(!this.navigationProgressVisible())return;const t=e.data;this.requestIds&&!this.requestIds.has(t.requestId())||(++this.finishedRequests,window.setTimeout((()=>{this.updateProgress(this.finishedRequests/this.startedRequests*.9)}),500))}updateProgress(e){this.navigationProgressVisible()&&(this.maxDisplayedProgress>=e||(this.maxDisplayedProgress=e,this.displayProgress(e)))}displayProgress(e){this.element.style.width=100*e+"%"}}var f=Object.freeze({__proto__:null,ScreencastView:c,BORDERS_SIZE:g,NAVBAR_HEIGHT:u,HTTP_REGEX:m,SCHEME_REGEX:v,ProgressTracker:p});const b={toggleScreencast:"Toggle screencast"},E=i.i18n.registerUIStrings("panels/screencast/ScreencastApp.ts",b),y=i.i18n.getLocalizedString.bind(void 0,E);let w,x,M;class C{enabledSetting;toggleButton;rootSplitWidget;screenCaptureModel;screencastView;rootView;constructor(){this.enabledSetting=t.Settings.Settings.instance().createSetting("screencastEnabled",!0),this.toggleButton=new s.Toolbar.ToolbarToggle(y(b.toggleScreencast),"devices"),this.toggleButton.setToggled(this.enabledSetting.get()),this.toggleButton.setEnabled(!1),this.toggleButton.addEventListener(s.Toolbar.ToolbarButton.Events.Click,this.toggleButtonClicked,this),e.TargetManager.TargetManager.instance().observeModels(e.ScreenCaptureModel.ScreenCaptureModel,this)}static instance(){return w||(w=new C),w}presentUI(e){this.rootView=new s.RootView.RootView,this.rootSplitWidget=new s.SplitWidget.SplitWidget(!1,!0,"InspectorView.screencastSplitViewState",300,300),this.rootSplitWidget.setVertical(!0),this.rootSplitWidget.setSecondIsSidebar(!0),this.rootSplitWidget.show(this.rootView.element),this.rootSplitWidget.hideMain(),this.rootSplitWidget.setSidebarWidget(s.InspectorView.InspectorView.instance()),s.InspectorView.InspectorView.instance().setOwnerSplit(this.rootSplitWidget),this.rootView.attachToDocument(e),this.rootView.focus()}modelAdded(t){t.target()===e.TargetManager.TargetManager.instance().primaryPageTarget()&&(this.screenCaptureModel=t,this.toggleButton.setEnabled(!0),this.screencastView=new c(t),this.rootSplitWidget&&this.rootSplitWidget.setMainWidget(this.screencastView),this.screencastView.initialize(),this.onScreencastEnabledChanged())}modelRemoved(e){this.screenCaptureModel===e&&(delete this.screenCaptureModel,this.toggleButton.setEnabled(!1),this.screencastView&&(this.screencastView.detach(),delete this.screencastView),this.onScreencastEnabledChanged())}toggleButtonClicked(){const e=!this.toggleButton.toggled();this.enabledSetting.set(e),this.onScreencastEnabledChanged()}onScreencastEnabledChanged(){if(!this.rootSplitWidget)return;const e=Boolean(this.enabledSetting.get()&&this.screencastView);this.toggleButton.setToggled(e),e?this.rootSplitWidget.showBoth():this.rootSplitWidget.hideMain()}}class T{static instance(e={forceNew:!1}){const{forceNew:t}=e;return x&&!t||(x=new T),x}item(){return C.instance().toggleButton}}class S{static instance(e={forceNew:!1}){const{forceNew:t}=e;return M&&!t||(M=new S),M}createApp(){return C.instance()}}var k=Object.freeze({__proto__:null,ScreencastApp:C,ToolbarButtonProvider:T,ScreencastAppProvider:S});export{a as InputModel,k as ScreencastApp,f as ScreencastView};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"./search.js";self.Search=self.Search||{},Search=Search||{},Search.SearchConfig=e.SearchConfig.SearchConfig,Search.SearchResult=e.SearchConfig.SearchResult,Search.SearchScope=e.SearchConfig.SearchScope,Search.SearchResultsPane=e.SearchResultsPane.SearchResultsPane,Search.SearchView=e.SearchView.SearchView;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../core/platform/platform.js";import*as t from"../../core/common/common.js";import*as s from"../../core/i18n/i18n.js";import*as n from"../../models/text_utils/text_utils.js";import*as r from"../../ui/legacy/components/utils/utils.js";import*as i from"../../ui/legacy/legacy.js";import*as a from"../../core/host/host.js";class h{queryInternal;ignoreCaseInternal;isRegexInternal;fileQueries;queriesInternal;fileRegexQueries;constructor(e,t,s){this.queryInternal=e,this.ignoreCaseInternal=t,this.isRegexInternal=s,this.parse()}static fromPlainObject(e){return new h(e.query,e.ignoreCase,e.isRegex)}query(){return this.queryInternal}ignoreCase(){return this.ignoreCaseInternal}isRegex(){return this.isRegexInternal}toPlainObject(){return{query:this.query(),ignoreCase:this.ignoreCase(),isRegex:this.isRegex()}}parse(){const e=/(\s*(?!-?f(ile)?:)[^\\ ]|\\.)+/,t=e.source+"(\\s+"+e.source+")*",s=["(\\s*"+o.source+"\\s*)","("+/"([^\\"]|\\.)+"/.source+")","("+t+")"].join("|"),n=new RegExp(s,"g"),r=this.queryInternal.match(n)||[];this.fileQueries=[],this.queriesInternal=[];for(let e=0;e<r.length;++e){const t=r[e];if(!t)continue;const s=this.parseFileQuery(t);if(s)this.fileQueries.push(s),this.fileRegexQueries=this.fileRegexQueries||[],this.fileRegexQueries.push({regex:new RegExp(s.text,this.ignoreCase()?"i":""),isNegative:s.isNegative});else if(this.isRegexInternal)this.queriesInternal.push(t);else if(t.startsWith('"')){if(!t.endsWith('"'))continue;this.queriesInternal.push(this.parseQuotedQuery(t))}else this.queriesInternal.push(this.parseUnquotedQuery(t))}}filePathMatchesFileQuery(e){if(!this.fileRegexQueries)return!0;for(let t=0;t<this.fileRegexQueries.length;++t)if(Boolean(e.match(this.fileRegexQueries[t].regex))===this.fileRegexQueries[t].isNegative)return!1;return!0}queries(){return this.queriesInternal||[]}parseUnquotedQuery(e){return e.replace(/\\(.)/g,"$1")}parseQuotedQuery(e){return e.substring(1,e.length-1).replace(/\\(.)/g,"$1")}parseFileQuery(t){const s=t.match(o);if(!s)return null;const n=Boolean(s[1]);t=s[3];let r="";for(let s=0;s<t.length;++s){const n=t[s];if("*"===n)r+=".*";else if("\\"===n){++s;" "===t[s]&&(r+=" ")}else-1!==e.StringUtilities.regexSpecialCharacters().indexOf(t.charAt(s))&&(r+="\\"),r+=t.charAt(s)}return new c(r,n)}}const o=/(-)?f(ile)?:((?:[^\\ ]|\\.)+)/;class c{text;isNegative;constructor(e,t){this.text=e,this.isNegative=t}}var l=Object.freeze({__proto__:null,SearchConfig:h,FilePatternRegex:o,QueryTerm:c});const u=new CSSStyleSheet;u.replaceSync(":host{padding:0;margin:0;overflow-y:auto}.tree-outline{padding:0}.tree-outline ol{padding:0}.tree-outline li{height:16px}li.search-result{cursor:pointer;font-size:12px;margin-top:8px;padding:2px 0 2px 4px;word-wrap:normal;white-space:pre}li.search-result:hover{background-color:var(--item-hover-color)}li.search-result .search-result-file-name{color:var(--color-text-primary);flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}li.search-result .search-result-matches-count{color:var(--color-text-secondary);margin:0 8px}li.search-result.expanded .search-result-matches-count{display:none}li.show-more-matches{color:var(--color-text-primary);cursor:pointer;margin:8px 0 0 -4px}li.show-more-matches:hover{text-decoration:underline}li.search-match{margin:2px 0;word-wrap:normal;white-space:pre}li.search-match::before{display:none}li.search-match .search-match-line-number{color:var(--color-text-secondary);text-align:right;vertical-align:top;word-break:normal;padding:2px 4px 2px 6px;margin-right:5px}li.search-match:hover{background-color:var(--item-hover-color)}.tree-outline .devtools-link{text-decoration:none;display:block;flex:auto}li.search-match .search-match-content{color:var(--color-text-primary)}ol.children.expanded{padding-bottom:4px}.search-match-link{overflow:hidden;text-overflow:ellipsis;margin-left:9px}.search-result-qualifier{color:var(--color-text-secondary)}.search-result-dash{color:var(--color-background-elevation-2);margin:0 4px}\n/*# sourceURL=searchResultsPane.css */\n");const d={matchesCountS:"Matches Count {PH1}",lineS:"Line {PH1}",showDMore:"Show {PH1} more"},g=s.i18n.registerUIStrings("panels/search/SearchResultsPane.ts",d),p=s.i18n.getLocalizedString.bind(void 0,g);class m extends i.Widget.VBox{searchConfig;searchResults;treeElements;treeOutline;matchesExpandedCount;constructor(e){super(!0),this.searchConfig=e,this.searchResults=[],this.treeElements=[],this.treeOutline=new i.TreeOutline.TreeOutlineInShadow,this.treeOutline.hideOverflow(),this.contentElement.appendChild(this.treeOutline.element),this.matchesExpandedCount=0}addSearchResult(e){this.searchResults.push(e),this.addTreeElement(e)}showAllMatches(){this.treeElements.forEach((e=>{e.expand(),e.showAllMatches()}))}collapseAllResults(){this.treeElements.forEach((e=>{e.collapse()}))}addTreeElement(e){const t=new x(this.searchConfig,e);this.treeOutline.appendChild(t),this.treeOutline.selectedTreeElement||t.select(!0,!0),this.matchesExpandedCount<f&&t.expand(),this.matchesExpandedCount+=e.matchesCount(),this.treeElements.push(t)}wasShown(){super.wasShown(),this.treeOutline.registerCSSFiles([u])}}const f=200;class x extends i.TreeOutline.TreeElement{searchConfig;searchResult;initialized;toggleOnClick;constructor(e,t){super("",!0),this.searchConfig=e,this.searchResult=t,this.initialized=!1,this.toggleOnClick=!0}onexpand(){this.initialized||(this.updateMatchesUI(),this.initialized=!0)}showAllMatches(){this.removeChildren(),this.appendSearchMatches(0,this.searchResult.matchesCount())}updateMatchesUI(){this.removeChildren();const e=Math.min(this.searchResult.matchesCount(),20);e<this.searchResult.matchesCount()?(this.appendSearchMatches(0,e-1),this.appendShowMoreMatchesElement(e-1)):this.appendSearchMatches(0,e)}onattach(){this.updateSearchMatches()}updateSearchMatches(){this.listItemElement.classList.add("search-result");const e=s(this.searchResult.label(),"search-result-file-name");e.appendChild(s("—","search-result-dash")),e.appendChild(s(this.searchResult.description(),"search-result-qualifier")),this.tooltip=this.searchResult.description(),this.listItemElement.appendChild(e);const t=document.createElement("span");function s(e,t){const s=document.createElement("span");return s.className=t,s.textContent=e,s}t.className="search-result-matches-count",t.textContent=`${this.searchResult.matchesCount()}`,i.ARIAUtils.setLabel(t,p(d.matchesCountS,{PH1:this.searchResult.matchesCount()})),this.listItemElement.appendChild(t),this.expanded&&this.updateMatchesUI()}appendSearchMatches(s,n){const a=this.searchResult,h=this.searchConfig.queries(),o=[];for(let t=0;t<h.length;++t)o.push(e.StringUtilities.createSearchRegex(h[t],!this.searchConfig.ignoreCase(),this.searchConfig.isRegex()));for(let e=s;e<n;++e){const s=a.matchLineContent(e).trim();let n=[];for(let e=0;e<o.length;++e)n=n.concat(this.regexMatchRanges(s,o[e]));const h=r.Linkifier.Linkifier.linkifyRevealable(a.matchRevealable(e),"");h.classList.add("search-match-link");const c=document.createElement("span");c.classList.add("search-match-line-number");const l=a.matchLabel(e);c.textContent=l,"number"!=typeof l||isNaN(l)?i.ARIAUtils.setLabel(c,l):i.ARIAUtils.setLabel(c,p(d.lineS,{PH1:l})),h.appendChild(c);const u=this.createContentSpan(s,n);h.appendChild(u);const g=new i.TreeOutline.TreeElement;this.appendChild(g),g.listItemElement.className="search-match",g.listItemElement.appendChild(h),g.listItemElement.addEventListener("keydown",(s=>{"Enter"===s.key&&(s.consume(!0),t.Revealer.reveal(a.matchRevealable(e)))})),g.tooltip=s}}appendShowMoreMatchesElement(e){const t=this.searchResult.matchesCount()-e,s=p(d.showDMore,{PH1:t}),n=new i.TreeOutline.TreeElement(s);this.appendChild(n),n.listItemElement.classList.add("show-more-matches"),n.onselect=this.showMoreMatchesElementSelected.bind(this,n,e)}createContentSpan(e,t){let s=0;t.length>0&&t[0].offset>20&&(s=15),e=e.substring(s,1e3+s),s&&(t=t.map((e=>new n.TextRange.SourceRange(e.offset-s+1,e.length))),e="…"+e);const r=document.createElement("span");return r.className="search-match-content",r.textContent=e,i.ARIAUtils.setLabel(r,`${e} line`),i.UIUtils.highlightRangesWithStyleClass(r,t,"highlighted-search-result"),r}regexMatchRanges(e,t){let s;t.lastIndex=0;const r=[];for(;t.lastIndex<e.length&&(s=t.exec(e));)r.push(new n.TextRange.SourceRange(s.index,s[0].length));return r}showMoreMatchesElementSelected(e,t){return this.removeChild(e),this.appendSearchMatches(t,this.searchResult.matchesCount()),!1}}var C=Object.freeze({__proto__:null,SearchResultsPane:m,matchesExpandedByDefault:f,matchesShownAtOnce:20,SearchResultsTreeElement:x});const S=new CSSStyleSheet;S.replaceSync(".search-drawer-header{align-items:center;flex-shrink:0;overflow:hidden}.search-toolbar{background-color:var(--color-background-elevation-1);border-bottom:1px solid var(--color-details-hairline)}.search-toolbar-summary{background-color:var(--color-background-elevation-1);border-top:1px solid var(--color-details-hairline);padding-left:5px;flex:0 0 19px;display:flex;padding-right:5px}.search-toolbar-summary .search-message{padding-top:2px;padding-left:1ex;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.search-view .search-results{overflow-y:auto;display:flex;flex:auto}.search-view .search-results > div{flex:auto}\n/*# sourceURL=searchView.css */\n");const R={search:"Search",searchQuery:"Search Query",matchCase:"Match Case",useRegularExpression:"Use Regular Expression",refresh:"Refresh",clear:"Clear",indexing:"Indexing…",searching:"Searching…",indexingInterrupted:"Indexing interrupted.",foundMatchingLineInFile:"Found 1 matching line in 1 file.",foundDMatchingLinesInFile:"Found {PH1} matching lines in 1 file.",foundDMatchingLinesInDFiles:"Found {PH1} matching lines in {PH2} files.",noMatchesFound:"No matches found.",searchFinished:"Search finished.",searchInterrupted:"Search interrupted."},w=s.i18n.registerUIStrings("panels/search/SearchView.ts",R),I=s.i18n.getLocalizedString.bind(void 0,w);class E extends i.Widget.VBox{focusOnShow;isIndexing;searchId;searchMatchesCount;searchResultsCount;nonEmptySearchResultsCount;searchingView;notFoundView;searchConfig;pendingSearchConfig;searchResultsPane;progressIndicator;visiblePane;searchPanelElement;searchResultsElement;search;matchCaseButton;regexButton;searchMessageElement;searchProgressPlaceholderElement;searchResultsMessageElement;advancedSearchConfig;searchScope;constructor(e){super(!0),this.setMinimumSize(0,40),this.focusOnShow=!1,this.isIndexing=!1,this.searchId=1,this.searchMatchesCount=0,this.searchResultsCount=0,this.nonEmptySearchResultsCount=0,this.searchingView=null,this.notFoundView=null,this.searchConfig=null,this.pendingSearchConfig=null,this.searchResultsPane=null,this.progressIndicator=null,this.visiblePane=null,this.contentElement.classList.add("search-view"),this.contentElement.addEventListener("keydown",(e=>{this.onKeyDownOnPanel(e)})),this.searchPanelElement=this.contentElement.createChild("div","search-drawer-header"),this.searchResultsElement=this.contentElement.createChild("div"),this.searchResultsElement.className="search-results";const s=document.createElement("div");s.style.flex="auto",s.style.justifyContent="start",s.style.maxWidth="300px",s.style.overflow="revert",this.search=i.HistoryInput.HistoryInput.create(),this.search.addEventListener("keydown",(e=>{this.onKeyDown(e)})),s.appendChild(this.search),this.search.placeholder=I(R.search),this.search.setAttribute("type","text"),this.search.setAttribute("results","0"),this.search.setAttribute("size","42"),i.ARIAUtils.setLabel(this.search,I(R.searchQuery));const n=new i.Toolbar.ToolbarItem(s),r=new i.Toolbar.Toolbar("search-toolbar",this.searchPanelElement);this.matchCaseButton=E.appendToolbarToggle(r,"Aa",I(R.matchCase)),this.regexButton=E.appendToolbarToggle(r,".*",I(R.useRegularExpression)),r.appendToolbarItem(n);const a=new i.Toolbar.ToolbarButton(I(R.refresh),"refresh"),o=new i.Toolbar.ToolbarButton(I(R.clear),"clear");r.appendToolbarItem(a),r.appendToolbarItem(o),a.addEventListener(i.Toolbar.ToolbarButton.Events.Click,(()=>this.onAction())),o.addEventListener(i.Toolbar.ToolbarButton.Events.Click,(()=>{this.resetSearch(),this.onSearchInputClear()}));const c=this.contentElement.createChild("div","search-toolbar-summary");this.searchMessageElement=c.createChild("div","search-message"),this.searchProgressPlaceholderElement=c.createChild("div","flex-centered"),this.searchResultsMessageElement=c.createChild("div","search-message"),this.advancedSearchConfig=t.Settings.Settings.instance().createLocalSetting(e+"SearchConfig",new h("",!0,!1).toPlainObject()),this.load(),this.searchScope=null}static appendToolbarToggle(e,t,s){const n=new i.Toolbar.ToolbarToggle(s);return n.setText(t),n.addEventListener(i.Toolbar.ToolbarButton.Events.Click,(()=>n.setToggled(!n.toggled()))),e.appendToolbarItem(n),n}buildSearchConfig(){return new h(this.search.value,!this.matchCaseButton.toggled(),this.regexButton.toggled())}async toggle(e,t){e&&(this.search.value=e),this.isShowing()?this.focus():this.focusOnShow=!0,this.initScope(),t?this.onAction():this.startIndexing()}createScope(){throw new Error("Not implemented")}initScope(){this.searchScope=this.createScope()}wasShown(){this.focusOnShow&&(this.focus(),this.focusOnShow=!1),this.registerCSSFiles([S])}onIndexingFinished(){if(!this.progressIndicator)return;const e=!this.progressIndicator.isCanceled();if(this.progressIndicator.done(),this.progressIndicator=null,this.isIndexing=!1,this.indexingFinished(e),e||(this.pendingSearchConfig=null),!this.pendingSearchConfig)return;const t=this.pendingSearchConfig;this.pendingSearchConfig=null,this.innerStartSearch(t)}startIndexing(){this.isIndexing=!0,this.progressIndicator&&this.progressIndicator.done(),this.progressIndicator=new i.ProgressIndicator.ProgressIndicator,this.searchMessageElement.textContent=I(R.indexing),this.progressIndicator.show(this.searchProgressPlaceholderElement),this.searchScope&&this.searchScope.performIndexing(new t.Progress.ProgressProxy(this.progressIndicator,this.onIndexingFinished.bind(this)))}onSearchInputClear(){this.search.value="",this.save(),this.focus()}onSearchResult(e,t){e===this.searchId&&this.progressIndicator&&(this.progressIndicator&&this.progressIndicator.isCanceled()?this.onIndexingFinished():(this.addSearchResult(t),t.matchesCount()&&(this.searchResultsPane||(this.searchResultsPane=new m(this.searchConfig),this.showPane(this.searchResultsPane)),this.searchResultsPane.addSearchResult(t))))}onSearchFinished(e,t){e===this.searchId&&this.progressIndicator&&(this.searchResultsPane||this.nothingFound(),this.searchFinished(t),this.searchConfig=null,i.ARIAUtils.alert(this.searchMessageElement.textContent+" "+this.searchResultsMessageElement.textContent))}async startSearch(e){this.resetSearch(),++this.searchId,this.initScope(),this.isIndexing||this.startIndexing(),this.pendingSearchConfig=e}innerStartSearch(e){this.searchConfig=e,this.progressIndicator&&this.progressIndicator.done(),this.progressIndicator=new i.ProgressIndicator.ProgressIndicator,this.searchStarted(this.progressIndicator),this.searchScope&&this.searchScope.performSearch(e,this.progressIndicator,this.onSearchResult.bind(this,this.searchId),this.onSearchFinished.bind(this,this.searchId))}resetSearch(){this.stopSearch(),this.showPane(null),this.searchResultsPane=null,this.clearSearchMessage()}clearSearchMessage(){this.searchMessageElement.textContent="",this.searchResultsMessageElement.textContent=""}stopSearch(){this.progressIndicator&&!this.isIndexing&&this.progressIndicator.cancel(),this.searchScope&&this.searchScope.stopSearch(),this.searchConfig=null}searchStarted(e){this.resetCounters(),this.searchingView||(this.searchingView=new i.EmptyWidget.EmptyWidget(I(R.searching))),this.showPane(this.searchingView),this.searchMessageElement.textContent=I(R.searching),e.show(this.searchProgressPlaceholderElement),this.updateSearchResultsMessage()}indexingFinished(e){this.searchMessageElement.textContent=e?"":I(R.indexingInterrupted)}updateSearchResultsMessage(){this.searchMatchesCount&&this.searchResultsCount?1===this.searchMatchesCount&&1===this.nonEmptySearchResultsCount?this.searchResultsMessageElement.textContent=I(R.foundMatchingLineInFile):this.searchMatchesCount>1&&1===this.nonEmptySearchResultsCount?this.searchResultsMessageElement.textContent=I(R.foundDMatchingLinesInFile,{PH1:this.searchMatchesCount}):this.searchResultsMessageElement.textContent=I(R.foundDMatchingLinesInDFiles,{PH1:this.searchMatchesCount,PH2:this.nonEmptySearchResultsCount}):this.searchResultsMessageElement.textContent=""}showPane(e){this.visiblePane&&this.visiblePane.detach(),e&&e.show(this.searchResultsElement),this.visiblePane=e}resetCounters(){this.searchMatchesCount=0,this.searchResultsCount=0,this.nonEmptySearchResultsCount=0}nothingFound(){this.notFoundView||(this.notFoundView=new i.EmptyWidget.EmptyWidget(I(R.noMatchesFound))),this.showPane(this.notFoundView),this.searchResultsMessageElement.textContent=I(R.noMatchesFound)}addSearchResult(e){const t=e.matchesCount();this.searchMatchesCount+=t,this.searchResultsCount++,t&&this.nonEmptySearchResultsCount++,this.updateSearchResultsMessage()}searchFinished(e){this.searchMessageElement.textContent=I(e?R.searchFinished:R.searchInterrupted)}focus(){this.search.focus(),this.search.select()}willHide(){this.stopSearch()}onKeyDown(e){if(this.save(),e.keyCode===i.KeyboardShortcut.Keys.Enter.code)this.onAction()}onKeyDownOnPanel(e){const t=a.Platform.isMac(),s=t&&e.metaKey&&!e.ctrlKey&&e.altKey&&"BracketRight"===e.code,n=!t&&e.ctrlKey&&!e.metaKey&&e.shiftKey&&"BracketRight"===e.code,r=t&&e.metaKey&&!e.ctrlKey&&e.altKey&&"BracketLeft"===e.code,i=!t&&e.ctrlKey&&!e.metaKey&&e.shiftKey&&"BracketLeft"===e.code;s||n?this.searchResultsPane?.showAllMatches():(r||i)&&this.searchResultsPane?.collapseAllResults()}save(){this.advancedSearchConfig.set(this.buildSearchConfig().toPlainObject())}load(){const e=h.fromPlainObject(this.advancedSearchConfig.get());this.search.value=e.query(),this.matchCaseButton.setToggled(!e.ignoreCase()),this.regexButton.setToggled(e.isRegex())}onAction(){const e=this.buildSearchConfig();e.query()&&e.query().length&&this.startSearch(e)}}var y=Object.freeze({__proto__:null,SearchView:E});export{l as SearchConfig,C as SearchResultsPane,y as SearchView};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"./security.js";self.Security=self.Security||{},Security=Security||{},Security.SecurityModel=e.SecurityModel.SecurityModel,Security.SecurityModel.Events=e.SecurityModel.Events,Security.PageVisibleSecurityState=e.SecurityModel.PageVisibleSecurityState,Security.CertificateSecurityState=e.SecurityModel.CertificateSecurityState,Security.SecurityStyleExplanation=e.SecurityModel.SecurityStyleExplanation,Security.SecurityPanel=e.SecurityPanel.SecurityPanel,Security.SecurityPanelSidebarTree=e.SecurityPanel.SecurityPanelSidebarTree,Security.SecurityPanelSidebarTree.OriginGroup=e.SecurityPanel.OriginGroup,Security.SecurityPanelSidebarTreeElement=e.SecurityPanel.SecurityPanelSidebarTreeElement,Security.SecurityOriginView=e.SecurityPanel.SecurityOriginView;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../core/i18n/i18n.js";import*as i from"../../ui/legacy/legacy.js";const t={security:"Security",showSecurity:"Show Security"},r=e.i18n.registerUIStrings("panels/security/security-meta.ts",t),s=e.i18n.getLazilyComputedLocalizedString.bind(void 0,r);let c;i.ViewManager.registerViewExtension({location:"panel",id:"security",title:s(t.security),commandPrompt:s(t.showSecurity),order:80,persistence:"closeable",loadView:async()=>(await async function(){return c||(c=await import("./security.js")),c}()).SecurityPanel.SecurityPanel.instance()});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../core/i18n/i18n.js";import*as t from"../../core/sdk/sdk.js";import*as i from"../../core/common/common.js";import*as s from"../../core/host/host.js";import*as r from"../network/forward/forward.js";import*as n from"../../ui/legacy/legacy.js";const o={theSecurityOfThisPageIsUnknown:"The security of this page is unknown.",thisPageIsNotSecure:"This page is not secure.",thisPageIsSecureValidHttps:"This page is secure (valid HTTPS).",thisPageIsNotSecureBrokenHttps:"This page is not secure (broken HTTPS).",cipherWithMAC:"{PH1} with {PH2}",keyExchangeWithGroup:"{PH1} with {PH2}"},a=e.i18n.registerUIStrings("panels/security/SecurityModel.ts",o),c=e.i18n.getLocalizedString.bind(void 0,a),l=e.i18n.getLazilyComputedLocalizedString.bind(void 0,a);class u extends t.SDKModel.SDKModel{dispatcher;securityAgent;constructor(e){super(e),this.dispatcher=new x(this),this.securityAgent=e.securityAgent(),e.registerSecurityDispatcher(this.dispatcher),this.securityAgent.invoke_enable()}resourceTreeModel(){return this.target().model(t.ResourceTreeModel.ResourceTreeModel)}networkManager(){return this.target().model(t.NetworkManager.NetworkManager)}static SecurityStateComparator(e,t){const i=h();return(e&&i.get(e)||0)-(t&&i.get(t)||0)}}let d=null;const h=()=>{if(!d){d=new Map;const e=["info","insecure-broken","insecure","neutral","secure","unknown"];for(let t=0;t<e.length;t++)d.set(e[t],t+1)}return d};var p;t.SDKModel.SDKModel.register(u,{capabilities:t.Target.Capability.Security,autostart:!1}),function(e){e.VisibleSecurityStateChanged="VisibleSecurityStateChanged"}(p||(p={}));const g={unknown:l(o.theSecurityOfThisPageIsUnknown),insecure:l(o.thisPageIsNotSecure),neutral:l(o.thisPageIsNotSecure),secure:l(o.thisPageIsSecureValidHttps),"insecure-broken":l(o.thisPageIsNotSecureBrokenHttps)};class m{securityState;certificateSecurityState;safetyTipInfo;securityStateIssueIds;constructor(e,t,i,s){this.securityState=e,this.certificateSecurityState=t?new y(t):null,this.safetyTipInfo=i?new S(i):null,this.securityStateIssueIds=s}}class y{protocol;keyExchange;keyExchangeGroup;cipher;mac;certificate;subjectName;issuer;validFrom;validTo;certificateNetworkError;certificateHasWeakSignature;certificateHasSha1Signature;modernSSL;obsoleteSslProtocol;obsoleteSslKeyExchange;obsoleteSslCipher;obsoleteSslSignature;constructor(e){this.protocol=e.protocol,this.keyExchange=e.keyExchange,this.keyExchangeGroup=e.keyExchangeGroup||null,this.cipher=e.cipher,this.mac=e.mac||null,this.certificate=e.certificate,this.subjectName=e.subjectName,this.issuer=e.issuer,this.validFrom=e.validFrom,this.validTo=e.validTo,this.certificateNetworkError=e.certificateNetworkError||null,this.certificateHasWeakSignature=e.certificateHasWeakSignature,this.certificateHasSha1Signature=e.certificateHasSha1Signature,this.modernSSL=e.modernSSL,this.obsoleteSslProtocol=e.obsoleteSslProtocol,this.obsoleteSslKeyExchange=e.obsoleteSslKeyExchange,this.obsoleteSslCipher=e.obsoleteSslCipher,this.obsoleteSslSignature=e.obsoleteSslSignature}isCertificateExpiringSoon(){const e=new Date(1e3*this.validTo).getTime();return e<new Date(Date.now()).setHours(48)&&e>Date.now()}getKeyExchangeName(){return this.keyExchangeGroup?this.keyExchange?c(o.keyExchangeWithGroup,{PH1:this.keyExchange,PH2:this.keyExchangeGroup}):this.keyExchangeGroup:this.keyExchange}getCipherFullName(){return this.mac?c(o.cipherWithMAC,{PH1:this.cipher,PH2:this.mac}):this.cipher}}class S{safetyTipStatus;safeUrl;constructor(e){this.safetyTipStatus=e.safetyTipStatus,this.safeUrl=e.safeUrl||null}}class w{securityState;title;summary;description;certificate;mixedContentType;recommendations;constructor(e,t,i,s,r=[],n="none",o=[]){this.securityState=e,this.title=t,this.summary=i,this.description=s,this.certificate=r,this.mixedContentType=n,this.recommendations=o}}class x{model;constructor(e){this.model=e}securityStateChanged(e){}visibleSecurityStateChanged({visibleSecurityState:e}){const t=new m(e.securityState,e.certificateSecurityState||null,e.safetyTipInfo||null,e.securityStateIssueIds);this.model.dispatchEventToListeners(p.VisibleSecurityStateChanged,t)}certificateError(e){}}var v=Object.freeze({__proto__:null,SecurityModel:u,get Events(){return p},SummaryMessages:g,PageVisibleSecurityState:m,CertificateSecurityState:y,SecurityStyleExplanation:w});const b=new CSSStyleSheet;b.replaceSync(".lock-icon,\n.security-property{height:16px;width:16px;-webkit-mask-image:var(--image-file-securityIcons);-webkit-mask-size:80px 32px;background-color:var(--color-text-disabled)}.lock-icon-secure{-webkit-mask-position:0 0;background-color:var(--color-accent-green)}.lock-icon-unknown,\n.lock-icon-neutral{-webkit-mask-position:-16px 0;background-color:var(--color-text-primary)}@media (-webkit-min-device-pixel-ratio: 1.1){.lock-icon-unknown,\n .lock-icon-neutral{background-color:var(--color-text-secondary)}}.lock-icon-insecure{-webkit-mask-position:-32px 0;background-color:var(--color-text-secondary)}.lock-icon-insecure-broken{-webkit-mask-position:-32px 0;background-color:var(--color-accent-red)}.security-property-secure{-webkit-mask-position:0 -16px;background-color:var(--color-accent-green;)}.security-property-neutral{-webkit-mask-position:-16px -16px;background-color:var(--color-accent-red);.security-property-insecure{-webkit-mask-position:-32px -16px;background-color:var(--color-accent-red)}.security-property-insecure-broken{-webkit-mask-position:-32px -16px;background-color:var(--color-accent-red)}.security-property-info{-webkit-mask-position:-48px -16px;background-color:rgb(0 0 0/50%)}.security-property-unknown{-webkit-mask-position:-64px -16px;background-color:rgb(0 0 0/50%)}.url-scheme-secure{color:var(--color-accent-green)}.url-scheme-neutral,\n .url-scheme-insecure,\n .url-scheme-insecure-broken{color:var(--color-accent-red)}.url-scheme-separator{color:var(--color-text-disabled)}@media (forced-colors: active){.lock-icon,\n .security-property,\n .url-scheme-neutral,\n .url-scheme-insecure,\n .url-scheme-insecure-broken{forced-color-adjust:none}.lock-icon-unknown,\n .lock-icon-neutral{background-color:Highlight}.security-property-info,\n .security-property-unknown{background-color:canvastext}.tree-outline:not(.hide-selection-when-blurred) li.selected .security-property-info,\n .tree-outline:not(.hide-selection-when-blurred) li.selected .security-property-unknown{background-color:HighlightText}}}\n/*# sourceURL=lockIcon.css */\n");const f=new CSSStyleSheet;f.replaceSync(".devtools-link{display:inline-block}.security-main-view{overflow-x:hidden;overflow-y:auto;background-color:var(--color-background-elevation-1)}.security-main-view > div{flex-shrink:0}.security-summary-section-title{font-size:15px;margin:12px 16px;user-select:text}.lock-spectrum{margin:8px 16px;display:flex;align-items:flex-start}.security-summary .lock-icon{flex:none;width:16px;height:16px;margin:0}.security-summary .lock-icon-neutral{margin:0 16px}.security-summary:not(.security-summary-secure) .lock-icon-secure,\n.security-summary:not(.security-summary-neutral) .lock-icon-neutral,\n.security-summary:not(.security-summary-insecure) .lock-icon-insecure,\n.security-summary:not(.security-summary-insecure-broken) .lock-icon-insecure-broken{background-color:var(--color-text-disabled)}@media (forced-colors: active){.security-summary-neutral .lock-icon-neutral{background-color:Highlight}.security-summary:not(.security-summary-secure) .lock-icon-secure,\n .security-summary:not(.security-summary-neutral) .lock-icon-neutral,\n .security-summary:not(.security-summary-insecure) .lock-icon-insecure,\n .security-summary:not(.security-summary-insecure-broken) .lock-icon-insecure-broken{background-color:canvastext}}.triangle-pointer-container{margin:8px 24px 0;padding:0}.triangle-pointer-wrapper{transform:translateX(0);transition:transform 0.3s}.triangle-pointer{width:12px;height:12px;margin-bottom:-6px;margin-left:-6px;transform:rotate(-45deg);border-style:solid;border-width:1px 1px 0 0;background:var(--color-background);border-color:var(--color-background-elevation-1)}.security-summary-secure .triangle-pointer-wrapper{transform:translateX(0)}.security-summary-neutral .triangle-pointer-wrapper{transform:translateX(32px)}.security-summary-insecure .triangle-pointer-wrapper{transform:translateX(64px)}.security-summary-insecure-broken .triangle-pointer-wrapper{transform:translateX(64px)}.security-summary-text{padding:16px 24px;border-style:solid;border-width:1px 0;font-size:15px;background:var(--color-background);border-color:var(--color-background-elevation-1);user-select:text}.security-summary-secure .triangle-pointer,\n.security-summary-secure .security-summary-text,\n.security-explanation-title-secure{color:var(--color-accent-green)}.security-summary-insecure-broken .triangle-pointer,\n.security-summary-insecure-broken .security-summary-text,\n.security-explanation-title-neutral,\n.security-explanation-title-insecure,\n.security-explanation-title-insecure-broken{color:var(--color-accent-red)}.security-explanation-list{padding-bottom:16px}.security-explanation-list:empty{border-bottom:none;padding:0}.security-explanations-main{margin-top:-5px;background-color:var(--color-background);border-bottom:1px solid var(--color-background-elevation-1)}.security-explanations-extra{background-color:transparent}.security-explanation{padding:11px;display:flex;white-space:nowrap;border:none;color:var(--color-text-secondary)}.security-explanation-text{flex:auto;white-space:normal;max-width:400px}.security-explanation .security-property{flex:none;width:16px;height:16px;margin-right:16px}.security-explanation-title{color:var(--color-text-secondary);margin-top:1px;margin-bottom:8px}.security-mixed-content{margin-top:8px}.security-explanation-recommendations{padding-inline-start:16px}.security-explanation-recommendations > li{margin-bottom:4px}\n/*# sourceURL=mainView.css */\n");const k=new CSSStyleSheet;k.replaceSync(".title-section{padding:16px 0 24px;border-bottom:1px solid var(--color-background-elevation-2)}.title-section-header{padding-left:16px;padding-bottom:10px;font-size:14px}.security-origin-view{overflow-x:hidden;overflow-y:scroll;display:block;user-select:text}.security-origin-view .origin-view-section{border-bottom:1px solid var(--color-background-elevation-2);padding:12px 6px 12px 24px;font-size:12px}.origin-view-notes{margin-top:2px;color:var(--color-text-secondary)}.origin-view-section-notes{margin-top:6px;color:var(--color-text-secondary)}.security-origin-view .origin-display{font-size:12px;padding-left:32px;display:flex;align-items:center}.title-section > .view-network-button{padding:6px 0 0 16px}.security-origin-view .origin-display .security-property{display:inline-block;vertical-align:middle;position:absolute;left:13px}.security-origin-view .origin-view-section-title{margin-top:4px;margin-bottom:4px;font-weight:bold}.security-origin-view .details-table{border-spacing:0}.security-origin-view .details-table-row{white-space:nowrap;overflow:hidden;line-height:22px;vertical-align:top}.security-origin-view .details-table-row > td{padding:0}.security-origin-view .details-table-row > td:first-child{color:var(--color-text-secondary);width:calc(120px + 1em);text-align:right;padding-right:1em}.security-origin-view .details-table-row > td:nth-child(2){white-space:normal}.security-origin-view .sct-details .details-table .details-table-row:last-child td:last-child{border-bottom:1px solid var(--color-background-elevation-2);padding-bottom:10px}.security-origin-view .sct-details .details-table:last-child .details-table-row:last-child td:last-child{border-bottom:none;padding-bottom:0}.security-origin-view .details-toggle{margin-left:126px}.security-origin-view .sct-toggle{margin-left:145px;padding-top:5px}.security-origin-view .details-table .empty-san{color:var(--color-text-disabled)}.security-origin-view .details-table .san-entry{display:block}.security-origin-view .truncated-san .truncated-entry{display:none}.origin-button{margin-top:4px;margin-left:0}.origin-view-section:last-child{border-bottom:none}.devtools-link{display:inline-flex}\n/*# sourceURL=originView.css */\n");const C=new CSSStyleSheet;C.replaceSync(".tree-outline{padding:0}.tree-outline li{display:flex;flex-direction:row;align-items:center;padding:2px 5px;overflow:hidden;margin:2px 0;border-top:1px solid transparent;white-space:nowrap}.tree-outline .lock-icon,\n.tree-outline .security-property{margin-right:4px;flex:none}.tree-outline li.selected:focus .lock-icon,\n.tree-outline .security-sidebar-tree-item.selected:focus .icon{background-color:var(--legacy-selection-fg-color)}@media (forced-colors: active){.tree-outline .lock-icon,\n .tree-outline .security-property{forced-color-adjust:none}.tree-outline li.selected:focus .lock-icon,\n .tree-outline .security-sidebar-tree-item.selected:focus .icon{background-color:HighlightText}}.tree-outline .security-main-view-sidebar-tree-item{border-bottom:1px solid var(--color-background-elevation-2);padding:16px 0}.tree-outline li.security-sidebar-origins{padding:1px 8px 1px 13px;margin-top:1em;margin-bottom:0.5em;color:var(--color-text-secondary);border-top:none;line-height:16px;text-shadow:var(--color-background-opacity-80) 0 1px 0}.tree-outline ol{padding-left:0}.tree-outline li::before{content:none}.tree-outline .security-main-view-sidebar-tree-item,\n.tree-outline .security-sidebar-origins,\n.tree-outline li.security-sidebar-origins + .children > li{padding-left:16px}.security-sidebar-tree-item{padding:2px 0}.security-sidebar-tree-item .title{overflow:hidden;margin-right:5px}.security-main-view-reload-message .tree-element-title{color:var(--color-text-secondary);padding-left:8px}\n/*# sourceURL=sidebar.css */\n");const T={overview:"Overview",mainOrigin:"Main origin",nonsecureOrigins:"Non-secure origins",secureOrigins:"Secure origins",unknownCanceled:"Unknown / canceled",reloadToViewDetails:"Reload to view details",mainOriginSecure:"Main origin (secure)",mainOriginNonsecure:"Main origin (non-secure)",securityOverview:"Security overview",secure:"Secure",info:"Info",notSecure:"Not secure",viewCertificate:"View certificate",notSecureBroken:"Not secure (broken)",thisPageIsDangerousFlaggedBy:"This page is dangerous (flagged by Google Safe Browsing).",flaggedByGoogleSafeBrowsing:"Flagged by Google Safe Browsing",toCheckThisPagesStatusVisit:"To check this page's status, visit g.co/safebrowsingstatus.",thisIsAnErrorPage:"This is an error page.",thisPageIsInsecureUnencrypted:"This page is insecure (unencrypted HTTP).",thisPageHasANonhttpsSecureOrigin:"This page has a non-HTTPS secure origin.",thisPageIsSuspicious:"This page is suspicious",chromeHasDeterminedThatThisSiteS:"Chrome has determined that this site could be fake or fraudulent.",ifYouBelieveThisIsShownIn:"If you believe this is shown in error please visit https://g.co/chrome/lookalike-warnings.",possibleSpoofingUrl:"Possible spoofing URL",thisSitesHostnameLooksSimilarToP:"This site's hostname looks similar to {PH1}. Attackers sometimes mimic sites by making small, hard-to-see changes to the domain name.",ifYouBelieveThisIsShownInErrorSafety:"If you believe this is shown in error please visit https://g.co/chrome/lookalike-warnings.",thisPageIsSuspiciousFlaggedBy:"This page is suspicious (flagged by Chrome).",certificate:"Certificate",insecureSha:"insecure (SHA-1)",theCertificateChainForThisSite:"The certificate chain for this site contains a certificate signed using SHA-1.",subjectAlternativeNameMissing:"`Subject Alternative Name` missing",theCertificateForThisSiteDoesNot:"The certificate for this site does not contain a `Subject Alternative Name` extension containing a domain name or IP address.",missing:"missing",thisSiteIsMissingAValidTrusted:"This site is missing a valid, trusted certificate ({PH1}).",validAndTrusted:"valid and trusted",theConnectionToThisSiteIsUsingA:"The connection to this site is using a valid, trusted server certificate issued by {PH1}.",publickeypinningBypassed:"Public-Key-Pinning bypassed",publickeypinningWasBypassedByA:"Public-Key-Pinning was bypassed by a local root certificate.",certificateExpiresSoon:"Certificate expires soon",theCertificateForThisSiteExpires:"The certificate for this site expires in less than 48 hours and needs to be renewed.",connection:"Connection",secureConnectionSettings:"secure connection settings",theConnectionToThisSiteIs:"The connection to this site is encrypted and authenticated using {PH1}, {PH2}, and {PH3}.",sIsObsoleteEnableTlsOrLater:"{PH1} is obsolete. Enable TLS 1.2 or later.",rsaKeyExchangeIsObsoleteEnableAn:"RSA key exchange is obsolete. Enable an ECDHE-based cipher suite.",sIsObsoleteEnableAnAesgcmbased:"{PH1} is obsolete. Enable an AES-GCM-based cipher suite.",theServerSignatureUsesShaWhichIs:"The server signature uses SHA-1, which is obsolete. Enable a SHA-2 signature algorithm instead. (Note this is different from the signature in the certificate.)",obsoleteConnectionSettings:"obsolete connection settings",resources:"Resources",activeMixedContent:"active mixed content",youHaveRecentlyAllowedNonsecure:"You have recently allowed non-secure content (such as scripts or iframes) to run on this site.",mixedContent:"mixed content",thisPageIncludesHttpResources:"This page includes HTTP resources.",nonsecureForm:"non-secure form",thisPageIncludesAFormWithA:'This page includes a form with a non-secure "action" attribute.',activeContentWithCertificate:"active content with certificate errors",youHaveRecentlyAllowedContent:"You have recently allowed content loaded with certificate errors (such as scripts or iframes) to run on this site.",contentWithCertificateErrors:"content with certificate errors",thisPageIncludesResourcesThat:"This page includes resources that were loaded with certificate errors.",allServedSecurely:"all served securely",allResourcesOnThisPageAreServed:"All resources on this page are served securely.",blockedMixedContent:"Blocked mixed content",yourPageRequestedNonsecure:"Your page requested non-secure resources that were blocked.",reloadThePageToRecordRequestsFor:"Reload the page to record requests for HTTP resources.",viewDRequestsInNetworkPanel:"{n, plural, =1 {View # request in Network Panel} other {View # requests in Network Panel}}",origin:"Origin",viewRequestsInNetworkPanel:"View requests in Network Panel",protocol:"Protocol",keyExchange:"Key exchange",cipher:"Cipher",serverSignature:"Server signature",encryptedClientHello:"Encrypted ClientHello",certificateTransparency:"Certificate Transparency",subject:"Subject",validFrom:"Valid from",validUntil:"Valid until",issuer:"Issuer",openFullCertificateDetails:"Open full certificate details",sct:"SCT",logName:"Log name",logId:"Log ID",validationStatus:"Validation status",source:"Source",issuedAt:"Issued at",hashAlgorithm:"Hash algorithm",signatureAlgorithm:"Signature algorithm",signatureData:"Signature data",showFullDetails:"Show full details",hideFullDetails:"Hide full details",thisRequestCompliesWithChromes:"This request complies with `Chrome`'s Certificate Transparency policy.",thisRequestDoesNotComplyWith:"This request does not comply with `Chrome`'s Certificate Transparency policy.",thisResponseWasLoadedFromCache:"This response was loaded from cache. Some security details might be missing.",theSecurityDetailsAboveAreFrom:"The security details above are from the first inspected response.",thisOriginIsANonhttpsSecure:"This origin is a non-HTTPS secure origin.",yourConnectionToThisOriginIsNot:"Your connection to this origin is not secure.",noSecurityInformation:"No security information",noSecurityDetailsAreAvailableFor:"No security details are available for this origin.",na:"(n/a)",showLess:"Show less",showMoreSTotal:"Show more ({PH1} total)",unknownField:"unknown",enabled:"enabled"},I=e.i18n.registerUIStrings("panels/security/SecurityPanel.ts",T),E=e.i18n.getLocalizedString.bind(void 0,I);let A;const R=new Map([[513,"RSA with SHA-1"],[1025,"RSA with SHA-256"],[1281,"RSA with SHA-384"],[1537,"RSA with SHA-512"],[1027,"ECDSA with SHA-256"],[1283,"ECDSA with SHA-384"],[2052,"RSA-PSS with SHA-256"],[2053,"RSA-PSS with SHA-384"],[2054,"RSA-PSS with SHA-512"]]);class P extends n.Panel.PanelWithSidebar{mainView;sidebarMainViewElement;sidebarTree;lastResponseReceivedForLoaderId;origins;filterRequestCounts;visibleView;eventListeners;securityModel;constructor(){super("security"),this.mainView=new F(this);const e=document.createElement("span");e.classList.add("title"),e.textContent=E(T.overview),this.sidebarMainViewElement=new H(e,this.setVisibleView.bind(this,this.mainView),"security-main-view-sidebar-tree-item","lock-icon"),this.sidebarMainViewElement.tooltip=e.textContent,this.sidebarTree=new L(this.sidebarMainViewElement,this.showOrigin.bind(this)),this.panelSidebarElement().appendChild(this.sidebarTree.element),this.lastResponseReceivedForLoaderId=new Map,this.origins=new Map,this.filterRequestCounts=new Map,this.visibleView=null,this.eventListeners=[],this.securityModel=null,t.TargetManager.TargetManager.instance().observeModels(u,this,{scoped:!0}),t.TargetManager.TargetManager.instance().addModelListener(t.ResourceTreeModel.ResourceTreeModel,t.ResourceTreeModel.Events.PrimaryPageChanged,this.onPrimaryPageChanged,this)}static instance(e={forceNew:null}){const{forceNew:t}=e;return A&&!t||(A=new P),A}static createCertificateViewerButtonForOrigin(e,i){const r=n.UIUtils.createTextButton(e,(async e=>{e.consume();const r=await t.NetworkManager.MultitargetNetworkManager.instance().getCertificate(i);r.length>0&&s.InspectorFrontendHost.InspectorFrontendHostInstance.showCertificateViewer(r)}),"origin-button");return n.ARIAUtils.markAsButton(r),r}static createCertificateViewerButtonForCert(e,t){const i=n.UIUtils.createTextButton(e,(e=>{e.consume(),s.InspectorFrontendHost.InspectorFrontendHostInstance.showCertificateViewer(t)}),"origin-button");return n.ARIAUtils.markAsButton(i),i}static createHighlightedUrl(e,t){const i="://",s=e.indexOf(i);if(-1===s){const t=document.createElement("span");return t.textContent=e,t}const r=document.createElement("span"),n=e.substr(0,s),o=e.substr(s+i.length);return r.createChild("span","url-scheme-"+t).textContent=n,r.createChild("span","url-scheme-separator").textContent=i,r.createChild("span").textContent=o,r}updateVisibleSecurityState(e){this.sidebarMainViewElement.setSecurityState(e.securityState),this.mainView.updateVisibleSecurityState(e)}onVisibleSecurityStateChanged({data:e}){this.updateVisibleSecurityState(e)}selectAndSwitchToMainView(){this.sidebarMainViewElement.select(!0)}showOrigin(e){const t=this.origins.get(e);t&&(t.originView||(t.originView=new D(this,e,t)),this.setVisibleView(t.originView))}wasShown(){super.wasShown(),this.visibleView||this.selectAndSwitchToMainView()}focus(){this.sidebarTree.focus()}setVisibleView(e){this.visibleView!==e&&(this.visibleView&&this.visibleView.detach(),this.visibleView=e,e&&this.splitWidget().setMainWidget(e))}onResponseReceived(e){const t=e.data.request;t.resourceType()===i.ResourceType.resourceTypes.Document&&t.loaderId&&this.lastResponseReceivedForLoaderId.set(t.loaderId,t)}processRequest(e){const t=i.ParsedURL.ParsedURL.extractOrigin(e.url());if(!t)return;let s=e.securityState();"blockable"!==e.mixedContentType&&"optionally-blockable"!==e.mixedContentType||(s="insecure");const r=this.origins.get(t);if(r){const i=r.securityState;if(r.securityState=this.securityStateMin(i,s),i!==r.securityState){const i=e.securityDetails();i&&(r.securityDetails=i),this.sidebarTree.updateOrigin(t,s),r.originView&&r.originView.setSecurityState(s)}}else{const i={securityState:s,securityDetails:e.securityDetails(),loadedFromCache:e.cached(),originView:void 0};this.origins.set(t,i),this.sidebarTree.addOrigin(t,s)}}onRequestFinished(e){const t=e.data;this.updateFilterRequestCounts(t),this.processRequest(t)}updateFilterRequestCounts(e){if("none"===e.mixedContentType)return;let t=r.UIFilter.MixedContentFilterValues.All;e.wasBlocked()?t=r.UIFilter.MixedContentFilterValues.Blocked:"blockable"===e.mixedContentType?t=r.UIFilter.MixedContentFilterValues.BlockOverridden:"optionally-blockable"===e.mixedContentType&&(t=r.UIFilter.MixedContentFilterValues.Displayed);const i=this.filterRequestCounts.get(t);i?this.filterRequestCounts.set(t,i+1):this.filterRequestCounts.set(t,1),this.mainView.refreshExplanations()}filterRequestCount(e){return this.filterRequestCounts.get(e)||0}securityStateMin(e,t){return u.SecurityStateComparator(e,t)<0?e:t}modelAdded(e){if(e.target()!==e.target().outermostTarget())return;this.securityModel=e;const s=e.resourceTreeModel(),r=e.networkManager();this.eventListeners.length&&i.EventTarget.removeEventListeners(this.eventListeners),this.eventListeners=[e.addEventListener(p.VisibleSecurityStateChanged,this.onVisibleSecurityStateChanged,this),s.addEventListener(t.ResourceTreeModel.Events.InterstitialShown,this.onInterstitialShown,this),s.addEventListener(t.ResourceTreeModel.Events.InterstitialHidden,this.onInterstitialHidden,this),r.addEventListener(t.NetworkManager.Events.ResponseReceived,this.onResponseReceived,this),r.addEventListener(t.NetworkManager.Events.RequestFinished,this.onRequestFinished,this)],s.isInterstitialShowing&&this.onInterstitialShown()}modelRemoved(e){this.securityModel===e&&(this.securityModel=null,i.EventTarget.removeEventListeners(this.eventListeners))}onPrimaryPageChanged(e){const{frame:t}=e.data,s=this.lastResponseReceivedForLoaderId.get(t.loaderId);this.selectAndSwitchToMainView(),this.sidebarTree.clearOrigins(),this.origins.clear(),this.lastResponseReceivedForLoaderId.clear(),this.filterRequestCounts.clear(),this.mainView.refreshExplanations();const r=i.ParsedURL.ParsedURL.extractOrigin(s?s.url():t.url);this.sidebarTree.setMainOrigin(r),s&&this.processRequest(s)}onInterstitialShown(){this.selectAndSwitchToMainView(),this.sidebarTree.toggleOriginsList(!0)}onInterstitialHidden(){this.sidebarTree.toggleOriginsList(!1)}}class L extends n.TreeOutline.TreeOutlineInShadow{showOriginInPanel;mainOrigin;originGroupTitles;originGroups;elementsByOrigin;mainViewReloadMessage;constructor(e,t){super(),this.appendChild(e),this.registerCSSFiles([b,C]),this.showOriginInPanel=t,this.mainOrigin=null,this.originGroupTitles=new Map([[M.MainOrigin,E(T.mainOrigin)],[M.NonSecure,E(T.nonsecureOrigins)],[M.Secure,E(T.secureOrigins)],[M.Unknown,E(T.unknownCanceled)]]),this.originGroups=new Map;for(const e of Object.values(M)){const t=this.createOriginGroupElement(this.originGroupTitles.get(e));this.originGroups.set(e,t),this.appendChild(t)}this.mainViewReloadMessage=new n.TreeOutline.TreeElement(E(T.reloadToViewDetails)),this.mainViewReloadMessage.selectable=!1,this.mainViewReloadMessage.listItemElement.classList.add("security-main-view-reload-message");this.originGroups.get(M.MainOrigin).appendChild(this.mainViewReloadMessage),this.clearOriginGroups(),this.elementsByOrigin=new Map}originGroupTitle(e){return this.originGroupTitles.get(e)}originGroupElement(e){return this.originGroups.get(e)}createOriginGroupElement(e){const t=new n.TreeOutline.TreeElement(e,!0);return t.selectable=!1,t.setCollapsible(!1),t.expand(),t.listItemElement.classList.add("security-sidebar-origins"),n.ARIAUtils.setLabel(t.childrenListElement,e),t}toggleOriginsList(e){for(const t of this.originGroups.values())t.hidden=e}addOrigin(e,t){this.mainViewReloadMessage.hidden=!0;const i=new H(P.createHighlightedUrl(e,t),this.showOriginInPanel.bind(this,e),"security-sidebar-tree-item","security-property");i.tooltip=e,this.elementsByOrigin.set(e,i),this.updateOrigin(e,t)}setMainOrigin(e){this.mainOrigin=e}updateOrigin(e,t){const i=this.elementsByOrigin.get(e);let s;if(i.setSecurityState(t),e===this.mainOrigin)s=this.originGroups.get(M.MainOrigin),s.title=E("secure"===t?T.mainOriginSecure:T.mainOriginNonsecure),n.ARIAUtils.setLabel(s.childrenListElement,s.title);else switch(t){case"secure":s=this.originGroupElement(M.Secure);break;case"unknown":s=this.originGroupElement(M.Unknown);break;default:s=this.originGroupElement(M.NonSecure)}const r=i.parent;r!==s&&(r&&(r.removeChild(i),0===r.childCount()&&(r.hidden=!0)),s.appendChild(i),s.hidden=!1)}clearOriginGroups(){for(const[e,t]of this.originGroups)if(e===M.MainOrigin){for(let e=t.childCount()-1;e>0;e--)t.removeChildAtIndex(e);t.title=this.originGroupTitle(M.MainOrigin),t.hidden=!1,this.mainViewReloadMessage.hidden=!1}else t.removeChildren(),t.hidden=!0}clearOrigins(){this.clearOriginGroups(),this.elementsByOrigin.clear()}wasShown(){}}var M;!function(e){e.MainOrigin="MainOrigin",e.NonSecure="NonSecure",e.Secure="Secure",e.Unknown="Unknown"}(M||(M={}));class H extends n.TreeOutline.TreeElement{selectCallback;cssPrefix;iconElement;securityStateInternal;constructor(e,t,i,s){super("",!1),this.selectCallback=t,this.cssPrefix=s,this.listItemElement.classList.add(i),this.iconElement=this.listItemElement.createChild("div","icon"),this.iconElement.classList.add(this.cssPrefix),this.listItemElement.appendChild(e),this.securityStateInternal=null,this.setSecurityState("unknown")}setSecurityState(e){this.securityStateInternal&&this.iconElement.classList.remove(this.cssPrefix+"-"+this.securityStateInternal),this.securityStateInternal=e,this.iconElement.classList.add(this.cssPrefix+"-"+e)}securityState(){return this.securityStateInternal}onselect(){return this.selectCallback(),!0}}class F extends n.Widget.VBox{panel;summarySection;securityExplanationsMain;securityExplanationsExtra;lockSpectrum;summaryText;explanations;securityState;constructor(e){super(!0),this.setMinimumSize(200,100),this.contentElement.classList.add("security-main-view"),this.panel=e,this.summarySection=this.contentElement.createChild("div","security-summary"),this.securityExplanationsMain=this.contentElement.createChild("div","security-explanation-list security-explanations-main"),this.securityExplanationsExtra=this.contentElement.createChild("div","security-explanation-list security-explanations-extra");const t=this.summarySection.createChild("div","security-summary-section-title");t.textContent=E(T.securityOverview),n.ARIAUtils.markAsHeading(t,1);const i=this.summarySection.createChild("div","lock-spectrum");this.lockSpectrum=new Map([["secure",i.createChild("div","lock-icon lock-icon-secure")],["neutral",i.createChild("div","lock-icon lock-icon-neutral")],["insecure",i.createChild("div","lock-icon lock-icon-insecure")]]),n.Tooltip.Tooltip.install(this.getLockSpectrumDiv("secure"),E(T.secure)),n.Tooltip.Tooltip.install(this.getLockSpectrumDiv("neutral"),E(T.info)),n.Tooltip.Tooltip.install(this.getLockSpectrumDiv("insecure"),E(T.notSecure)),this.summarySection.createChild("div","triangle-pointer-container").createChild("div","triangle-pointer-wrapper").createChild("div","triangle-pointer"),this.summaryText=this.summarySection.createChild("div","security-summary-text"),n.ARIAUtils.markAsHeading(this.summaryText,2),this.explanations=null,this.securityState=null}getLockSpectrumDiv(e){const t=this.lockSpectrum.get(e);if(!t)throw new Error(`Invalid argument: ${e}`);return t}addExplanation(e,t){const i=e.createChild("div","security-explanation");i.classList.add("security-explanation-"+t.securityState),i.createChild("div","security-property").classList.add("security-property-"+t.securityState);const s=i.createChild("div","security-explanation-text"),r=s.createChild("div","security-explanation-title");if(t.title?(r.createChild("span").textContent=t.title+" - ",r.createChild("span","security-explanation-title-"+t.securityState).textContent=t.summary):r.textContent=t.summary,s.createChild("div").textContent=t.description,t.certificate.length&&s.appendChild(P.createCertificateViewerButtonForCert(E(T.viewCertificate),t.certificate)),t.recommendations&&t.recommendations.length){const e=s.createChild("ul","security-explanation-recommendations");for(const i of t.recommendations)e.createChild("li").textContent=i}return s}updateVisibleSecurityState(e){this.summarySection.classList.remove("security-summary-"+this.securityState),this.securityState=e.securityState,this.summarySection.classList.add("security-summary-"+this.securityState),"insecure"===this.securityState?(this.getLockSpectrumDiv("insecure").classList.add("lock-icon-insecure"),this.getLockSpectrumDiv("insecure").classList.remove("lock-icon-insecure-broken"),n.Tooltip.Tooltip.install(this.getLockSpectrumDiv("insecure"),E(T.notSecure))):"insecure-broken"===this.securityState&&(this.getLockSpectrumDiv("insecure").classList.add("lock-icon-insecure-broken"),this.getLockSpectrumDiv("insecure").classList.remove("lock-icon-insecure"),n.Tooltip.Tooltip.install(this.getLockSpectrumDiv("insecure"),E(T.notSecureBroken)));const{summary:t,explanations:i}=this.getSecuritySummaryAndExplanations(e);this.summaryText.textContent=t||g[this.securityState](),this.explanations=this.orderExplanations(i),this.refreshExplanations()}getSecuritySummaryAndExplanations(e){const{securityState:t,securityStateIssueIds:i}=e;let s;const r=[];if(s=this.explainSafetyTipSecurity(e,s,r),i.includes("malicious-content"))s=E(T.thisPageIsDangerousFlaggedBy),r.unshift(new w("insecure",void 0,E(T.flaggedByGoogleSafeBrowsing),E(T.toCheckThisPagesStatusVisit)));else{if(i.includes("is-error-page")&&(null===e.certificateSecurityState||null===e.certificateSecurityState.certificateNetworkError))return s=E(T.thisIsAnErrorPage),{summary:s,explanations:r};"insecure-broken"===t&&i.includes("scheme-is-not-cryptographic")&&(s=s||E(T.thisPageIsInsecureUnencrypted))}return i.includes("scheme-is-not-cryptographic")?("neutral"!==t||i.includes("insecure-origin")||(s=E(T.thisPageHasANonhttpsSecureOrigin)),{summary:s,explanations:r}):(this.explainCertificateSecurity(e,r),this.explainConnectionSecurity(e,r),this.explainContentSecurity(e,r),{summary:s,explanations:r})}explainSafetyTipSecurity(e,t,i){const{securityStateIssueIds:s,safetyTipInfo:r}=e,n=[];if(s.includes("bad_reputation")){const e=`${E(T.chromeHasDeterminedThatThisSiteS)}\n\n${E(T.ifYouBelieveThisIsShownIn)}`;n.push({summary:E(T.thisPageIsSuspicious),description:e})}else if(s.includes("lookalike")&&r&&r.safeUrl){const e=new URL(r.safeUrl).hostname,t=`${E(T.thisSitesHostnameLooksSimilarToP,{PH1:e})}\n\n${E(T.ifYouBelieveThisIsShownInErrorSafety)}`;n.push({summary:E(T.possibleSpoofingUrl),description:t})}return n.length>0&&(t=t||E(T.thisPageIsSuspiciousFlaggedBy),i.push(new w("insecure",void 0,n[0].summary,n[0].description))),t}explainCertificateSecurity(e,t){const{certificateSecurityState:i,securityStateIssueIds:s}=e,r=E(T.certificate);if(i&&i.certificateHasSha1Signature){const e=E(T.insecureSha),s=E(T.theCertificateChainForThisSite);i.certificateHasWeakSignature?t.push(new w("insecure",r,e,s,i.certificate,"none")):t.push(new w("neutral",r,e,s,i.certificate,"none"))}i&&s.includes("cert-missing-subject-alt-name")&&t.push(new w("insecure",r,E(T.subjectAlternativeNameMissing),E(T.theCertificateForThisSiteDoesNot),i.certificate,"none")),i&&null!==i.certificateNetworkError?t.push(new w("insecure",r,E(T.missing),E(T.thisSiteIsMissingAValidTrusted,{PH1:i.certificateNetworkError}),i.certificate,"none")):i&&!i.certificateHasSha1Signature&&t.push(new w("secure",r,E(T.validAndTrusted),E(T.theConnectionToThisSiteIsUsingA,{PH1:i.issuer}),i.certificate,"none")),s.includes("pkp-bypassed")&&t.push(new w("info",r,E(T.publickeypinningBypassed),E(T.publickeypinningWasBypassedByA))),i&&i.isCertificateExpiringSoon()&&t.push(new w("info",void 0,E(T.certificateExpiresSoon),E(T.theCertificateForThisSiteExpires)))}explainConnectionSecurity(e,t){const i=e.certificateSecurityState;if(!i)return;const s=E(T.connection);if(i.modernSSL)return void t.push(new w("secure",s,E(T.secureConnectionSettings),E(T.theConnectionToThisSiteIs,{PH1:i.protocol,PH2:i.getKeyExchangeName(),PH3:i.getCipherFullName()})));const r=[];i.obsoleteSslProtocol&&r.push(E(T.sIsObsoleteEnableTlsOrLater,{PH1:i.protocol})),i.obsoleteSslKeyExchange&&r.push(E(T.rsaKeyExchangeIsObsoleteEnableAn)),i.obsoleteSslCipher&&r.push(E(T.sIsObsoleteEnableAnAesgcmbased,{PH1:i.cipher})),i.obsoleteSslSignature&&r.push(E(T.theServerSignatureUsesShaWhichIs)),t.push(new w("info",s,E(T.obsoleteConnectionSettings),E(T.theConnectionToThisSiteIs,{PH1:i.protocol,PH2:i.getKeyExchangeName(),PH3:i.getCipherFullName()}),void 0,void 0,r))}explainContentSecurity(e,t){let i=!0;const s=E(T.resources),r=e.securityStateIssueIds;r.includes("ran-mixed-content")&&(i=!1,t.push(new w("insecure",s,E(T.activeMixedContent),E(T.youHaveRecentlyAllowedNonsecure),[],"blockable"))),r.includes("displayed-mixed-content")&&(i=!1,t.push(new w("neutral",s,E(T.mixedContent),E(T.thisPageIncludesHttpResources),[],"optionally-blockable"))),r.includes("contained-mixed-form")&&(i=!1,t.push(new w("neutral",s,E(T.nonsecureForm),E(T.thisPageIncludesAFormWithA)))),null!==e.certificateSecurityState&&null!==e.certificateSecurityState.certificateNetworkError||(r.includes("ran-content-with-cert-error")&&(i=!1,t.push(new w("insecure",s,E(T.activeContentWithCertificate),E(T.youHaveRecentlyAllowedContent)))),r.includes("displayed-content-with-cert-errors")&&(i=!1,t.push(new w("neutral",s,E(T.contentWithCertificateErrors),E(T.thisPageIncludesResourcesThat))))),i&&(r.includes("scheme-is-not-cryptographic")||t.push(new w("secure",s,E(T.allServedSecurely),E(T.allResourcesOnThisPageAreServed))))}orderExplanations(e){if(0===e.length)return e;const t=["insecure","neutral","secure","info"],i=[];for(const s of t)i.push(...e.filter((e=>e.securityState===s)));return i}refreshExplanations(){if(this.securityExplanationsMain.removeChildren(),this.securityExplanationsExtra.removeChildren(),this.explanations){for(const e of this.explanations)if("info"===e.securityState)this.addExplanation(this.securityExplanationsExtra,e);else switch(e.mixedContentType){case"blockable":this.addMixedContentExplanation(this.securityExplanationsMain,e,r.UIFilter.MixedContentFilterValues.BlockOverridden);break;case"optionally-blockable":this.addMixedContentExplanation(this.securityExplanationsMain,e,r.UIFilter.MixedContentFilterValues.Displayed);break;default:this.addExplanation(this.securityExplanationsMain,e)}if(this.panel.filterRequestCount(r.UIFilter.MixedContentFilterValues.Blocked)>0){const e={securityState:"info",summary:E(T.blockedMixedContent),description:E(T.yourPageRequestedNonsecure),mixedContentType:"blockable",certificate:[],title:""};this.addMixedContentExplanation(this.securityExplanationsMain,e,r.UIFilter.MixedContentFilterValues.Blocked)}}}addMixedContentExplanation(e,t,i){const s=this.addExplanation(e,t),r=this.panel.filterRequestCount(i);if(!r){return void(s.createChild("div","security-mixed-content").textContent=E(T.reloadThePageToRecordRequestsFor))}const o=s.createChild("div","security-mixed-content devtools-link");n.ARIAUtils.markAsLink(o),o.tabIndex=0,o.textContent=E(T.viewDRequestsInNetworkPanel,{n:r}),o.addEventListener("click",this.showNetworkFilter.bind(this,i)),o.addEventListener("keydown",(e=>{"Enter"===e.key&&this.showNetworkFilter(i,e)}))}showNetworkFilter(e,t){t.consume(),i.Revealer.reveal(r.UIFilter.UIRequestFilter.filters([{filterType:r.UIFilter.FilterType.MixedContent,filterValue:e}]))}wasShown(){super.wasShown(),this.registerCSSFiles([b,f])}}class D extends n.Widget.VBox{panel;originLockIcon;constructor(t,s,o){super(),this.panel=t,this.setMinimumSize(200,100),this.element.classList.add("security-origin-view");const a=this.element.createChild("div","title-section"),c=a.createChild("div","title-section-header");c.textContent=E(T.origin),n.ARIAUtils.markAsHeading(c,1);const l=a.createChild("div","origin-display");this.originLockIcon=l.createChild("span","security-property"),this.originLockIcon.classList.add("security-property-"+o.securityState),l.appendChild(P.createHighlightedUrl(s,o.securityState));const u=a.createChild("div","view-network-button"),d=n.UIUtils.createTextButton(E(T.viewRequestsInNetworkPanel),(e=>{e.consume();const t=new i.ParsedURL.ParsedURL(s);i.Revealer.reveal(r.UIFilter.UIRequestFilter.filters([{filterType:r.UIFilter.FilterType.Domain,filterValue:t.host},{filterType:r.UIFilter.FilterType.Scheme,filterValue:t.scheme}]))}));if(u.appendChild(d),n.ARIAUtils.markAsLink(d),o.securityDetails){const t=this.element.createChild("div","origin-view-section"),i=t.createChild("div","origin-view-section-title");i.textContent=E(T.connection),n.ARIAUtils.markAsHeading(i,2);let r=new V;if(t.appendChild(r.element()),r.addRow(E(T.protocol),o.securityDetails.protocol),o.securityDetails.keyExchange&&o.securityDetails.keyExchangeGroup?r.addRow(E(T.keyExchange),o.securityDetails.keyExchange+" with "+o.securityDetails.keyExchangeGroup):o.securityDetails.keyExchange?r.addRow(E(T.keyExchange),o.securityDetails.keyExchange):o.securityDetails.keyExchangeGroup&&r.addRow(E(T.keyExchange),o.securityDetails.keyExchangeGroup),o.securityDetails.serverSignatureAlgorithm){let e=R.get(o.securityDetails.serverSignatureAlgorithm);e??=E(T.unknownField)+" ("+o.securityDetails.serverSignatureAlgorithm+")",r.addRow(E(T.serverSignature),e)}r.addRow(E(T.cipher),o.securityDetails.cipher+(o.securityDetails.mac?" with "+o.securityDetails.mac:"")),o.securityDetails.encryptedClientHello&&r.addRow(E(T.encryptedClientHello),E(T.enabled));const a=this.element.createChild("div","origin-view-section"),c=a.createChild("div","origin-view-section-title");c.textContent=E(T.certificate),n.ARIAUtils.markAsHeading(c,2);const l=o.securityDetails.signedCertificateTimestampList.length,u=o.securityDetails.certificateTransparencyCompliance;let d;if(l||"unknown"!==u){d=this.element.createChild("div","origin-view-section");const e=d.createChild("div","origin-view-section-title");e.textContent=E(T.certificateTransparency),n.ARIAUtils.markAsHeading(e,2)}const h=this.createSanDiv(o.securityDetails.sanList),p=new Date(1e3*o.securityDetails.validFrom).toUTCString(),g=new Date(1e3*o.securityDetails.validTo).toUTCString();if(r=new V,a.appendChild(r.element()),r.addRow(E(T.subject),o.securityDetails.subjectName),r.addRow(e.i18n.lockedString("SAN"),h),r.addRow(E(T.validFrom),p),r.addRow(E(T.validUntil),g),r.addRow(E(T.issuer),o.securityDetails.issuer),r.addRow("",P.createCertificateViewerButtonForOrigin(E(T.openFullCertificateDetails),s)),!d)return;const m=new V;m.element().classList.add("sct-summary"),d.appendChild(m.element());for(let e=0;e<l;e++){const t=o.securityDetails.signedCertificateTimestampList[e];m.addRow(E(T.sct),t.logDescription+" ("+t.origin+", "+t.status+")")}const y=d.createChild("div","sct-details");y.classList.add("hidden");for(let e=0;e<l;e++){const t=new V;y.appendChild(t.element());const i=o.securityDetails.signedCertificateTimestampList[e];t.addRow(E(T.logName),i.logDescription),t.addRow(E(T.logId),i.logId.replace(/(.{2})/g,"$1 ")),t.addRow(E(T.validationStatus),i.status),t.addRow(E(T.source),i.origin),t.addRow(E(T.issuedAt),new Date(i.timestamp).toUTCString()),t.addRow(E(T.hashAlgorithm),i.hashAlgorithm),t.addRow(E(T.signatureAlgorithm),i.signatureAlgorithm),t.addRow(E(T.signatureData),i.signatureData.replace(/(.{2})/g,"$1 "))}if(l){function e(){let e;const i=!y.classList.contains("hidden");e=E(i?T.showFullDetails:T.hideFullDetails),t.textContent=e,n.ARIAUtils.setLabel(t,e),n.ARIAUtils.setExpanded(t,!i),m.element().classList.toggle("hidden"),y.classList.toggle("hidden")}const t=n.UIUtils.createTextButton(E(T.showFullDetails),e,"details-toggle");d.appendChild(t)}switch(u){case"compliant":d.createChild("div","origin-view-section-notes").textContent=E(T.thisRequestCompliesWithChromes);break;case"not-compliant":d.createChild("div","origin-view-section-notes").textContent=E(T.thisRequestDoesNotComplyWith)}const S=this.element.createChild("div","origin-view-section origin-view-notes");o.loadedFromCache&&(S.createChild("div").textContent=E(T.thisResponseWasLoadedFromCache)),S.createChild("div").textContent=E(T.theSecurityDetailsAboveAreFrom)}else if("secure"===o.securityState){const e=this.element.createChild("div","origin-view-section"),t=e.createChild("div","origin-view-section-title");t.textContent=E(T.secure),n.ARIAUtils.markAsHeading(t,2),e.createChild("div").textContent=E(T.thisOriginIsANonhttpsSecure)}else if("unknown"!==o.securityState){const e=this.element.createChild("div","origin-view-section"),t=e.createChild("div","origin-view-section-title");t.textContent=E(T.notSecure),n.ARIAUtils.markAsHeading(t,2),e.createChild("div").textContent=E(T.yourConnectionToThisOriginIsNot)}else{const e=this.element.createChild("div","origin-view-section"),t=e.createChild("div","origin-view-section-title");t.textContent=E(T.noSecurityInformation),n.ARIAUtils.markAsHeading(t,2),e.createChild("div").textContent=E(T.noSecurityDetailsAreAvailableFor)}}createSanDiv(e){const t=document.createElement("div");if(0===e.length)t.textContent=E(T.na),t.classList.add("empty-san");else{const i=2,s=e.length>i+1;for(let r=0;r<e.length;r++){const n=t.createChild("span","san-entry");n.textContent=e[r],s&&r>=i&&n.classList.add("truncated-entry")}if(s){function i(){const i=t.classList.contains("truncated-san");let r;i?(t.classList.remove("truncated-san"),r=E(T.showLess)):(t.classList.add("truncated-san"),r=E(T.showMoreSTotal,{PH1:e.length})),s.textContent=r,n.ARIAUtils.setLabel(s,r),n.ARIAUtils.setExpanded(s,i)}const s=n.UIUtils.createTextButton(E(T.showMoreSTotal,{PH1:e.length}),i);t.appendChild(s),i()}}return t}setSecurityState(e){for(const e of Array.prototype.slice.call(this.originLockIcon.classList))e.startsWith("security-property-")&&this.originLockIcon.classList.remove(e);this.originLockIcon.classList.add("security-property-"+e)}wasShown(){super.wasShown(),this.registerCSSFiles([k,b])}}class V{elementInternal;constructor(){this.elementInternal=document.createElement("table"),this.elementInternal.classList.add("details-table")}element(){return this.elementInternal}addRow(e,t){const i=this.elementInternal.createChild("tr","details-table-row");i.createChild("td").textContent=e;const s=i.createChild("td");"string"==typeof t?s.textContent=t:s.appendChild(t)}}var O=Object.freeze({__proto__:null,SecurityPanel:P,SecurityPanelSidebarTree:L,get OriginGroup(){return M},SecurityPanelSidebarTreeElement:H,SecurityMainView:F,SecurityOriginView:D,SecurityDetailsTable:V});export{v as SecurityModel,O as SecurityPanel};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../core/common/common.js";import*as t from"../../ui/legacy/legacy.js";import*as o from"../../core/i18n/i18n.js";const n={sensors:"Sensors",geolocation:"geolocation",timezones:"timezones",locale:"locale",locales:"locales",accelerometer:"accelerometer",deviceOrientation:"device orientation",locations:"Locations",touch:"Touch",devicebased:"Device-based",forceEnabled:"Force enabled",emulateIdleDetectorState:"Emulate Idle Detector state",noIdleEmulation:"No idle emulation",userActiveScreenUnlocked:"User active, screen unlocked",userActiveScreenLocked:"User active, screen locked",userIdleScreenUnlocked:"User idle, screen unlocked",userIdleScreenLocked:"User idle, screen locked",showSensors:"Show Sensors",showLocations:"Show Locations"},i=o.i18n.registerUIStrings("panels/sensors/sensors-meta.ts",n),l=o.i18n.getLazilyComputedLocalizedString.bind(void 0,i);let s;async function a(){return s||(s=await import("./sensors.js")),s}t.ViewManager.registerViewExtension({location:"drawer-view",commandPrompt:l(n.showSensors),title:l(n.sensors),id:"sensors",persistence:"closeable",order:100,loadView:async()=>(await a()).SensorsView.SensorsView.instance(),tags:[l(n.geolocation),l(n.timezones),l(n.locale),l(n.locales),l(n.accelerometer),l(n.deviceOrientation)]}),t.ViewManager.registerViewExtension({location:"settings-view",id:"emulation-locations",commandPrompt:l(n.showLocations),title:l(n.locations),order:40,loadView:async()=>(await a()).LocationsSettingsTab.LocationsSettingsTab.instance(),settings:["emulation.locations"]}),e.Settings.registerSettingExtension({storageType:e.Settings.SettingStorageType.Synced,settingName:"emulation.locations",settingType:e.Settings.SettingType.ARRAY,defaultValue:[{title:"Berlin",lat:52.520007,long:13.404954,timezoneId:"Europe/Berlin",locale:"de-DE"},{title:"London",lat:51.507351,long:-.127758,timezoneId:"Europe/London",locale:"en-GB"},{title:"Moscow",lat:55.755826,long:37.6173,timezoneId:"Europe/Moscow",locale:"ru-RU"},{title:"Mountain View",lat:37.386052,long:-122.083851,timezoneId:"America/Los_Angeles",locale:"en-US"},{title:"Mumbai",lat:19.075984,long:72.877656,timezoneId:"Asia/Kolkata",locale:"mr-IN"},{title:"San Francisco",lat:37.774929,long:-122.419416,timezoneId:"America/Los_Angeles",locale:"en-US"},{title:"Shanghai",lat:31.230416,long:121.473701,timezoneId:"Asia/Shanghai",locale:"zh-Hans-CN"},{title:"São Paulo",lat:-23.55052,long:-46.633309,timezoneId:"America/Sao_Paulo",locale:"pt-BR"},{title:"Tokyo",lat:35.689487,long:139.691706,timezoneId:"Asia/Tokyo",locale:"ja-JP"}]}),e.Settings.registerSettingExtension({title:l(n.touch),reloadRequired:!0,settingName:"emulation.touch",settingType:e.Settings.SettingType.ENUM,defaultValue:"none",options:[{value:"none",title:l(n.devicebased),text:l(n.devicebased)},{value:"force",title:l(n.forceEnabled),text:l(n.forceEnabled)}]}),e.Settings.registerSettingExtension({title:l(n.emulateIdleDetectorState),settingName:"emulation.idleDetection",settingType:e.Settings.SettingType.ENUM,defaultValue:"none",options:[{value:"none",title:l(n.noIdleEmulation),text:l(n.noIdleEmulation)},{value:'{"isUserActive":true,"isScreenUnlocked":true}',title:l(n.userActiveScreenUnlocked),text:l(n.userActiveScreenUnlocked)},{value:'{"isUserActive":true,"isScreenUnlocked":false}',title:l(n.userActiveScreenLocked),text:l(n.userActiveScreenLocked)},{value:'{"isUserActive":false,"isScreenUnlocked":true}',title:l(n.userIdleScreenUnlocked),text:l(n.userIdleScreenUnlocked)},{value:'{"isUserActive":false,"isScreenUnlocked":false}',title:l(n.userIdleScreenLocked),text:l(n.userIdleScreenLocked)}]});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as t from"../../core/common/common.js";import*as e from"../../core/i18n/i18n.js";import*as i from"../../ui/legacy/legacy.js";import*as o from"../../core/host/host.js";import*as n from"../../core/sdk/sdk.js";const a=new CSSStyleSheet;let r;a.replaceSync(":host{overflow:hidden}.header{padding:0 0 6px;border-bottom:1px solid var(--color-details-hairline);font-size:18px;font-weight:normal;flex:none}.add-locations-button{flex:none;margin:10px 2px;min-width:140px;align-self:flex-start}.locations-list{max-width:600px;min-width:340px;flex:auto}.locations-list-item{padding:3px 6px;height:30px;display:flex;align-items:center;position:relative;flex:auto 1 1}.locations-list-text{white-space:nowrap;text-overflow:ellipsis;flex-basis:170px;user-select:none;color:var(--color-text-primary);position:relative;overflow:hidden}.locations-list-title{text-align:start}.locations-list-title-text{overflow:hidden;flex:auto;white-space:nowrap;text-overflow:ellipsis}.locations-list-separator{flex:0 0 1px;background-color:var(--color-details-hairline);height:30px;margin:0 4px}.locations-list-separator-invisible{visibility:hidden;height:100%!important}.locations-edit-row{display:flex;flex-direction:row;margin:6px 5px}.locations-edit-row input{width:100%;text-align:inherit}.locations-input-container{padding:1px}\n/*# sourceURL=locationsSettingsTab.css */\n");const l={customLocations:"Custom locations",locationName:"Location name",lat:"Lat",long:"Long",timezoneId:"Timezone ID",locale:"Locale",latitude:"Latitude",longitude:"Longitude",locationNameCannotBeEmpty:"Location name cannot be empty",locationNameMustBeLessThanS:"Location name must be less than {PH1} characters",latitudeMustBeANumber:"Latitude must be a number",latitudeMustBeGreaterThanOrEqual:"Latitude must be greater than or equal to {PH1}",latitudeMustBeLessThanOrEqualToS:"Latitude must be less than or equal to {PH1}",longitudeMustBeANumber:"Longitude must be a number",longitudeMustBeGreaterThanOr:"Longitude must be greater than or equal to {PH1}",longitudeMustBeLessThanOrEqualTo:"Longitude must be less than or equal to {PH1}",timezoneIdMustContainAlphabetic:"Timezone ID must contain alphabetic characters",localeMustContainAlphabetic:"Locale must contain alphabetic characters",addLocation:"Add location..."},s=e.i18n.registerUIStrings("panels/sensors/LocationsSettingsTab.ts",l),c=e.i18n.getLocalizedString.bind(void 0,s);class d extends i.Widget.VBox{list;customSetting;editor;constructor(){super(!0),this.contentElement.createChild("div","header").textContent=c(l.customLocations);const e=i.UIUtils.createTextButton(c(l.addLocation),this.addButtonClicked.bind(this),"add-locations-button");this.contentElement.appendChild(e),this.list=new i.ListWidget.ListWidget(this),this.list.element.classList.add("locations-list"),this.list.show(this.contentElement),this.customSetting=t.Settings.Settings.instance().moduleSetting("emulation.locations");const o=this.customSetting.get().map((t=>function(t,e){if(!t.title){const i=e.find((e=>e.lat===t.lat&&e.long===t.long&&e.timezoneId===t.timezoneId&&e.locale===t.locale));if(i)return i;console.error("Could not determine a location setting title")}return t}(t,this.customSetting.defaultValue)));this.customSetting.set(o),this.customSetting.addChangeListener(this.locationsUpdated,this),this.setDefaultFocusedElement(e)}static instance(){return r||(r=new d),r}wasShown(){super.wasShown(),this.registerCSSFiles([a]),this.list.registerCSSFiles([a]),this.locationsUpdated()}locationsUpdated(){this.list.clear();const t=this.customSetting.get();for(const e of t)this.list.appendItem(e,!0);this.list.appendSeparator()}addButtonClicked(){this.list.addNewItem(this.customSetting.get().length,{title:"",lat:0,long:0,timezoneId:"",locale:""})}renderItem(t,e){const o=document.createElement("div");o.classList.add("locations-list-item");const n=o.createChild("div","locations-list-text locations-list-title").createChild("div","locations-list-title-text");return n.textContent=t.title,i.Tooltip.Tooltip.install(n,t.title),o.createChild("div","locations-list-separator"),o.createChild("div","locations-list-text").textContent=String(t.lat),o.createChild("div","locations-list-separator"),o.createChild("div","locations-list-text").textContent=String(t.long),o.createChild("div","locations-list-separator"),o.createChild("div","locations-list-text").textContent=t.timezoneId,o.createChild("div","locations-list-separator"),o.createChild("div","locations-list-text").textContent=t.locale,o}removeItemRequested(t,e){const i=this.customSetting.get();i.splice(e,1),this.customSetting.set(i)}commitEdit(t,e,i){t.title=e.control("title").value.trim();const o=e.control("lat").value.trim();t.lat=o?parseFloat(o):0;const n=e.control("long").value.trim();t.long=n?parseFloat(n):0;const a=e.control("timezoneId").value.trim();t.timezoneId=a;const r=e.control("locale").value.trim();t.locale=r;const l=this.customSetting.get();i&&l.push(t),this.customSetting.set(l)}beginEdit(t){const e=this.createEditor();return e.control("title").value=t.title,e.control("lat").value=String(t.lat),e.control("long").value=String(t.long),e.control("timezoneId").value=t.timezoneId,e.control("locale").value=t.locale,e}createEditor(){if(this.editor)return this.editor;const t=new i.ListWidget.Editor;this.editor=t;const e=t.contentElement(),o=e.createChild("div","locations-edit-row");o.createChild("div","locations-list-text locations-list-title").textContent=c(l.locationName),o.createChild("div","locations-list-separator locations-list-separator-invisible"),o.createChild("div","locations-list-text").textContent=c(l.lat),o.createChild("div","locations-list-separator locations-list-separator-invisible"),o.createChild("div","locations-list-text").textContent=c(l.long),o.createChild("div","locations-list-separator locations-list-separator-invisible"),o.createChild("div","locations-list-text").textContent=c(l.timezoneId),o.createChild("div","locations-list-separator locations-list-separator-invisible"),o.createChild("div","locations-list-text").textContent=c(l.locale);const n=e.createChild("div","locations-edit-row");n.createChild("div","locations-list-text locations-list-title locations-input-container").appendChild(t.createInput("title","text",c(l.locationName),(function(t,e,i){const o=i.value.trim();let n;o.length?o.length>50&&(n=c(l.locationNameMustBeLessThanS,{PH1:50})):n=c(l.locationNameCannotBeEmpty);if(n)return{valid:!1,errorMessage:n};return{valid:!0,errorMessage:void 0}}))),n.createChild("div","locations-list-separator locations-list-separator-invisible");let a=n.createChild("div","locations-list-text locations-input-container");return a.appendChild(t.createInput("lat","text",c(l.latitude),(function(t,e,i){const o=i.value.trim(),n=Number(o);if(!o)return{valid:!0,errorMessage:void 0};let a;Number.isNaN(n)?a=c(l.latitudeMustBeANumber):parseFloat(o)<-90?a=c(l.latitudeMustBeGreaterThanOrEqual,{PH1:-90}):parseFloat(o)>90&&(a=c(l.latitudeMustBeLessThanOrEqualToS,{PH1:90}));if(a)return{valid:!1,errorMessage:a};return{valid:!0,errorMessage:void 0}}))),n.createChild("div","locations-list-separator locations-list-separator-invisible"),a=n.createChild("div","locations-list-text locations-list-text-longitude locations-input-container"),a.appendChild(t.createInput("long","text",c(l.longitude),(function(t,e,i){const o=i.value.trim(),n=Number(o);if(!o)return{valid:!0,errorMessage:void 0};let a;Number.isNaN(n)?a=c(l.longitudeMustBeANumber):parseFloat(o)<-180?a=c(l.longitudeMustBeGreaterThanOr,{PH1:-180}):parseFloat(o)>180&&(a=c(l.longitudeMustBeLessThanOrEqualTo,{PH1:180}));if(a)return{valid:!1,errorMessage:a};return{valid:!0,errorMessage:void 0}}))),n.createChild("div","locations-list-separator locations-list-separator-invisible"),a=n.createChild("div","locations-list-text locations-input-container"),a.appendChild(t.createInput("timezoneId","text",c(l.timezoneId),(function(t,e,i){const o=i.value.trim();if(""===o||/[a-zA-Z]/.test(o))return{valid:!0,errorMessage:void 0};return{valid:!1,errorMessage:c(l.timezoneIdMustContainAlphabetic)}}))),n.createChild("div","locations-list-separator locations-list-separator-invisible"),a=n.createChild("div","locations-list-text locations-input-container"),a.appendChild(t.createInput("locale","text",c(l.locale),(function(t,e,i){const o=i.value.trim();if(""===o||/[a-zA-Z]{2}/.test(o))return{valid:!0,errorMessage:void 0};return{valid:!1,errorMessage:c(l.localeMustContainAlphabetic)}}))),t}}var h=Object.freeze({__proto__:null,LocationsSettingsTab:d});const p=new CSSStyleSheet;p.replaceSync('.sensors-view{padding:12px;display:block}.sensors-view input{width:100%;max-width:120px;margin:-5px 10px 0 0;text-align:end}.sensors-view input[readonly]{background-color:var(--color-background-elevation-1)}.sensors-view fieldset{border:none;padding:10px 0;flex:0 0 auto;margin:0}.sensors-view fieldset[disabled]{opacity:50%}.orientation-axis-input-container input{max-width:120px}.sensors-view input:focus::-webkit-input-placeholder{color:transparent!important}.sensors-view .chrome-select{width:200px}.sensors-group-title{width:80px;line-height:24px}.sensors-group{display:flex;flex-wrap:wrap;margin-bottom:10px}.geo-fields{flex:2 0 200px}.latlong-group{display:flex;margin-bottom:10px}.latlong-title{width:70px}.timezone-error{margin-left:10px;color:var(--legacy-input-validation-error)}.orientation-content{display:flex;flex-wrap:wrap}.orientation-fields{margin-right:10px}.orientation-stage{--override-gradient-color-1:#e1f5fe;--override-gradient-color-2:#b0ebf3;--override-gradient-color-3:#def6f9;perspective:700px;perspective-origin:50% 50%;width:160px;height:150px;background:linear-gradient(var(--override-gradient-color-1) 0%,var(--override-gradient-color-1) 64%,var(--override-gradient-color-2) 64%,var(--override-gradient-color-3) 100%);transition:0.2s ease opacity,0.2s ease filter;overflow:hidden;margin-bottom:10px}.-theme-with-dark-background .orientation-stage,\n:host-context(.-theme-with-dark-background) .orientation-stage{--override-gradient-color-1:rgb(1 21 30);--override-gradient-color-2:rgb(12 71 79);--override-gradient-color-3:rgb(6 30 33)}.orientation-stage.disabled{filter:grayscale();opacity:50%}.orientation-element,\n.orientation-element::before,\n.orientation-element::after{position:absolute;box-sizing:border-box;transform-style:preserve-3d;background:no-repeat;background-size:cover;backface-visibility:hidden}.orientation-box{width:62px;height:122px;left:0;right:0;top:0;bottom:0;margin:auto;transform:rotate3d(1,0,0,90deg)}.orientation-layer{width:100%;height:100%;transform-style:preserve-3d}.orientation-box.is-animating,\n.is-animating .orientation-layer{transition:transform 300ms cubic-bezier(0.4,0,0.2,1) 0ms}.orientation-front,\n.orientation-back{width:62px;height:122px;border-radius:8px}.orientation-front{background-image:var(--image-file-accelerometer-front)}.orientation-back{transform:rotateY(180deg) translateZ(8px);background-image:var(--image-file-accelerometer-back)}.orientation-left,\n.orientation-right{width:8px;height:106px;top:8px;background-position:center center}.orientation-left{left:-8px;transform-origin:right center;transform:rotateY(-90deg);background-image:var(--image-file-accelerometer-left)}.orientation-right{right:-8px;transform-origin:left center;transform:rotateY(90deg);background-image:var(--image-file-accelerometer-right)}.orientation-left::before,\n.orientation-left::after,\n.orientation-right::before,\n.orientation-right::after{content:"";width:8px;height:6px}.orientation-left::before,\n.orientation-left::after{background-image:var(--image-file-accelerometer-left)}.orientation-right::before,\n.orientation-right::after{background-image:var(--image-file-accelerometer-right)}.orientation-left::before,\n.orientation-right::before{top:-6px;transform-origin:center bottom;transform:rotateX(26deg);background-position:center top}.orientation-left::after,\n.orientation-right::after{bottom:-6px;transform-origin:center top;transform:rotateX(-25deg);background-position:center bottom}.orientation-top,\n.orientation-bottom{width:50px;height:8px;left:8px;background-position:center center}.orientation-top{top:-8px;transform-origin:center bottom;transform:rotateX(90deg);background-image:var(--image-file-accelerometer-top)}.orientation-bottom{bottom:-8px;transform-origin:center top;transform:rotateX(-90deg);background-image:var(--image-file-accelerometer-bottom)}.orientation-top::before,\n.orientation-top::after,\n.orientation-bottom::before,\n.orientation-bottom::after{content:"";width:8px;height:8px}.orientation-top::before,\n.orientation-top::after{background-image:var(--image-file-accelerometer-top)}.orientation-bottom::before,\n.orientation-bottom::after{background-image:var(--image-file-accelerometer-bottom)}.orientation-top::before,\n.orientation-bottom::before{left:-6px;transform-origin:right center;transform:rotateY(-26deg);background-position:left center}.orientation-top::after,\n.orientation-bottom::after{right:-6px;transform-origin:left center;transform:rotateY(26deg);background-position:right center}.orientation-axis-input-container{margin-bottom:10px}.orientation-reset-button{min-width:80px}fieldset.device-orientation-override-section{margin:0;display:flex}.panel-section-separator{height:2px;margin-bottom:8px;background:var(--color-background-elevation-2)}button.text-button{margin:4px 0 0 10px}@media (forced-colors: active){.sensors-view fieldset[disabled]{opacity:100%}}.chrome-select-label{margin-bottom:16px}\n/*# sourceURL=sensors.css */\n');const u={location:"Location",noOverride:"No override",overrides:"Overrides",manage:"Manage",manageTheListOfLocations:"Manage the list of locations",other:"Other…",error:"Error",locationUnavailable:"Location unavailable",adjustWithMousewheelOrUpdownKeys:"Adjust with mousewheel or up/down keys. {PH1}: ±10, Shift: ±1, Alt: ±0.01",latitude:"Latitude",longitude:"Longitude",timezoneId:"Timezone ID",locale:"Locale",orientation:"Orientation",off:"Off",customOrientation:"Custom orientation",enableOrientationToRotate:"Enable orientation to rotate",shiftdragHorizontallyToRotate:"Shift+drag horizontally to rotate around the y-axis",deviceOrientationSetToAlphaSBeta:"Device orientation set to alpha: {PH1}, beta: {PH2}, gamma: {PH3}",reset:"Reset",resetDeviceOrientation:"Reset device orientation",forcesTouchInsteadOfClick:"Forces touch instead of click",forcesSelectedIdleStateEmulation:"Forces selected idle state emulation",presets:"Presets",portrait:"Portrait",portraitUpsideDown:"Portrait upside down",landscapeLeft:"Landscape left",landscapeRight:"Landscape right",displayUp:"Display up",displayDown:"Display down",alpha:"α (alpha)",beta:"β (beta)",gamma:"γ (gamma)"},m=e.i18n.registerUIStrings("panels/sensors/SensorsView.ts",u),g=e.i18n.getLocalizedString.bind(void 0,m);let v=null;class b extends i.Widget.VBox{LocationSetting;Location;LocationOverrideEnabled;fieldsetElement;timezoneError;locationSelectElement;latitudeInput;longitudeInput;timezoneInput;localeInput;latitudeSetter;longitudeSetter;timezoneSetter;localeSetter;localeError;customLocationsGroup;deviceOrientationSetting;deviceOrientation;deviceOrientationOverrideEnabled;deviceOrientationFieldset;stageElement;orientationSelectElement;alphaElement;betaElement;gammaElement;alphaSetter;betaSetter;gammaSetter;orientationLayer;boxElement;boxMatrix;mouseDownVector;originalBoxMatrix;constructor(){super(!0),this.contentElement.classList.add("sensors-view"),this.LocationSetting=t.Settings.Settings.instance().createSetting("emulation.locationOverride",""),this.Location=n.EmulationModel.Location.parseSetting(this.LocationSetting.get()),this.LocationOverrideEnabled=!1,this.createLocationSection(this.Location),this.contentElement.createChild("div").classList.add("panel-section-separator"),this.deviceOrientationSetting=t.Settings.Settings.instance().createSetting("emulation.deviceOrientationOverride",""),this.deviceOrientation=n.EmulationModel.DeviceOrientation.parseSetting(this.deviceOrientationSetting.get()),this.deviceOrientationOverrideEnabled=!1,this.createDeviceOrientationSection(),this.contentElement.createChild("div").classList.add("panel-section-separator"),this.appendTouchControl(),this.contentElement.createChild("div").classList.add("panel-section-separator"),this.appendIdleEmulator(),this.contentElement.createChild("div").classList.add("panel-section-separator")}static instance(){return v||(v=new b),v}wasShown(){super.wasShown(),this.registerCSSFiles([p])}createLocationSection(e){const a=this.contentElement.createChild("section","sensors-group"),r=i.UIUtils.createLabel(g(u.location),"sensors-group-title");a.appendChild(r);const l=a.createChild("div","geo-fields");let s=0;const c={title:g(u.noOverride),location:f.NoOverride};this.locationSelectElement=l.createChild("select","chrome-select"),i.ARIAUtils.bindLabelToControl(r,this.locationSelectElement),this.locationSelectElement.appendChild(new Option(c.title,c.location)),this.customLocationsGroup=this.locationSelectElement.createChild("optgroup"),this.customLocationsGroup.label=g(u.overrides);const d=t.Settings.Settings.instance().moduleSetting("emulation.locations"),h=i.UIUtils.createTextButton(g(u.manage),(()=>t.Revealer.reveal(d)));i.ARIAUtils.setLabel(h,g(u.manageTheListOfLocations)),l.appendChild(h);const p=()=>{if(this.customLocationsGroup){this.customLocationsGroup.removeChildren();for(const[t,i]of d.get().entries())this.customLocationsGroup.appendChild(new Option(i.title,JSON.stringify(i))),e.latitude===i.lat&&e.longitude===i.long&&(s=t+1)}};d.addChangeListener(p),p();const m={title:g(u.other),location:f.Custom};this.locationSelectElement.appendChild(new Option(m.title,m.location));const v=this.locationSelectElement.createChild("optgroup");v.label=g(u.error),v.appendChild(new Option(g(u.locationUnavailable),f.Unavailable)),this.locationSelectElement.selectedIndex=s,this.locationSelectElement.addEventListener("change",this.LocationSelectChanged.bind(this)),this.fieldsetElement=l.createChild("fieldset"),this.fieldsetElement.disabled=!this.LocationOverrideEnabled,this.fieldsetElement.id="location-override-section";const b=this.fieldsetElement.createChild("div","latlong-group"),x=this.fieldsetElement.createChild("div","latlong-group"),S=this.fieldsetElement.createChild("div","latlong-group"),E=this.fieldsetElement.createChild("div","latlong-group"),C=o.Platform.isMac()?"⌘":"Ctrl",I=g(u.adjustWithMousewheelOrUpdownKeys,{PH1:C});this.latitudeInput=i.UIUtils.createInput("","number"),b.appendChild(this.latitudeInput),this.latitudeInput.setAttribute("step","any"),this.latitudeInput.value="0",this.latitudeSetter=i.UIUtils.bindInput(this.latitudeInput,this.applyLocationUserInput.bind(this),n.EmulationModel.Location.latitudeValidator,!0,.1),this.latitudeSetter(String(e.latitude)),i.Tooltip.Tooltip.install(this.latitudeInput,I),b.appendChild(i.UIUtils.createLabel(g(u.latitude),"latlong-title",this.latitudeInput)),this.longitudeInput=i.UIUtils.createInput("","number"),x.appendChild(this.longitudeInput),this.longitudeInput.setAttribute("step","any"),this.longitudeInput.value="0",this.longitudeSetter=i.UIUtils.bindInput(this.longitudeInput,this.applyLocationUserInput.bind(this),n.EmulationModel.Location.longitudeValidator,!0,.1),this.longitudeSetter(String(e.longitude)),i.Tooltip.Tooltip.install(this.longitudeInput,I),x.appendChild(i.UIUtils.createLabel(g(u.longitude),"latlong-title",this.longitudeInput)),this.timezoneInput=i.UIUtils.createInput("","text"),S.appendChild(this.timezoneInput),this.timezoneInput.value="Europe/Berlin",this.timezoneSetter=i.UIUtils.bindInput(this.timezoneInput,this.applyLocationUserInput.bind(this),n.EmulationModel.Location.timezoneIdValidator,!1),this.timezoneSetter(e.timezoneId),S.appendChild(i.UIUtils.createLabel(g(u.timezoneId),"timezone-title",this.timezoneInput)),this.timezoneError=S.createChild("div","timezone-error"),this.localeInput=i.UIUtils.createInput("","text"),E.appendChild(this.localeInput),this.localeInput.value="en-US",this.localeSetter=i.UIUtils.bindInput(this.localeInput,this.applyLocationUserInput.bind(this),n.EmulationModel.Location.localeValidator,!1),this.localeSetter(e.locale),E.appendChild(i.UIUtils.createLabel(g(u.locale),"locale-title",this.localeInput)),this.localeError=E.createChild("div","locale-error")}LocationSelectChanged(){this.fieldsetElement.disabled=!1,this.timezoneError.textContent="";const t=this.locationSelectElement.options[this.locationSelectElement.selectedIndex].value;if(t===f.NoOverride)this.LocationOverrideEnabled=!1,this.clearFieldsetElementInputs(),this.fieldsetElement.disabled=!0;else if(t===f.Custom){this.LocationOverrideEnabled=!0;const t=n.EmulationModel.Location.parseUserInput(this.latitudeInput.value.trim(),this.longitudeInput.value.trim(),this.timezoneInput.value.trim(),this.localeInput.value.trim());if(!t)return;this.Location=t}else if(t===f.Unavailable)this.LocationOverrideEnabled=!0,this.Location=new n.EmulationModel.Location(0,0,"","",!0);else{this.LocationOverrideEnabled=!0;const e=JSON.parse(t);this.Location=new n.EmulationModel.Location(e.lat,e.long,e.timezoneId,e.locale,!1),this.latitudeSetter(e.lat),this.longitudeSetter(e.long),this.timezoneSetter(e.timezoneId),this.localeSetter(e.locale)}this.applyLocation(),t===f.Custom&&this.latitudeInput.focus()}applyLocationUserInput(){const t=n.EmulationModel.Location.parseUserInput(this.latitudeInput.value.trim(),this.longitudeInput.value.trim(),this.timezoneInput.value.trim(),this.localeInput.value.trim());t&&(this.timezoneError.textContent="",this.setSelectElementLabel(this.locationSelectElement,f.Custom),this.Location=t,this.applyLocation())}applyLocation(){this.LocationOverrideEnabled?this.LocationSetting.set(this.Location.toSetting()):this.LocationSetting.set("");for(const t of n.TargetManager.TargetManager.instance().models(n.EmulationModel.EmulationModel))t.emulateLocation(this.LocationOverrideEnabled?this.Location:null).catch((t=>{switch(t.type){case"emulation-set-timezone":this.timezoneError.textContent=t.message;break;case"emulation-set-locale":this.localeError.textContent=t.message}}))}clearFieldsetElementInputs(){this.latitudeSetter("0"),this.longitudeSetter("0"),this.timezoneSetter(""),this.localeSetter("")}createDeviceOrientationSection(){const t=this.contentElement.createChild("section","sensors-group"),e=i.UIUtils.createLabel(g(u.orientation),"sensors-group-title");t.appendChild(e);const o=t.createChild("div","orientation-content"),n=o.createChild("div","orientation-fields"),a={title:g(u.off),orientation:f.NoOverride},r={title:g(u.customOrientation),orientation:f.Custom},l=[{title:g(u.presets),value:[{title:g(u.portrait),orientation:"[0, 90, 0]"},{title:g(u.portraitUpsideDown),orientation:"[-180, -90, 0]"},{title:g(u.landscapeLeft),orientation:"[90, 0, -90]"},{title:g(u.landscapeRight),orientation:"[90, -180, -90]"},{title:g(u.displayUp),orientation:"[0, 0, 0]"},{title:g(u.displayDown),orientation:"[0, -180, 0]"}]}];this.orientationSelectElement=this.contentElement.createChild("select","chrome-select"),i.ARIAUtils.bindLabelToControl(e,this.orientationSelectElement),this.orientationSelectElement.appendChild(new Option(a.title,a.orientation)),this.orientationSelectElement.appendChild(new Option(r.title,r.orientation));for(let t=0;t<l.length;++t){const e=this.orientationSelectElement.createChild("optgroup");e.label=l[t].title;const i=l[t].value;for(let t=0;t<i.length;++t)e.appendChild(new Option(i[t].title,i[t].orientation))}this.orientationSelectElement.selectedIndex=0,n.appendChild(this.orientationSelectElement),this.orientationSelectElement.addEventListener("change",this.orientationSelectChanged.bind(this)),this.deviceOrientationFieldset=this.createDeviceOrientationOverrideElement(this.deviceOrientation),this.stageElement=o.createChild("div","orientation-stage"),this.orientationLayer=this.stageElement.createChild("div","orientation-layer"),this.boxElement=this.orientationLayer.createChild("section","orientation-box orientation-element"),this.boxElement.createChild("section","orientation-front orientation-element"),this.boxElement.createChild("section","orientation-top orientation-element"),this.boxElement.createChild("section","orientation-back orientation-element"),this.boxElement.createChild("section","orientation-left orientation-element"),this.boxElement.createChild("section","orientation-right orientation-element"),this.boxElement.createChild("section","orientation-bottom orientation-element"),i.UIUtils.installDragHandle(this.stageElement,this.onBoxDragStart.bind(this),(t=>{this.onBoxDrag(t)}),null,"-webkit-grabbing","-webkit-grab"),n.appendChild(this.deviceOrientationFieldset),this.enableOrientationFields(!0),this.setBoxOrientation(this.deviceOrientation,!1)}enableOrientationFields(t){t?(this.deviceOrientationFieldset.disabled=!0,this.stageElement.classList.add("disabled"),i.Tooltip.Tooltip.install(this.stageElement,g(u.enableOrientationToRotate))):(this.deviceOrientationFieldset.disabled=!1,this.stageElement.classList.remove("disabled"),i.Tooltip.Tooltip.install(this.stageElement,g(u.shiftdragHorizontallyToRotate)))}orientationSelectChanged(){const t=this.orientationSelectElement.options[this.orientationSelectElement.selectedIndex].value;if(this.enableOrientationFields(!1),t===f.NoOverride)this.deviceOrientationOverrideEnabled=!1,this.enableOrientationFields(!0);else if(t===f.Custom)this.deviceOrientationOverrideEnabled=!0,this.resetDeviceOrientation(),this.alphaElement.focus();else{const e=JSON.parse(t);this.deviceOrientationOverrideEnabled=!0,this.deviceOrientation=new n.EmulationModel.DeviceOrientation(e[0],e[1],e[2]),this.setDeviceOrientation(this.deviceOrientation,"selectPreset")}}applyDeviceOrientation(){this.deviceOrientationOverrideEnabled&&this.deviceOrientationSetting.set(this.deviceOrientation.toSetting());for(const t of n.TargetManager.TargetManager.instance().models(n.EmulationModel.EmulationModel))t.emulateDeviceOrientation(this.deviceOrientationOverrideEnabled?this.deviceOrientation:null)}setSelectElementLabel(t,e){const i=Array.prototype.map.call(t.options,(t=>t.value));t.selectedIndex=i.indexOf(e)}applyDeviceOrientationUserInput(){this.setDeviceOrientation(n.EmulationModel.DeviceOrientation.parseUserInput(this.alphaElement.value.trim(),this.betaElement.value.trim(),this.gammaElement.value.trim()),"userInput"),this.setSelectElementLabel(this.orientationSelectElement,f.Custom)}resetDeviceOrientation(){this.setDeviceOrientation(new n.EmulationModel.DeviceOrientation(0,90,0),"resetButton"),this.setSelectElementLabel(this.orientationSelectElement,"[0, 90, 0]")}setDeviceOrientation(t,e){if(!t)return;function o(t){return Math.round(1e4*t)/1e4}"userInput"!==e&&(this.alphaSetter(String(o(t.alpha))),this.betaSetter(String(o(t.beta))),this.gammaSetter(String(o(t.gamma))));const n="userDrag"!==e;this.setBoxOrientation(t,n),this.deviceOrientation=t,this.applyDeviceOrientation(),i.ARIAUtils.alert(g(u.deviceOrientationSetToAlphaSBeta,{PH1:t.alpha,PH2:t.beta,PH3:t.gamma}))}createAxisInput(t,e,o,n){const a=t.createChild("div","orientation-axis-input-container");return a.appendChild(e),a.appendChild(i.UIUtils.createLabel(o,"",e)),i.UIUtils.bindInput(e,this.applyDeviceOrientationUserInput.bind(this),n,!0)}createDeviceOrientationOverrideElement(t){const e=document.createElement("fieldset");e.classList.add("device-orientation-override-section");const o=e.createChild("td","orientation-inputs-cell");this.alphaElement=i.UIUtils.createInput("","number"),this.alphaElement.setAttribute("step","any"),this.alphaSetter=this.createAxisInput(o,this.alphaElement,g(u.alpha),n.EmulationModel.DeviceOrientation.alphaAngleValidator),this.alphaSetter(String(t.alpha)),this.betaElement=i.UIUtils.createInput("","number"),this.betaElement.setAttribute("step","any"),this.betaSetter=this.createAxisInput(o,this.betaElement,g(u.beta),n.EmulationModel.DeviceOrientation.betaAngleValidator),this.betaSetter(String(t.beta)),this.gammaElement=i.UIUtils.createInput("","number"),this.gammaElement.setAttribute("step","any"),this.gammaSetter=this.createAxisInput(o,this.gammaElement,g(u.gamma),n.EmulationModel.DeviceOrientation.gammaAngleValidator),this.gammaSetter(String(t.gamma));const a=i.UIUtils.createTextButton(g(u.reset),this.resetDeviceOrientation.bind(this),"orientation-reset-button");return i.ARIAUtils.setLabel(a,g(u.resetDeviceOrientation)),a.setAttribute("type","reset"),o.appendChild(a),e}setBoxOrientation(t,e){e?this.stageElement.classList.add("is-animating"):this.stageElement.classList.remove("is-animating");const{alpha:i,beta:o,gamma:n}=t;this.boxMatrix=(new DOMMatrixReadOnly).rotate(0,0,i).rotate(o,0,0).rotate(0,n,0),this.orientationLayer.style.transform=`rotateY(${i}deg) rotateX(${-o}deg) rotateZ(${n}deg)`}onBoxDrag(t){const e=this.calculateRadiusVector(t.x,t.y);if(!e)return!0;if(!this.mouseDownVector)return!0;let o,a;t.consume(!0),t.shiftKey?(o=new i.Geometry.Vector(0,0,1),a=(e.x-this.mouseDownVector.x)*E):(o=i.Geometry.crossProduct(this.mouseDownVector,e),a=i.Geometry.calculateAngle(this.mouseDownVector,e));const r=(new DOMMatrixReadOnly).rotateAxisAngle(-o.x,o.z,o.y,a).multiply(this.originalBoxMatrix),l=i.Geometry.EulerAngles.fromDeviceOrientationRotationMatrix(r),s=new n.EmulationModel.DeviceOrientation(l.alpha,l.beta,l.gamma);return this.setDeviceOrientation(s,"userDrag"),this.setSelectElementLabel(this.orientationSelectElement,f.Custom),!1}onBoxDragStart(t){return!!this.deviceOrientationOverrideEnabled&&(this.mouseDownVector=this.calculateRadiusVector(t.x,t.y),this.originalBoxMatrix=this.boxMatrix,!!this.mouseDownVector&&(t.consume(!0),!0))}calculateRadiusVector(t,e){const o=this.stageElement.getBoundingClientRect(),n=Math.max(o.width,o.height)/2,a=(t-o.left-o.width/2)/n,r=(e-o.top-o.height/2)/n,l=a*a+r*r;return l>.5?new i.Geometry.Vector(a,r,.5/Math.sqrt(l)):new i.Geometry.Vector(a,r,Math.sqrt(1-l))}appendTouchControl(){const e=this.contentElement.createChild("div","touch-section"),o=i.SettingsUI.createControlForSetting(t.Settings.Settings.instance().moduleSetting("emulation.touch"),g(u.forcesTouchInsteadOfClick));o&&e.appendChild(o)}appendIdleEmulator(){const e=this.contentElement.createChild("div","idle-section"),o=i.SettingsUI.createControlForSetting(t.Settings.Settings.instance().moduleSetting("emulation.idleDetection"),g(u.forcesSelectedIdleStateEmulation));o&&e.appendChild(o)}}const f={NoOverride:"noOverride",Custom:"custom",Unavailable:"unavailable"};let x;class S{handleAction(t,e){return i.ViewManager.ViewManager.instance().showView("sensors"),!0}static instance(t={forceNew:null}){const{forceNew:e}=t;return x&&!e||(x=new S),x}}const E=16;var C=Object.freeze({__proto__:null,SensorsView:b,NonPresetOptions:f,PresetOrientations:class{static get Orientations(){return[{title:g(u.presets),value:[{title:g(u.portrait),orientation:"[0, 90, 0]"},{title:g(u.portraitUpsideDown),orientation:"[-180, -90, 0]"},{title:g(u.landscapeLeft),orientation:"[90, 0, -90]"},{title:g(u.landscapeRight),orientation:"[90, -180, -90]"},{title:g(u.displayUp),orientation:"[0, 0, 0]"},{title:g(u.displayDown),orientation:"[0, -180, 0]"}]}]}},ShowActionDelegate:S,ShiftDragOrientationSpeed:E});export{h as LocationsSettingsTab,C as SensorsView};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../../core/common/common.js";import*as n from"../../../ui/components/helpers/helpers.js";import*as t from"../../../core/i18n/i18n.js";import*as i from"../../../ui/lit-html/lit-html.js";import*as s from"../../../ui/components/settings/settings.js";import*as o from"../../../ui/components/chrome_link/chrome_link.js";const c=new CSSStyleSheet;c.replaceSync(":host{break-inside:avoid;display:block;padding-bottom:9px;width:288px}fieldset{border:0;margin-left:20px;padding:0}legend{color:var(--color-text-secondary);font-size:120%;margin-left:-20px;padding:0;text-align:left}.link{color:var(--color-link);text-decoration:underline;cursor:pointer;outline-offset:2px}img{background-size:32px 32px;border:0;border-radius:50%;display:block;height:32px;width:32px}.warning{display:block;margin-top:12px}.account-info{display:flex;align-items:center;margin-top:12px}.account-email{display:flex;flex-direction:column;margin-left:8px}\n/*# sourceURL=syncSection.css */\n");const r={syncDisabled:"To turn this setting on, you must enable Chrome sync.",preferencesSyncDisabled:"To turn this setting on, you must first enable settings sync in Chrome.",settings:"Go to Settings",signedIn:"Signed into Chrome as:"},a=t.i18n.registerUIStrings("panels/settings/components/SyncSection.ts",r),l=t.i18n.getLocalizedString.bind(void 0,a);class d extends HTMLElement{static litTagName=i.literal`devtools-sync-section`;#e=this.attachShadow({mode:"open"});#n={isSyncActive:!1};#t;#i=this.#s.bind(this);connectedCallback(){this.#e.adoptedStyleSheets=[c]}set data(e){this.#n=e.syncInfo,this.#t=e.syncSetting,n.ScheduledRender.scheduleRender(this,this.#i)}#s(){if(!this.#t)throw new Error("SyncSection not properly initialized");const n=!this.#n.isSyncActive||!this.#n.arePreferencesSynced;i.render(i.html` <fieldset> <legend>${e.Settings.getLocalizedSettingsCategory(e.Settings.SettingCategory.SYNC)}</legend> ${function(e){if(!e.isSyncActive){const e="chrome://settings/syncSetup";return i.html` <span class="warning"> ${l(r.syncDisabled)} <${o.ChromeLink.ChromeLink.litTagName} .href="${e}">${l(r.settings)}</${o.ChromeLink.ChromeLink.litTagName}> </span>`}if(!e.arePreferencesSynced){const e="chrome://settings/syncSetup/advanced";return i.html` <span class="warning"> ${l(r.preferencesSyncDisabled)} <${o.ChromeLink.ChromeLink.litTagName} .href="${e}">${l(r.settings)}</${o.ChromeLink.ChromeLink.litTagName}> </span>`}return i.html` <div class="account-info"> <img src="data:image/png;base64, ${e.accountImage}" alt="Account avatar"> <div class="account-email"> <span>${l(r.signedIn)}</span> <span>${e.accountEmail}</span> </div> </div>`}(this.#n)} <${s.SettingCheckbox.SettingCheckbox.litTagName} .data="${{setting:this.#t,disabled:n}}"> </${s.SettingCheckbox.SettingCheckbox.litTagName}> </fieldset> `,this.#e,{host:this})}}n.CustomElements.defineComponent("devtools-sync-section",d);var m=Object.freeze({__proto__:null,SyncSection:d});export{m as SyncSection};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../../../core/i18n/i18n.js";import*as t from"../../../../ui/components/buttons/buttons.js";import*as a from"../../../../ui/components/helpers/helpers.js";import*as n from"../../../../ui/lit-html/lit-html.js";import*as r from"../../../../ui/components/input/input.js";import*as i from"../../../../ui/components/icon_button/icon_button.js";import*as s from"../utils/utils.js";const l=new CSSStyleSheet;l.replaceSync('.root{color:var(--color-text-primary);width:100%}.tree-title{font-weight:700;display:flex;align-items:center}.rotate-icon{transform:rotate(90deg)}.form-container{display:grid;grid-template-columns:1fr 1fr 1fr auto;align-items:center;column-gap:10px;row-gap:8px;padding:0 10px}.full-row{grid-column:1/5}.half-row{grid-column:span 2}.mobile-checkbox-container{display:flex}.device-model-input{grid-column:1/4}.input-field{color:var(--color-text-primary);padding:3px 6px;border:none;border-radius:2px;box-shadow:var(--legacy-focus-ring-inactive-shadow);background-color:var(--color-background);font-size:inherit;height:18px}.input-field:focus{box-shadow:var(--legacy-focus-ring-active-shadow);outline-width:0}.add-container{cursor:pointer;display:flex;align-items:center;gap:6px}.add-icon{margin-right:5px}.brand-row{display:flex;align-items:center;gap:10px;justify-content:space-between}.brand-row > input{width:100%}.info-icon{margin-left:5px;margin-right:1px}.link,\n.devtools-link{color:var(--color-link);text-decoration:underline;cursor:pointer;outline-offset:2px;font-weight:400}.hide-container{display:none}.input-field-label-container{display:flex;flex-direction:column;gap:10px}@media (forced-colors: active){.input-field{border:1px solid}.tree-title[aria-disabled="true"]{color:GrayText}}\n/*# sourceURL=userAgentClientHintsForm.css */\n');const o={title:"User agent client hints",useragent:"User agent (Sec-CH-UA)",fullVersionList:"Full version list (Sec-CH-UA-Full-Version-List)",brandProperties:"User agent properties",brandName:"Brand",brandNameAriaLabel:"Brand {PH1}",significantBrandVersionPlaceholder:"Significant version (e.g. 87)",brandVersionPlaceholder:"Version (e.g. 87.0.4280.88)",brandVersionAriaLabel:"Version {PH1}",addBrand:"Add Brand",brandUserAgentDelete:"Delete brand from user agent section",brandFullVersionListDelete:"Delete brand from full version list",fullBrowserVersion:"Full browser version (Sec-CH-UA-Full-Browser-Version)",fullBrowserVersionPlaceholder:"Full browser version (e.g. 87.0.4280.88)",platformLabel:"Platform (Sec-CH-UA-Platform / Sec-CH-UA-Platform-Version)",platformProperties:"Platform properties",platformVersion:"Platform version",platformPlaceholder:"Platform (e.g. Android)",architecture:"Architecture (Sec-CH-UA-Arch)",architecturePlaceholder:"Architecture (e.g. x86)",deviceProperties:"Device properties",deviceModel:"Device model (Sec-CH-UA-Model)",mobileCheckboxLabel:"Mobile",update:"Update",notRepresentable:"Not representable as structured headers string.",userAgentClientHintsInfo:"User agent client hints are an alternative to the user agent string that identify the browser and the device in a more structured way with better privacy accounting.",addedBrand:"Added brand row",deletedBrand:"Deleted brand row",learnMore:"Learn more"},d=e.i18n.registerUIStrings("panels/settings/emulation/components/UserAgentClientHintsForm.ts",o),c=e.i18n.getLocalizedString.bind(void 0,d);class h extends Event{static eventName="clienthintschange";constructor(){super(h.eventName)}}class u extends Event{static eventName="clienthintssubmit";detail;constructor(e){super(u.eventName),this.detail={value:e}}}const p={brands:[{brand:"",version:""}],fullVersionList:[{brand:"",version:""}],fullVersion:"",platform:"",platformVersion:"",architecture:"",model:"",mobile:!1};class m extends HTMLElement{static litTagName=n.literal`devtools-user-agent-client-hints-form`;#e=this.attachShadow({mode:"open"});#t=!1;#a=!1;#n=p;#r=!1;#i=!1;#s="";connectedCallback(){this.#e.adoptedStyleSheets=[r.checkboxStyles,l]}set value(e){const{metaData:t=p,showMobileCheckbox:a=!1,showSubmitButton:n=!1}=e;this.#n={...this.#n,...t},this.#r=a,this.#i=n,this.#l()}get value(){return{metaData:this.#n}}set disabled(e){this.#a=e,this.#t=!1,this.#l()}get disabled(){return this.#a}#o=e=>{"Space"!==e.code&&"Enter"!==e.code&&"ArrowLeft"!==e.code&&"ArrowRight"!==e.code||(e.stopPropagation(),this.#d(e.code))};#d=e=>{this.#a||"ArrowLeft"===e&&!this.#t||"ArrowRight"===e&&this.#t||(this.#t=!this.#t,this.#l())};#c=(e,t,a)=>{const n=this.#n.brands?.map(((n,r)=>{if(r===t){const{brand:t,version:r}=n;return"brandName"===a?{brand:e,version:r}:{brand:t,version:e}}return n}));this.#n={...this.#n,brands:n},this.dispatchEvent(new h),this.#l()};#h=(e,t,a)=>{const n=this.#n.fullVersionList?.map(((n,r)=>{if(r===t){const{brand:t,version:r}=n;return"brandName"===a?{brand:e,version:r}:{brand:t,version:e}}return n}));this.#n={...this.#n,fullVersionList:n},this.dispatchEvent(new h),this.#l()};#u=e=>{const{brands:t=[]}=this.#n;t.splice(e,1),this.#n={...this.#n,brands:t},this.dispatchEvent(new h),this.#s=c(o.deletedBrand),this.#l();let a=this.shadowRoot?.getElementById(`ua-brand-${e+1}-input`);a||(a=this.shadowRoot?.getElementById("add-brand-button")),a?.focus()};#p=e=>{const{fullVersionList:t=[]}=this.#n;t.splice(e,1),this.#n={...this.#n,fullVersionList:t},this.dispatchEvent(new h),this.#s=c(o.deletedBrand),this.#l();let a=this.shadowRoot?.getElementById(`fvl-brand-${e+1}-input`);a||(a=this.shadowRoot?.getElementById("add-fvl-brand-button")),a?.focus()};#m=()=>{const{brands:e}=this.#n;this.#n={...this.#n,brands:[...Array.isArray(e)?e:[],{brand:"",version:""}]},this.dispatchEvent(new h),this.#s=c(o.addedBrand),this.#l();const t=this.shadowRoot?.querySelectorAll(".ua-brand-name-input");if(t){const e=Array.from(t).pop();e&&e.focus()}};#b=e=>{"Space"!==e.code&&"Enter"!==e.code||(e.preventDefault(),this.#m())};#f=()=>{const{fullVersionList:e}=this.#n;this.#n={...this.#n,fullVersionList:[...Array.isArray(e)?e:[],{brand:"",version:""}]},this.dispatchEvent(new h),this.#s=c(o.addedBrand),this.#l();const t=this.shadowRoot?.querySelectorAll(".fvl-brand-name-input");if(t){const e=Array.from(t).pop();e&&e.focus()}};#g=e=>{"Space"!==e.code&&"Enter"!==e.code||(e.preventDefault(),this.#f())};#v=(e,t)=>{e in this.#n&&(this.#n={...this.#n,[e]:t},this.#l()),this.dispatchEvent(new h)};#$=e=>{"Space"!==e.code&&"Enter"!==e.code||(e.preventDefault(),e.target.click())};#w=e=>{e.preventDefault(),this.#i&&(this.dispatchEvent(new u(this.#n)),this.#l())};#x(e,t,a,r){return n.html` <label class="full-row label input-field-label-container"> ${e} <input class="input-field" type="text" @input="${e=>{const t=e.target.value;this.#v(r,t)}}" .value="${a}" placeholder="${t}"> </label> `}#D(){const{platform:e,platformVersion:t}=this.#n;return n.html` <span class="full-row label">${c(o.platformLabel)}</span> <div class="full-row brand-row" aria-label="${c(o.platformProperties)}" role="group"> <input class="input-field half-row" type="text" @input="${e=>{const t=e.target.value;this.#v("platform",t)}}" .value="${e}" placeholder="${c(o.platformPlaceholder)}" aria-label="${c(o.platformLabel)}"> <input class="input-field half-row" type="text" @input="${e=>{const t=e.target.value;this.#v("platformVersion",t)}}" .value="${t}" placeholder="${c(o.platformVersion)}" aria-label="${c(o.platformVersion)}"> </div> `}#A(){const{model:e,mobile:t}=this.#n,a=this.#r?n.html` <label class="mobile-checkbox-container"> <input type="checkbox" @input="${e=>{const t=e.target.checked;this.#v("mobile",t)}}" .checked="${t}"> ${c(o.mobileCheckboxLabel)} </label> `:n.html``;return n.html` <span class="full-row label">${c(o.deviceModel)}</span> <div class="full-row brand-row" aria-label="${c(o.deviceProperties)}" role="group"> <input class="input-field ${this.#r?"device-model-input":"full-row"}" type="text" @input="${e=>{const t=e.target.value;this.#v("model",t)}}" .value="${e}" placeholder="${c(o.deviceModel)}"> ${a} </div> `}#y(){const{brands:e=[{brand:"",version:""}]}=this.#n,t=e.map(((e,t)=>{const{brand:a,version:r}=e,s=()=>{this.#u(t)};return n.html` <div class="full-row brand-row" aria-label="${c(o.brandProperties)}" role="group"> <input class="input-field ua-brand-name-input" type="text" @input="${e=>{const a=e.target.value;this.#c(a,t,"brandName")}}" .value="${a}" id="ua-brand-${t+1}-input" placeholder="${c(o.brandName)}" aria-label="${c(o.brandNameAriaLabel,{PH1:t+1})}"> <input class="input-field" type="text" @input="${e=>{const a=e.target.value;this.#c(a,t,"brandVersion")}}" .value="${r}" placeholder="${c(o.significantBrandVersionPlaceholder)}" aria-label="${c(o.brandVersionAriaLabel,{PH1:t+1})}"> <${i.Icon.Icon.litTagName} .data="${{color:"var(--icon-default)",iconName:"bin",width:"16px",height:"16px"}}" title="${c(o.brandUserAgentDelete)}" class="delete-icon" tabindex="0" role="button" @click="${s}" @keypress="${e=>{"Space"!==e.code&&"Enter"!==e.code||(e.preventDefault(),s())}}" aria-label="${c(o.brandUserAgentDelete)}"> </${i.Icon.Icon.litTagName}> </div> `}));return n.html` <span class="full-row label">${c(o.useragent)}</span> ${t} <div class="add-container full-row" role="button" tabindex="0" id="add-brand-button" aria-label="${c(o.addBrand)}" @click="${this.#m}" @keypress="${this.#b}"> <${i.Icon.Icon.litTagName} aria-hidden="true" .data="${{color:"var(--icon-default)",iconName:"plus",width:"16px"}}"> </${i.Icon.Icon.litTagName}> ${c(o.addBrand)} </div> `}#V(){const{fullVersionList:e=[{brand:"",version:""}]}=this.#n,t=e.map(((e,t)=>{const{brand:a,version:r}=e,s=()=>{this.#p(t)};return n.html` <div class="full-row brand-row" aria-label="${c(o.brandProperties)}" role="group"> <input class="input-field fvl-brand-name-input" type="text" @input="${e=>{const a=e.target.value;this.#h(a,t,"brandName")}}" .value="${a}" id="fvl-brand-${t+1}-input" placeholder="${c(o.brandName)}" aria-label="${c(o.brandNameAriaLabel,{PH1:t+1})}"> <input class="input-field" type="text" @input="${e=>{const a=e.target.value;this.#h(a,t,"brandVersion")}}" .value="${r}" placeholder="${c(o.brandVersionPlaceholder)}" aria-label="${c(o.brandVersionAriaLabel,{PH1:t+1})}"> <${i.Icon.Icon.litTagName} .data="${{color:"var(--icon-default)",iconName:"bin",width:"16px",height:"16px"}}" title="${c(o.brandFullVersionListDelete)}" class="delete-icon" tabindex="0" role="button" @click="${s}" @keypress="${e=>{"Space"!==e.code&&"Enter"!==e.code||(e.preventDefault(),s())}}" aria-label="${c(o.brandFullVersionListDelete)}"> </${i.Icon.Icon.litTagName}> </div> `}));return n.html` <span class="full-row label">${c(o.fullVersionList)}</span> ${t} <div class="add-container full-row" role="button" tabindex="0" id="add-fvl-brand-button" aria-label="${c(o.addBrand)}" @click="${this.#f}" @keypress="${this.#g}"> <${i.Icon.Icon.litTagName} aria-hidden="true" .data="${{color:"var(--icon-default)",iconName:"plus",width:"16px"}}"> </${i.Icon.Icon.litTagName}> ${c(o.addBrand)} </div> `}#l(){const{fullVersion:e,architecture:a}=this.#n,r=this.#y(),s=this.#V(),l=this.#x(c(o.fullBrowserVersion),c(o.fullBrowserVersionPlaceholder),e||"","fullVersion"),d=this.#D(),h=this.#x(c(o.architecture),c(o.architecturePlaceholder),a,"architecture"),u=this.#A(),p=this.#i?n.html` <${t.Button.Button.litTagName} .variant="${"secondary"}" .type="${"submit"}"> ${c(o.update)} </${t.Button.Button.litTagName}> `:n.nothing,m=n.html` <section class="root"> <div class="tree-title" role="button" @click="${this.#d}" tabindex="0" @keydown="${this.#o}" aria-expanded="${this.#t}" aria-controls="form-container" @disabled="${this.#a}" aria-disabled="${this.#a}" aria-label="${c(o.title)}"> <${i.Icon.Icon.litTagName} class="${this.#t?"rotate-icon":""}" .data="${{color:"var(--icon-default)",iconName:"triangle-right",width:"14px"}}"></${i.Icon.Icon.litTagName}> ${c(o.title)} <${i.Icon.Icon.litTagName} .data="${{color:"var(--icon-default)",iconName:"info",width:"16px"}}" title="${c(o.userAgentClientHintsInfo)}" class="info-icon" ,></${i.Icon.Icon.litTagName}> <x-link tabindex="0" href="https://web.dev/user-agent-client-hints/" target="_blank" class="link" @keypress="${this.#$}" aria-label="${c(o.userAgentClientHintsInfo)}"> ${c(o.learnMore)} </x-link> </div> <form id="form-container" class="form-container ${this.#t?"":"hide-container"}" @submit="${this.#w}"> ${r} ${s} ${l} ${d} ${h} ${u} ${p} </form> <div aria-live="polite" aria-label="${this.#s}"></div> </section> `;n.render(m,this.#e,{host:this})}validate=()=>{for(const[e,t]of Object.entries(this.#n))if("brands"===e||"fullVersionList"===e){const e=this.#n.brands?.every((({brand:e,version:t})=>{const a=s.UserAgentMetadata.validateAsStructuredHeadersString(e,c(o.notRepresentable)),n=s.UserAgentMetadata.validateAsStructuredHeadersString(t,c(o.notRepresentable));return a.valid&&n.valid}));if(!e)return{valid:!1,errorMessage:c(o.notRepresentable)}}else{const e=s.UserAgentMetadata.validateAsStructuredHeadersString(t,c(o.notRepresentable));if(!e.valid)return e}return{valid:!0}}}a.CustomElements.defineComponent("devtools-user-agent-client-hints-form",m);var b=Object.freeze({__proto__:null,ClientHintsChangeEvent:h,ClientHintsSubmitEvent:u,UserAgentClientHintsForm:m});export{b as UserAgentClientHintsForm};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../../core/i18n/i18n.js";import*as i from"../../../ui/legacy/legacy.js";const t={devices:"Devices",showDevices:"Show Devices"},s=e.i18n.registerUIStrings("panels/settings/emulation/emulation-meta.ts",t),n=e.i18n.getLazilyComputedLocalizedString.bind(void 0,s);let a;i.ViewManager.registerViewExtension({location:"settings-view",commandPrompt:n(t.showDevices),title:n(t.devices),order:30,loadView:async()=>(await async function(){return a||(a=await import("./emulation.js")),a}()).DevicesSettingsTab.DevicesSettingsTab.instance(),id:"devices",settings:["standardEmulatedDeviceList","customEmulatedDeviceList"]});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../../core/i18n/i18n.js";import*as t from"../../../models/emulation/emulation.js";import*as i from"../../../ui/legacy/legacy.js";import*as s from"./components/components.js";const d=new CSSStyleSheet;let a;d.replaceSync(".devices-settings-tab .settings-tab.settings-content{display:flex;flex-direction:column;align-items:flex-start;height:100%;margin:0}.devices-settings-tab .devices-button-row{flex:none;display:flex}.devices-settings-tab .devices-button-row button{margin-right:10px;min-width:120px;flex:none}.devices-settings-tab .devices-list{width:min(350px,100%);margin-top:10px}.devices-list-item{padding:3px 5px;height:30px;display:flex;align-items:center;flex:auto 1 1;overflow:hidden;color:var(--color-text-primary);user-select:none;white-space:nowrap;text-overflow:ellipsis}.devices-list-checkbox{height:12px;width:12px;margin:2px 5px 2px 2px;flex:none;pointer-events:none}.devices-list-checkbox:focus{outline:auto 5px -webkit-focus-ring-color}.device-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.devices-edit-fields{flex:auto;display:flex;flex-direction:column;align-items:stretch;padding-left:4px;margin-bottom:5px}.devices-edit-fields b{margin-top:8px;margin-bottom:0}.devices-edit-client-hints-heading{display:flex;flex-direction:row;align-items:center;margin-bottom:5px}li .devices-edit-client-hints-heading{margin-bottom:0}.devices-edit-client-hints-heading b{margin-inline-end:2px}.devices-edit-client-hints-heading .help-icon{margin-left:2px;margin-right:2px;vertical-align:middle}.devices-edit-client-hints-heading a:focus{box-shadow:var(--legacy-focus-ring-active-shadow)}.devices-edit-fields input{flex:auto;margin:8px 5px 0}li.devices-edit-client-hints-field{left:-12px}.devices-edit-client-hints-field input{flex:auto;margin:8px 5px 0}.devices-edit-fields .device-edit-fixed{flex:0 0 140px}.devices-edit-fields select{margin:8px 5px 0}\n/*# sourceURL=devicesSettingsTab.css */\n");const c={emulatedDevices:"Emulated Devices",addCustomDevice:"Add custom device...",device:"Device",deviceName:"Device Name",width:"Width",height:"Height",devicePixelRatio:"Device pixel ratio",userAgentString:"User agent string",userAgentType:"User agent type",deviceNameMustBeLessThanS:"Device name must be less than {PH1} characters.",deviceNameCannotBeEmpty:"Device name cannot be empty.",deviceAddedOrUpdated:"Device {PH1} successfully added/updated."},n=e.i18n.registerUIStrings("panels/settings/emulation/DevicesSettingsTab.ts",c),o=e.i18n.getLocalizedString.bind(void 0,n);class l extends i.Widget.VBox{containerElement;addCustomButton;ariaSuccessMessageElement;list;muteUpdate;emulatedDevicesList;editor;constructor(){super(),this.element.classList.add("settings-tab-container"),this.element.classList.add("devices-settings-tab");const e=this.element.createChild("header");i.UIUtils.createTextChild(e.createChild("h1"),o(c.emulatedDevices)),this.containerElement=this.element.createChild("div","settings-container-wrapper").createChild("div","settings-tab settings-content settings-container");const s=this.containerElement.createChild("div","devices-button-row");this.addCustomButton=i.UIUtils.createTextButton(o(c.addCustomDevice),this.addCustomDevice.bind(this)),this.addCustomButton.id="custom-device-add-button",s.appendChild(this.addCustomButton),this.ariaSuccessMessageElement=this.containerElement.createChild("div","device-success-message"),i.ARIAUtils.markAsPoliteLiveRegion(this.ariaSuccessMessageElement,!1),this.list=new i.ListWidget.ListWidget(this,!1),this.list.element.classList.add("devices-list"),this.list.show(this.containerElement),this.muteUpdate=!1,this.emulatedDevicesList=t.EmulatedDevices.EmulatedDevicesList.instance(),this.emulatedDevicesList.addEventListener("CustomDevicesUpdated",this.devicesUpdated,this),this.emulatedDevicesList.addEventListener("StandardDevicesUpdated",this.devicesUpdated,this),this.setDefaultFocusedElement(this.addCustomButton)}static instance(){return a||(a=new l),a}wasShown(){super.wasShown(),this.devicesUpdated(),this.registerCSSFiles([d]),this.list.registerCSSFiles([d])}devicesUpdated(){if(this.muteUpdate)return;this.list.clear();let e=this.emulatedDevicesList.custom().slice();for(let t=0;t<e.length;++t)this.list.appendItem(e[t],!0);this.list.appendSeparator(),e=this.emulatedDevicesList.standard().slice(),e.sort(t.EmulatedDevices.EmulatedDevice.deviceComparator);for(let t=0;t<e.length;++t)this.list.appendItem(e[t],!1)}muteAndSaveDeviceList(e){this.muteUpdate=!0,e?this.emulatedDevicesList.saveCustomDevices():this.emulatedDevicesList.saveStandardDevices(),this.muteUpdate=!1}addCustomDevice(){const e=new t.EmulatedDevices.EmulatedDevice;e.deviceScaleFactor=0,e.horizontal.width=700,e.horizontal.height=400,e.vertical.width=400,e.vertical.height=700,this.list.addNewItem(this.emulatedDevicesList.custom().length,e)}toNumericInputValue(e){return e?String(e):""}renderItem(e,t){const i=document.createElement("label");i.classList.add("devices-list-item");const s=i.createChild("input","devices-list-checkbox");s.type="checkbox",s.checked=e.show(),s.addEventListener("click",function(i){const d=s.checked;e.setShow(d),this.muteAndSaveDeviceList(t),i.consume()}.bind(this),!1);const d=document.createElement("span");return d.classList.add("device-name"),d.appendChild(document.createTextNode(e.title)),i.appendChild(d),i}removeItemRequested(e){this.emulatedDevicesList.removeCustomDevice(e)}commitEdit(e,i,s){e.title=i.control("title").value.trim(),e.vertical.width=i.control("width").value?parseInt(i.control("width").value,10):0,e.vertical.height=i.control("height").value?parseInt(i.control("height").value,10):0,e.horizontal.width=e.vertical.height,e.horizontal.height=e.vertical.width,e.deviceScaleFactor=i.control("scale").value?parseFloat(i.control("scale").value):0,e.userAgent=i.control("user-agent").value,e.modes=[],e.modes.push({title:"",orientation:t.EmulatedDevices.Vertical,insets:new t.DeviceModeModel.Insets(0,0,0,0),image:null}),e.modes.push({title:"",orientation:t.EmulatedDevices.Horizontal,insets:new t.DeviceModeModel.Insets(0,0,0,0),image:null}),e.capabilities=[];const d=i.control("ua-type").value;d!==t.DeviceModeModel.UA.Mobile&&d!==t.DeviceModeModel.UA.MobileNoTouch||e.capabilities.push(t.EmulatedDevices.Capability.Mobile),d!==t.DeviceModeModel.UA.Mobile&&d!==t.DeviceModeModel.UA.DesktopTouch||e.capabilities.push(t.EmulatedDevices.Capability.Touch);const a=i.control("ua-metadata").value.metaData;a&&(e.userAgentMetadata={...a,mobile:d===t.DeviceModeModel.UA.Mobile||d===t.DeviceModeModel.UA.MobileNoTouch}),s?this.emulatedDevicesList.addCustomDevice(e):this.emulatedDevicesList.saveCustomDevices(),this.addCustomButton.scrollIntoViewIfNeeded(),this.addCustomButton.focus(),this.ariaSuccessMessageElement.setAttribute("aria-label",o(c.deviceAddedOrUpdated,{PH1:e.title}))}beginEdit(e){const i=this.createEditor();let s;return i.control("title").value=e.title,i.control("width").value=this.toNumericInputValue(e.vertical.width),i.control("height").value=this.toNumericInputValue(e.vertical.height),i.control("scale").value=this.toNumericInputValue(e.deviceScaleFactor),i.control("user-agent").value=e.userAgent,s=e.mobile()?e.touch()?t.DeviceModeModel.UA.Mobile:t.DeviceModeModel.UA.MobileNoTouch:e.touch()?t.DeviceModeModel.UA.DesktopTouch:t.DeviceModeModel.UA.Desktop,i.control("ua-type").value=s,i.control("ua-metadata").value={metaData:e.userAgentMetadata||void 0},i}createEditor(){if(this.editor)return this.editor;const e=new i.ListWidget.Editor;this.editor=e;const d=e.contentElement(),a=d.createChild("div","devices-edit-fields");i.UIUtils.createTextChild(a.createChild("b"),o(c.device));const n=e.createInput("title","text",o(c.deviceName),(function(e,i,s){let d,a=!1;const n=s.value.trim();n.length>=t.DeviceModeModel.MaxDeviceNameLength?d=o(c.deviceNameMustBeLessThanS,{PH1:t.DeviceModeModel.MaxDeviceNameLength}):0===n.length?d=o(c.deviceNameCannotBeEmpty):a=!0;return{valid:a,errorMessage:d}}));a.createChild("div","hbox").appendChild(n),n.id="custom-device-name-field";const l=a.createChild("div","hbox");l.appendChild(e.createInput("width","text",o(c.width),(function(e,i,s){return t.DeviceModeModel.DeviceModeModel.widthValidator(s.value)}))),l.appendChild(e.createInput("height","text",o(c.height),(function(e,i,s){return t.DeviceModeModel.DeviceModeModel.heightValidator(s.value)})));const r=e.createInput("scale","text",o(c.devicePixelRatio),(function(e,i,s){return t.DeviceModeModel.DeviceModeModel.scaleValidator(s.value)}));r.classList.add("device-edit-fixed"),l.appendChild(r);const h=d.createChild("div","devices-edit-fields");i.UIUtils.createTextChild(h.createChild("b"),o(c.userAgentString));const u=h.createChild("div","hbox");u.appendChild(e.createInput("user-agent","text",o(c.userAgentString),(()=>({valid:!0,errorMessage:void 0}))));const v=[t.DeviceModeModel.UA.Mobile,t.DeviceModeModel.UA.MobileNoTouch,t.DeviceModeModel.UA.Desktop,t.DeviceModeModel.UA.DesktopTouch],m=e.createSelect("ua-type",v,(()=>({valid:!0,errorMessage:void 0})),o(c.userAgentType));m.classList.add("device-edit-fixed"),u.appendChild(m);const p=e.createCustomControl("ua-metadata",s.UserAgentClientHintsForm.UserAgentClientHintsForm,(function(){return p.validate()}));return p.value={},p.addEventListener("clienthintschange",(()=>e.requestValidation()),!1),d.appendChild(p),e}}var r=Object.freeze({__proto__:null,DevicesSettingsTab:l});export{r as DevicesSettingsTab};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e="-".charCodeAt(0),n="0".charCodeAt(0),t="9".charCodeAt(0),r="A".charCodeAt(0),i="Z".charCodeAt(0),a="a".charCodeAt(0),u="z".charCodeAt(0),o='"'.charCodeAt(0),d=":".charCodeAt(0),s="?".charCodeAt(0),c="*".charCodeAt(0),k="_".charCodeAt(0),f=".".charCodeAt(0),l="\\".charCodeAt(0),h="/".charCodeAt(0),v="+".charCodeAt(0),p="=".charCodeAt(0),C="!".charCodeAt(0),m="#".charCodeAt(0),A="$".charCodeAt(0),g="%".charCodeAt(0),S="&".charCodeAt(0),E="'".charCodeAt(0),P="^".charCodeAt(0),b="`".charCodeAt(0),_="|".charCodeAt(0),w="~".charCodeAt(0);function z(e){return void 0!==e&&(e>=n&&e<=t)}function O(e){return void 0!==e&&(e>=r&&e<=i||e>=a&&e<=u)}function j(e){return void 0!==e&&(e>=a&&e<=u)}function I(n){if(void 0===n)return!1;if(z(n)||O(n))return!0;switch(n){case C:case m:case A:case g:case S:case E:case c:case v:case e:case f:case P:case k:case b:case _:case w:return!0;default:return!1}}class L{data;pos;constructor(e){this.data=e,this.pos=0,this.skipSP()}peek(){return this.data[this.pos]}peekCharCode(){return this.pos<this.data.length?this.data.charCodeAt(this.pos):void 0}eat(){++this.pos}skipSP(){for(;" "===this.data[this.pos];)++this.pos}skipOWS(){for(;" "===this.data[this.pos]||"\t"===this.data[this.pos];)++this.pos}atEnd(){return this.pos===this.data.length}allParsed(){return this.skipSP(),this.pos===this.data.length}}function M(e){return"("===e.peek()?function(e){if("("!==e.peek())return{kind:0};e.eat();const n=[];for(;!e.atEnd();){if(e.skipSP(),")"===e.peek()){e.eat();const t=x(e);return 0===t.kind?t:{kind:12,items:n,parameters:t}}const t=N(e);if(0===t.kind)return t;if(n.push(t)," "!==e.peek()&&")"!==e.peek())return{kind:0}}return{kind:0}}(e):N(e)}function N(e){const n=W(e);if(0===n.kind)return n;const t=x(e);return 0===t.kind?t:{kind:4,value:n,parameters:t}}function W(n){const t=n.peekCharCode();return t===e||z(t)?function(e){let n=5,t=1,r="";"-"===e.peek()&&(e.eat(),t=-1);if(!z(e.peekCharCode()))return{kind:0};for(;!e.atEnd();){const t=e.peekCharCode();if(void 0!==t&&z(t))e.eat(),r+=String.fromCodePoint(t);else{if(t!==f||5!==n)break;if(e.eat(),r.length>12)return{kind:0};r+=".",n=6}if(5===n&&r.length>15)return{kind:0};if(6===n&&r.length>16)return{kind:0}}if(5===n){const e=t*Number.parseInt(r,10);return e<-999999999999999||e>999999999999999?{kind:0}:{kind:5,value:e}}const i=r.length-1-r.indexOf(".");if(i>3||0===i)return{kind:0};return{kind:6,value:t*Number.parseFloat(r)}}(n):t===o?function(e){let n="";if('"'!==e.peek())return{kind:0};e.eat();for(;!e.atEnd();){const t=e.peekCharCode();if(void 0===t)return{kind:0};if(e.eat(),t===l){if(e.atEnd())return{kind:0};const t=e.peekCharCode();if(e.eat(),t!==l&&t!==o)return{kind:0};n+=String.fromCodePoint(t)}else{if(t===o)return{kind:7,value:n};if(t<32||t>126)return{kind:0};n+=String.fromCodePoint(t)}}return{kind:0}}(n):t===d?function(e){let n="";if(":"!==e.peek())return{kind:0};e.eat();for(;!e.atEnd();){const t=e.peekCharCode();if(void 0===t)return{kind:0};if(e.eat(),t===d)return{kind:9,value:n};if(!z(t)&&!O(t)&&t!==v&&t!==h&&t!==p)return{kind:0};n+=String.fromCodePoint(t)}return{kind:0}}(n):t===s?function(e){if("?"!==e.peek())return{kind:0};if(e.eat(),"0"===e.peek())return e.eat(),{kind:10,value:!1};if("1"===e.peek())return e.eat(),{kind:10,value:!0};return{kind:0}}(n):t===c||O(t)?function(e){const n=e.peekCharCode();if(n!==c&&!O(n))return{kind:0};let t="";for(;!e.atEnd();){const n=e.peekCharCode();if(void 0===n||!I(n)&&n!==d&&n!==h)break;e.eat(),t+=String.fromCodePoint(n)}return{kind:8,value:t}}(n):{kind:0}}function x(e){const n=new Map;for(;!e.atEnd()&&";"===e.peek();){e.eat(),e.skipSP();const t=B(e);if(0===t.kind)return t;let r={kind:10,value:!0};if("="===e.peek()){e.eat();const n=W(e);if(0===n.kind)return n;r=n}n.has(t.value)&&n.delete(t.value),n.set(t.value,{kind:2,name:t,value:r})}return{kind:3,items:[...n.values()]}}function B(n){let t="";const r=n.peekCharCode();if(r!==c&&!j(r))return{kind:0};for(;!n.atEnd();){const r=n.peekCharCode();if(!j(r)&&!z(r)&&r!==k&&r!==e&&r!==f&&r!==c)break;t+=n.peek(),n.eat()}return{kind:1,value:t}}function U(e){return function(e){const n={kind:11,items:[]};for(;!e.atEnd();){const t=M(e);if(0===t.kind)return t;if(n.items.push(t),e.skipOWS(),e.atEnd())return n;if(","!==e.peek())return{kind:0};if(e.eat(),e.skipOWS(),e.atEnd())return{kind:0}}return n}(new L(e))}function F(e){const n=y(e.value);if(0===n.kind)return n;const t=$(e.parameters);return 0===t.kind?t:{kind:13,value:n.value+t.value}}function H(e){const n=[];for(let t=0;t<e.items.length;++t){const r=e.items[t];if(12===r.kind){const e=Z(r);if(0===e.kind)return e;n.push(e.value)}else{const e=F(r);if(0===e.kind)return e;n.push(e.value)}}return{kind:13,value:n.join(", ")}}function Z(e){const n=[];for(let t=0;t<e.items.length;++t){const r=F(e.items[t]);if(0===r.kind)return r;n.push(r.value)}let t="("+n.join(" ")+")";const r=$(e.parameters);return 0===r.kind?r:(t+=r.value,{kind:13,value:t})}function $(e){let n="";for(const t of e.items){n+=";";const e=q(t.name);if(0===e.kind)return e;n+=e.value;const r=t.value;if(10!==r.kind||!r.value){n+="=";const e=y(r);if(0===e.kind)return e;n+=e.value}}return{kind:13,value:n}}function q(n){if(0===n.value.length)return{kind:0};const t=n.value.charCodeAt(0);if(!j(t)&&t!==c)return{kind:0};for(let t=1;t<n.value.length;++t){const r=n.value.charCodeAt(t);if(!j(r)&&!z(r)&&r!==k&&r!==e&&r!==f&&r!==c)return{kind:0}}return{kind:13,value:n.value}}function y(e){return 5===e.kind?function(e){if(e.value<-999999999999999||e.value>999999999999999||!Number.isInteger(e.value))return{kind:0};return{kind:13,value:e.value.toString(10)}}(e):6===e.kind?function(e){throw"Unimplemented"}():7===e.kind?function(e){for(let n=0;n<e.value.length;++n){const t=e.value.charCodeAt(n);if(t<32||t>126)return{kind:0}}let n='"';for(let t=0;t<e.value.length;++t){const r=e.value[t];'"'!==r&&"\\"!==r||(n+="\\"),n+=r}return n+='"',{kind:13,value:n}}(e):8===e.kind?function(e){if(0===e.value.length)return{kind:0};const n=e.value.charCodeAt(0);if(!O(n)&&n!==c)return{kind:0};for(let n=1;n<e.value.length;++n){const t=e.value.charCodeAt(n);if(!I(t)&&t!==d&&t!==h)return{kind:0}}return{kind:13,value:e.value}}(e):10===e.kind?function(e){return{kind:13,value:e.value?"?1":"?0"}}(e):9===e.kind?function(e){throw"Unimplemented"}():{kind:0}}var D=Object.freeze({__proto__:null,parseItem:function(e){const n=new L(e),t=N(n);return n.allParsed()?t:{kind:0}},parseList:U,serializeItem:F,serializeList:H});var G=Object.freeze({__proto__:null,parseBrandsList:function(e,n,t){const r=[],i=U(e);if(0===i.kind)return n;for(const e of i.items){if(4!==e.kind)return t;const n=e.value;if(7!==n.kind)return t;if(1!==e.parameters.items.length)return t;const i=e.parameters.items[0];if("v"!==i.name.value)return t;const a=i.value;if(7!==a.kind)return t;r.push({brand:n.value,version:a.value})}return r},serializeBrandsList:function(e){const n={kind:11,items:[]},t={kind:1,value:"v"};for(const r of e){const e={kind:4,value:{kind:7,value:r.brand},parameters:{kind:3,items:[{kind:2,name:t,value:{kind:7,value:r.version}}]}};n.items.push(e)}const r=H(n);return 0===r.kind?"":r.value},validateAsStructuredHeadersString:function(e,n){return 0===F({kind:4,value:{kind:7,value:e},parameters:{kind:3,items:[]}}).kind?{valid:!1,errorMessage:n}:{valid:!0,errorMessage:void 0}}});export{D as StructuredHeaders,G as UserAgentMetadata};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"./settings.js";self.Settings=self.Settings||{},Settings=Settings||{},Settings.FrameworkIgnoreListSettingsTab=e.FrameworkIgnoreListSettingsTab.FrameworkIgnoreListSettingsTab,Settings.SettingsScreen=e.SettingsScreen.SettingsScreen,Settings.SettingsScreen.ActionDelegate=e.SettingsScreen.ActionDelegate,Settings.SettingsScreen.Revealer=e.SettingsScreen.Revealer,Settings.GenericSettingsTab=e.SettingsScreen.GenericSettingsTab,Settings.ExperimentsSettingsTab=e.SettingsScreen.ExperimentsSettingsTab,Settings.KeybindsSettingsTab=e.KeybindsSettingsTab.KeybindsSettingsTab;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../core/i18n/i18n.js";import*as t from"../../ui/legacy/legacy.js";import*as i from"../../core/common/common.js";import*as n from"../../core/root/root.js";const s={devices:"Devices",showDevices:"Show Devices"},o=e.i18n.registerUIStrings("panels/settings/emulation/emulation-meta.ts",s),a=e.i18n.getLazilyComputedLocalizedString.bind(void 0,o);let r;t.ViewManager.registerViewExtension({location:"settings-view",commandPrompt:a(s.showDevices),title:a(s.devices),order:30,loadView:async()=>(await async function(){return r||(r=await import("./emulation/emulation.js")),r}()).DevicesSettingsTab.DevicesSettingsTab.instance(),id:"devices",settings:["standardEmulatedDeviceList","customEmulatedDeviceList"]});const c={shortcuts:"Shortcuts",preferences:"Preferences",experiments:"Experiments",ignoreList:"Ignore List",showShortcuts:"Show Shortcuts",showPreferences:"Show Preferences",showExperiments:"Show Experiments",showIgnoreList:"Show Ignore List",settings:"Settings",documentation:"Documentation"},g=e.i18n.registerUIStrings("panels/settings/settings-meta.ts",c),d=e.i18n.getLazilyComputedLocalizedString.bind(void 0,g);let m;async function l(){return m||(m=await import("./settings.js")),m}t.ViewManager.registerViewExtension({location:"settings-view",id:"preferences",title:d(c.preferences),commandPrompt:d(c.showPreferences),order:0,loadView:async()=>(await l()).SettingsScreen.GenericSettingsTab.instance()}),t.ViewManager.registerViewExtension({location:"settings-view",id:"experiments",title:d(c.experiments),commandPrompt:d(c.showExperiments),order:3,experiment:n.Runtime.ExperimentName.ALL,loadView:async()=>(await l()).SettingsScreen.ExperimentsSettingsTab.instance()}),t.ViewManager.registerViewExtension({location:"settings-view",id:"blackbox",title:d(c.ignoreList),commandPrompt:d(c.showIgnoreList),order:4,loadView:async()=>(await l()).FrameworkIgnoreListSettingsTab.FrameworkIgnoreListSettingsTab.instance()}),t.ViewManager.registerViewExtension({location:"settings-view",id:"keybinds",title:d(c.shortcuts),commandPrompt:d(c.showShortcuts),order:100,loadView:async()=>(await l()).KeybindsSettingsTab.KeybindsSettingsTab.instance()}),t.ActionRegistration.registerActionExtension({category:t.ActionRegistration.ActionCategory.SETTINGS,actionId:"settings.show",title:d(c.settings),loadActionDelegate:async()=>(await l()).SettingsScreen.ActionDelegate.instance(),iconClass:"gear",bindings:[{shortcut:"F1",keybindSets:["devToolsDefault"]},{shortcut:"Shift+?"},{platform:"windows,linux",shortcut:"Ctrl+,",keybindSets:["vsCode"]},{platform:"mac",shortcut:"Meta+,",keybindSets:["vsCode"]}]}),t.ActionRegistration.registerActionExtension({category:t.ActionRegistration.ActionCategory.SETTINGS,actionId:"settings.documentation",title:d(c.documentation),loadActionDelegate:async()=>(await l()).SettingsScreen.ActionDelegate.instance()}),t.ActionRegistration.registerActionExtension({category:t.ActionRegistration.ActionCategory.SETTINGS,actionId:"settings.shortcuts",title:d(c.shortcuts),loadActionDelegate:async()=>(await l()).SettingsScreen.ActionDelegate.instance(),bindings:[{platform:"windows,linux",shortcut:"Ctrl+K Ctrl+S",keybindSets:["vsCode"]},{platform:"mac",shortcut:"Meta+K Meta+S",keybindSets:["vsCode"]}]}),t.ViewManager.registerLocationResolver({name:"settings-view",category:t.ViewManager.ViewLocationCategory.SETTINGS,loadResolver:async()=>(await l()).SettingsScreen.SettingsScreen.instance()}),i.Revealer.registerRevealer({contextTypes:()=>[i.Settings.Setting,n.Runtime.Experiment],loadRevealer:async()=>(await l()).SettingsScreen.Revealer.instance(),destination:void 0}),t.ContextMenu.registerItem({location:t.ContextMenu.ItemLocation.MAIN_MENU_FOOTER,actionId:"settings.shortcuts",order:void 0}),t.ContextMenu.registerItem({location:t.ContextMenu.ItemLocation.MAIN_MENU_HELP_DEFAULT,actionId:"settings.documentation",order:void 0});
|