simdeck 0.1.4 → 0.1.5
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/README.md +34 -14
- package/build/simdeck-bin +0 -0
- package/client/dist/assets/index-D2-CFde1.css +1 -0
- package/client/dist/assets/index-E1gIgaOR.js +9 -0
- package/client/dist/chrome-devtools-ui/Images/3d-center.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/3d-pan.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/3d-rotate.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/Images.js +296 -0
- package/client/dist/chrome-devtools-ui/Images/accelerometer-back.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/accelerometer-bottom.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/accelerometer-front.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/accelerometer-left.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/accelerometer-right.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/accelerometer-top.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/account-tree.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-content-center.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-content-end.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-content-space-around.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-content-space-between.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-content-space-evenly.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-content-start.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-content-stretch.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-items-baseline.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-items-center.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-items-end.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-items-start.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-items-stretch.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-self-center.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-self-end.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-self-start.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/align-self-stretch.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/animation.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-back.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-collapse.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-down.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-drop-down-dark.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-drop-down-light.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-drop-down.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-forward.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-right-circle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-up-down-circle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-up-down.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/arrow-up.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/bell.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/bezier-curve-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/bin.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/bottom-panel-close.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/bottom-panel-open.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/brackets.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/breakpoint-circle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/breakpoint-crossed-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/breakpoint-crossed.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/brush-2.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/brush-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/brush.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/bug.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/bundle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/button-magic.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/calendar-today.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/center-focus-weak.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/check-circle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/check-double.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/checker.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/checkmark.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/chevron-double-right.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/chevron-down.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/chevron-left-dot.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/chevron-left.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/chevron-right.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/chevron-up.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/chromeLeft.avif +0 -0
- package/client/dist/chrome-devtools-ui/Images/chromeMiddle.avif +0 -0
- package/client/dist/chrome-devtools-ui/Images/chromeRight.avif +0 -0
- package/client/dist/chrome-devtools-ui/Images/class.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/clear-list.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/clear.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/cloud.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/code-circle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/code.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/colon.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/color-picker-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/color-picker.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/compress.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/console-conditional-breakpoint.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/console-logpoint.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/cookie.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/cookie_off.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/copy.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/corporate-fare.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/credit-card.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/cross-circle-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/cross-circle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/cross.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/cssoverview_icons_2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/Images/custom-typography.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/database.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/deployed.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/device-fold.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/devices.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/devtools-thumbnail.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/devtools-tips.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/devtools.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/difference.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/dock-bottom.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/dock-left.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/dock-right.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/dock-window.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/document.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/dog-paw.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/domain.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/dots-horizontal.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/dots-vertical.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/download.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/edit.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/empty.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/errorWave.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/exclamation.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/experiment-check.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/experiment.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/extension.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/eye.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/favicon.ico +0 -0
- package/client/dist/chrome-devtools-ui/Images/file-document.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-fetch-xhr.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-font.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-generic.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-image.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-json.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-manifest.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-media.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-script.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-snippet.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-stylesheet.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-wasm.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/file-websocket.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/filter-clear.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/filter-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/filter.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/flex-direction.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/flex-no-wrap.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/flex-wrap.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/flow.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/fold-more.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/folder.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/frame-crossed.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/frame-icon.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/frame.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/gear-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/gear.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/gears.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/global.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/google.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/goto-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/grid-on.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/group.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/heap-snapshot.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/heap-snapshots.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/help.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/history.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/home.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/hover.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/iframe-crossed.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/iframe.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/import.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/indeterminate-question-box.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/info-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/info.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/issue-cross-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/issue-exclamation-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/issue-questionmark-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/issue-text-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-content-center.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-content-end.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-content-space-around.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-content-space-between.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-content-space-evenly.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-content-start.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-items-center.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-items-end.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-items-start.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/justify-items-stretch.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/keyboard-arrow-right.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/keyboard-full.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/keyboard-pen.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/keyboard.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/label.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/large-arrow-right-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/layers-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/layers.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/left-panel-close.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/left-panel-open.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/lightbulb-spark.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/lightbulb.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/lighthouse_logo.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/list.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/location-on.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/lock.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/match-case.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/match-whole-word.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/memory.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/minus.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/mop.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/mouse.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/navigationControls.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/navigationControls_2x.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/network-settings.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/node-stack-icon.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/nodeIcon.avif +0 -0
- package/client/dist/chrome-devtools-ui/Images/open-externally.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/override.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/palette.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/pause-circle.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/pause.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/pen-spark.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/performance-panel-delete-annotation.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/performance-panel-diagram.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/performance-panel-entry-label.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/performance-panel-time-range.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/performance.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/person.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/photo-camera.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/play.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/plus.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/policy.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/popoverArrows.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/popup.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/preview_feature_video_thumbnail.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/profile.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/psychiatry.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/react_native/learn-debugging-basics.jpg +0 -0
- package/client/dist/chrome-devtools-ui/Images/react_native/learn-native-debugging.jpg +0 -0
- package/client/dist/chrome-devtools-ui/Images/react_native/learn-react-native-devtools.jpg +0 -0
- package/client/dist/chrome-devtools-ui/Images/react_native/welcomeIcon.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/record-start.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/record-stop.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/redo.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/refresh.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/regular-expression.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/replace.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/replay.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/report.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/resizeDiagonal.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/resizeHorizontal.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/resizeVertical.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/resume.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/review.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/right-panel-close.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/right-panel-open.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/scissors.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/screen-rotation.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/search.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/select-element.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/send.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/shadow.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/small-status-dot.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/smart-assistant.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/snippet.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/spark-info.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/star.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/step-into.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/step-out.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/step-over.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/step.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/stop.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/symbol.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/sync.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/table.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/terminal.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/thumb-down-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/thumb-down.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/thumb-up-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/thumb-up.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/tonality.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/toolbarResizerVertical.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/top-panel-close.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/top-panel-open.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/touch-app.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/touchCursor.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/touchCursor_2x.png +0 -0
- package/client/dist/chrome-devtools-ui/Images/triangle-bottom-right.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/triangle-down.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/triangle-left.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/triangle-right.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/triangle-up.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/tune.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/undo.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/warning-filled.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/warning.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/watch.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/whatsnew.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/width.svg +1 -0
- package/client/dist/chrome-devtools-ui/Images/zoom-in.svg +1 -0
- package/client/dist/chrome-devtools-ui/Tests.js +1700 -0
- package/client/dist/chrome-devtools-ui/application_tokens.css +407 -0
- package/client/dist/chrome-devtools-ui/core/common/common.js +1 -0
- package/client/dist/chrome-devtools-ui/core/dom_extension/dom_extension.js +1 -0
- package/client/dist/chrome-devtools-ui/core/host/host.js +1 -0
- package/client/dist/chrome-devtools-ui/core/i18n/i18n.js +1 -0
- package/client/dist/chrome-devtools-ui/core/i18n/locales/en-US.json +1 -0
- package/client/dist/chrome-devtools-ui/core/i18n/locales/zh.json +1 -0
- package/client/dist/chrome-devtools-ui/core/platform/platform.js +1 -0
- package/client/dist/chrome-devtools-ui/core/protocol_client/protocol_client.js +1 -0
- package/client/dist/chrome-devtools-ui/core/rn_experiments/rn_experiments.js +1 -0
- package/client/dist/chrome-devtools-ui/core/root/root.js +1 -0
- package/client/dist/chrome-devtools-ui/core/sdk/sdk-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/core/sdk/sdk.js +1 -0
- package/client/dist/chrome-devtools-ui/design_system_tokens.css +782 -0
- package/client/dist/chrome-devtools-ui/device_mode_emulation_frame.html +24 -0
- package/client/dist/chrome-devtools-ui/devtools_app.html +24 -0
- package/client/dist/chrome-devtools-ui/devtools_compatibility.js +1741 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/MotoG4-landscape.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/MotoG4-portrait.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/Nexus5X-landscape.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/Nexus5X-portrait.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/Nexus6P-landscape.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/Nexus6P-portrait.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nest-hub-horizontal.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nest-hub-max-horizontal.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-horizontal-default-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-horizontal-default-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-horizontal-keyboard-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-horizontal-navigation-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-horizontal-navigation-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-vertical-default-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-vertical-default-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-vertical-keyboard-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-vertical-keyboard-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-vertical-navigation-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5-vertical-navigation-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-horizontal-default-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-horizontal-default-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-horizontal-keyboard-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-horizontal-navigation-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-vertical-default-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-vertical-default-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-vertical-keyboard-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-vertical-navigation-1x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/google-nexus-5x-vertical-navigation-2x.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPad-landscape.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPad-portrait.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPhone5-landscape.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPhone5-portrait.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPhone6-landscape.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPhone6-portrait.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPhone6Plus-landscape.avif +0 -0
- package/client/dist/chrome-devtools-ui/emulated_devices/optimized/iPhone6Plus-portrait.avif +0 -0
- package/client/dist/chrome-devtools-ui/entrypoints/device_mode_emulation_frame/device_mode_emulation_frame.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/devtools_app/devtools_app.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/formatter_worker/FormatterActions.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/formatter_worker/formatter_worker-entrypoint.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/formatter_worker/formatter_worker.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/heap_snapshot_worker/heap_snapshot_worker-entrypoint.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/heap_snapshot_worker/heap_snapshot_worker.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/inspector/inspector.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/inspector_main/inspector_main-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/inspector_main/inspector_main.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/js_app/js_app.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/lighthouse_worker/lighthouse_worker.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/main/main-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/main/main.js +48 -0
- package/client/dist/chrome-devtools-ui/entrypoints/ndb_app/ndb_app.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/node_app/node_app.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/rehydrated_devtools_app/rehydrated_devtools_app.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/rn_fusebox/rn_fusebox.js +24 -0
- package/client/dist/chrome-devtools-ui/entrypoints/shell/shell.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/wasmparser_worker/wasmparser_worker-entrypoint.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/wasmparser_worker/wasmparser_worker.js +1 -0
- package/client/dist/chrome-devtools-ui/entrypoints/worker_app/worker_app.js +1 -0
- package/client/dist/chrome-devtools-ui/inspector.html +24 -0
- package/client/dist/chrome-devtools-ui/integration_test_runner.html +40 -0
- package/client/dist/chrome-devtools-ui/js_app.html +24 -0
- package/client/dist/chrome-devtools-ui/legacy_test_runner/legacy_test_runner.js +13 -0
- package/client/dist/chrome-devtools-ui/legacy_test_runner/test_runner/test_runner.js +1 -0
- package/client/dist/chrome-devtools-ui/models/ai_assistance/ai_assistance.js +1 -0
- package/client/dist/chrome-devtools-ui/models/autofill_manager/autofill_manager.js +1 -0
- package/client/dist/chrome-devtools-ui/models/bindings/bindings.js +1 -0
- package/client/dist/chrome-devtools-ui/models/breakpoints/breakpoints.js +1 -0
- package/client/dist/chrome-devtools-ui/models/cpu_profile/cpu_profile.js +1 -0
- package/client/dist/chrome-devtools-ui/models/crux-manager/crux-manager.js +1 -0
- package/client/dist/chrome-devtools-ui/models/emulation/emulation.js +1 -0
- package/client/dist/chrome-devtools-ui/models/extensions/extensions.js +1 -0
- package/client/dist/chrome-devtools-ui/models/formatter/formatter.js +1 -0
- package/client/dist/chrome-devtools-ui/models/har/har.js +1 -0
- package/client/dist/chrome-devtools-ui/models/heap_snapshot_model/heap_snapshot_model.js +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/CoepCoopSandboxedIframeCannotNavigateToCoopPage.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/CoepCorpNotSameOrigin.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md +18 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/CoepCorpNotSameSite.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/CoepFrameResourceNeedsCoepHeader.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/CompatibilityModeQuirks.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/CookieAttributeValueExceedsMaxSize.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/LowTextContrast.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeRead.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeSet.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteExcludeNavigationContextDowngrade.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteInvalidSameParty.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteNoneInsecureErrorRead.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteNoneInsecureErrorSet.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteNoneInsecureWarnRead.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteNoneInsecureWarnSet.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeRead.md +9 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeSet.md +9 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeRead.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeSet.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/SameSiteWarnStrictLaxDowngradeStrict.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arInsecureContext.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arInvalidInfoHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arInvalidRegisterOsSourceHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arInvalidRegisterOsTriggerHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arInvalidRegisterSourceHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arInvalidRegisterTriggerHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arNavigationRegistrationUniqueScopeAlreadySet.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arNavigationRegistrationWithoutTransientUserActivation.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arNoRegisterOsSourceHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arNoRegisterOsTriggerHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arNoRegisterSourceHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arNoRegisterTriggerHeader.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arNoWebOrOsSupport.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arOsSourceIgnored.md +18 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arOsTriggerIgnored.md +19 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arPermissionPolicyDisabled.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arSourceAndTriggerHeaders.md +9 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arSourceIgnored.md +13 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arTriggerIgnored.md +12 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arUntrustworthyReportingOrigin.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/arWebAndOsHeaders.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/bounceTrackingMitigations.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/clientHintMetaTagAllowListInvalidOrigin.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/clientHintMetaTagModifiedHTML.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieCrossSiteRedirectDowngrade.md +12 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieExcludeBlockedWithinRelatedWebsiteSet.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieExcludeDomainNonAscii.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieExcludePortMismatch.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieExcludeSchemeMismatch.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieExcludeThirdPartyPhaseoutRead.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieExcludeThirdPartyPhaseoutSet.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieWarnDomainNonAscii.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieWarnMetadataGrantRead.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieWarnMetadataGrantSet.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieWarnThirdPartyPhaseoutRead.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cookieWarnThirdPartyPhaseoutSet.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsAllowCredentialsRequired.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsDisabledScheme.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsDisallowedByMode.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsHeaderDisallowedByPreflightResponse.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsInsecurePrivateNetwork.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsInvalidHeaderValues.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsLocalNetworkAccessPermissionDenied.md +19 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsMethodDisallowedByPreflightResponse.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsNoCorsRedirectModeNotFollow.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsOriginMismatch.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsPreflightAllowPrivateNetworkError.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsPreflightResponseInvalid.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsPrivateNetworkPermissionDenied.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsRedirectContainsCredentials.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/corsWildcardOriginNotAllowed.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cspEvalViolation.md +9 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cspInlineViolation.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cspTrustedTypesPolicyViolation.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cspTrustedTypesSinkViolation.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/cspURLViolation.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/deprecation.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestAccountsHttpNotFound.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestAccountsInvalidResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestAccountsNoResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestApprovalDeclined.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestCanceled.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestClientMetadataHttpNotFound.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestClientMetadataInvalidResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestClientMetadataNoResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestErrorFetchingSignin.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestErrorIdToken.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestIdTokenHttpNotFound.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidRequest.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestIdTokenNoResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestInvalidSigninResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestManifestHttpNotFound.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestManifestInvalidResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestManifestNoResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthRequestTooManyRequests.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidAccountsResponse.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoAccountSharingPermission.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoApiPermission.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotIframe.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSameOrigin.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSignedInWithIdp.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/fetchingPartitionedBlobURL.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormAriaLabelledByToNonExistingId.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormAutocompleteAttributeEmptyError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormDuplicateIdForInputError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormEmptyIdAndNameAttributesForInputError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormInputHasWrongButWellIntendedAutocompleteValueError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormInputWithNoLabelError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormLabelForMatchesNonExistingIdError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormLabelForNameError.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericFormLabelHasNeitherForNorNestedInput.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/genericResponseWasBlockedByORB.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/heavyAd.md +10 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/mixedContent.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/navigatingPartitionedBlobURL.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/placeholderDescriptionForInvisibleIssues.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/propertyRuleInvalidNameIssue.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/propertyRuleIssue.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/selectElementAccessibilityDisallowedOptGroupChild.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/selectElementAccessibilityDisallowedSelectChild.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentLegendChild.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentOptionChild.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/selectElementAccessibilityNonPhrasingContentOptionChild.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedArrayBuffer.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryUseErrorCrossOriginNoCorsRequest.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryUseErrorDictionaryLoadFailure.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryUseErrorMatchingDictionaryNotUsed.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryUseErrorUnexpectedContentDictionaryHeader.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorCossOriginNoCorsRequest.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorDisallowedBySettings.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorExpiredResponse.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorFeatureDisabled.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorInsufficientResources.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorInvalidMatchField.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorInvalidStructuredHeader.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNavigationRequest.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNoMatchField.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonListMatchDestField.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonSecureContext.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonStringIdField.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonStringInMatchDestList.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonStringMatchField.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonTokenTypeField.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorRequestAborted.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorShuttingDown.md +1 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorTooLongIdField.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sharedDictionaryWriteErrorUnsupportedType.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriInvalidSignatureHeader.md +14 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriInvalidSignatureInputHeader.md +15 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriMissingSignatureHeader.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriMissingSignatureInputHeader.md +7 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureHeaderValueIsIncorrectLength.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureHeaderValueIsNotByteSequence.md +14 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureHeaderValueIsParameterized.md +15 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentName.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentType.md +13 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidDerivedComponentParameter.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidHeaderComponentParameter.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidParameter.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderKeyIdLength.md +12 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderMissingLabel.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderMissingRequiredParameters.md +8 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderValueMissingComponents.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriSignatureInputHeaderValueNotInnerList.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriValidationFailedIntegrityMismatch.md +12 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriValidationFailedInvalidLength.md +5 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriValidationFailedSignatureExpired.md +6 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/sriValidationFailedSignatureMismatch.md +11 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/stylesheetLateImport.md +4 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/descriptions/stylesheetRequestFailed.md +3 -0
- package/client/dist/chrome-devtools-ui/models/issues_manager/issues_manager.js +1 -0
- package/client/dist/chrome-devtools-ui/models/javascript_metadata/javascript_metadata.js +1 -0
- package/client/dist/chrome-devtools-ui/models/live-metrics/live-metrics.js +1 -0
- package/client/dist/chrome-devtools-ui/models/live-metrics/web-vitals-injected/spec/spec.js +1 -0
- package/client/dist/chrome-devtools-ui/models/live-metrics/web-vitals-injected/web-vitals-injected.generated.js +1 -0
- package/client/dist/chrome-devtools-ui/models/logs/logs-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/models/logs/logs.js +1 -0
- package/client/dist/chrome-devtools-ui/models/persistence/persistence-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/models/persistence/persistence.js +1 -0
- package/client/dist/chrome-devtools-ui/models/project_settings/project_settings.js +1 -0
- package/client/dist/chrome-devtools-ui/models/react_native/react_native.js +1 -0
- package/client/dist/chrome-devtools-ui/models/source_map_scopes/source_map_scopes.js +1 -0
- package/client/dist/chrome-devtools-ui/models/text_utils/text_utils.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/extras/extras.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/handlers/handlers.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/helpers/helpers.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/insights/insights.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/lantern/core/core.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/lantern/graph/graph.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/lantern/lantern.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/lantern/metrics/metrics.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/lantern/simulation/simulation.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/lantern/types/types.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/trace.js +1 -0
- package/client/dist/chrome-devtools-ui/models/trace/types/types.js +1 -0
- package/client/dist/chrome-devtools-ui/models/workspace/workspace.js +1 -0
- package/client/dist/chrome-devtools-ui/models/workspace_diff/workspace_diff.js +1 -0
- package/client/dist/chrome-devtools-ui/ndb_app.html +24 -0
- package/client/dist/chrome-devtools-ui/node_app.html +24 -0
- package/client/dist/chrome-devtools-ui/panels/accessibility/accessibility-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/accessibility/accessibility.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/ai_assistance/ai_assistance-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/ai_assistance/ai_assistance.js +512 -0
- package/client/dist/chrome-devtools-ui/panels/animation/animation-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/animation/animation.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/application/application-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/application/application.js +107 -0
- package/client/dist/chrome-devtools-ui/panels/application/components/components.js +765 -0
- package/client/dist/chrome-devtools-ui/panels/application/preloading/components/components.js +362 -0
- package/client/dist/chrome-devtools-ui/panels/application/preloading/helper/helper.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/autofill/autofill-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/autofill/autofill.js +107 -0
- package/client/dist/chrome-devtools-ui/panels/browser_debugger/browser_debugger-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/browser_debugger/browser_debugger.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/changes/changes-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/changes/changes.js +31 -0
- package/client/dist/chrome-devtools-ui/panels/common/common.js +45 -0
- package/client/dist/chrome-devtools-ui/panels/console/console-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/console/console.js +6 -0
- package/client/dist/chrome-devtools-ui/panels/console_counters/console_counters-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/console_counters/console_counters.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/coverage/coverage-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/coverage/coverage.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/css_overview/components/components.js +23 -0
- package/client/dist/chrome-devtools-ui/panels/css_overview/css_overview-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/css_overview/css_overview.js +148 -0
- package/client/dist/chrome-devtools-ui/panels/developer_resources/developer_resources-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/developer_resources/developer_resources.js +48 -0
- package/client/dist/chrome-devtools-ui/panels/elements/components/components.js +250 -0
- package/client/dist/chrome-devtools-ui/panels/elements/elements-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/elements/elements.js +67 -0
- package/client/dist/chrome-devtools-ui/panels/emulation/components/components.js +39 -0
- package/client/dist/chrome-devtools-ui/panels/emulation/emulation-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/emulation/emulation.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/event_listeners/event_listeners.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/explain/explain-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/explain/explain.js +231 -0
- package/client/dist/chrome-devtools-ui/panels/issues/components/components.js +14 -0
- package/client/dist/chrome-devtools-ui/panels/issues/issues-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/issues/issues.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/js_timeline/js_timeline-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/js_timeline/js_timeline.js +2 -0
- package/client/dist/chrome-devtools-ui/panels/layer_viewer/layer_viewer-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/layer_viewer/layer_viewer.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/layers/layers-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/layers/layers.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/lighthouse/lighthouse-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/lighthouse/lighthouse.js +65 -0
- package/client/dist/chrome-devtools-ui/panels/linear_memory_inspector/components/components.js +179 -0
- package/client/dist/chrome-devtools-ui/panels/linear_memory_inspector/linear_memory_inspector-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/linear_memory_inspector/linear_memory_inspector.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/media/media-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/media/media.js +25 -0
- package/client/dist/chrome-devtools-ui/panels/mobile_throttling/mobile_throttling-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/mobile_throttling/mobile_throttling.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/network/components/components.js +346 -0
- package/client/dist/chrome-devtools-ui/panels/network/forward/forward.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/network/network-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/network/network.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/performance_monitor/performance_monitor-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/performance_monitor/performance_monitor.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/profiler/profiler-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/profiler/profiler.js +8 -0
- package/client/dist/chrome-devtools-ui/panels/protocol_monitor/protocol_monitor-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/protocol_monitor/protocol_monitor.js +293 -0
- package/client/dist/chrome-devtools-ui/panels/react_devtools/react_devtools.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/react_devtools/react_devtools_components-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/react_devtools/react_devtools_profiler-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/components/components.js +686 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/controllers/controllers.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/converters/converters.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/extensions/extensions.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/injected/injected.generated.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/injected/injected.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/models/models.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/recorder-actions/recorder-actions.js +3 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/recorder-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/recorder.js +126 -0
- package/client/dist/chrome-devtools-ui/panels/recorder/util/util.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/rn_welcome/rn_welcome-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/rn_welcome/rn_welcome.js +62 -0
- package/client/dist/chrome-devtools-ui/panels/screencast/screencast-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/screencast/screencast.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/search/search.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/security/security-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/security/security.js +178 -0
- package/client/dist/chrome-devtools-ui/panels/sensors/sensors-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/sensors/sensors.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/settings/components/components.js +22 -0
- package/client/dist/chrome-devtools-ui/panels/settings/emulation/components/components.js +221 -0
- package/client/dist/chrome-devtools-ui/panels/settings/emulation/emulation-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/settings/emulation/emulation.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/settings/emulation/utils/utils.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/settings/settings-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/settings/settings.js +91 -0
- package/client/dist/chrome-devtools-ui/panels/snippets/snippets.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/sources/components/components.js +162 -0
- package/client/dist/chrome-devtools-ui/panels/sources/sources-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/sources/sources.js +2 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/components/components.js +1063 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/components/insights/insights.js +262 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/extensions/extensions.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/overlays/components/components.js +190 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/overlays/overlays.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/timeline-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/timeline.js +43 -0
- package/client/dist/chrome-devtools-ui/panels/timeline/utils/utils.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/utils/utils.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/web_audio/graph_visualizer/graph_visualizer.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/web_audio/web_audio-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/web_audio/web_audio.js +19 -0
- package/client/dist/chrome-devtools-ui/panels/webauthn/webauthn-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/webauthn/webauthn.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/whats_new/resources/WNDT.md +6 -0
- package/client/dist/chrome-devtools-ui/panels/whats_new/whats_new-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/panels/whats_new/whats_new.js +32 -0
- package/client/dist/chrome-devtools-ui/rehydrated_devtools_app.html +24 -0
- package/client/dist/chrome-devtools-ui/rn_fusebox.html +24 -0
- package/client/dist/chrome-devtools-ui/services/puppeteer/puppeteer.js +1 -0
- package/client/dist/chrome-devtools-ui/services/trace_bounds/trace_bounds.js +1 -0
- package/client/dist/chrome-devtools-ui/services/tracing/tracing.js +1 -0
- package/client/dist/chrome-devtools-ui/services/window_bounds/window_bounds.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/acorn/acorn.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/chromium/client-variations/client-variations.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/angular.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/codemirror.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/cpp.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/java.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/legacy.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/less.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/markdown.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/php.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/python.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/sass.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/svelte.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/vue.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/wast.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/chunk/xml.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/codemirror.next/codemirror.next.js +2 -0
- package/client/dist/chrome-devtools-ui/third_party/csp_evaluator/csp_evaluator.js +194 -0
- package/client/dist/chrome-devtools-ui/third_party/diff/diff.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/i18n/i18n.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/intl-messageformat/intl-messageformat.js +15 -0
- package/client/dist/chrome-devtools-ui/third_party/json5/json5.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/legacy-javascript/legacy-javascript.js +7 -0
- package/client/dist/chrome-devtools-ui/third_party/lighthouse/lighthouse-dt-bundle.js +3023 -0
- package/client/dist/chrome-devtools-ui/third_party/lighthouse/report/report.js +39 -0
- package/client/dist/chrome-devtools-ui/third_party/lit/lit.js +121 -0
- package/client/dist/chrome-devtools-ui/third_party/marked/marked.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/puppeteer/puppeteer.js +373 -0
- package/client/dist/chrome-devtools-ui/third_party/puppeteer-replay/puppeteer-replay.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/react-devtools/react-devtools.js +41 -0
- package/client/dist/chrome-devtools-ui/third_party/third-party-web/third-party-web.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/wasmparser/wasmparser.js +1 -0
- package/client/dist/chrome-devtools-ui/third_party/web-vitals/web-vitals.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/adorners/adorners.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/buttons/buttons.js +17 -0
- package/client/dist/chrome-devtools-ui/ui/components/cards/cards.js +10 -0
- package/client/dist/chrome-devtools-ui/ui/components/chrome_link/chrome_link.js +6 -0
- package/client/dist/chrome-devtools-ui/ui/components/code_highlighter/code_highlighter.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/dialogs/dialogs.js +61 -0
- package/client/dist/chrome-devtools-ui/ui/components/diff_view/diff_view.js +8 -0
- package/client/dist/chrome-devtools-ui/ui/components/expandable_list/expandable_list.js +17 -0
- package/client/dist/chrome-devtools-ui/ui/components/floating_button/floating_button.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/helpers/helpers.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/highlighting/highlighting.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/icon_button/icon_button.js +13 -0
- package/client/dist/chrome-devtools-ui/ui/components/input/input.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/issue_counter/issue_counter.js +10 -0
- package/client/dist/chrome-devtools-ui/ui/components/legacy_wrapper/legacy_wrapper.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/linkifier/linkifier.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/markdown_view/markdown_view.js +51 -0
- package/client/dist/chrome-devtools-ui/ui/components/menus/menus.js +71 -0
- package/client/dist/chrome-devtools-ui/ui/components/node_text/node_text.js +3 -0
- package/client/dist/chrome-devtools-ui/ui/components/panel_feedback/panel_feedback.js +37 -0
- package/client/dist/chrome-devtools-ui/ui/components/panel_introduction_steps/panel_introduction_steps.js +9 -0
- package/client/dist/chrome-devtools-ui/ui/components/render_coordinator/render_coordinator.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/report_view/report_view.js +21 -0
- package/client/dist/chrome-devtools-ui/ui/components/request_link_icon/request_link_icon.js +8 -0
- package/client/dist/chrome-devtools-ui/ui/components/settings/settings.js +20 -0
- package/client/dist/chrome-devtools-ui/ui/components/spinners/spinners.js +16 -0
- package/client/dist/chrome-devtools-ui/ui/components/srgb_overlay/srgb_overlay.js +6 -0
- package/client/dist/chrome-devtools-ui/ui/components/suggestion_input/suggestion_input.js +29 -0
- package/client/dist/chrome-devtools-ui/ui/components/survey_link/survey_link.js +7 -0
- package/client/dist/chrome-devtools-ui/ui/components/switch/switch.js +10 -0
- package/client/dist/chrome-devtools-ui/ui/components/text_editor/text_editor.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/components/text_prompt/text_prompt.js +4 -0
- package/client/dist/chrome-devtools-ui/ui/components/tooltips/tooltips.js +7 -0
- package/client/dist/chrome-devtools-ui/ui/components/tree_outline/tree_outline.js +32 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/color_picker/color_picker.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/cookie_table/cookie_table.js +85 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/data_grid/data_grid.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/inline_editor/inline_editor.js +58 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/object_ui/object_ui-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/object_ui/object_ui.js +7 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/perf_ui/perf_ui-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/perf_ui/perf_ui.js +60 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/quick_open/quick_open-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/quick_open/quick_open.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/source_frame/source_frame-meta.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/source_frame/source_frame.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/components/utils/utils.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/legacy.js +59 -0
- package/client/dist/chrome-devtools-ui/ui/legacy/theme_support/theme_support.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/lit/lit.js +1 -0
- package/client/dist/chrome-devtools-ui/ui/visual_logging/visual_logging.js +1 -0
- package/client/dist/chrome-devtools-ui/worker_app.html +24 -0
- package/client/dist/index.html +3 -3
- package/package.json +4 -1
- package/packages/simdeck-test/dist/index.d.ts +7 -1
- package/client/dist/assets/index-BHTf_1bs.js +0 -9
- package/client/dist/assets/index-PP2opq5o.css +0 -1
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import"../../ui/components/switch/switch.js";import"../../ui/components/cards/cards.js";import*as e from"../../ui/components/chrome_link/chrome_link.js";import*as t from"../../core/common/common.js";import*as i from"../../core/host/host.js";import*as s from"../../core/i18n/i18n.js";import*as r from"../../core/root/root.js";import*as n from"../../core/sdk/sdk.js";import"../../ui/components/buttons/buttons.js";import*as o from"../../ui/components/input/input.js";import*as a from"../../ui/legacy/legacy.js";import*as c from"../../ui/lit/lit.js";import{render as l,html as d}from"../../ui/lit/lit.js";import*as u from"../../ui/visual_logging/visual_logging.js";import"../../ui/legacy/components/data_grid/data_grid.js";import*as h from"../../core/platform/platform.js";import*as g from"../../models/issues_manager/issues_manager.js";import*as p from"../network/forward/forward.js";import*as m from"../../ui/components/icon_button/icon_button.js";var y={cssText:`.overflow-auto{height:100%}.controls{display:flex;flex-direction:column;padding:var(--sys-size-5) var(--sys-size-3) var(--sys-size-5) var(--sys-size-5);min-width:var(--sys-size-33)}.header{display:flex;flex-direction:column;gap:var(--sys-size-2);padding-left:var(--sys-size-5)}h1{margin:0;font:var(--sys-typescale-headline4)}.card-container{max-width:100%}.card{display:flex;flex-direction:column;padding:var(--sys-size-6) var(--sys-size-8);gap:var(--sys-size-6);&.enterprise-disabled{color:var(--sys-color-token-subtle)}}.card-header{display:flex;align-items:center}.card-header > .lhs{width:100%;display:flex;justify-content:space-between;align-items:center;padding-right:var(--sys-size-9);& > devtools-icon{height:var(--sys-size-11);width:var(--sys-size-11)}}.text{display:flex;flex-direction:column;gap:var(--sys-size-2)}h2{font:var(--sys-typescale-headline5);margin:0}.body{font:var(--sys-typescale-body4-regular)}.checkbox-label{gap:var(--sys-size-8);display:flex;align-items:center}.card-row{padding-top:var(--sys-size-4);padding-bottom:var(--sys-size-4);padding-left:var(--sys-size-8)}h3{font:var(--sys-typescale-body4-medium);margin:0}.x-link{color:var(--sys-color-primary);text-decoration-line:underline;cursor:pointer}.enterprise{display:flex;flex-direction:row;justify-content:space-between;gap:var(--sys-size-9);padding:var(--sys-size-6) var(--sys-size-8) var(--sys-size-6) var(--sys-size-11);align-items:center;> .anchor{display:flex;flex-direction:row;gap:var(--sys-size-9)}}input[type="checkbox"]{flex-shrink:0}.main-text{color:var(--sys-color-on-surface)}.subtext{color:var(--sys-color-on-surface-subtle)}\n/*# sourceURL=${import.meta.resolve("./cookieControlsView.css")} */\n`};const{render:v,html:w}=c,S={viewTitle:"Controls",viewExplanation:"Test how this site will perform if third-party cookies are limited in Chrome",cardTitle:"Temporarily limit third-party cookies",cardDisclaimer:"Only when DevTools is open",siteReloadMessage:"To apply your updated controls, reload the page",exceptions:"Exceptions",exceptionsExplanation:"Scenarios that grant access to third-party cookies",gracePeriodTitle:"Third-party cookie grace period",gracePeriodExplanation:"If this site or a site embedded on it is enrolled in the {PH1}, then the site can access third-party cookies",enrollGracePeriod:"To use this, enroll this site or sites embedded on it in the {PH1}",gracePeriod:"grace period",heuristicTitle:"Heuristics based exception",heuristicExplanation:"In {PH1} like pop-ups or redirects, a site embedded on this site can access third-party cookies",scenarios:"predefined scenarios",enterpriseDisclaimer:"Your organization manages third-party cookie access for this site",enterpriseTooltip:"This setting is managed by your organization",viewDetails:"View details",enableFlag:"To use this, set {PH1} to Default",tpcdMetadataGrants:"#tpcd-metadata-grants",tpcdHeuristicsGrants:"#tpcd-heuristics-grants"},b=s.i18n.registerUIStrings("panels/security/CookieControlsView.ts",S),k=s.i18n.getLocalizedString.bind(void 0,b),f=s.i18n.getFormatLocalizedString.bind(void 0,b);function x(){a.InspectorView.InspectorView.instance().displayDebuggedTabReloadRequiredWarning(k(S.siteReloadMessage))}class C extends a.Widget.VBox{#e;#t;#i;constructor(e,i=(e,i,s)=>{const r=t.Settings.Settings.instance().createSetting("enterprise-enabled",!(!this.#i||!this.#i.managedBlockThirdPartyCookies||"boolean"!=typeof this.#i.managedBlockThirdPartyCookies)&&this.#i.managedBlockThirdPartyCookies,"Global"),n=t.Settings.Settings.instance().createSetting("cookie-control-override-enabled",!(!this.#i||!this.#i.thirdPartyCookieRestrictionEnabled)&&this.#i.thirdPartyCookieRestrictionEnabled,"Global"),o=t.Settings.Settings.instance().createSetting("grace-period-mitigation-disabled",!this.#i||!this.#i.thirdPartyCookieMetadataEnabled||this.#i.thirdPartyCookieMetadataEnabled,"Global"),l=t.Settings.Settings.instance().createSetting("heuristic-mitigation-disabled",!this.#i||!this.#i.thirdPartyCookieHeuristicsEnabled||this.#i.thirdPartyCookieHeuristicsEnabled,"Global"),d=w`
|
|
2
|
+
<div class="card-header">
|
|
3
|
+
<div class="lhs">
|
|
4
|
+
<div class="text">
|
|
5
|
+
<h2 class="main-text">${k(S.cardTitle)}</h2>
|
|
6
|
+
<div class="body subtext">${k(S.cardDisclaimer)}</div>
|
|
7
|
+
</div>
|
|
8
|
+
${Boolean(r.get())?w`
|
|
9
|
+
<devtools-icon
|
|
10
|
+
tabindex="0"
|
|
11
|
+
.name=${"domain"}
|
|
12
|
+
${c.Directives.ref((e=>{a.Tooltip.Tooltip.install(e,k(S.enterpriseTooltip)),e.role="img"}))}>
|
|
13
|
+
</devtools-icon>`:c.nothing}
|
|
14
|
+
</div>
|
|
15
|
+
<div>
|
|
16
|
+
<devtools-switch
|
|
17
|
+
.checked=${Boolean(n.get())}
|
|
18
|
+
.disabled=${Boolean(r.get())}
|
|
19
|
+
@switchchange=${()=>{e.inputChanged(!n.get(),n)}}
|
|
20
|
+
aria-label="Temporarily limit third-party cookies, only when DevTools is open"
|
|
21
|
+
jslog=${u.toggle(n.name).track({click:!0})}
|
|
22
|
+
>
|
|
23
|
+
</devtools-switch>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
`,h=!!this.#i&&!this.#i.thirdPartyCookieMetadataEnabled||r.get()||!n.get()||!this.#t,g=w`
|
|
27
|
+
<div class="card-row">
|
|
28
|
+
<label class='checkbox-label'>
|
|
29
|
+
<input type='checkbox'
|
|
30
|
+
.disabled=${h}
|
|
31
|
+
.checked=${!h&&!Boolean(o.get())}
|
|
32
|
+
@change=${()=>{e.inputChanged(!o.get(),o)}}
|
|
33
|
+
jslog=${u.toggle(o.name).track({click:!0})}
|
|
34
|
+
>
|
|
35
|
+
<div class="text">
|
|
36
|
+
<div class="body main-text">${k(S.gracePeriodTitle)}</div>
|
|
37
|
+
<div class="body subtext">
|
|
38
|
+
${Boolean(r.get())?f(S.gracePeriodExplanation,{PH1:k(S.gracePeriod)}):this.#i&&!this.#i?.thirdPartyCookieMetadataEnabled?f(S.enableFlag,{PH1:this.getChromeFlagsLink(S.tpcdMetadataGrants)}):f(this.#t?S.gracePeriodExplanation:S.enrollGracePeriod,{PH1:a.Fragment.html`<x-link class="devtools-link" href="https://developers.google.com/privacy-sandbox/cookies/temporary-exceptions/grace-period" jslog=${u.link("grace-period-link").track({click:!0})}>${k(S.gracePeriod)}</x-link>`})}
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
</label>
|
|
42
|
+
</div>
|
|
43
|
+
`,p=!!this.#i&&!this.#i.thirdPartyCookieHeuristicsEnabled||r.get()||!n.get(),m=w`
|
|
44
|
+
<div class="card-row">
|
|
45
|
+
<label class='checkbox-label'>
|
|
46
|
+
<input type='checkbox'
|
|
47
|
+
.disabled=${p}
|
|
48
|
+
.checked=${!p&&!Boolean(l.get())}
|
|
49
|
+
@change=${()=>{e.inputChanged(!l.get(),l)}}
|
|
50
|
+
jslog=${u.toggle(l.name).track({click:!0})}
|
|
51
|
+
>
|
|
52
|
+
<div class='text'>
|
|
53
|
+
<div class="body main-text">${k(S.heuristicTitle)}</div>
|
|
54
|
+
<div class="body subtext">
|
|
55
|
+
${Boolean(r.get())?f(S.heuristicExplanation,{PH1:k(S.scenarios)}):this.#i&&!this.#i.thirdPartyCookieHeuristicsEnabled?f(S.enableFlag,{PH1:this.getChromeFlagsLink(S.tpcdHeuristicsGrants)}):f(S.heuristicExplanation,{PH1:a.Fragment.html`<x-link class="devtools-link" href="https://developers.google.com/privacy-sandbox/cookies/temporary-exceptions/heuristics-based-exceptions" jslog=${u.link("heuristic-link").track({click:!0})}>${k(S.scenarios)}</x-link>`})}
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</label>
|
|
59
|
+
</div>
|
|
60
|
+
`,y=w`
|
|
61
|
+
<div class="enterprise">
|
|
62
|
+
<div class="text body">${k(S.enterpriseDisclaimer)}</div>
|
|
63
|
+
<div class="anchor">
|
|
64
|
+
<devtools-icon
|
|
65
|
+
.name=${"domain"}
|
|
66
|
+
></devtools-icon>
|
|
67
|
+
<devtools-button
|
|
68
|
+
@click=${e.openChromeCookieSettings}
|
|
69
|
+
aria-label="View details of third-party cookie access in Settings"
|
|
70
|
+
.variant=${"outlined"}
|
|
71
|
+
jslog=${u.action("view-details").track({click:!0})}>
|
|
72
|
+
${k(S.viewDetails)}
|
|
73
|
+
</devtools-button>
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
`;v(w`
|
|
77
|
+
<div class="overflow-auto">
|
|
78
|
+
<div class="controls">
|
|
79
|
+
<div class="header">
|
|
80
|
+
<h1>${k(S.viewTitle)}</h1>
|
|
81
|
+
<div class="body">${k(S.viewExplanation)}</div>
|
|
82
|
+
</div>
|
|
83
|
+
<devtools-card class="card-container">
|
|
84
|
+
<div class=${Boolean(r.get())?"card enterprise-disabled":"card"}>
|
|
85
|
+
${d}
|
|
86
|
+
<div>
|
|
87
|
+
<div class="card-row text">
|
|
88
|
+
<h3 class="main-text">${k(S.exceptions)}</h3>
|
|
89
|
+
<div class="body subtext">${k(S.exceptionsExplanation)}</div>
|
|
90
|
+
</div>
|
|
91
|
+
${g}
|
|
92
|
+
${m}
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
95
|
+
</devtools-card>
|
|
96
|
+
${Boolean(r.get())?y:c.nothing}
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
`,s,{host:this})}){super(!0,void 0,e),this.#e=i,this.#t=!1,this.#i=r.Runtime.hostConfig.thirdPartyCookieControls,this.registerRequiredCSS(o.checkboxStylesRaw,y),n.TargetManager.TargetManager.instance().addModelListener(n.ResourceTreeModel.ResourceTreeModel,n.ResourceTreeModel.Events.PrimaryPageChanged,this.#s,this),n.TargetManager.TargetManager.instance().addModelListener(n.ResourceTreeModel.ResourceTreeModel,n.ResourceTreeModel.Events.ResourceAdded,this.checkGracePeriodActive,this),this.checkGracePeriodActive().catch((e=>{console.error(e)})),this.requestUpdate()}performUpdate(){this.#e(this,this,this.contentElement)}inputChanged(e,t){t.set(e),x(),this.requestUpdate()}openChromeCookieSettings(){const e=n.TargetManager.TargetManager.instance().rootTarget();if(null===e)return;const t="chrome://settings/cookies";e.targetAgent().invoke_createTarget({url:t}).then((e=>{e.getError()&&i.InspectorFrontendHost.InspectorFrontendHostInstance.openInNewTab(t)}))}#s(){this.#t=!1,this.checkGracePeriodActive().catch((e=>{console.error(e)}))}async checkGracePeriodActive(e){if(!this.#i||!this.#i.thirdPartyCookieMetadataEnabled)return;if(this.#t)return;const t=n.TargetManager.TargetManager.instance().primaryPageTarget();if(!t)return;const i=[];if(e)i.push(e.data.url);else for(const e of n.TargetManager.TargetManager.instance().models(n.ResourceTreeModel.ResourceTreeModel))e.forAllResources((e=>(i.push(e.url),!0)));const s=await t.storageAgent().invoke_getAffectedUrlsForThirdPartyCookieMetadata({firstPartyUrl:t.inspectedURL(),thirdPartyUrls:i});s.matchedUrls&&s.matchedUrls.length>0&&(this.#t=!0,this.requestUpdate())}getChromeFlagsLink(t){const i=new e.ChromeLink.ChromeLink;return i.textContent=t,i.href="chrome://flags/"+t,i.setAttribute("tabindex","0"),i}}var T=Object.freeze({__proto__:null,CookieControlsView:C,i18nFormatString:f,i18nString:k,showInfobar:x}),E={cssText:`.report{display:flex;flex-direction:column;width:100%;height:100%;max-height:100%;gap:var(--sys-size-6);padding-top:var(--sys-size-5)}.header{display:flex;flex-direction:column;flex-shrink:0;gap:var(--sys-size-2);padding-left:var(--sys-size-6);padding-right:var(--sys-size-6);min-width:var(--sys-size-31);h1{font:var(--sys-typescale-headline4);margin:0}}.body{font:var(--sys-typescale-body4-regular)}.x-link{color:var(--sys-color-primary);text-decoration-line:underline;cursor:pointer}.filter{padding-right:var(--sys-size-6);flex-shrink:0}.filters-container{display:flex;padding-left:var(--sys-size-5)}devtools-data-grid{flex:auto;margin-left:-1px}.empty-report{display:flex;flex-direction:column;align-items:center;gap:var(--sys-size-2);padding:var(--sys-size-11) var(--sys-size-6) 0 var(--sys-size-6);flex-shrink:0;min-width:var(--sys-size-31)}.empty-report-title{font:var(--sys-typescale-headline5)}.cookie-off{width:var(--sys-size-11);height:var(--sys-size-11)}\n/*# sourceURL=${import.meta.resolve("./cookieReportView.css")} */\n`};const{render:I,html:R,Directives:{ref:P}}=c,A={title:"Third-party cookies",body:"This site might not work if third-party cookies and other cookies are limited in Chrome.",learnMoreLink:"Learn more about how third-party cookies are used",name:"Name",domain:"Domain",type:"Type",platform:"Platform",recommendation:"Recommendation",status:"Status",allowed:"Allowed",allowedByException:"Allowed by exception",blocked:"Blocked",unknown:"Unknown",report:"Third-Party Cookie Report",emptyReport:"Not a crumb left",emptyReportExplanation:"No issues with third-party cookies found",gitHubResource:"Review {PH1} from third-party site",guidance:"guidance",gracePeriod:"Review {PH1}. Grace period exception is active.",reportedIssues:"reported issues",heuristics:"Action needed later. Heuristics based exception is active.",other:"Contact third-party site for more info",gitHubResourceInsightTypeString:"Github",gracePeriodInsightTypeString:"Grace Period",heuristicsInisightTypeString:"Heuristics",otherInsightTypeString:"Other",adCookieTypeString:"Advertising",analyticsCookieTypeString:"Analytics",socialCookieTypeString:"Social",videoCookieTypeString:"Video",utilityCookieTypeString:"Utility",hostingCookieTypeString:"Hosting",marketingCookieTypeString:"Marketing",customerSuccessCookieTypeString:"Customer Success",contentCookieTypeString:"Content",cdnCookieTypeString:"CDN",tagManagerCookieTypeString:"Tag Manager",consentProviderCookieTypeString:"Consent Provider",otherCookieTypeString:"Other",showRequestsWithThisCookie:"Show requests with this cookie"},L=s.i18n.registerUIStrings("panels/security/CookieReportView.ts",A),M=s.i18n.getLocalizedString.bind(void 0,L);class H extends a.Widget.VBox{#r;namedBitSetFilterUI;#n=new Map;#e;filterItems=[];searchText;constructor(e,i=(e,t,i)=>{I(R`
|
|
100
|
+
<div class="report overflow-auto">
|
|
101
|
+
<div class="header">
|
|
102
|
+
<h1>${M(A.title)}</h1>
|
|
103
|
+
<div class="body">${M(A.body)} <x-link class="devtools-link" href="https://developers.google.com/privacy-sandbox/cookies/prepare/audit-cookies" jslog=${u.link("learn-more").track({click:!0})}>${M(A.learnMoreLink)}</x-link></div>
|
|
104
|
+
</div>
|
|
105
|
+
${e.cookieRows.length>0?R`
|
|
106
|
+
<div class="filters-container">
|
|
107
|
+
<devtools-toolbar>
|
|
108
|
+
<devtools-toolbar-input
|
|
109
|
+
type="filter"
|
|
110
|
+
style="flex-grow: 0.4;"
|
|
111
|
+
@change=${e.onSearchFilterChanged}
|
|
112
|
+
value=${e.searchText}
|
|
113
|
+
></devtools-toolbar-input>
|
|
114
|
+
</devtools-toolbar>
|
|
115
|
+
<devtools-named-bit-set-filter
|
|
116
|
+
class="filter"
|
|
117
|
+
aria-label="Third-party cookie status filters"
|
|
118
|
+
@filterChanged=${e.onFilterChanged}
|
|
119
|
+
.options=${{items:e.filterItems}}
|
|
120
|
+
${P((e=>{e instanceof a.FilterBar.NamedBitSetFilterUIElement&&(t.namedBitSetFilterUI=e.getOrCreateNamedBitSetFilterUI())}))}
|
|
121
|
+
></devtools-named-bit-set-filter>
|
|
122
|
+
</div>
|
|
123
|
+
<!-- @ts-ignore -->
|
|
124
|
+
<devtools-data-grid
|
|
125
|
+
name=${M(A.report)}
|
|
126
|
+
striped
|
|
127
|
+
.filters=${e.filters}
|
|
128
|
+
@sort=${e.onSortingChanged}
|
|
129
|
+
@contextmenu=${e.populateContextMenu.bind(e)}
|
|
130
|
+
>
|
|
131
|
+
<table>
|
|
132
|
+
<tr>
|
|
133
|
+
<th id="name" sortable>${M(A.name)}</th>
|
|
134
|
+
<th id="domain" sortable>${M(A.domain)}</th>
|
|
135
|
+
<th id="type" sortable>${M(A.type)}</th>
|
|
136
|
+
<th id="platform" sortable>${M(A.platform)}</th>
|
|
137
|
+
<th id="status" sortable>${M(A.status)}</th>
|
|
138
|
+
<th id="recommendation" sortable>${M(A.recommendation)}</th>
|
|
139
|
+
</tr>
|
|
140
|
+
${[...e.cookieRows.values()].map((e=>R`
|
|
141
|
+
<tr data-name=${e.name} data-domain=${e.domain}>
|
|
142
|
+
<td>${e.name}</td>
|
|
143
|
+
<td>${e.domain}</td>
|
|
144
|
+
<td>${H.getCookieTypeString(e.type)}</td>
|
|
145
|
+
<td>${e.platform??M(A.unknown)}</td>
|
|
146
|
+
<td>${H.getStatusString(e.status)}</td>
|
|
147
|
+
<td>${H.getRecommendation(e.domain,e.insight)}</td>
|
|
148
|
+
</tr>
|
|
149
|
+
`))}
|
|
150
|
+
</table>
|
|
151
|
+
</devtools-data-grid>
|
|
152
|
+
`:R`
|
|
153
|
+
<div class="empty-report">
|
|
154
|
+
<devtools-icon
|
|
155
|
+
class="cookie-off"
|
|
156
|
+
.name=${"cookie_off"}
|
|
157
|
+
></devtools-icon>
|
|
158
|
+
<div class="empty-report-title">
|
|
159
|
+
${M(A.emptyReport)}
|
|
160
|
+
</div>
|
|
161
|
+
<div class="body">
|
|
162
|
+
${M(A.emptyReportExplanation)}
|
|
163
|
+
</div>
|
|
164
|
+
</div>
|
|
165
|
+
`}
|
|
166
|
+
|
|
167
|
+
</div>
|
|
168
|
+
`,i,{host:this})}){super(!0,void 0,e),this.#e=i,this.registerRequiredCSS(E),this.searchText=t.Settings.Settings.instance().createSetting("cookie-report-search-query","").get(),n.TargetManager.TargetManager.instance().addModelListener(n.ResourceTreeModel.ResourceTreeModel,n.ResourceTreeModel.Events.PrimaryPageChanged,this.#s,this),this.#r=g.IssuesManager.IssuesManager.instance(),this.#r.addEventListener("IssueAdded",this.#o,this);for(const e of this.#r.issues())e instanceof g.CookieIssue.CookieIssue&&this.#a(e);this.requestUpdate()}performUpdate(){this.filterItems=this.#c();const e={cookieRows:[...this.#n.values()].filter((e=>!this.namedBitSetFilterUI||this.namedBitSetFilterUI.accept(H.getStatusString(e.status)))),filters:[{key:"name,domain",regex:RegExp(h.StringUtilities.escapeForRegExp(this.searchText),"i"),negative:!1}],searchText:this.searchText,filterItems:this.filterItems,onSearchFilterChanged:e=>this.onSearchFilterChanged(e),onFilterChanged:()=>this.requestUpdate(),onSortingChanged:()=>this.requestUpdate(),populateContextMenu:this.populateContextMenu.bind(this)};this.#e(e,this,this.contentElement)}#s(){this.#n.clear(),this.namedBitSetFilterUI=void 0,this.requestUpdate()}#o(e){if(e.data.issue instanceof g.CookieIssue.CookieIssue){if(this.#n.has(e.data.issue.cookieId()))return;this.#a(e.data.issue),this.requestUpdate()}}#a(e){const t=e.makeCookieReportEntry();t&&this.#n.set(e.cookieId(),t)}onSearchFilterChanged(e){this.searchText=e.detail?e.detail:"",t.Settings.Settings.instance().createSetting("cookie-report-search-query","").set(this.searchText),this.requestUpdate()}#c(){const e=[];return this.#n.values().some((e=>0===e.status))&&e.push({name:A.blocked,label:()=>M(A.blocked),title:A.blocked,jslogContext:"blocked"}),this.#n.values().some((e=>1===e.status))&&e.push({name:A.allowed,label:()=>M(A.allowed),title:A.allowed,jslogContext:"allowed"}),this.#n.values().some((e=>2===e.status||3===e.status))&&e.push({name:A.allowedByException,label:()=>M(A.allowedByException),title:A.allowedByException,jslogContext:"allowed-by-exception"}),e}populateContextMenu(e){const{menu:i,element:s}=e.detail,{domain:r,name:n}=s?.dataset;r&&n&&i.revealSection().appendItem(M(A.showRequestsWithThisCookie),(()=>{const e=p.UIFilter.UIRequestFilter.filters([{filterType:p.UIFilter.FilterType.CookieDomain,filterValue:r},{filterType:p.UIFilter.FilterType.CookieName,filterValue:n}]);t.Revealer.reveal(e)}),{jslogContext:"show-requests-with-this-cookie"})}static getStatusString(e){switch(e){case 0:return M(A.blocked);case 2:case 3:return M(A.allowedByException);case 1:return M(A.allowed)}}static getInsightTypeString(e){if(!e)return M(A.otherInsightTypeString);switch(e.type){case"GitHubResource":return M(A.gitHubResourceInsightTypeString);case"GracePeriod":return M(A.gracePeriodInsightTypeString);case"Heuristics":return M(A.heuristicsInisightTypeString);default:return M(A.otherInsightTypeString)}}static getRecommendation(e,t){const i=document.createElement("div");return I(H.getRecommendationText(e,t),i,{host:this}),i}static getRecommendationText(e,i){if(!i)return R`${M(A.other)}`;switch(i.type){case"GitHubResource":{const e=a.XLink.XLink.create(i.tableEntryUrl?i.tableEntryUrl:"https://github.com/privacysandbox/privacy-sandbox-dev-support/blob/main/3pc-migration-readiness.md",M(A.guidance),void 0,void 0,"readiness-list-link");return R`${s.i18n.getFormatLocalizedString(L,A.gitHubResource,{PH1:e})}`}case"GracePeriod":{const i=n.TargetManager.TargetManager.instance().primaryPageTarget()?.inspectedURL(),r=a.XLink.XLink.create("https://developers.google.com/privacy-sandbox/cookies/dashboard?url="+(i?t.ParsedURL.ParsedURL.fromString(i)?.host+"+":"")+("."===e.charAt(0)?e.substring(1):e),M(A.reportedIssues),void 0,void 0,"compatibility-lookup-link");return R`${s.i18n.getFormatLocalizedString(L,A.gracePeriod,{PH1:r})}`}case"Heuristics":return R`${M(A.heuristics)}`;default:return R`${M(A.other)}`}}static getCookieTypeString(e){if(!e)return M(A.otherCookieTypeString);switch(e){case"ad":return M(A.adCookieTypeString);case"analytics":return M(A.analyticsCookieTypeString);case"social":return M(A.socialCookieTypeString);case"video":return M(A.videoCookieTypeString);case"utility":return M(A.utilityCookieTypeString);case"hosting":return M(A.hostingCookieTypeString);case"marketing":return M(A.marketingCookieTypeString);case"customer-success":return M(A.customerSuccessCookieTypeString);case"content":return M(A.contentCookieTypeString);case"cdn":return M(A.cdnCookieTypeString);case"tag-manager":return M(A.tagManagerCookieTypeString);case"consent-provider":return M(A.consentProviderCookieTypeString);default:return M(A.otherCookieTypeString)}}}var D=Object.freeze({__proto__:null,CookieReportView:H,i18nString:M});const U={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}"},F=s.i18n.registerUIStrings("panels/security/SecurityModel.ts",U),$=s.i18n.getLocalizedString.bind(void 0,F),V=s.i18n.getLazilyComputedLocalizedString.bind(void 0,F);class O extends n.SDKModel.SDKModel{dispatcher;securityAgent;constructor(e){super(e),this.dispatcher=new _(this),this.securityAgent=e.securityAgent(),e.registerSecurityDispatcher(this.dispatcher),this.securityAgent.invoke_enable()}resourceTreeModel(){return this.target().model(n.ResourceTreeModel.ResourceTreeModel)}networkManager(){return this.target().model(n.NetworkManager.NetworkManager)}}function N(e,t){const i=["info","insecure-broken","insecure","neutral","secure","unknown"];return i.indexOf(e)-i.indexOf(t)}var B;n.SDKModel.SDKModel.register(O,{capabilities:512,autostart:!1}),function(e){e.VisibleSecurityStateChanged="VisibleSecurityStateChanged"}(B||(B={}));const z={unknown:V(U.theSecurityOfThisPageIsUnknown),insecure:V(U.thisPageIsNotSecure),neutral:V(U.thisPageIsNotSecure),secure:V(U.thisPageIsSecureValidHttps),"insecure-broken":V(U.thisPageIsNotSecureBrokenHttps)};class G{securityState;certificateSecurityState;safetyTipInfo;securityStateIssueIds;constructor(e,t,i,s){this.securityState=e,this.certificateSecurityState=t?new q(t):null,this.safetyTipInfo=i?new j(i):null,this.securityStateIssueIds=s}}class q{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?$(U.keyExchangeWithGroup,{PH1:this.keyExchange,PH2:this.keyExchangeGroup}):this.keyExchangeGroup:this.keyExchange}getCipherFullName(){return this.mac?$(U.cipherWithMAC,{PH1:this.cipher,PH2:this.mac}):this.cipher}}class j{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 _{model;constructor(e){this.model=e}securityStateChanged(e){}visibleSecurityStateChanged({visibleSecurityState:e}){const t=new G(e.securityState,e.certificateSecurityState||null,e.safetyTipInfo||null,e.securityStateIssueIds);this.model.dispatchEventToListeners(B.VisibleSecurityStateChanged,t)}certificateError(e){}}var K=Object.freeze({__proto__:null,CertificateSecurityState:q,get Events(){return B},PageVisibleSecurityState:G,SecurityModel:O,SecurityStyleExplanation:W,SummaryMessages:z,securityStateCompare:N}),X={cssText:`.lock-icon,\n.security-property{height:var(--sys-size-9);width:var(--sys-size-9)}.lock-icon-secure{color:var(--sys-color-green)}.lock-icon-insecure{color:var(--sys-color-error)}.lock-icon-insecure-broken{color:var(--sys-color-error)}.security-property-secure{color:var(--sys-color-green)}.security-property-neutral{color:var(--sys-color-error)}.security-property-insecure{color:var(--sys-color-error)}.security-property-insecure-broken{color:var(--sys-color-error)}.security-property-info{color:var(--sys-color-on-surface-subtle)}.security-property-unknown{color:var(--sys-color-on-surface-subtle)}.url-scheme-secure{color:var(--sys-color-green)}.url-scheme-neutral,\n.url-scheme-insecure,\n.url-scheme-insecure-broken{color:var(--sys-color-error)}\n/*# sourceURL=${import.meta.resolve("./lockIcon.css")} */\n`},Y={cssText:`.devtools-link{display:inline-block}.security-main-view{overflow:hidden auto;background-color:var(--sys-color-cdt-base-container)}.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{color:var(--sys-color-state-disabled)}@media (forced-colors: active){.security-summary-neutral .lock-icon-neutral{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{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(--sys-color-cdt-base-container);border-color:var(--sys-color-neutral-outline)}.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(--sys-color-cdt-base-container);border-color:var(--sys-color-neutral-outline);user-select:text}.security-summary-secure .triangle-pointer,\n.security-summary-secure .security-summary-text,\n.security-explanation-title-secure{color:var(--sys-color-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(--sys-color-error)}.security-explanation-list{padding-bottom:16px}.security-explanation-list:empty{border-bottom:none;padding:0}.security-explanations-main{margin-top:-5px;background-color:var(--sys-color-cdt-base-container);border-bottom:1px solid var(--sys-color-divider)}.security-explanations-extra{background-color:transparent}.security-explanation{padding:11px;display:flex;white-space:nowrap;border:none;color:var(--sys-color-token-subtle)}.security-explanation-text{flex:auto;white-space:normal;max-width:400px}.origin-button{margin-top:var(--sys-size-4)}.security-explanation .security-property{flex:none;width:16px;height:16px;margin-right:16px}.security-explanation-title{color:var(--sys-color-token-subtle);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=${import.meta.resolve("./mainView.css")} */\n`};class J extends a.TreeOutline.TreeElement{constructor(e="",t=!1,i){super(e,t,i),a.ARIAUtils.setLabel(this.listItemElement,e)}get elemId(){return"overview"}showElement(){throw new Error("Unimplemented Method")}onselect(e){if(e){const e=this.elemId;this.listItemElement.dispatchEvent(new CustomEvent("update-sidebar-selection",{bubbles:!0,composed:!0,detail:{id:e}})),this.showElement()}return!1}}class Q extends Event{static eventName="showorigin";origin;constructor(e){super(Q.eventName,{bubbles:!0,composed:!0}),this.origin=e}}class Z extends J{#l;#d;#u=null;constructor(e,t,i=null){super(),this.#d=t,this.#u=i,this.listItemElement.classList.add(e),this.#l=null,this.setSecurityState("unknown")}setSecurityState(e){this.#l=e,this.#d(this)}securityState(){return this.#l}origin(){return this.#u}showElement(){this.listItemElement.dispatchEvent(new Q(this.#u))}}var ee={cssText:`.title-section{padding:16px 0 24px;border-bottom:1px solid var(--sys-color-divider)}.title-section-header{padding-left:16px;padding-bottom:10px;font-size:14px}.security-origin-view{overflow:hidden scroll;display:block;user-select:text}.security-origin-view .origin-view-section{border-bottom:1px solid var(--sys-color-divider);padding:12px 6px 12px 24px;font-size:12px}.origin-view-notes{margin-top:2px;color:var(--sys-color-token-subtle)}.origin-view-section-notes{margin-top:6px;color:var(--sys-color-token-subtle)}.security-origin-view .origin-display{font-size:12px;padding-left:var(--sys-size-8);display:flex;align-items:center}.title-section > .view-network-button{padding:6px 0 0 16px}.security-origin-view .origin-display devtools-icon{width:var(--sys-size-8);height:var(--sys-size-8);margin-right:var(--sys-size-6)}.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(--sys-color-token-subtle);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(--sys-color-divider);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(--sys-color-state-disabled)}.security-origin-view .details-table .san-entry{display:block}.security-origin-view .truncated-san .truncated-entry{display:none}.origin-view-section:last-child{border-bottom:none}.devtools-link{display:inline-flex}\n/*# sourceURL=${import.meta.resolve("./originView.css")} */\n`};class te extends J{constructor(e,t){super(e,!1,t),this.setLeadingIcons([m.Icon.create("gear","cookie-icon")])}get elemId(){return"controls"}showElement(){this.listItemElement.dispatchEvent(new CustomEvent("showFlagControls",{bubbles:!0,composed:!0}))}}class ie extends J{constructor(e,t){super(e,!1,t),this.setLeadingIcons([m.Icon.create("cookie","cookie-icon")])}get elemId(){return"report"}showElement(){this.listItemElement.dispatchEvent(new CustomEvent("showCookieReport",{bubbles:!0,composed:!0}))}}var se={cssText:`.tree-outline-disclosure{width:100%}.tree-outline li.security-group-list-item{& + ol{padding-left:0}&::before{display:none}&:not(:first-child){margin-top:var(--sys-size-6)}}.security-main-view-reload-message{color:var(--sys-color-token-subtle)}.tree-outline li.security-sidebar-origins + .children > li{&.selected{.url-scheme-secure{color:var(--sys-color-green)}.url-scheme-neutral,\n .url-scheme-insecure,\n .url-scheme-insecure-broken{color:var(--sys-color-error)}}}.security-main-view-reload-message,\n.tree-outline li.security-sidebar-origins,\n.tree-outline li.security-group-list-item,\n.tree-outline span{font:var(--sys-typescale-body4-medium);&:hover:not(:has(dt-checkbox)) .selection{background:transparent}}.tree-outline li{& .leading-icons{flex:none}& .tree-element-title,\n .highlighted-url,\n .title{overflow:hidden;text-overflow:ellipsis}}\n/*# sourceURL=${import.meta.resolve("./sidebar.css")} */\n`};const re={security:"Security",privacy:"Privacy",cookieReport:"Third-party cookies",flagControls:"Controls",mainOrigin:"Main origin",nonsecureOrigins:"Non-secure origins",secureOrigins:"Secure origins",unknownCanceled:"Unknown / canceled",overview:"Overview",reloadToViewDetails:"Reload to view details"},ne=s.i18n.registerUIStrings("panels/security/SecurityPanelSidebar.ts",re),oe=s.i18n.getLocalizedString.bind(void 0,ne);class ae extends a.Widget.VBox{#h;sidebarTree;#g;#p;securityOverviewElement;#m;cookieReportTreeElement;#y;#v;#w;constructor(e){if(super(void 0,void 0,e),this.#h=t.Settings.Settings.instance().createSetting("security-last-selected-element-path",""),this.#w=null,this.sidebarTree=new a.TreeOutline.TreeOutlineInShadow("NavigationTree"),this.sidebarTree.registerRequiredCSS(X,se),this.sidebarTree.element.classList.add("security-sidebar"),this.contentElement.appendChild(this.sidebarTree.element),r.Runtime.hostConfig.devToolsPrivacyUI?.enabled){const e=this.#S(oe(re.privacy),"privacy");this.#m=new te(oe(re.flagControls),"cookie-flag-controls"),e.appendChild(this.#m),this.cookieReportTreeElement=new ie(oe(re.cookieReport),"cookie-report"),e.appendChild(this.cookieReportTreeElement),""===this.#h.get()&&this.#h.set(this.#m.elemId)}const i=oe(re.security),s=this.#S(i,"security");this.securityOverviewElement=new Z("security-main-view-sidebar-tree-item",this.#d),this.securityOverviewElement.tooltip=oe(re.overview),s.appendChild(this.securityOverviewElement),this.#g=new Map([[ke.MainOrigin,{title:oe(re.mainOrigin)}],[ke.NonSecure,{title:oe(re.nonsecureOrigins),icon:ve("insecure","lock-icon lock-icon-insecure")}],[ke.Secure,{title:oe(re.secureOrigins),icon:ve("secure","lock-icon lock-icon-secure")}],[ke.Unknown,{title:oe(re.unknownCanceled),icon:ve("unknown","lock-icon lock-icon-unknown")}]]),this.#p=new Map;for(const e of Object.values(ke)){const t=this.#b(this.#g.get(e)?.title,this.#g.get(e)?.icon);this.#p.set(e,t),s.appendChild(t)}this.#v=new a.TreeOutline.TreeElement(oe(re.reloadToViewDetails)),this.#v.selectable=!1,this.#v.listItemElement.classList.add("security-main-view-reload-message");this.#p.get(ke.MainOrigin).appendChild(this.#v),this.#k(),this.#y=new Map,this.element.addEventListener("update-sidebar-selection",(e=>{const t=e.detail.id;this.#h.set(t)})),this.showLastSelectedElement()}showLastSelectedElement(){this.#m&&this.#h.get()===this.#m.elemId?(this.#m.select(),this.#m.showElement()):this.cookieReportTreeElement&&this.#h.get()===this.cookieReportTreeElement.elemId?(this.cookieReportTreeElement.select(),this.cookieReportTreeElement.showElement()):(this.securityOverviewElement.select(),this.securityOverviewElement.showElement())}#S(e,t){const i=new a.TreeOutline.TreeElement(e,!0,t);return i.listItemElement.classList.add("security-group-list-item"),i.setCollapsible(!1),i.selectable=!1,this.sidebarTree.appendChild(i),a.ARIAUtils.markAsHeading(i.listItemElement,3),a.ARIAUtils.setLabel(i.childrenListElement,e),i}#f(e){return this.#g.get(e)?.title}#x(e){return this.#p.get(e)}#b(e,t){const i=new a.TreeOutline.TreeElement(e,!0);return i.selectable=!1,i.expand(),i.listItemElement.classList.add("security-sidebar-origins"),t&&i.setLeadingIcons([t]),a.ARIAUtils.setLabel(i.childrenListElement,e),i}toggleOriginsList(e){for(const t of this.#p.values())t.hidden=e}addOrigin(e,t){this.#v.hidden=!0;const i=new Z("security-sidebar-tree-item",this.#d,e);i.tooltip=e,this.#y.set(e,i),this.updateOrigin(e,t)}setMainOrigin(e){this.#w=e}get mainOrigin(){return this.#w}get originGroups(){return this.#p}updateOrigin(e,t){const i=this.#y.get(e);let s;if(i.setSecurityState(t),e===this.#w)s=this.#p.get(ke.MainOrigin),s.title=oe(re.mainOrigin),s.setLeadingIcons([we(t,`lock-icon lock-icon-${t}`)]),a.ARIAUtils.setLabel(s.childrenListElement,s.title);else switch(t){case"secure":s=this.#x(ke.Secure);break;case"unknown":s=this.#x(ke.Unknown);break;default:s=this.#x(ke.NonSecure)}const r=i.parent;r!==s&&(r&&(r.removeChild(i),0===r.childCount()&&(r.hidden=!0)),s.appendChild(i),s.hidden=!1)}#k(){for(const[e,t]of this.#p)if(e===ke.MainOrigin){for(let e=t.childCount()-1;e>0;e--)t.removeChildAtIndex(e);t.title=this.#f(ke.MainOrigin),t.hidden=!1,this.#v.hidden=!1}else t.removeChildren(),t.hidden=!0}clearOrigins(){this.#k(),this.#y.clear()}focus(){this.sidebarTree.focus()}#d(e){if(e instanceof Z){const t=e.securityState()??"unknown",i=e.listItemElement.classList.contains("security-main-view-sidebar-tree-item"),s=i?we(t,`lock-icon lock-icon-${t}`):ve(t,`security-property security-property-${t}`),r=i?(()=>{const e=document.createElement("span");return e.classList.add("title"),e.textContent=oe(re.overview),e})():Se(e.origin()??h.DevToolsPath.EmptyUrlString,t);e.setLeadingIcons([s]),e.listItemElement.lastChild&&e.listItemElement.removeChild(e.listItemElement.lastChild),e.listItemElement.appendChild(r)}}}const{widgetConfig:ce}=a.Widget,le={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"},de=s.i18n.registerUIStrings("panels/security/SecurityPanel.ts",le),ue=s.i18n.getLocalizedString.bind(void 0,de);let he;const ge=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"]]),pe="lock",me="warning",ye="indeterminate-question-box";function ve(e,t){let i;switch(e){case"neutral":case"insecure":case"insecure-broken":i=me;break;case"secure":i=pe;break;case"info":case"unknown":i=ye}return m.Icon.create(i,t)}function we(e,t){let i;switch(e){case"unknown":case"neutral":i=ye;break;case"insecure":case"insecure-broken":i=me;break;case"secure":i=pe;break;case"info":throw new Error(`Unexpected security state ${e}`)}return m.Icon.create(i,t)}function Se(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");r.classList.add("highlighted-url");const n=e.substr(0,s),o=e.substr(s+3);return r.createChild("span","url-scheme-"+t).textContent=n,r.createChild("span","url-scheme-separator").textContent=i,r.createChild("span").textContent=o,r}class be extends a.Panel.Panel{view;mainView;sidebar;lastResponseReceivedForLoaderId;origins;filterRequestCounts;visibleView;eventListeners;securityModel;splitWidget;constructor(e=(e,t,i)=>{l(d`
|
|
169
|
+
<devtools-split-view direction="column" name="security"
|
|
170
|
+
${a.Widget.widgetRef(a.SplitWidget.SplitWidget,(e=>{t.splitWidget=e}))}>
|
|
171
|
+
<devtools-widget
|
|
172
|
+
slot="sidebar"
|
|
173
|
+
.widgetConfig=${ce(ae)}
|
|
174
|
+
@showCookieReport=${()=>t.setVisibleView(new H)}
|
|
175
|
+
@showFlagControls=${()=>t.setVisibleView(new C)}
|
|
176
|
+
${a.Widget.widgetRef(ae,(e=>{t.sidebar=e}))}>
|
|
177
|
+
</devtools-widget>
|
|
178
|
+
</devtools-split-view>`,i,{host:this})}){super("security"),this.view=e,this.update(),this.sidebar.setMinimumSize(100,25),this.sidebar.element.classList.add("panel-sidebar"),this.sidebar.element.setAttribute("jslog",`${u.pane("sidebar").track({resize:!0})}`),this.mainView=new fe,this.mainView.panel=this,this.element.addEventListener(Q.eventName,(e=>{e.origin?this.showOrigin(e.origin):this.setVisibleView(this.mainView)})),this.lastResponseReceivedForLoaderId=new Map,this.origins=new Map,this.filterRequestCounts=new Map,this.visibleView=null,this.eventListeners=[],this.securityModel=null,n.TargetManager.TargetManager.instance().observeModels(O,this,{scoped:!0}),n.TargetManager.TargetManager.instance().addModelListener(n.ResourceTreeModel.ResourceTreeModel,n.ResourceTreeModel.Events.PrimaryPageChanged,this.onPrimaryPageChanged,this),this.sidebar.showLastSelectedElement()}static instance(e={forceNew:null}){const{forceNew:t}=e;return he&&!t||(he=new be),he}static createCertificateViewerButtonForOrigin(e,t){const s=a.UIUtils.createTextButton(e,(async e=>{e.consume();const s=await n.NetworkManager.MultitargetNetworkManager.instance().getCertificate(t);s.length>0&&i.InspectorFrontendHost.InspectorFrontendHostInstance.showCertificateViewer(s)}),{className:"origin-button",jslogContext:"security.view-certificate-for-origin",title:e});return a.ARIAUtils.markAsButton(s),s}static createCertificateViewerButtonForCert(e,t){const s=a.UIUtils.createTextButton(e,(e=>{e.consume(),i.InspectorFrontendHost.InspectorFrontendHostInstance.showCertificateViewer(t)}),{className:"origin-button",jslogContext:"security.view-certificate"});return a.ARIAUtils.markAsButton(s),s}update(){this.view({panel:this},this,this.contentElement)}updateVisibleSecurityState(e){this.sidebar.securityOverviewElement.setSecurityState(e.securityState),this.mainView.updateVisibleSecurityState(e)}onVisibleSecurityStateChanged({data:e}){this.updateVisibleSecurityState(e)}showOrigin(e){const t=this.origins.get(e);t&&(t.originView||(t.originView=new xe(this,e,t)),this.setVisibleView(t.originView))}wasShown(){super.wasShown(),this.visibleView||this.sidebar.showLastSelectedElement()}focus(){this.sidebar.focus()}setVisibleView(e){this.visibleView!==e&&(this.visibleView&&this.visibleView.detach(),this.visibleView=e,e&&this.splitWidget.setMainWidget(e))}onResponseReceived(e){const i=e.data.request;i.resourceType()===t.ResourceType.resourceTypes.Document&&i.loaderId&&this.lastResponseReceivedForLoaderId.set(i.loaderId,i)}processRequest(e){const i=t.ParsedURL.ParsedURL.extractOrigin(e.url());if(!i)return;let s=e.securityState();"blockable"!==e.mixedContentType&&"optionally-blockable"!==e.mixedContentType||(s="insecure");const r=this.origins.get(i);if(r){if(N(s,r.securityState)<0){r.securityState=s;const t=e.securityDetails();t&&(r.securityDetails=t),this.sidebar.updateOrigin(i,s),r.originView&&r.originView.setSecurityState(s)}}else{const t={securityState:s,securityDetails:e.securityDetails(),loadedFromCache:e.cached(),originView:void 0};this.origins.set(i,t),this.sidebar.addOrigin(i,s)}}onRequestFinished(e){const t=e.data;this.updateFilterRequestCounts(t),this.processRequest(t)}updateFilterRequestCounts(e){if("none"===e.mixedContentType)return;let t="all";e.wasBlocked()?t="blocked":"blockable"===e.mixedContentType?t="block-overridden":"optionally-blockable"===e.mixedContentType&&(t="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}modelAdded(e){if(e.target()!==e.target().outermostTarget())return;this.securityModel=e;const i=e.resourceTreeModel(),s=e.networkManager();this.eventListeners.length&&t.EventTarget.removeEventListeners(this.eventListeners),this.eventListeners=[e.addEventListener(B.VisibleSecurityStateChanged,this.onVisibleSecurityStateChanged,this),i.addEventListener(n.ResourceTreeModel.Events.InterstitialShown,this.onInterstitialShown,this),i.addEventListener(n.ResourceTreeModel.Events.InterstitialHidden,this.onInterstitialHidden,this),s.addEventListener(n.NetworkManager.Events.ResponseReceived,this.onResponseReceived,this),s.addEventListener(n.NetworkManager.Events.RequestFinished,this.onRequestFinished,this)],i.isInterstitialShowing&&this.onInterstitialShown()}modelRemoved(e){this.securityModel===e&&(this.securityModel=null,t.EventTarget.removeEventListeners(this.eventListeners))}onPrimaryPageChanged(e){const{frame:i}=e.data,s=this.lastResponseReceivedForLoaderId.get(i.loaderId);this.sidebar.showLastSelectedElement(),this.sidebar.clearOrigins(),this.origins.clear(),this.lastResponseReceivedForLoaderId.clear(),this.filterRequestCounts.clear(),this.mainView.refreshExplanations();const r=t.ParsedURL.ParsedURL.extractOrigin(s?s.url():i.url);this.sidebar.setMainOrigin(r),s&&this.processRequest(s)}onInterstitialShown(){this.sidebar.showLastSelectedElement(),this.sidebar.toggleOriginsList(!0)}onInterstitialHidden(){this.sidebar.toggleOriginsList(!1)}}var ke;!function(e){e.MainOrigin="MainOrigin",e.NonSecure="NonSecure",e.Secure="Secure",e.Unknown="Unknown"}(ke||(ke={}));class fe extends a.Widget.VBox{panel;summarySection;securityExplanationsMain;securityExplanationsExtra;lockSpectrum;summaryText;explanations;securityState;constructor(e){super(void 0,void 0,e),this.registerRequiredCSS(X,Y),this.element.setAttribute("jslog",`${u.pane("security.main-view")}`),this.setMinimumSize(200,100),this.contentElement.classList.add("security-main-view"),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=ue(le.securityOverview),a.ARIAUtils.markAsHeading(t,1);const i=this.summarySection.createChild("div","lock-spectrum");this.lockSpectrum=new Map([["secure",i.appendChild(we("secure","lock-icon lock-icon-secure"))],["neutral",i.appendChild(we("neutral","lock-icon lock-icon-neutral"))],["insecure",i.appendChild(we("insecure","lock-icon lock-icon-insecure"))]]),a.Tooltip.Tooltip.install(this.getLockSpectrumDiv("secure"),ue(le.secure)),a.Tooltip.Tooltip.install(this.getLockSpectrumDiv("neutral"),ue(le.info)),a.Tooltip.Tooltip.install(this.getLockSpectrumDiv("insecure"),ue(le.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"),a.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);const s=ve(t.securityState,"security-property security-property-"+t.securityState);i.appendChild(s);const r=i.createChild("div","security-explanation-text"),n=r.createChild("div","security-explanation-title");if(t.title?(n.createChild("span").textContent=t.title+" - ",n.createChild("span","security-explanation-title-"+t.securityState).textContent=t.summary):n.textContent=t.summary,r.createChild("div").textContent=t.description,t.certificate.length&&r.appendChild(be.createCertificateViewerButtonForCert(ue(le.viewCertificate),t.certificate)),t.recommendations?.length){const e=r.createChild("ul","security-explanation-recommendations");for(const i of t.recommendations)e.createChild("li").textContent=i}return r}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"),a.Tooltip.Tooltip.install(this.getLockSpectrumDiv("insecure"),ue(le.notSecure))):"insecure-broken"===this.securityState&&(this.getLockSpectrumDiv("insecure").classList.add("lock-icon-insecure-broken"),this.getLockSpectrumDiv("insecure").classList.remove("lock-icon-insecure"),a.Tooltip.Tooltip.install(this.getLockSpectrumDiv("insecure"),ue(le.notSecureBroken)));const{summary:t,explanations:i}=this.getSecuritySummaryAndExplanations(e);this.summaryText.textContent=t||z[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=ue(le.thisPageIsDangerousFlaggedBy),r.unshift(new W("insecure",void 0,ue(le.flaggedByGoogleSafeBrowsing),ue(le.toCheckThisPagesStatusVisit)));else{if(i.includes("is-error-page")&&null===e.certificateSecurityState?.certificateNetworkError)return s=ue(le.thisIsAnErrorPage),{summary:s,explanations:r};"insecure-broken"===t&&i.includes("scheme-is-not-cryptographic")&&(s=s||ue(le.thisPageIsInsecureUnencrypted))}return i.includes("scheme-is-not-cryptographic")?("neutral"!==t||i.includes("insecure-origin")||(s=ue(le.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=`${ue(le.chromeHasDeterminedThatThisSiteS)}\n\n${ue(le.ifYouBelieveThisIsShownIn)}`;n.push({summary:ue(le.thisPageIsSuspicious),description:e})}else if(s.includes("lookalike")&&r?.safeUrl){const e=new URL(r.safeUrl).hostname,t=`${ue(le.thisSitesHostnameLooksSimilarToP,{PH1:e})}\n\n${ue(le.ifYouBelieveThisIsShownInErrorSafety)}`;n.push({summary:ue(le.possibleSpoofingUrl),description:t})}return n.length>0&&(t=t||ue(le.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=ue(le.certificate);if(i?.certificateHasSha1Signature){const e=ue(le.insecureSha),s=ue(le.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,ue(le.subjectAlternativeNameMissing),ue(le.theCertificateForThisSiteDoesNot),i.certificate,"none")),i&&null!==i.certificateNetworkError?t.push(new W("insecure",r,ue(le.missing),ue(le.thisSiteIsMissingAValidTrusted,{PH1:i.certificateNetworkError}),i.certificate,"none")):i&&!i.certificateHasSha1Signature&&t.push(new W("secure",r,ue(le.validAndTrusted),ue(le.theConnectionToThisSiteIsUsingA,{PH1:i.issuer}),i.certificate,"none")),s.includes("pkp-bypassed")&&t.push(new W("info",r,ue(le.publickeypinningBypassed),ue(le.publickeypinningWasBypassedByA))),i?.isCertificateExpiringSoon()&&t.push(new W("info",void 0,ue(le.certificateExpiresSoon),ue(le.theCertificateForThisSiteExpires)))}explainConnectionSecurity(e,t){const i=e.certificateSecurityState;if(!i)return;const s=ue(le.connection);if(i.modernSSL)return void t.push(new W("secure",s,ue(le.secureConnectionSettings),ue(le.theConnectionToThisSiteIs,{PH1:i.protocol,PH2:i.getKeyExchangeName(),PH3:i.getCipherFullName()})));const r=[];i.obsoleteSslProtocol&&r.push(ue(le.sIsObsoleteEnableTlsOrLater,{PH1:i.protocol})),i.obsoleteSslKeyExchange&&r.push(ue(le.rsaKeyExchangeIsObsoleteEnableAn)),i.obsoleteSslCipher&&r.push(ue(le.sIsObsoleteEnableAnAesgcmbased,{PH1:i.cipher})),i.obsoleteSslSignature&&r.push(ue(le.theServerSignatureUsesShaWhichIs)),t.push(new W("info",s,ue(le.obsoleteConnectionSettings),ue(le.theConnectionToThisSiteIs,{PH1:i.protocol,PH2:i.getKeyExchangeName(),PH3:i.getCipherFullName()}),void 0,void 0,r))}explainContentSecurity(e,t){let i=!0;const s=ue(le.resources),r=e.securityStateIssueIds;r.includes("ran-mixed-content")&&(i=!1,t.push(new W("insecure",s,ue(le.activeMixedContent),ue(le.youHaveRecentlyAllowedNonsecure),[],"blockable"))),r.includes("displayed-mixed-content")&&(i=!1,t.push(new W("neutral",s,ue(le.mixedContent),ue(le.thisPageIncludesHttpResources),[],"optionally-blockable"))),r.includes("contained-mixed-form")&&(i=!1,t.push(new W("neutral",s,ue(le.nonsecureForm),ue(le.thisPageIncludesAFormWithA)))),null===e.certificateSecurityState?.certificateNetworkError&&(r.includes("ran-content-with-cert-error")&&(i=!1,t.push(new W("insecure",s,ue(le.activeContentWithCertificate),ue(le.youHaveRecentlyAllowedContent)))),r.includes("displayed-content-with-cert-errors")&&(i=!1,t.push(new W("neutral",s,ue(le.contentWithCertificateErrors),ue(le.thisPageIncludesResourcesThat))))),i&&(r.includes("scheme-is-not-cryptographic")||t.push(new W("secure",s,ue(le.allServedSecurely),ue(le.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,"block-overridden");break;case"optionally-blockable":this.addMixedContentExplanation(this.securityExplanationsMain,e,"displayed");break;default:this.addExplanation(this.securityExplanationsMain,e)}if(this.panel.filterRequestCount("blocked")>0){const e={securityState:"info",summary:ue(le.blockedMixedContent),description:ue(le.yourPageRequestedNonsecure),mixedContentType:"blockable",certificate:[],title:""};this.addMixedContentExplanation(this.securityExplanationsMain,e,"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=ue(le.reloadThePageToRecordRequestsFor))}const n=s.createChild("button","security-mixed-content devtools-link text-button link-style");a.ARIAUtils.markAsLink(n),n.tabIndex=0,n.textContent=ue(le.viewDRequestsInNetworkPanel,{n:r}),n.addEventListener("click",this.showNetworkFilter.bind(this,i))}showNetworkFilter(e,i){i.consume(),t.Revealer.reveal(p.UIFilter.UIRequestFilter.filters([{filterType:p.UIFilter.FilterType.MixedContent,filterValue:e}]))}}class xe extends a.Widget.VBox{panel;originLockIcon;constructor(e,i,r){super(),this.registerRequiredCSS(ee,X),this.element.setAttribute("jslog",`${u.pane("security.origin-view")}`),this.panel=e,this.setMinimumSize(200,100),this.element.classList.add("security-origin-view");const n=this.element.createChild("div","title-section"),o=n.createChild("div","title-section-header");o.textContent=ue(le.origin),a.ARIAUtils.markAsHeading(o,1);const c=n.createChild("div","origin-display");this.originLockIcon=c.createChild("span");const l=ve(r.securityState,`security-property security-property-${r.securityState}`);this.originLockIcon.appendChild(l),c.appendChild(Se(i,r.securityState));const d=n.createChild("div","view-network-button"),h=a.UIUtils.createTextButton(ue(le.viewRequestsInNetworkPanel),(e=>{e.consume();const s=new t.ParsedURL.ParsedURL(i);t.Revealer.reveal(p.UIFilter.UIRequestFilter.filters([{filterType:p.UIFilter.FilterType.Domain,filterValue:s.host},{filterType:p.UIFilter.FilterType.Scheme,filterValue:s.scheme}]))}),{jslogContext:"reveal-in-network"});if(d.appendChild(h),a.ARIAUtils.markAsLink(h),r.securityDetails){const g=this.element.createChild("div","origin-view-section"),m=g.createChild("div","origin-view-section-title");m.textContent=ue(le.connection),a.ARIAUtils.markAsHeading(m,2);let y=new Ce;if(g.appendChild(y.element()),y.addRow(ue(le.protocol),r.securityDetails.protocol),r.securityDetails.keyExchange&&r.securityDetails.keyExchangeGroup?y.addRow(ue(le.keyExchange),r.securityDetails.keyExchange+" with "+r.securityDetails.keyExchangeGroup):r.securityDetails.keyExchange?y.addRow(ue(le.keyExchange),r.securityDetails.keyExchange):r.securityDetails.keyExchangeGroup&&y.addRow(ue(le.keyExchange),r.securityDetails.keyExchangeGroup),r.securityDetails.serverSignatureAlgorithm){let R=ge.get(r.securityDetails.serverSignatureAlgorithm);R??=ue(le.unknownField)+" ("+r.securityDetails.serverSignatureAlgorithm+")",y.addRow(ue(le.serverSignature),R)}y.addRow(ue(le.cipher),r.securityDetails.cipher+(r.securityDetails.mac?" with "+r.securityDetails.mac:"")),r.securityDetails.encryptedClientHello&&y.addRow(ue(le.encryptedClientHello),ue(le.enabled));const v=this.element.createChild("div","origin-view-section"),w=v.createChild("div","origin-view-section-title");w.textContent=ue(le.certificate),a.ARIAUtils.markAsHeading(w,2);const S=r.securityDetails.signedCertificateTimestampList.length,b=r.securityDetails.certificateTransparencyCompliance;let k;if(S||"unknown"!==b){k=this.element.createChild("div","origin-view-section");const P=k.createChild("div","origin-view-section-title");P.textContent=ue(le.certificateTransparency),a.ARIAUtils.markAsHeading(P,2)}const f=this.createSanDiv(r.securityDetails.sanList),x=new Date(1e3*r.securityDetails.validFrom).toUTCString(),C=new Date(1e3*r.securityDetails.validTo).toUTCString();if(y=new Ce,v.appendChild(y.element()),y.addRow(ue(le.subject),r.securityDetails.subjectName),y.addRow(s.i18n.lockedString("SAN"),f),y.addRow(ue(le.validFrom),x),y.addRow(ue(le.validUntil),C),y.addRow(ue(le.issuer),r.securityDetails.issuer),y.addRow("",be.createCertificateViewerButtonForOrigin(ue(le.openFullCertificateDetails),i)),!k)return;const T=new Ce;T.element().classList.add("sct-summary"),k.appendChild(T.element());for(let A=0;A<S;A++){const L=r.securityDetails.signedCertificateTimestampList[A];T.addRow(ue(le.sct),L.logDescription+" ("+L.origin+", "+L.status+")")}const E=k.createChild("div","sct-details");E.classList.add("hidden");for(let M=0;M<S;M++){const H=new Ce;E.appendChild(H.element());const D=r.securityDetails.signedCertificateTimestampList[M];H.addRow(ue(le.logName),D.logDescription),H.addRow(ue(le.logId),D.logId.replace(/(.{2})/g,"$1 ")),H.addRow(ue(le.validationStatus),D.status),H.addRow(ue(le.source),D.origin),H.addRow(ue(le.issuedAt),new Date(D.timestamp).toUTCString()),H.addRow(ue(le.hashAlgorithm),D.hashAlgorithm),H.addRow(ue(le.signatureAlgorithm),D.signatureAlgorithm),H.addRow(ue(le.signatureData),D.signatureData.replace(/(.{2})/g,"$1 "))}if(S){function U(){let e;const t=!E.classList.contains("hidden");e=ue(t?le.showFullDetails:le.hideFullDetails),F.textContent=e,a.ARIAUtils.setLabel(F,e),a.ARIAUtils.setExpanded(F,!t),T.element().classList.toggle("hidden"),E.classList.toggle("hidden")}const F=a.UIUtils.createTextButton(ue(le.showFullDetails),U,{className:"details-toggle",jslogContext:"security.toggle-scts-details"});k.appendChild(F)}switch(b){case"compliant":k.createChild("div","origin-view-section-notes").textContent=ue(le.thisRequestCompliesWithChromes);break;case"not-compliant":k.createChild("div","origin-view-section-notes").textContent=ue(le.thisRequestDoesNotComplyWith)}const I=this.element.createChild("div","origin-view-section origin-view-notes");r.loadedFromCache&&(I.createChild("div").textContent=ue(le.thisResponseWasLoadedFromCache)),I.createChild("div").textContent=ue(le.theSecurityDetailsAboveAreFrom)}else if("secure"===r.securityState){const $=this.element.createChild("div","origin-view-section"),V=$.createChild("div","origin-view-section-title");V.textContent=ue(le.secure),a.ARIAUtils.markAsHeading(V,2),$.createChild("div").textContent=ue(le.thisOriginIsANonhttpsSecure)}else if("unknown"!==r.securityState){const O=this.element.createChild("div","origin-view-section"),N=O.createChild("div","origin-view-section-title");N.textContent=ue(le.notSecure),a.ARIAUtils.markAsHeading(N,2),O.createChild("div").textContent=ue(le.yourConnectionToThisOriginIsNot)}else{const B=this.element.createChild("div","origin-view-section"),z=B.createChild("div","origin-view-section-title");z.textContent=ue(le.noSecurityInformation),a.ARIAUtils.markAsHeading(z,2),B.createChild("div").textContent=ue(le.noSecurityDetailsAreAvailableFor)}}createSanDiv(e){const t=document.createElement("div");if(0===e.length)t.textContent=ue(le.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 o(){const i=t.classList.contains("truncated-san");let s;i?(t.classList.remove("truncated-san"),s=ue(le.showLess)):(t.classList.add("truncated-san"),s=ue(le.showMoreSTotal,{PH1:e.length})),c.textContent=s,a.ARIAUtils.setLabel(c,s),a.ARIAUtils.setExpanded(c,i)}const c=a.UIUtils.createTextButton(ue(le.showMoreSTotal,{PH1:e.length}),o,{jslogContext:"security.toggle-san-truncation"});t.appendChild(c),o()}}return t}setSecurityState(e){this.originLockIcon.removeChildren();const t=ve(e,`security-property security-property-${e}`);this.originLockIcon.appendChild(t)}}class Ce{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 Te=Object.freeze({__proto__:null,get OriginGroup(){return ke},SecurityDetailsTable:Ce,SecurityMainView:fe,SecurityOriginView:xe,SecurityPanel:be,SecurityRevealer:class{async reveal(){await a.ViewManager.ViewManager.instance().showView("security");const e=a.ViewManager.ViewManager.instance().view("security");if(e){const t=await e.widget();if(!(t instanceof be&&t.sidebar.cookieReportTreeElement))throw new Error("Expected securityPanel to be an instance of SecurityPanel with a cookieReportTreeElement in the sidebar");t.sidebar.cookieReportTreeElement.select(!1,!0)}}},createHighlightedUrl:Se,getSecurityStateIconForDetailedView:ve,getSecurityStateIconForOverview:we});export{T as CookieControlsView,D as CookieReportView,K as SecurityModel,Te as SecurityPanel};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import*as e from"../../core/common/common.js";import*as t from"../../core/i18n/i18n.js";import*as o from"../../ui/legacy/legacy.js";const i={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",cpuPressure:"CPU Pressure",noPressureEmulation:"No override",nominal:"Nominal",fair:"Fair",serious:"Serious",critical:"Critical"},n=t.i18n.registerUIStrings("panels/sensors/sensors-meta.ts",i),l=t.i18n.getLazilyComputedLocalizedString.bind(void 0,n);let s;async function a(){return s||(s=await import("./sensors.js")),s}o.ViewManager.registerViewExtension({location:"drawer-view",commandPrompt:l(i.showSensors),title:l(i.sensors),id:"sensors",persistence:"closeable",order:100,loadView:async()=>new((await a()).SensorsView.SensorsView),tags:[l(i.geolocation),l(i.timezones),l(i.locale),l(i.locales),l(i.accelerometer),l(i.deviceOrientation)]}),o.ViewManager.registerViewExtension({location:"settings-view",id:"emulation-locations",commandPrompt:l(i.showLocations),title:l(i.locations),order:40,loadView:async()=>new((await a()).LocationsSettingsTab.LocationsSettingsTab),settings:["emulation.locations"],iconName:"location-on"}),e.Settings.registerSettingExtension({storageType:"Synced",settingName:"emulation.locations",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(i.cpuPressure),reloadRequired:!0,settingName:"emulation.cpu-pressure",settingType:"enum",defaultValue:"none",options:[{value:"none",title:l(i.noPressureEmulation),text:l(i.noPressureEmulation)},{value:"nominal",title:l(i.nominal),text:l(i.nominal)},{value:"fair",title:l(i.fair),text:l(i.fair)},{value:"serious",title:l(i.serious),text:l(i.serious)},{value:"critical",title:l(i.critical),text:l(i.critical)}]}),e.Settings.registerSettingExtension({title:l(i.touch),reloadRequired:!0,settingName:"emulation.touch",settingType:"enum",defaultValue:"none",options:[{value:"none",title:l(i.devicebased),text:l(i.devicebased)},{value:"force",title:l(i.forceEnabled),text:l(i.forceEnabled)}]}),e.Settings.registerSettingExtension({title:l(i.emulateIdleDetectorState),settingName:"emulation.idle-detection",settingType:"enum",defaultValue:"none",options:[{value:"none",title:l(i.noIdleEmulation),text:l(i.noIdleEmulation)},{value:'{"isUserActive":true,"isScreenUnlocked":true}',title:l(i.userActiveScreenUnlocked),text:l(i.userActiveScreenUnlocked)},{value:'{"isUserActive":true,"isScreenUnlocked":false}',title:l(i.userActiveScreenLocked),text:l(i.userActiveScreenLocked)},{value:'{"isUserActive":false,"isScreenUnlocked":true}',title:l(i.userIdleScreenUnlocked),text:l(i.userIdleScreenUnlocked)},{value:'{"isUserActive":false,"isScreenUnlocked":false}',title:l(i.userIdleScreenLocked),text:l(i.userIdleScreenLocked)}]});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../../ui/components/cards/cards.js";import*as t from"../../core/common/common.js";import*as e from"../../core/i18n/i18n.js";import*as i from"../../ui/components/buttons/buttons.js";import*as o from"../../ui/legacy/legacy.js";import*as n from"../../ui/visual_logging/visual_logging.js";import*as a from"../../core/host/host.js";import*as r from"../../core/sdk/sdk.js";import*as l from"../mobile_throttling/mobile_throttling.js";var s={cssText:`.add-locations-button{margin-bottom:var(--sys-size-5);border:none}.locations-list{margin-top:var(--sys-size-3);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(--sys-color-on-surface);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(--sys-color-divider);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}.settings-card-container-wrapper{scrollbar-gutter:stable;padding:var(--sys-size-8) 0;overflow:auto;position:absolute;inset:var(--sys-size-8) 0 0}.settings-card-container{display:flex;flex-direction:column;align-items:center;gap:var(--sys-size-9)}\n/*# sourceURL=${import.meta.resolve("./locationsSettingsTab.css")} */\n`};const c={locations:"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"},d=e.i18n.registerUIStrings("panels/sensors/LocationsSettingsTab.ts",c),h=e.i18n.getLocalizedString.bind(void 0,d);class u extends o.Widget.VBox{list;customSetting;editor;constructor(){super(!0),this.registerRequiredCSS(s),this.element.setAttribute("jslog",`${n.pane("emulation-locations")}`);const e=this.contentElement.createChild("div","settings-card-container-wrapper").createChild("div");e.classList.add("settings-card-container");const a=e.createChild("devtools-card");a.heading=h(c.locations);const r=a.createChild("div");this.list=new o.ListWidget.ListWidget(this,void 0,!0),this.list.element.classList.add("locations-list"),this.list.registerRequiredCSS(s),this.list.show(r),this.customSetting=t.Settings.Settings.instance().moduleSetting("emulation.locations");const l=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)));const d=new i.Button.Button;d.classList.add("add-locations-button"),d.data={variant:"outlined",iconName:"plus",jslogContext:"emulation.add-location"},d.textContent=h(c.addLocation),d.addEventListener("click",(()=>this.addButtonClicked())),a.append(d),this.customSetting.set(l),this.customSetting.addChangeListener(this.locationsUpdated,this)}wasShown(){super.wasShown(),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 i=document.createElement("div");i.role="row",i.classList.add("locations-list-item");const n=i.createChild("div","locations-list-text locations-list-title");n.role="cell";const a=n.createChild("div","locations-list-title-text");a.textContent=t.title,o.Tooltip.Tooltip.install(a,t.title),i.createChild("div","locations-list-separator");const r=i.createChild("div","locations-list-text");r.textContent=String(t.lat),r.role="cell",i.createChild("div","locations-list-separator");const l=i.createChild("div","locations-list-text");l.textContent=String(t.long),l.role="cell",i.createChild("div","locations-list-separator");const s=i.createChild("div","locations-list-text");s.textContent=t.timezoneId,s.role="cell",i.createChild("div","locations-list-separator");const c=i.createChild("div","locations-list-text");return c.textContent=t.locale,c.role="cell",i}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("timezone-id").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("timezone-id").value=t.timezoneId,e.control("locale").value=t.locale,e}createEditor(){if(this.editor)return this.editor;const t=new o.ListWidget.Editor;this.editor=t;const e=t.contentElement(),i=e.createChild("div","locations-edit-row");i.createChild("div","locations-list-text locations-list-title").textContent=h(c.locationName),i.createChild("div","locations-list-separator locations-list-separator-invisible"),i.createChild("div","locations-list-text").textContent=h(c.lat),i.createChild("div","locations-list-separator locations-list-separator-invisible"),i.createChild("div","locations-list-text").textContent=h(c.long),i.createChild("div","locations-list-separator locations-list-separator-invisible"),i.createChild("div","locations-list-text").textContent=h(c.timezoneId),i.createChild("div","locations-list-separator locations-list-separator-invisible"),i.createChild("div","locations-list-text").textContent=h(c.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",h(c.locationName),(function(t,e,i){const o=i.value.trim();let n;o.length?o.length>50&&(n=h(c.locationNameMustBeLessThanS,{PH1:50})):n=h(c.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",h(c.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=h(c.latitudeMustBeANumber):parseFloat(o)<-90?a=h(c.latitudeMustBeGreaterThanOrEqual,{PH1:-90}):parseFloat(o)>90&&(a=h(c.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",h(c.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=h(c.longitudeMustBeANumber):parseFloat(o)<-180?a=h(c.longitudeMustBeGreaterThanOr,{PH1:-180}):parseFloat(o)>180&&(a=h(c.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("timezone-id","text",h(c.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:h(c.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",h(c.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:h(c.localeMustContainAlphabetic)}}))),t}}var p=Object.freeze({__proto__:null,LocationsSettingsTab:u}),m={cssText:`.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(--sys-color-neutral-container)}.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}.concurrency-details{margin:var(--sys-size-5) var(--sys-size-10);display:flex;align-items:center}.concurrency-details input{width:50px;margin:0}.concurrency-hidden{visibility:hidden}.sensors-view input:focus::-webkit-input-placeholder{color:transparent!important}.sensors-view select{width:200px}.sensors-group-title{width:80px;line-height:24px}.sensors-group{display:flex;flex-wrap:wrap;margin-bottom:10px}.manage-locations{margin-left:var(--sys-size-4)}.geo-fields{flex:2 0 200px}.latlong-group{display:flex;margin-bottom:10px}.latlong-title{width:70px}.timezone-error,\n.locale-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:var(--ref-palette-cyan95);--override-gradient-color-2:var(--ref-palette-cyan90);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-1) 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:var(--ref-palette-cyan10);--override-gradient-color-2:var(--ref-palette-cyan30)}.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;inset: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:1px;margin-bottom:20px;margin-left:-12px;margin-right:-12px;background:var(--sys-color-divider)}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=${import.meta.resolve("./sensors.css")} */\n`};const g={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",forcesSelectedPressureStateEmulation:"Forces selected pressure 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)"},v=e.i18n.registerUIStrings("panels/sensors/SensorsView.ts",g),b=e.i18n.getLocalizedString.bind(void 0,v);class f extends o.Widget.VBox{#t;#e;#i;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.registerRequiredCSS(m),this.element.setAttribute("jslog",`${n.panel("sensors").track({resize:!0})}`),this.contentElement.classList.add("sensors-view"),this.#t=t.Settings.Settings.instance().createSetting("emulation.location-override",""),this.#e=r.EmulationModel.Location.parseSetting(this.#t.get()),this.#i=!1,this.createLocationSection(this.#e),this.createPanelSeparator(),this.deviceOrientationSetting=t.Settings.Settings.instance().createSetting("emulation.device-orientation-override",""),this.deviceOrientation=r.EmulationModel.DeviceOrientation.parseSetting(this.deviceOrientationSetting.get()),this.deviceOrientationOverrideEnabled=!1,this.createDeviceOrientationSection(),this.createPanelSeparator(),this.appendTouchControl(),this.createPanelSeparator(),this.appendIdleEmulator(),this.createPanelSeparator(),this.createHardwareConcurrencySection(),this.createPanelSeparator(),this.createPressureSection(),this.createPanelSeparator()}createPanelSeparator(){this.contentElement.createChild("div").classList.add("panel-section-separator")}createLocationSection(e){const i=this.contentElement.createChild("section","sensors-group");i.setAttribute("jslog",`${n.section("location")}`);const l=o.UIUtils.createLabel(b(g.location),"sensors-group-title");i.appendChild(l);const s=i.createChild("div","geo-fields");let c=0;const d={title:b(g.noOverride),location:x.NoOverride};this.locationSelectElement=s.createChild("select"),this.locationSelectElement.setAttribute("jslog",`${n.dropDown().track({change:!0})}`),o.ARIAUtils.bindLabelToControl(l,this.locationSelectElement),this.locationSelectElement.appendChild(o.UIUtils.createOption(d.title,d.location,"no-override")),this.customLocationsGroup=this.locationSelectElement.createChild("optgroup"),this.customLocationsGroup.label=b(g.overrides);const h=t.Settings.Settings.instance().moduleSetting("emulation.locations"),u=o.UIUtils.createTextButton(b(g.manage),(()=>t.Revealer.reveal(h)),{className:"manage-locations",jslogContext:"sensors.manage-locations"});o.ARIAUtils.setLabel(u,b(g.manageTheListOfLocations)),s.appendChild(u);const p=()=>{if(this.customLocationsGroup){this.customLocationsGroup.removeChildren();for(const[t,i]of h.get().entries())this.customLocationsGroup.appendChild(o.UIUtils.createOption(i.title,JSON.stringify(i),"custom")),e.latitude===i.lat&&e.longitude===i.long&&(c=t+1)}};h.addChangeListener(p),p();const m={title:b(g.other),location:x.Custom};this.locationSelectElement.appendChild(o.UIUtils.createOption(m.title,m.location,"other"));const v=this.locationSelectElement.createChild("optgroup");v.label=b(g.error),v.appendChild(o.UIUtils.createOption(b(g.locationUnavailable),x.Unavailable,"unavailable")),this.locationSelectElement.selectedIndex=c,this.locationSelectElement.addEventListener("change",this.#o.bind(this)),this.fieldsetElement=s.createChild("fieldset"),this.fieldsetElement.disabled=!this.#i,this.fieldsetElement.id="location-override-section";const f=this.fieldsetElement.createChild("div","latlong-group"),S=this.fieldsetElement.createChild("div","latlong-group"),C=this.fieldsetElement.createChild("div","latlong-group"),E=this.fieldsetElement.createChild("div","latlong-group"),I=a.Platform.isMac()?"⌘":"Ctrl",O=b(g.adjustWithMousewheelOrUpdownKeys,{PH1:I});this.latitudeInput=o.UIUtils.createInput("","number","latitude"),f.appendChild(this.latitudeInput),this.latitudeInput.setAttribute("step","any"),this.latitudeInput.value="0",this.latitudeSetter=o.UIUtils.bindInput(this.latitudeInput,this.applyLocationUserInput.bind(this),r.EmulationModel.Location.latitudeValidator,!0,.1),this.latitudeSetter(String(e.latitude)),o.Tooltip.Tooltip.install(this.latitudeInput,O),f.appendChild(o.UIUtils.createLabel(b(g.latitude),"latlong-title",this.latitudeInput)),this.longitudeInput=o.UIUtils.createInput("","number","longitude"),S.appendChild(this.longitudeInput),this.longitudeInput.setAttribute("step","any"),this.longitudeInput.value="0",this.longitudeSetter=o.UIUtils.bindInput(this.longitudeInput,this.applyLocationUserInput.bind(this),r.EmulationModel.Location.longitudeValidator,!0,.1),this.longitudeSetter(String(e.longitude)),o.Tooltip.Tooltip.install(this.longitudeInput,O),S.appendChild(o.UIUtils.createLabel(b(g.longitude),"latlong-title",this.longitudeInput)),this.timezoneInput=o.UIUtils.createInput("","text","timezone"),C.appendChild(this.timezoneInput),this.timezoneInput.value="Europe/Berlin",this.timezoneSetter=o.UIUtils.bindInput(this.timezoneInput,this.applyLocationUserInput.bind(this),r.EmulationModel.Location.timezoneIdValidator,!1),this.timezoneSetter(e.timezoneId),C.appendChild(o.UIUtils.createLabel(b(g.timezoneId),"timezone-title",this.timezoneInput)),this.timezoneError=C.createChild("div","timezone-error"),this.localeInput=o.UIUtils.createInput("","text","locale"),E.appendChild(this.localeInput),this.localeInput.value="en-US",this.localeSetter=o.UIUtils.bindInput(this.localeInput,this.applyLocationUserInput.bind(this),r.EmulationModel.Location.localeValidator,!1),this.localeSetter(e.locale),E.appendChild(o.UIUtils.createLabel(b(g.locale),"locale-title",this.localeInput)),this.localeError=E.createChild("div","locale-error")}#o(){this.fieldsetElement.disabled=!1,this.timezoneError.textContent="";const t=this.locationSelectElement.options[this.locationSelectElement.selectedIndex].value;if(t===x.NoOverride)this.#i=!1,this.clearFieldsetElementInputs(),this.fieldsetElement.disabled=!0;else if(t===x.Custom){this.#i=!0;const t=r.EmulationModel.Location.parseUserInput(this.latitudeInput.value.trim(),this.longitudeInput.value.trim(),this.timezoneInput.value.trim(),this.localeInput.value.trim());if(!t)return;this.#e=t}else if(t===x.Unavailable)this.#i=!0,this.#e=new r.EmulationModel.Location(0,0,"","",!0);else{this.#i=!0;const e=JSON.parse(t);this.#e=new r.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===x.Custom&&this.latitudeInput.focus()}applyLocationUserInput(){const t=r.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,x.Custom),this.#e=t,this.applyLocation())}applyLocation(){this.#i?this.#t.set(this.#e.toSetting()):this.#t.set("");for(const t of r.TargetManager.TargetManager.instance().models(r.EmulationModel.EmulationModel))t.emulateLocation(this.#i?this.#e: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");t.setAttribute("jslog",`${n.section("device-orientation")}`);const e=o.UIUtils.createLabel(b(g.orientation),"sensors-group-title");t.appendChild(e);const i=t.createChild("div","orientation-content"),a=i.createChild("div","orientation-fields"),r={title:b(g.off),orientation:x.NoOverride,jslogContext:"off"},l={title:b(g.customOrientation),orientation:x.Custom},s=[{title:b(g.presets),value:[{title:b(g.portrait),orientation:"[0, 90, 0]",jslogContext:"portrait"},{title:b(g.portraitUpsideDown),orientation:"[180, -90, 0]",jslogContext:"portrait-upside-down"},{title:b(g.landscapeLeft),orientation:"[90, 0, -90]",jslogContext:"landscape-left"},{title:b(g.landscapeRight),orientation:"[90, -180, -90]",jslogContext:"landscape-right"},{title:b(g.displayUp),orientation:"[0, 0, 0]",jslogContext:"display-up"},{title:b(g.displayDown),orientation:"[0, -180, 0]",jslogContext:"displayUp-down"}]}];this.orientationSelectElement=this.contentElement.createChild("select"),this.orientationSelectElement.setAttribute("jslog",`${n.dropDown().track({change:!0})}`),o.ARIAUtils.bindLabelToControl(e,this.orientationSelectElement),this.orientationSelectElement.appendChild(o.UIUtils.createOption(r.title,r.orientation,r.jslogContext)),this.orientationSelectElement.appendChild(o.UIUtils.createOption(l.title,l.orientation,"custom"));for(let t=0;t<s.length;++t){const e=this.orientationSelectElement.createChild("optgroup");e.label=s[t].title;const i=s[t].value;for(let t=0;t<i.length;++t)e.appendChild(o.UIUtils.createOption(i[t].title,i[t].orientation,i[t].jslogContext))}this.orientationSelectElement.selectedIndex=0,a.appendChild(this.orientationSelectElement),this.orientationSelectElement.addEventListener("change",this.orientationSelectChanged.bind(this)),this.deviceOrientationFieldset=this.createDeviceOrientationOverrideElement(this.deviceOrientation),this.stageElement=i.createChild("div","orientation-stage"),this.stageElement.setAttribute("jslog",`${n.preview().track({drag:!0})}`),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"),o.UIUtils.installDragHandle(this.stageElement,this.onBoxDragStart.bind(this),(t=>{this.onBoxDrag(t)}),null,"-webkit-grabbing","-webkit-grab"),a.appendChild(this.deviceOrientationFieldset),this.enableOrientationFields(!0),this.setBoxOrientation(this.deviceOrientation,!1)}createPressureSection(){const e=this.contentElement.createChild("div","pressure-section"),i=o.SettingsUI.createControlForSetting(t.Settings.Settings.instance().moduleSetting("emulation.cpu-pressure"),b(g.forcesSelectedPressureStateEmulation));i&&e.appendChild(i)}enableOrientationFields(t){t?(this.deviceOrientationFieldset.disabled=!0,this.stageElement.classList.add("disabled"),o.Tooltip.Tooltip.install(this.stageElement,b(g.enableOrientationToRotate))):(this.deviceOrientationFieldset.disabled=!1,this.stageElement.classList.remove("disabled"),o.Tooltip.Tooltip.install(this.stageElement,b(g.shiftdragHorizontallyToRotate)))}orientationSelectChanged(){const t=this.orientationSelectElement.options[this.orientationSelectElement.selectedIndex].value;if(this.enableOrientationFields(!1),t===x.NoOverride)this.deviceOrientationOverrideEnabled=!1,this.enableOrientationFields(!0),this.applyDeviceOrientation();else if(t===x.Custom)this.deviceOrientationOverrideEnabled=!0,this.resetDeviceOrientation(),this.alphaElement.focus();else{const e=JSON.parse(t);this.deviceOrientationOverrideEnabled=!0,this.deviceOrientation=new r.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 r.TargetManager.TargetManager.instance().models(r.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(r.EmulationModel.DeviceOrientation.parseUserInput(this.alphaElement.value.trim(),this.betaElement.value.trim(),this.gammaElement.value.trim()),"userInput"),this.setSelectElementLabel(this.orientationSelectElement,x.Custom)}resetDeviceOrientation(){this.setDeviceOrientation(new r.EmulationModel.DeviceOrientation(0,90,0),"resetButton"),this.setSelectElementLabel(this.orientationSelectElement,"[0, 90, 0]")}setDeviceOrientation(t,e){if(!t)return;function i(t){return Math.round(1e4*t)/1e4}"userInput"!==e&&(this.alphaSetter(String(i(t.alpha))),this.betaSetter(String(i(t.beta))),this.gammaSetter(String(i(t.gamma))));const n="userDrag"!==e;this.setBoxOrientation(t,n),this.deviceOrientation=t,this.applyDeviceOrientation(),o.ARIAUtils.alert(b(g.deviceOrientationSetToAlphaSBeta,{PH1:t.alpha,PH2:t.beta,PH3:t.gamma}))}createAxisInput(t,e,i,n){const a=t.createChild("div","orientation-axis-input-container");return a.appendChild(e),a.appendChild(o.UIUtils.createLabel(i,"",e)),o.UIUtils.bindInput(e,this.applyDeviceOrientationUserInput.bind(this),n,!0)}createDeviceOrientationOverrideElement(t){const e=document.createElement("fieldset");e.classList.add("device-orientation-override-section");const i=e.createChild("td","orientation-inputs-cell");this.alphaElement=o.UIUtils.createInput("","number","alpha"),this.alphaElement.setAttribute("step","any"),this.alphaSetter=this.createAxisInput(i,this.alphaElement,b(g.alpha),r.EmulationModel.DeviceOrientation.alphaAngleValidator),this.alphaSetter(String(t.alpha)),this.betaElement=o.UIUtils.createInput("","number","beta"),this.betaElement.setAttribute("step","any"),this.betaSetter=this.createAxisInput(i,this.betaElement,b(g.beta),r.EmulationModel.DeviceOrientation.betaAngleValidator),this.betaSetter(String(t.beta)),this.gammaElement=o.UIUtils.createInput("","number","gamma"),this.gammaElement.setAttribute("step","any"),this.gammaSetter=this.createAxisInput(i,this.gammaElement,b(g.gamma),r.EmulationModel.DeviceOrientation.gammaAngleValidator),this.gammaSetter(String(t.gamma));const n=o.UIUtils.createTextButton(b(g.reset),this.resetDeviceOrientation.bind(this),{className:"orientation-reset-button",jslogContext:"sensors.reset-device-orientiation"});return o.ARIAUtils.setLabel(n,b(g.resetDeviceOrientation)),n.setAttribute("type","reset"),i.appendChild(n),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 i,n;t.consume(!0),t.shiftKey?(i=new o.Geometry.Vector(0,0,1),n=(e.x-this.mouseDownVector.x)*S):(i=o.Geometry.crossProduct(this.mouseDownVector,e),n=o.Geometry.calculateAngle(this.mouseDownVector,e));const a=(new DOMMatrixReadOnly).rotateAxisAngle(-i.x,i.z,i.y,n).multiply(this.originalBoxMatrix),l=o.Geometry.EulerAngles.fromDeviceOrientationRotationMatrix(a),s=new r.EmulationModel.DeviceOrientation(l.alpha,l.beta,l.gamma);return this.setDeviceOrientation(s,"userDrag"),this.setSelectElementLabel(this.orientationSelectElement,x.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 i=this.stageElement.getBoundingClientRect(),n=Math.max(i.width,i.height)/2,a=(t-i.left-i.width/2)/n,r=(e-i.top-i.height/2)/n,l=a*a+r*r;return l>.5?new o.Geometry.Vector(a,r,.5/Math.sqrt(l)):new o.Geometry.Vector(a,r,Math.sqrt(1-l))}appendTouchControl(){const e=this.contentElement.createChild("div","touch-section"),i=o.SettingsUI.createControlForSetting(t.Settings.Settings.instance().moduleSetting("emulation.touch"),b(g.forcesTouchInsteadOfClick));i&&e.appendChild(i)}appendIdleEmulator(){const e=this.contentElement.createChild("div","idle-section"),i=o.SettingsUI.createControlForSetting(t.Settings.Settings.instance().moduleSetting("emulation.idle-detection"),b(g.forcesSelectedIdleStateEmulation));i&&e.appendChild(i)}createHardwareConcurrencySection(){const t=this.contentElement.createChild("div","concurrency-section"),{checkbox:e,numericInput:i,reset:o,warning:n}=l.ThrottlingManager.throttlingManager().createHardwareConcurrencySelector(),a=document.createElement("div");a.classList.add("concurrency-details"),a.append(i.element,o.element,n.element),t.append(e,a)}}const x={NoOverride:"noOverride",Custom:"custom",Unavailable:"unavailable"};const S=16;var C=Object.freeze({__proto__:null,NonPresetOptions:x,PressureOptions:{NoOverride:"no-override",Nominal:"nominal",Fair:"fair",Serious:"serious",Critical:"critical"},SensorsView:f,ShiftDragOrientationSpeed:S,ShowActionDelegate:class{handleAction(t,e){return o.ViewManager.ViewManager.instance().showView("sensors"),!0}}});export{p as LocationsSettingsTab,C as SensorsView};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import"../../../ui/components/chrome_link/chrome_link.js";import"../../../ui/components/settings/settings.js";import*as e from"../../../core/i18n/i18n.js";import*as n from"../../../ui/components/helpers/helpers.js";import*as s from"../../../ui/lit/lit.js";var t={cssText:`:host{break-inside:avoid;display:block;padding-bottom:9px;width:288px}fieldset{border:0;padding:0}.link{color:var(--sys-color-primary);text-decoration:underline;cursor:pointer;outline-offset:2px}img{border:0;border-radius:var(--sys-shape-corner-full);display:block;height:var(--sys-size-9);width:var(--sys-size-9)}.warning{display:block}.account-info{display:flex;align-items:center;margin-top:12px}.account-email{display:flex;flex-direction:column;margin-left:8px}\n/*# sourceURL=${import.meta.resolve("./syncSection.css")} */\n`};const i=new CSSStyleSheet;i.replaceSync(t.cssText);const{html:o}=s,c={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:"},r=e.i18n.registerUIStrings("panels/settings/components/SyncSection.ts",c),a=e.i18n.getLocalizedString.bind(void 0,r);class d extends HTMLElement{#e=this.attachShadow({mode:"open"});#n={isSyncActive:!1};#s;#t=this.#i.bind(this);connectedCallback(){this.#e.adoptedStyleSheets=[i]}set data(e){this.#n=e.syncInfo,this.#s=e.syncSetting,n.ScheduledRender.scheduleRender(this,this.#t)}#i(){if(!this.#s)throw new Error("SyncSection not properly initialized");const e=!this.#n.isSyncActive||!this.#n.arePreferencesSynced;this.#s?.setDisabled(e),s.render(o`
|
|
2
|
+
<fieldset>
|
|
3
|
+
${function(e){if(!e.isSyncActive){const e="chrome://settings/syncSetup";return o`
|
|
4
|
+
<span class="warning">
|
|
5
|
+
${a(c.syncDisabled)}
|
|
6
|
+
<devtools-chrome-link .href=${e}>${a(c.settings)}</devtools-chrome-link>
|
|
7
|
+
</span>`}if(!e.arePreferencesSynced){const e="chrome://settings/syncSetup/advanced";return o`
|
|
8
|
+
<span class="warning">
|
|
9
|
+
${a(c.preferencesSyncDisabled)}
|
|
10
|
+
<devtools-chrome-link .href=${e}>${a(c.settings)}</devtools-chrome-link>
|
|
11
|
+
</span>`}return o`
|
|
12
|
+
<div class="account-info">
|
|
13
|
+
<img src="data:image/png;base64, ${e.accountImage}" alt="Account avatar" />
|
|
14
|
+
<div class="account-email">
|
|
15
|
+
<span>${a(c.signedIn)}</span>
|
|
16
|
+
<span>${e.accountEmail}</span>
|
|
17
|
+
</div>
|
|
18
|
+
</div>`}(this.#n)}
|
|
19
|
+
<setting-checkbox .data=${{setting:this.#s}}>
|
|
20
|
+
</setting-checkbox>
|
|
21
|
+
</fieldset>
|
|
22
|
+
`,this.#e,{host:this})}}customElements.define("devtools-sync-section",d);var l=Object.freeze({__proto__:null,SyncSection:d});export{l as SyncSection};
|