chrome-devtools-frontend
Version:
Chrome DevTools UI
1,601 lines (1,516 loc) • 67 kB
JavaScript
// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// We want to keep this a IIFE as we want to keep the global scope clean
// We inject this script via a Classic script
// https://crsrc.org/c/third_party/blink/renderer/controller/dev_tools_frontend_impl.cc;l=107
(window => {
/**
* A function that tries to check the remotely connected instance
* major version. You should check against this to provide
* forward and backwards compatibility.
*
* @returns {number|null}
*/
function getRemoteMajorVersion() {
try {
const remoteVersion = new URLSearchParams(window.location.search).get('remoteVersion');
if (!remoteVersion) {
return null;
}
return parseInt(remoteVersion.split('.')[0], 10);
} catch {
return null;
}
}
// eslint-disable-next-line no-unused-vars
const majorVersion = getRemoteMajorVersion();
// DevToolsAPI ----------------------------------------------------------------
/**
* @typedef {{runtimeAllowedHosts: string[], runtimeBlockedHosts: string[]}} ExtensionHostsPolicy
* @typedef {{startPage: string, name: string, exposeExperimentalAPIs: boolean, hostsPolicy?: ExtensionHostsPolicy}} ExtensionDescriptor
*/
class DevToolsAPIImpl {
/**
* @type {string[]}
*/
_originsForbiddenForExtensions = [];
/**
* @type {ExtensionDescriptor[]}
*/
_pendingExtensionDescriptors = [];
/**
* @type {number}
*/
_lastCallId = 0;
/**
* @type {Record<number, (arg1: object) => void>}
*/
_callbacks = {};
/**
* @type {((param:ExtensionDescriptor)=> void) | null}
*/
_addExtensionCallback = null;
/**
* @type {Promise<string>}
*/
_initialTargetIdPromise;
/**
* @type {(param:string) => void}
*/
_setInitialTargetId;
constructor() {
this._initialTargetIdPromise = new Promise(resolve => {
this._setInitialTargetId = resolve;
});
}
/**
* @param id
* @param arg
*/
embedderMessageAck(id, arg) {
const callback = this._callbacks[id];
delete this._callbacks[id];
if (callback) {
callback(arg);
}
}
/**
* @param method
* @param args
* @param callback
*/
sendMessageToEmbedder(method, args, callback) {
const callId = ++this._lastCallId;
if (callback) {
this._callbacks[callId] = callback;
}
const message = {id: callId, method};
if (args.length) {
message.params = args;
}
DevToolsHost.sendMessageToEmbedder(JSON.stringify(message));
}
/**
* @typedef {import('./core/host/InspectorFrontendHostAPI.js').Events} Events
* @typedef {import('./core/host/InspectorFrontendHost.js').InspectorFrontendAPIImplMethods} Methods
* @param {`${Events|Methods}`} method
* @param args
*/
_dispatchOnInspectorFrontendAPI(method, args) {
const inspectorFrontendAPI = window.InspectorFrontendAPI;
if (!inspectorFrontendAPI) {
// This is the case for device_mode_emulation_frame entrypoint. It's created via `window.open` from
// the DevTools window, so it shares a context with DevTools but has a separate DevToolsUIBinding and `window` object.
// We can safely ignore the events since they also arrive on the DevTools `window` object.
return;
}
inspectorFrontendAPI[method].apply(inspectorFrontendAPI, args);
}
// API methods below this line --------------------------------------------
/**
* @param {ExtensionDescriptor[]} extensions
*/
addExtensions(extensions) {
// The addExtensions command is sent as the onload event happens for
// DevTools front-end. We should buffer this command until the frontend
// is ready for it.
if (this._addExtensionCallback) {
extensions.forEach(this._addExtensionCallback);
} else {
this._pendingExtensionDescriptors.push(...extensions);
}
}
/**
* @param {string[]} forbiddenOrigins
*/
setOriginsForbiddenForExtensions(forbiddenOrigins) {
this._originsForbiddenForExtensions = forbiddenOrigins;
}
/**
* @returns {string[]}
*/
getOriginsForbiddenForExtensions() {
return this._originsForbiddenForExtensions;
}
/**
* @param {string} url
*/
appendedToURL(url) {
this._dispatchOnInspectorFrontendAPI('appendedToURL', [url]);
}
/**
* @param {string} url
*/
canceledSaveURL(url) {
this._dispatchOnInspectorFrontendAPI('canceledSaveURL', [url]);
}
contextMenuCleared() {
this._dispatchOnInspectorFrontendAPI('contextMenuCleared', []);
}
/**
* @param id
*/
contextMenuItemSelected(id) {
this._dispatchOnInspectorFrontendAPI('contextMenuItemSelected', [id]);
}
/**
* @param {number} count
*/
deviceCountUpdated(count) {
this._dispatchOnInspectorFrontendAPI('deviceCountUpdated', [count]);
}
/**
* @param config
*/
devicesDiscoveryConfigChanged(config) {
this._dispatchOnInspectorFrontendAPI('devicesDiscoveryConfigChanged', [config]);
}
/**
* @param status
*/
devicesPortForwardingStatusChanged(status) {
this._dispatchOnInspectorFrontendAPI('devicesPortForwardingStatusChanged', [status]);
}
/**
* @param devices
*/
devicesUpdated(devices) {
this._dispatchOnInspectorFrontendAPI('devicesUpdated', [devices]);
}
/**
* @param message
*/
dispatchMessage(message) {
this._dispatchOnInspectorFrontendAPI('dispatchMessage', [message]);
}
/**
* @param messageChunk
* @param messageSize
*/
dispatchMessageChunk(messageChunk, messageSize) {
this._dispatchOnInspectorFrontendAPI('dispatchMessageChunk', [messageChunk, messageSize]);
}
enterInspectElementMode() {
this._dispatchOnInspectorFrontendAPI('enterInspectElementMode', []);
}
/**
* @param color
*/
eyeDropperPickedColor(color) {
this._dispatchOnInspectorFrontendAPI('eyeDropperPickedColor', [color]);
}
/**
* @param fileSystems
*/
fileSystemsLoaded(fileSystems) {
this._dispatchOnInspectorFrontendAPI('fileSystemsLoaded', [fileSystems]);
}
/**
* @param fileSystemPath
*/
fileSystemRemoved(fileSystemPath) {
this._dispatchOnInspectorFrontendAPI('fileSystemRemoved', [fileSystemPath]);
}
/**
* @param error
* @param fileSystem
*/
fileSystemAdded(error, fileSystem) {
this._dispatchOnInspectorFrontendAPI('fileSystemAdded', [error, fileSystem]);
}
/**
* @param changedPaths
* @param addedPaths
* @param removedPaths
*/
fileSystemFilesChangedAddedRemoved(changedPaths, addedPaths, removedPaths) {
this._dispatchOnInspectorFrontendAPI(
'fileSystemFilesChangedAddedRemoved', [changedPaths, addedPaths, removedPaths]);
}
/**
* @param requestId
* @param fileSystemPath
* @param totalWork
*/
indexingTotalWorkCalculated(requestId, fileSystemPath, totalWork) {
this._dispatchOnInspectorFrontendAPI('indexingTotalWorkCalculated', [requestId, fileSystemPath, totalWork]);
}
/**
* @param requestId
* @param fileSystemPath
* @param worked
*/
indexingWorked(requestId, fileSystemPath, worked) {
this._dispatchOnInspectorFrontendAPI('indexingWorked', [requestId, fileSystemPath, worked]);
}
/**
* @param requestId
* @param fileSystemPath
*/
indexingDone(requestId, fileSystemPath) {
this._dispatchOnInspectorFrontendAPI('indexingDone', [requestId, fileSystemPath]);
}
/**
* @param event
*/
keyEventUnhandled(event) {
event.keyIdentifier = keyCodeToKeyIdentifier(event.keyCode);
this._dispatchOnInspectorFrontendAPI('keyEventUnhandled', [event]);
}
/**
* @param {(param: object) => unknown} callback
*/
setAddExtensionCallback(callback) {
this._addExtensionCallback = callback;
if (this._pendingExtensionDescriptors.length) {
this._pendingExtensionDescriptors.forEach(this._addExtensionCallback);
this._pendingExtensionDescriptors = [];
}
}
/**
* @param {boolean} hard
*/
reloadInspectedPage(hard) {
this._dispatchOnInspectorFrontendAPI('reloadInspectedPage', [hard]);
}
/**
* @param url
* @param lineNumber
* @param columnNumber
*/
revealSourceLine(url, lineNumber, columnNumber) {
this._dispatchOnInspectorFrontendAPI('revealSourceLine', [url, lineNumber, columnNumber]);
}
/**
* @param url
* @param fileSystemPath
*/
savedURL(url, fileSystemPath) {
this._dispatchOnInspectorFrontendAPI('savedURL', [url, fileSystemPath]);
}
/**
* @param requestId
* @param fileSystemPath
* @param files
*/
searchCompleted(requestId, fileSystemPath, files) {
this._dispatchOnInspectorFrontendAPI('searchCompleted', [requestId, fileSystemPath, files]);
}
colorThemeChanged() {
this._dispatchOnInspectorFrontendAPI('colorThemeChanged', []);
}
/**
* @param {string} tabId
*/
setInspectedTabId(tabId) {
this._inspectedTabIdValue = tabId;
this._dispatchOnInspectorFrontendAPI('setInspectedTabId', [tabId]);
}
/**
* @param {string} targetId
*/
setInitialTargetId(targetId) {
this._setInitialTargetId(targetId);
}
/**
* @returns
*/
getInspectedTabId() {
return this._inspectedTabIdValue;
}
/**
* @param {boolean} useSoftMenu
*/
setUseSoftMenu(useSoftMenu) {
this._dispatchOnInspectorFrontendAPI('setUseSoftMenu', [useSoftMenu]);
}
/**
* @param {string} panelName
*/
showPanel(panelName) {
this._dispatchOnInspectorFrontendAPI('showPanel', [panelName]);
}
/**
* @param {number} id
* @param {string} chunk
* @param {boolean} encoded
*/
streamWrite(id, chunk, encoded) {
this._dispatchOnInspectorFrontendAPI('streamWrite', [id, encoded ? this._decodeBase64(chunk) : chunk]);
}
/**
* @param {string} chunk
* @returns {string}
*/
_decodeBase64(chunk) {
const request = new XMLHttpRequest();
request.open('GET', 'data:text/plain;base64,' + chunk, false);
request.send(null);
if (request.status === 200) {
return request.responseText;
}
console.error('Error while decoding chunk in streamWrite');
return '';
}
}
const DevToolsAPI = new DevToolsAPIImpl();
window.DevToolsAPI = DevToolsAPI;
// LINT.IfChange(DevToolsMetrics)
/**
* The numeric enum values are not necessarily continuous! It is possible that
* values have been removed, which results in gaps in the sequence of values.
* When adding a new value:
* 1. Add an entry to the bottom of the enum before 'MAX_VALUE'.
* 2. Set the value of the new entry to the current value of 'MAX_VALUE'.
* 2. Increment the value of 'MAX_VALUE' by 1.
* When removing a value which is no longer needed:
* 1. Delete the line with the unneeded value
* 2. Do not update any 'MAX_VALUE' or any other value.
*/
window.DevToolsMetrics = {
Action: {
WindowDocked: 1,
WindowUndocked: 2,
ScriptsBreakpointSet: 3,
TimelineStarted: 4,
ProfilesCPUProfileTaken: 5,
ProfilesHeapProfileTaken: 6,
ConsoleEvaluated: 8,
FileSavedInWorkspace: 9,
DeviceModeEnabled: 10,
AnimationsPlaybackRateChanged: 11,
RevisionApplied: 12,
FileSystemDirectoryContentReceived: 13,
StyleRuleEdited: 14,
CommandEvaluatedInConsolePanel: 15,
DOMPropertiesExpanded: 16,
ResizedViewInResponsiveMode: 17,
TimelinePageReloadStarted: 18,
ConnectToNodeJSFromFrontend: 19,
ConnectToNodeJSDirectly: 20,
CpuThrottlingEnabled: 21,
CpuProfileNodeFocused: 22,
CpuProfileNodeExcluded: 23,
SelectFileFromFilePicker: 24,
SelectCommandFromCommandMenu: 25,
ChangeInspectedNodeInElementsPanel: 26,
StyleRuleCopied: 27,
CoverageStarted: 28,
LighthouseStarted: 29,
LighthouseFinished: 30,
ShowedThirdPartyBadges: 31,
LighthouseViewTrace: 32,
FilmStripStartedRecording: 33,
CoverageReportFiltered: 34,
CoverageStartedPerBlock: 35,
'SettingsOpenedFromGear-deprecated': 36,
'SettingsOpenedFromMenu-deprecated': 37,
'SettingsOpenedFromCommandMenu-deprecated': 38,
TabMovedToDrawer: 39,
TabMovedToMainPanel: 40,
CaptureCssOverviewClicked: 41,
VirtualAuthenticatorEnvironmentEnabled: 42,
SourceOrderViewActivated: 43,
UserShortcutAdded: 44,
ShortcutRemoved: 45,
ShortcutModified: 46,
CustomPropertyLinkClicked: 47,
CustomPropertyEdited: 48,
ServiceWorkerNetworkRequestClicked: 49,
ServiceWorkerNetworkRequestClosedQuickly: 50,
NetworkPanelServiceWorkerRespondWith: 51,
NetworkPanelCopyValue: 52,
ConsoleSidebarOpened: 53,
PerfPanelTraceImported: 54,
PerfPanelTraceExported: 55,
StackFrameRestarted: 56,
CaptureTestProtocolClicked: 57,
BreakpointRemovedFromRemoveButton: 58,
BreakpointGroupExpandedStateChanged: 59,
HeaderOverrideFileCreated: 60,
HeaderOverrideEnableEditingClicked: 61,
HeaderOverrideHeaderAdded: 62,
HeaderOverrideHeaderEdited: 63,
HeaderOverrideHeaderRemoved: 64,
HeaderOverrideHeadersFileEdited: 65,
PersistenceNetworkOverridesEnabled: 66,
PersistenceNetworkOverridesDisabled: 67,
BreakpointRemovedFromContextMenu: 68,
BreakpointsInFileRemovedFromRemoveButton: 69,
BreakpointsInFileRemovedFromContextMenu: 70,
BreakpointsInFileCheckboxToggled: 71,
BreakpointsInFileEnabledDisabledFromContextMenu: 72,
BreakpointConditionEditedFromSidebar: 73,
WorkspaceTabAddFolder: 74,
WorkspaceTabRemoveFolder: 75,
OverrideTabAddFolder: 76,
OverrideTabRemoveFolder: 77,
WorkspaceSourceSelected: 78,
OverridesSourceSelected: 79,
StyleSheetInitiatorLinkClicked: 80,
BreakpointRemovedFromGutterContextMenu: 81,
BreakpointRemovedFromGutterToggle: 82,
StylePropertyInsideKeyframeEdited: 83,
OverrideContentFromSourcesContextMenu: 84,
OverrideContentFromNetworkContextMenu: 85,
OverrideScript: 86,
OverrideStyleSheet: 87,
OverrideDocument: 88,
OverrideFetchXHR: 89,
OverrideImage: 90,
OverrideFont: 91,
OverrideContentContextMenuSetup: 92,
OverrideContentContextMenuAbandonSetup: 93,
OverrideContentContextMenuActivateDisabled: 94,
OverrideContentContextMenuOpenExistingFile: 95,
OverrideContentContextMenuSaveNewFile: 96,
ShowAllOverridesFromSourcesContextMenu: 97,
ShowAllOverridesFromNetworkContextMenu: 98,
AnimationGroupsCleared: 99,
AnimationsPaused: 100,
AnimationsResumed: 101,
AnimatedNodeDescriptionClicked: 102,
AnimationGroupScrubbed: 103,
AnimationGroupReplayed: 104,
OverrideTabDeleteFolderContextMenu: 105,
WorkspaceDropFolder: 107,
WorkspaceSelectFolder: 108,
OverrideContentContextMenuSourceMappedWarning: 109,
OverrideContentContextMenuRedirectToDeployed: 110,
NewStyleRuleAdded: 111,
TraceExpanded: 112,
InsightConsoleMessageShown: 113,
InsightRequestedViaContextMenu: 114,
InsightRequestedViaHoverButton: 115,
InsightRatedPositive: 117,
InsightRatedNegative: 118,
InsightClosed: 119,
InsightErrored: 120,
InsightHoverButtonShown: 121,
SelfXssWarningConsoleMessageShown: 122,
SelfXssWarningDialogShown: 123,
SelfXssAllowPastingInConsole: 124,
SelfXssAllowPastingInDialog: 125,
ToggleEmulateFocusedPageFromStylesPaneOn: 126,
ToggleEmulateFocusedPageFromStylesPaneOff: 127,
ToggleEmulateFocusedPageFromRenderingTab: 128,
ToggleEmulateFocusedPageFromCommandMenu: 129,
InsightGenerated: 130,
InsightErroredApi: 131,
InsightErroredMarkdown: 132,
ToggleShowWebVitals: 133,
InsightErroredPermissionDenied: 134,
InsightErroredCannotSend: 135,
InsightErroredRequestFailed: 136,
InsightErroredCannotParseChunk: 137,
InsightErroredUnknownChunk: 138,
InsightErroredOther: 139,
AutofillReceived: 140,
AutofillReceivedAndTabAutoOpened: 141,
AnimationGroupSelected: 142,
ScrollDrivenAnimationGroupSelected: 143,
ScrollDrivenAnimationGroupScrubbed: 144,
AiAssistanceOpenedFromElementsPanel: 145,
AiAssistanceOpenedFromStylesTab: 146,
ConsoleFilterByContext: 147,
ConsoleFilterBySource: 148,
ConsoleFilterByUrl: 149,
InsightConsentReminderShown: 150,
InsightConsentReminderCanceled: 151,
InsightConsentReminderConfirmed: 152,
InsightsOnboardingShown: 153,
InsightsOnboardingCanceledOnPage1: 154,
InsightsOnboardingCanceledOnPage2: 155,
InsightsOnboardingConfirmed: 156,
InsightsOnboardingNextPage: 157,
InsightsOnboardingPrevPage: 158,
InsightsOnboardingFeatureDisabled: 159,
InsightsOptInTeaserShown: 160,
InsightsOptInTeaserSettingsLinkClicked: 161,
InsightsOptInTeaserConfirmedInSettings: 162,
InsightsReminderTeaserShown: 163,
InsightsReminderTeaserConfirmed: 164,
InsightsReminderTeaserCanceled: 165,
InsightsReminderTeaserSettingsLinkClicked: 166,
InsightsReminderTeaserAbortedInSettings: 167,
GeneratingInsightWithoutDisclaimer: 168,
AiAssistanceOpenedFromElementsPanelFloatingButton: 169,
AiAssistanceOpenedFromNetworkPanel: 170,
AiAssistanceOpenedFromSourcesPanel: 171,
AiAssistanceOpenedFromSourcesPanelFloatingButton: 172,
AiAssistanceOpenedFromPerformancePanelCallTree: 173,
AiAssistanceOpenedFromNetworkPanelFloatingButton: 174,
AiAssistancePanelOpened: 175,
AiAssistanceQuerySubmitted: 176,
AiAssistanceAnswerReceived: 177,
AiAssistanceDynamicSuggestionClicked: 178,
AiAssistanceSideEffectConfirmed: 179,
AiAssistanceSideEffectRejected: 180,
AiAssistanceError: 181,
AiCodeCompletionResponseServedFromCache: 184,
AiCodeCompletionRequestTriggered: 185,
AiCodeCompletionSuggestionDisplayed: 186,
AiCodeCompletionSuggestionAccepted: 187,
AiCodeCompletionError: 188,
AttributeLinkClicked: 189,
InsightRequestedViaTeaser: 190,
InsightTeaserGenerationStarted: 191,
InsightTeaserGenerationCompleted: 192,
InsightTeaserGenerationAborted: 193,
InsightTeaserGenerationErrored: 194,
AiCodeGenerationSuggestionDisplayed: 195,
AiCodeGenerationSuggestionAccepted: 196,
InsightTeaserModelDownloadStarted: 197,
InsightTeaserModelDownloadCompleted: 198,
AiCodeGenerationError: 199,
AiCodeGenerationRequestTriggered: 200,
AiCodeCompletionRequestTriggeredFromConsole: 201,
AiCodeCompletionRequestTriggeredFromSources: 202,
AiCodeCompletionRequestTriggeredFromStyles: 203,
AiCodeGenerationRequestTriggeredFromConsole: 204,
AiCodeGenerationRequestTriggeredFromSources: 205,
AiCodeCompletionFreCompletedFromConsole: 206,
AiCodeCompletionFreCompletedFromSources: 207,
AiAssistanceOpenedFromApplicationPanelFloatingButton: 208,
AiAssistanceOpenedFromApplicationPanel: 209,
MAX_VALUE: 210,
},
PanelCodes: {
elements: 1,
resources: 2,
network: 3,
sources: 4,
timeline: 5,
'heap-profiler': 6,
console: 8,
layers: 9,
'console-view': 10,
animations: 11,
'network.config': 12,
rendering: 13,
sensors: 14,
'sources.search': 15,
security: 16,
'js-profiler': 17,
lighthouse: 18,
coverage: 19,
'protocol-monitor': 20,
'remote-devices': 21,
'web-audio': 22,
'changes.changes': 23,
'performance.monitor': 24,
'release-note': 25,
'sources.quick': 27,
'network.blocked-urls': 28,
'settings-preferences': 29,
'settings-workspace': 30,
'settings-experiments': 31,
'settings-blackbox': 32,
'settings-devices': 33,
'settings-throttling-conditions': 34,
'settings-emulation-locations': 35,
'settings-shortcuts': 36,
'issues-pane': 37,
'settings-keybinds': 38,
cssoverview: 39,
'chrome-recorder': 40,
'trust-tokens': 41,
'reporting-api': 42,
'interest-groups': 43,
'back-forward-cache': 44,
'service-worker-cache': 45,
'background-service-background-fetch': 46,
'background-service-background-sync': 47,
'background-service-push-messaging': 48,
'background-service-notifications': 49,
'background-service-payment-handler': 50,
'background-service-periodic-background-sync': 51,
'service-workers': 52,
'app-manifest': 53,
storage: 54,
cookies: 55,
'frame-details': 56,
'frame-resource': 57,
'frame-window': 58,
'frame-worker': 59,
'dom-storage': 60,
'indexed-db': 61,
'web-sql': 62,
'performance-insights': 63,
preloading: 64,
'bounce-tracking-mitigations': 65,
'developer-resources': 66,
'autofill-view': 67,
freestyler: 68,
ads: 69,
MAX_VALUE: 70,
},
MediaTypes: {
Unknown: 0,
'text/css': 2,
'text/html': 3,
'application/xml': 4,
'application/wasm': 5,
'application/manifest+json': 6,
'application/x-aspx': 7,
'application/jsp': 8,
'text/x-c++src': 9,
'text/x-coffeescript': 10,
'application/vnd.dart': 11,
'text/typescript': 12,
'text/typescript-jsx': 13,
'application/json': 14,
'text/x-csharp': 15,
'text/x-java': 16,
'text/x-less': 17,
'application/x-httpd-php': 18,
'text/x-python': 19,
'text/x-sh': 20,
'text/x-gss': 21,
'text/x-sass': 22,
'text/x-scss': 23,
'text/markdown': 24,
'text/x-clojure': 25,
'text/jsx': 26,
'text/x-go': 27,
'text/x-kotlin': 28,
'text/x-scala': 29,
'text/x.svelte': 30,
'text/javascript+plain': 31,
'text/javascript+minified': 32,
'text/javascript+sourcemapped': 33,
'text/x.angular': 34,
'text/x.vue': 35,
'text/javascript+snippet': 36,
'text/javascript+eval': 37,
MAX_VALUE: 38,
},
KeybindSetSettings: {
devToolsDefault: 0,
vsCode: 1,
MAX_VALUE: 2,
},
KeyboardShortcutAction: {
OtherShortcut: 0,
'quick-open.show-command-menu': 1,
'console.clear': 2,
'console.toggle': 3,
'debugger.step': 4,
'debugger.step-into': 5,
'debugger.step-out': 6,
'debugger.step-over': 7,
'debugger.toggle-breakpoint': 8,
'debugger.toggle-breakpoint-enabled': 9,
'debugger.toggle-pause': 10,
'elements.edit-as-html': 11,
'elements.hide-element': 12,
'elements.redo': 13,
'elements.toggle-element-search': 14,
'elements.undo': 15,
'main.search-in-panel.find': 16,
'main.toggle-drawer': 17,
'network.hide-request-details': 18,
'network.search': 19,
'network.toggle-recording': 20,
'quick-open.show': 21,
'settings.show': 22,
'sources.search': 23,
'background-service.toggle-recording': 24,
'components.collect-garbage': 25,
'console.clear.history': 26,
'console.create-pin': 27,
'coverage.start-with-reload': 28,
'coverage.toggle-recording': 29,
'debugger.breakpoint-input-window': 30,
'debugger.evaluate-selection': 31,
'debugger.next-call-frame': 32,
'debugger.previous-call-frame': 33,
'debugger.run-snippet': 34,
'debugger.toggle-breakpoints-active': 35,
'elements.capture-area-screenshot': 36,
'emulation.capture-full-height-screenshot': 37,
'emulation.capture-node-screenshot': 38,
'emulation.capture-screenshot': 39,
'emulation.show-sensors': 40,
'emulation.toggle-device-mode': 41,
'help.release-notes': 42,
'help.report-issue': 43,
'input.start-replaying': 44,
'input.toggle-pause': 45,
'input.toggle-recording': 46,
'inspector-main.focus-debuggee': 47,
'inspector-main.hard-reload': 48,
'inspector-main.reload': 49,
'main.debug-reload': 52,
'main.next-tab': 53,
'main.previous-tab': 54,
'main.search-in-panel.cancel': 55,
'main.search-in-panel.find-next': 56,
'main.search-in-panel.find-previous': 57,
'main.toggle-dock': 58,
'main.zoom-in': 59,
'main.zoom-out': 60,
'main.zoom-reset': 61,
'network-conditions.network-low-end-mobile': 62,
'network-conditions.network-mid-tier-mobile': 63,
'network-conditions.network-offline': 64,
'network-conditions.network-online': 65,
'profiler.heap-toggle-recording': 66,
'profiler.js-toggle-recording': 67,
'resources.clear': 68,
'settings.documentation': 69,
'settings.shortcuts': 70,
'sources.add-folder-to-workspace': 71,
'sources.add-to-watch': 72,
'sources.close-all': 73,
'sources.close-editor-tab': 74,
'sources.create-snippet': 75,
'sources.go-to-line': 76,
'sources.go-to-member': 77,
'sources.jump-to-next-location': 78,
'sources.jump-to-previous-location': 79,
'sources.rename': 80,
'sources.save': 81,
'sources.save-all': 82,
'sources.switch-file': 83,
'timeline.jump-to-next-frame': 84,
'timeline.jump-to-previous-frame': 85,
'timeline.load-from-file': 86,
'timeline.next-recording': 87,
'timeline.previous-recording': 88,
'timeline.record-reload': 89,
'timeline.save-to-file': 90,
'timeline.show-history': 91,
'timeline.toggle-recording': 92,
'sources.increment-css': 93,
'sources.increment-css-by-ten': 94,
'sources.decrement-css': 95,
'sources.decrement-css-by-ten': 96,
'layers.reset-view': 97,
'layers.pan-mode': 98,
'layers.rotate-mode': 99,
'layers.zoom-in': 100,
'layers.zoom-out': 101,
'layers.up': 102,
'layers.down': 103,
'layers.left': 104,
'layers.right': 105,
'help.report-translation-issue': 106,
'rendering.toggle-prefers-color-scheme': 107,
'chrome-recorder.start-recording': 108,
'chrome-recorder.replay-recording': 109,
'chrome-recorder.toggle-code-view': 110,
'chrome-recorder.copy-recording-or-step': 111,
'elements.new-style-rule': 114,
'elements.refresh-event-listeners': 115,
'coverage.clear': 116,
'coverage.export': 117,
'timeline.dim-third-parties': 118,
'main.toggle-drawer-orientation': 119,
MAX_VALUE: 120,
},
IssueOpener: {
CONSOLE_INFO_BAR: 0,
LEARN_MORE_LINK_COEP: 1,
STATUS_BAR_ISSUES_COUNTER: 2,
HAMBURGER_MENU: 3,
ADORNER: 4,
COMMAND_MENU: 5,
MORE_TOOLS_MENU: 6,
MAX_VALUE: 7,
},
DevtoolsExperiments: {
'protocol-monitor': 13,
'instrumentation-breakpoints': 61,
'durable-messages': 110,
'jpeg-xl': 111,
'plus-button': 112,
MAX_VALUE: 113,
},
IssueExpanded: {
CrossOriginEmbedderPolicy: 0,
MixedContent: 1,
SameSiteCookie: 2,
HeavyAd: 3,
ContentSecurityPolicy: 4,
Other: 5,
Generic: 6,
ThirdPartyPhaseoutCookie: 7,
GenericCookie: 8,
MAX_VALUE: 9,
},
IssueResourceOpened: {
CrossOriginEmbedderPolicyRequest: 0,
CrossOriginEmbedderPolicyElement: 1,
MixedContentRequest: 2,
SameSiteCookieCookie: 3,
SameSiteCookieRequest: 4,
HeavyAdElement: 5,
ContentSecurityPolicyDirective: 6,
ContentSecurityPolicyElement: 7,
MAX_VALUE: 13,
},
IssueCreated: {
MixedContentIssue: 0,
'ContentSecurityPolicyIssue::kInlineViolation': 1,
'ContentSecurityPolicyIssue::kEvalViolation': 2,
'ContentSecurityPolicyIssue::kURLViolation': 3,
'ContentSecurityPolicyIssue::kTrustedTypesSinkViolation': 4,
'ContentSecurityPolicyIssue::kTrustedTypesPolicyViolation': 5,
'HeavyAdIssue::NetworkTotalLimit': 6,
'HeavyAdIssue::CpuTotalLimit': 7,
'HeavyAdIssue::CpuPeakLimit': 8,
'CrossOriginEmbedderPolicyIssue::CoepFrameResourceNeedsCoepHeader': 9,
'CrossOriginEmbedderPolicyIssue::CoopSandboxedIFrameCannotNavigateToCoopPage': 10,
'CrossOriginEmbedderPolicyIssue::CorpNotSameOrigin': 11,
'CrossOriginEmbedderPolicyIssue::CorpNotSameOriginAfterDefaultedToSameOriginByCoep': 12,
'CrossOriginEmbedderPolicyIssue::CorpNotSameSite': 13,
'CookieIssue::ExcludeSameSiteNoneInsecure::ReadCookie': 14,
'CookieIssue::ExcludeSameSiteNoneInsecure::SetCookie': 15,
'CookieIssue::WarnSameSiteNoneInsecure::ReadCookie': 16,
'CookieIssue::WarnSameSiteNoneInsecure::SetCookie': 17,
'CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Secure': 18,
'CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Insecure': 19,
'CookieIssue::WarnCrossDowngrade::ReadCookie::Secure': 20,
'CookieIssue::WarnCrossDowngrade::ReadCookie::Insecure': 21,
'CookieIssue::WarnCrossDowngrade::SetCookie::Secure': 22,
'CookieIssue::WarnCrossDowngrade::SetCookie::Insecure': 23,
'CookieIssue::ExcludeNavigationContextDowngrade::Secure': 24,
'CookieIssue::ExcludeNavigationContextDowngrade::Insecure': 25,
'CookieIssue::ExcludeContextDowngrade::ReadCookie::Secure': 26,
'CookieIssue::ExcludeContextDowngrade::ReadCookie::Insecure': 27,
'CookieIssue::ExcludeContextDowngrade::SetCookie::Secure': 28,
'CookieIssue::ExcludeContextDowngrade::SetCookie::Insecure': 29,
'CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::ReadCookie': 30,
'CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::SetCookie': 31,
'CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::ReadCookie': 32,
'CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::SetCookie': 33,
'CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::ReadCookie': 34,
'CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::SetCookie': 35,
'SharedArrayBufferIssue::TransferIssue': 36,
'SharedArrayBufferIssue::CreationIssue': 37,
'CorsIssue::InsecureLocalNetwork': 42,
'CorsIssue::InvalidHeaders': 44,
'CorsIssue::WildcardOriginWithCredentials': 45,
'CorsIssue::PreflightResponseInvalid': 46,
'CorsIssue::OriginMismatch': 47,
'CorsIssue::AllowCredentialsRequired': 48,
'CorsIssue::MethodDisallowedByPreflightResponse': 49,
'CorsIssue::HeaderDisallowedByPreflightResponse': 50,
'CorsIssue::RedirectContainsCredentials': 51,
'CorsIssue::DisallowedByMode': 52,
'CorsIssue::CorsDisabledScheme': 53,
'CorsIssue::PreflightMissingAllowExternal': 54,
'CorsIssue::PreflightInvalidAllowExternal': 55,
'CorsIssue::NoCorsRedirectModeNotFollow': 57,
'QuirksModeIssue::QuirksMode': 58,
'QuirksModeIssue::LimitedQuirksMode': 59,
DeprecationIssue: 60,
'ClientHintIssue::MetaTagAllowListInvalidOrigin': 61,
'ClientHintIssue::MetaTagModifiedHTML': 62,
'GenericIssue::CrossOriginPortalPostMessageError': 64,
'GenericIssue::FormLabelForNameError': 65,
'GenericIssue::FormDuplicateIdForInputError': 66,
'GenericIssue::FormInputWithNoLabelError': 67,
'GenericIssue::FormAutocompleteAttributeEmptyError': 68,
'GenericIssue::FormEmptyIdAndNameAttributesForInputError': 69,
'GenericIssue::FormAriaLabelledByToNonExistingIdError': 70,
'GenericIssue::FormInputAssignedAutocompleteValueToIdOrNameAttributeError': 71,
'GenericIssue::FormLabelHasNeitherForNorNestedInputError': 72,
'GenericIssue::FormLabelForMatchesNonExistingIdError': 73,
'GenericIssue::FormHasPasswordFieldWithoutUsernameFieldError': 74,
'GenericIssue::FormInputHasWrongButWellIntendedAutocompleteValueError': 75,
'StylesheetLoadingIssue::LateImportRule': 76,
'StylesheetLoadingIssue::RequestFailed': 77,
'CookieIssue::WarnThirdPartyPhaseout::ReadCookie': 82,
'CookieIssue::WarnThirdPartyPhaseout::SetCookie': 83,
'CookieIssue::ExcludeThirdPartyPhaseout::ReadCookie': 84,
'CookieIssue::ExcludeThirdPartyPhaseout::SetCookie': 85,
'ElementAccessibilityIssue::DisallowedSelectChild': 86,
'ElementAccessibilityIssue::DisallowedOptGroupChild': 87,
'ElementAccessibilityIssue::NonPhrasingContentOptionChild': 88,
'ElementAccessibilityIssue::InteractiveContentOptionChild': 89,
'ElementAccessibilityIssue::InteractiveContentLegendChild': 90,
'SRIMessageSignatureIssue::MissingSignatureHeader': 91,
'SRIMessageSignatureIssue::MissingSignatureInputHeader': 92,
'SRIMessageSignatureIssue::InvalidSignatureHeader': 93,
'SRIMessageSignatureIssue::InvalidSignatureInputHeader': 94,
'SRIMessageSignatureIssue::SignatureHeaderValueIsNotByteSequence': 95,
'SRIMessageSignatureIssue::SignatureHeaderValueIsParameterized': 96,
'SRIMessageSignatureIssue::SignatureHeaderValueIsIncorrectLength': 97,
'SRIMessageSignatureIssue::SignatureInputHeaderMissingLabel': 98,
'SRIMessageSignatureIssue::SignatureInputHeaderValueNotInnerList': 99,
'SRIMessageSignatureIssue::SignatureInputHeaderValueMissingComponents': 100,
'SRIMessageSignatureIssue::SignatureInputHeaderInvalidComponentType': 101,
'SRIMessageSignatureIssue::SignatureInputHeaderInvalidComponentName': 102,
'SRIMessageSignatureIssue::SignatureInputHeaderInvalidHeaderComponentParameter': 103,
'SRIMessageSignatureIssue::SignatureInputHeaderInvalidDerivedComponentParameter': 104,
'SRIMessageSignatureIssue::SignatureInputHeaderKeyIdLength': 105,
'SRIMessageSignatureIssue::SignatureInputHeaderInvalidParameter': 106,
'SRIMessageSignatureIssue::SignatureInputHeaderMissingRequiredParameters': 107,
'SRIMessageSignatureIssue::ValidationFailedSignatureExpired': 108,
'SRIMessageSignatureIssue::ValidationFailedInvalidLength': 109,
'SRIMessageSignatureIssue::ValidationFailedSignatureMismatch': 110,
'CorsIssue::LocalNetworkAccessPermissionDenied': 111,
'SRIMessageSignatureIssue::ValidationFailedIntegrityMismatch': 112,
'ElementAccessibilityIssue::InteractiveContentSummaryDescendant': 113,
'CorsIssue::InvalidLocalNetworkAccess': 114,
MAX_VALUE: 115,
},
DeveloperResourceLoaded: {
LOAD_THROUGH_PAGE_VIA_TARGET: 0,
LOAD_THROUGH_PAGE_FAILURE: 2,
LOAD_THROUGH_PAGE_FALLBACK: 3,
FALLBACK_AFTER_FAILURE: 4,
FALLBACK_PER_OVERRIDE: 5,
FALLBACK_PER_PROTOCOL: 6,
FALLBACK_FAILURE: 7,
MAX_VALUE: 8,
},
DeveloperResourceScheme: {
OTHER: 0,
UKNOWN: 1,
HTTP: 2,
HTTPS: 3,
HTTP_LOCALHOST: 4,
HTTPS_LOCALHOST: 5,
DATA: 6,
FILE: 7,
BLOB: 8,
MAX_VALUE: 9,
},
Language: {
af: 1,
am: 2,
ar: 3,
as: 4,
az: 5,
be: 6,
bg: 7,
bn: 8,
bs: 9,
ca: 10,
cs: 11,
cy: 12,
da: 13,
de: 14,
el: 15,
'en-GB': 16,
'en-US': 17,
'es-419': 18,
es: 19,
et: 20,
eu: 21,
fa: 22,
fi: 23,
fil: 24,
'fr-CA': 25,
fr: 26,
gl: 27,
gu: 28,
he: 29,
hi: 30,
hr: 31,
hu: 32,
hy: 33,
id: 34,
is: 35,
it: 36,
ja: 37,
ka: 38,
kk: 39,
km: 40,
kn: 41,
ko: 42,
ky: 43,
lo: 44,
lt: 45,
lv: 46,
mk: 47,
ml: 48,
mn: 49,
mr: 50,
ms: 51,
my: 52,
ne: 53,
nl: 54,
no: 55,
or: 56,
pa: 57,
pl: 58,
'pt-PT': 59,
pt: 60,
ro: 61,
ru: 62,
si: 63,
sk: 64,
sl: 65,
sq: 66,
'sr-Latn': 67,
sr: 68,
sv: 69,
sw: 70,
ta: 71,
te: 72,
th: 73,
tr: 74,
uk: 75,
ur: 76,
uz: 77,
vi: 78,
zh: 79,
'zh-HK': 80,
'zh-TW': 81,
zu: 82,
MAX_VALUE: 83,
},
SyncSetting: {
CHROME_SYNC_DISABLED: 1,
CHROME_SYNC_SETTINGS_DISABLED: 2,
DEVTOOLS_SYNC_SETTING_DISABLED: 3,
DEVTOOLS_SYNC_SETTING_ENABLED: 4,
MAX_VALUE: 5,
},
RecordingToggled: {
RECORDING_STARTED: 1,
RECORDING_FINISHED: 2,
MAX_VALUE: 3,
},
RecordingAssertion: {
ASSERTION_ADDED: 1,
PROPERTY_ASSERTION_EDITED: 2,
ATTRIBUTE_ASSERTION_EDITED: 3,
MAX_VALUE: 4,
},
RecordingReplayFinished: {
SUCCESS: 1,
TIMEOUT_ERROR_SELECTORS: 2,
TIMEOUT_ERROR_TARGET: 3,
OTHER_ERROR: 4,
MAX_VALUE: 5,
},
RecordingReplaySpeed: {
NORMAL: 1,
SLOW: 2,
VERY_SLOW: 3,
EXTREMELY_SLOW: 4,
MAX_VALUE: 5,
},
RecordingReplayStarted: {
REPLAY_ONLY: 1,
REPLAY_WITH_PERFORMANCE_TRACING: 2,
REPLAY_VIA_EXTENSION: 3,
MAX_VALUE: 4,
},
RecordingEdited: {
SELECTOR_PICKER_USED: 1,
STEP_ADDED: 2,
STEP_REMOVED: 3,
SELECTOR_ADDED: 4,
SELECTOR_REMOVED: 5,
SELECTOR_PART_ADDED: 6,
SELECTOR_PART_EDITED: 7,
SELECTOR_PART_REMOVED: 8,
TYPE_CHANGED: 9,
OTHER_EDITING: 10,
MAX_VALUE: 11,
},
RecordingExported: {
TO_PUPPETEER: 1,
TO_JSON: 2,
TO_PUPPETEER_REPLAY: 3,
TO_EXTENSION: 4,
TO_LIGHTHOUSE: 5,
MAX_VALUE: 6,
},
RecordingCodeToggled: {
CODE_SHOWN: 1,
CODE_HIDDEN: 2,
MAX_VALUE: 3,
},
RecordingCopiedToClipboard: {
COPIED_RECORDING_WITH_PUPPETEER: 1,
COPIED_RECORDING_WITH_JSON: 2,
COPIED_RECORDING_WITH_REPLAY: 3,
COPIED_RECORDING_WITH_EXTENSION: 4,
COPIED_STEP_WITH_PUPPETEER: 5,
COPIED_STEP_WITH_JSON: 6,
COPIED_STEP_WITH_REPLAY: 7,
COPIED_STEP_WITH_EXTENSION: 8,
MAX_VALUE: 9,
},
ManifestSectionCodes: {
OtherSection: 0,
Identity: 1,
Presentation: 2,
'Protocol Handlers': 3,
Icons: 4,
'Window Controls Overlay': 5,
MAX_VALUE: 6,
},
LighthouseModeRun: {
NAVIGATION: 0,
TIMESPAN: 1,
SNAPSHOT: 2,
LEGACY_NAVIGATION: 3,
MAX_VALUE: 4,
},
LighthouseCategoryUsed: {
PERFORMANCE: 0,
ACCESSIBILITY: 1,
BEST_PRACTICES: 2,
SEO: 3,
PWA: 4,
PUB_ADS: 5,
AGENTIC_BROWSING: 6,
MAX_VALUE: 7,
},
SwatchType: {
VAR_LINK: 0,
ANIMATION_NAME_LINK: 1,
COLOR: 2,
ANIMATION_TIMING: 3,
SHADOW: 4,
GRID: 5,
FLEX: 6,
ANGLE: 7,
LENGTH: 8,
POSITION_TRY_LINK: 10,
ATTR_LINK: 11,
GRID_LANES: 12,
MAX_VALUE: 13,
},
BadgeType: {
GRID: 0,
SUBGRID: 1,
FLEX: 2,
AD: 3,
SCROLL_SNAP: 4,
CONTAINER: 5,
SLOT: 6,
TOP_LAYER: 7,
REVEAL: 8,
MAX_VALUE: 9,
},
AnimationsPlaybackRate: {
PERCENT_100: 0,
PERCENT_25: 1,
PERCENT_10: 2,
OTHER: 3,
MAX_VALUE: 4,
},
TimelineNavigationSetting: {
CLASSIC_AT_SESSION_FIRST_TRACE: 0,
MODERN_AT_SESSION_FIRST_TRACE: 1,
SWITCHED_TO_CLASSIC: 2,
SWITCHED_TO_MODERN: 3,
MAX_VALUE: 4,
},
BuiltInAiAvailability: {
UNAVAILABLE_HAS_GPU: 0,
DOWNLOADABLE_HAS_GPU: 1,
DOWNLOADING_HAS_GPU: 2,
AVAILABLE_HAS_GPU: 3,
DISABLED_HAS_GPU: 4,
UNAVAILABLE_NO_GPU: 5,
DOWNLOADABLE_NO_GPU: 6,
DOWNLOADING_NO_GPU: 7,
AVAILABLE_NO_GPU: 8,
DISABLED_NO_GPU: 9,
MAX_VALUE: 10,
},
ResendRequestType: {
XHR: 0,
FETCH: 1,
SCRIPT: 2,
STYLESHEET: 3,
IMAGE: 4,
MEDIA: 5,
FONT: 6,
WASM: 7,
MANIFEST: 8,
TEXT_TRACK: 9,
SOURCE_MAP_SCRIPT: 10,
SOURCE_MAP_STYLE_SHEET: 11,
DOCUMENT: 12,
PREFETCH: 13,
PING: 14,
OTHER: 15,
MAX_VALUE: 16,
},
};
// LINT.ThenChange(/front_end/core/host/UserMetricsEnums.ts)
// InspectorFrontendHostImpl --------------------------------------------------
/**
* Enum for recordEnumeratedHistogram
* Warning: There is another definition of this enum in the DevTools code
* base, keep them in sync:
* front_end/core/host/InspectorFrontendHostAPI.ts
* @readonly
* @enum {string}
*/
const EnumeratedHistogram = {
// LINT.IfChange(EnumeratedHistogram)
ActionTaken: 'DevTools.ActionTaken',
DeveloperResourceLoaded: 'DevTools.DeveloperResourceLoaded',
DeveloperResourceScheme: 'DevTools.DeveloperResourceScheme',
ExperimentDisabled: 'DevTools.ExperimentDisabled',
ExperimentDisabledAtLaunch: 'DevTools.ExperimentDisabledAtLaunch',
ExperimentEnabled: 'DevTools.ExperimentEnabled',
ExperimentEnabledAtLaunch: 'DevTools.ExperimentEnabledAtLaunch',
IssueCreated: 'DevTools.IssueCreated',
IssuesPanelIssueExpanded: 'DevTools.IssuesPanelIssueExpanded',
IssuesPanelOpenedFrom: 'DevTools.IssuesPanelOpenedFrom',
IssuesPanelResourceOpened: 'DevTools.IssuesPanelResourceOpened',
KeybindSetSettingChanged: 'DevTools.KeybindSetSettingChanged',
KeyboardShortcutFired: 'DevTools.KeyboardShortcutFired',
Language: 'DevTools.Language',
LighthouseModeRun: 'DevTools.LighthouseModeRun',
LighthouseCategoryUsed: 'DevTools.LighthouseCategoryUsed',
PanelShown: 'DevTools.PanelShown',
RecordingReplayFinished: 'DevTools.RecordingReplayFinished',
RecordingReplayStarted: 'DevTools.RecordingReplayStarted',
RecordingToggled: 'DevTools.RecordingToggled',
SourcesPanelFileDebugged: 'DevTools.SourcesPanelFileDebugged',
SourcesPanelFileOpened: 'DevTools.SourcesPanelFileOpened',
NetworkPanelResponsePreviewOpened: 'DevTools.NetworkPanelResponsePreviewOpened',
TimelineNavigationSettingState: 'DevTools.TimelineNavigationSettingState',
SyncSetting: 'DevTools.SyncSetting',
SwatchActivated: 'DevTools.SwatchActivated',
BuiltInAiAvailability: 'DevTools.BuiltInAiAvailability',
ResendRequest: 'DevTools.ResendRequest',
// LINT.ThenChange(/front_end/core/host/InspectorFrontendHostAPI.ts:EnumeratedHistogram)
};
/**
* @typedef {import('./core/host/InspectorFrontendHostAPI.js').InspectorFrontendHostAPI} InspectorFrontendHostAPI
* @implements {InspectorFrontendHostAPI}
*/
class InspectorFrontendHostImpl {
/**
* Update inside `front_end/core/host/InspectorFrontendHost.ts:627`
* @type {any}
*/
events;
/**
* @returns
*/
getSelectionBackgroundColor() {
return '#6e86ff';
}
/**
* @returns
*/
getSelectionForegroundColor() {
return '#ffffff';
}
/**
* @returns
*/
getInactiveSelectionBackgroundColor() {
return '#c9c8c8';
}
/**
* @returns
*/
getInactiveSelectionForegroundColor() {
return '#323232';
}
/**
* @returns
*/
platform() {
return DevToolsHost.platform();
}
loadCompleted() {
DevToolsAPI.sendMessageToEmbedder('loadCompleted', [], null);
}
bringToFront() {
DevToolsAPI.sendMessageToEmbedder('bringToFront', [], null);
}
closeWindow() {
DevToolsAPI.sendMessageToEmbedder('closeWindow', [], null);
}
/**
* @param isDocked
* @param callback
*/
setIsDocked(isDocked, callback) {
DevToolsAPI.sendMessageToEmbedder('setIsDocked', [isDocked], callback);
}
/**
* @param trigger
* @param {(param: object) => unknown} callback
*/
showSurvey(trigger, callback) {
DevToolsAPI.sendMessageToEmbedder('showSurvey', [trigger], callback);
}
/**
* @param trigger
* @param {(param: object) => unknown} callback
*/
canShowSurvey(trigger, callback) {
DevToolsAPI.sendMessageToEmbedder('canShowSurvey', [trigger], callback);
}
/**
* Requests inspected page to be placed atop of the inspector frontend with specified bounds.
* @param bounds
*/
setInspectedPageBounds(bounds) {
DevToolsAPI.sendMessageToEmbedder('setInspectedPageBounds', [bounds], null);
}
inspectElementCompleted() {
DevToolsAPI.sendMessageToEmbedder('inspectElementCompleted', [], null);
}
/**
* @param url
* @param headers
* @param streamId
* @param {(param: object) => unknown} callback
*/
loadNetworkResource(url, headers, streamId, callback) {
DevToolsAPI.sendMessageToEmbedder('loadNetworkResource', [url, headers, streamId], callback);
}
/**
* @param name
* @param options
*/
registerPreference(name, options) {
DevToolsAPI.sendMessageToEmbedder('registerPreference', [name, options], null);
}
/**
* @param {(param: object) => unknown} callback
*/
getPreferences(callback) {
DevToolsAPI.sendMessageToEmbedder('getPreferences', [], callback);
}
/**
* @param name
* @param {(param: object) => unknown} callback
*/
getPreference(name, callback) {
DevToolsAPI.sendMessageToEmbedder('getPreference', [name], callback);
}
/**
* @param name
* @param value
*/
setPreference(name, value) {
DevToolsAPI.sendMessageToEmbedder('setPreference', [name, value], null);
}
/**
* @param name
*/
removePreference(name) {
DevToolsAPI.sendMessageToEmbedder('removePreference', [name], null);
}
clearPreferences() {
DevToolsAPI.sendMessageToEmbedder('clearPreferences', [], null);
}
/**
* @param callback
*/
getSyncInformation(callback) {
DevToolsAPI.sendMessageToEmbedder('getSyncInformation', [], callback);
}
/**
* @param callback
*/
getHostConfig(callback) {
DevToolsAPI.sendMessageToEmbedder('getHostConfig', [], hostConfig => {
const majorVersion = getRemoteMajorVersion();
if (majorVersion && majorVersion < 129 && hostConfig?.aidaAvailability) {
return callback(this.hostConfigNewToOld(hostConfig));
}
return callback(hostConfig);
});
}
/**
* @param newConfig
*/
hostConfigNewToOld(newConfig) {
const devToolsConsoleInsights = {
enabled: (newConfig.devToolsConsoleInsights?.enabled && newConfig.aidaAvailability?.enabled) ?? false,
aidaModelId: newConfig.devToolsConsoleInsights?.modelId ?? '',
aidaTemperature: newConfig.devToolsConsoleInsights?.temperature ?? 0,
blockedByAge: newConfig.aidaAvailability?.blockedByAge ?? true,
blockedByEnterprisePolicy: newConfig.aidaAvailability?.blockedByEnterprisePolicy ?? true,
blockedByFeatureFlag:
(newConfig.devToolsConsoleInsights?.enabled && newConfig.aidaAvailability?.enabled) ?? false,
blockedByGeo: newConfig.aidaAvailability?.blockedByGeo ?? true,
blockedByRollout: false,
disallowLogging: newConfig.aidaAvailability?.disallowLogging ?? true,
optIn: false,
};
const devToolsFreestylerDogfood = {
enabled: (newConfig.devToolsFreestyler?.enabled && newConfig.aidaAvailability?.enabled) ?? false,
aidaModelId: newConfig.devToolsFreestyler?.modelId ?? '',
aidaTemperature: newConfig.devToolsFreestyler?.temperature ?? 0,
blockedByAge: newConfig.aidaAvailability?.blockedByAge ?? true,
blockedByEnterprisePolicy: newConfig.aidaAvailability?.blockedByEnterprisePolicy ?? true,
blockedByGeo: newConfig.aidaAvailability?.blockedByGeo ?? true,
};
return {
devToolsConsoleInsights,
devToolsFreestylerDogfood,
devToolsVeLogging: newConfig.devToolsVeLogging,
isOffTheRecord: newConfig.isOffTheRecord,
};
}
/**
* @param origin
* @param script
*/
setInjectedScriptForOrigin(origin, script) {
DevToolsAPI.sendMessageToEmbedder('registerExtensionsAPI', [origin, script], null);
}
/**
* @param url
*/
inspectedURLChanged(url) {
DevToolsAPI.sendMessageToEmbedder('inspectedURLChanged', [url], null);
}
/**
* @param text
*/
copyText(text) {
DevToolsHost.copyText(text);
}
/**
* @param url
*/
openInNewTab(url) {
DevToolsAPI.sendMessageToEmbedder('openInNewTab', [url], null);
}
/**
* @param query
*/
openSearchResultsInNewTab(query) {
DevToolsAPI.sendMessageToEmbedder('openSearchResultsInNewTab', [query], null);
}
/**
* @param fileSystemPath
*/
showItemInFolder(fileSystemPath) {
DevToolsAPI.sendMessageToEmbedder('showItemInFolder', [fileSystemPath], null);
}
/**
* @param url
* @param content
* @param forceSaveAs
* @param isBase64
*/
save(url, content, forceSaveAs, isBase64) {
DevToolsAPI.sendMessageToEmbedder('save', [url, content, forceSaveAs, isBase64], null);
}
/**
* @param url
* @param content
*/
append(url, content) {
DevToolsAPI.sendMessageToEmbedder('append', [url, content], null);
}
/**
* @param {string} _url
*/
close(_