diff --git a/public/Images/Images.js b/public/Images/Images.js
index d340bb36e..33d4f321d 100644
--- a/public/Images/Images.js
+++ b/public/Images/Images.js
@@ -192,6 +192,7 @@ style.setProperty('--image-file-redo', 'url(\"' + new URL(new URL('redo.svg', im
style.setProperty('--image-file-refresh', 'url(\"' + new URL(new URL('refresh.svg', import.meta.url).href, import.meta.url).toString() + '\")');
style.setProperty('--image-file-replace', 'url(\"' + new URL(new URL('replace.svg', import.meta.url).href, import.meta.url).toString() + '\")');
style.setProperty('--image-file-replay', 'url(\"' + new URL(new URL('replay.svg', import.meta.url).href, import.meta.url).toString() + '\")');
+style.setProperty('--image-file-report', 'url(\"' + new URL(new URL('report.svg', import.meta.url).href, import.meta.url).toString() + '\")');
style.setProperty('--image-file-resizeDiagonal', 'url(\"' + new URL(new URL('resizeDiagonal.svg', import.meta.url).href, import.meta.url).toString() + '\")');
style.setProperty('--image-file-resizeHorizontal', 'url(\"' + new URL(new URL('resizeHorizontal.svg', import.meta.url).href, import.meta.url).toString() + '\")');
style.setProperty('--image-file-resizeVertical', 'url(\"' + new URL(new URL('resizeVertical.svg', import.meta.url).href, import.meta.url).toString() + '\")');
diff --git a/public/Images/Images.prebundle.js b/public/Images/Images.prebundle.js
index 9497b87bd..8189dcf38 100644
--- a/public/Images/Images.prebundle.js
+++ b/public/Images/Images.prebundle.js
@@ -193,6 +193,7 @@ style.setProperty('--image-file-redo', 'url(\"' + new URL('./src/redo.svg', impo
style.setProperty('--image-file-refresh', 'url(\"' + new URL('./src/refresh.svg', import.meta.url).toString() + '\")');
style.setProperty('--image-file-replace', 'url(\"' + new URL('./src/replace.svg', import.meta.url).toString() + '\")');
style.setProperty('--image-file-replay', 'url(\"' + new URL('./src/replay.svg', import.meta.url).toString() + '\")');
+style.setProperty('--image-file-report', 'url(\"' + new URL('./src/report.svg', import.meta.url).toString() + '\")');
style.setProperty('--image-file-resizeDiagonal', 'url(\"' + new URL('./src/resizeDiagonal.svg', import.meta.url).toString() + '\")');
style.setProperty('--image-file-resizeHorizontal', 'url(\"' + new URL('./src/resizeHorizontal.svg', import.meta.url).toString() + '\")');
style.setProperty('--image-file-resizeVertical', 'url(\"' + new URL('./src/resizeVertical.svg', import.meta.url).toString() + '\")');
diff --git a/public/Images/mouse.svg b/public/Images/mouse.svg
index 1fc20959d..c228ef836 100644
--- a/public/Images/mouse.svg
+++ b/public/Images/mouse.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/public/Images/report.svg b/public/Images/report.svg
new file mode 100644
index 000000000..cd40abd86
--- /dev/null
+++ b/public/Images/report.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/Images/src/mouse.svg b/public/Images/src/mouse.svg
index b53a700f4..f4de5cb98 100644
--- a/public/Images/src/mouse.svg
+++ b/public/Images/src/mouse.svg
@@ -1,4 +1,4 @@
\ No newline at end of file
diff --git a/public/Images/src/report.svg b/public/Images/src/report.svg
new file mode 100644
index 000000000..cd40abd86
--- /dev/null
+++ b/public/Images/src/report.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/core/common/ColorUtils-tsconfig.json b/public/core/common/ColorUtils-tsconfig.json
index cc2fcb2d2..d1a51c164 100644
--- a/public/core/common/ColorUtils-tsconfig.json
+++ b/public/core/common/ColorUtils-tsconfig.json
@@ -33,7 +33,6 @@
"../../../../../../front_end/legacy/legacy-defs.d.ts",
"../../../../../../front_end/global_typings/global_defs.d.ts",
"../../../../../../front_end/global_typings/request_idle_callback.d.ts",
- "../../../../../../node_modules/@types/filesystem/index.d.ts",
- "../../../../../../node_modules/@webgpu/types/dist/index.d.ts"
+ "../../../../../../node_modules/@types/filesystem/index.d.ts"
]
}
\ No newline at end of file
diff --git a/public/core/common/common-tsconfig.json b/public/core/common/common-tsconfig.json
index 0ee122b82..445a01f9d 100644
--- a/public/core/common/common-tsconfig.json
+++ b/public/core/common/common-tsconfig.json
@@ -63,8 +63,7 @@
"../../../../../../front_end/legacy/legacy-defs.d.ts",
"../../../../../../front_end/global_typings/global_defs.d.ts",
"../../../../../../front_end/global_typings/request_idle_callback.d.ts",
- "../../../../../../node_modules/@types/filesystem/index.d.ts",
- "../../../../../../node_modules/@webgpu/types/dist/index.d.ts"
+ "../../../../../../node_modules/@types/filesystem/index.d.ts"
],
"references": [
{
diff --git a/public/core/common/devtools_entrypoint-bundle-typescript-tsconfig.json b/public/core/common/devtools_entrypoint-bundle-typescript-tsconfig.json
index f2e0b9be6..f7c5f7d06 100644
--- a/public/core/common/devtools_entrypoint-bundle-typescript-tsconfig.json
+++ b/public/core/common/devtools_entrypoint-bundle-typescript-tsconfig.json
@@ -33,8 +33,7 @@
"../../../../../../front_end/legacy/legacy-defs.d.ts",
"../../../../../../front_end/global_typings/global_defs.d.ts",
"../../../../../../front_end/global_typings/request_idle_callback.d.ts",
- "../../../../../../node_modules/@types/filesystem/index.d.ts",
- "../../../../../../node_modules/@webgpu/types/dist/index.d.ts"
+ "../../../../../../node_modules/@types/filesystem/index.d.ts"
],
"references": [
{
diff --git a/public/core/common/unittests-tsconfig.json b/public/core/common/unittests-tsconfig.json
index b98445b97..e9fe21a0c 100644
--- a/public/core/common/unittests-tsconfig.json
+++ b/public/core/common/unittests-tsconfig.json
@@ -65,8 +65,7 @@
"../../../../../../front_end/legacy/legacy-defs.d.ts",
"../../../../../../front_end/global_typings/global_defs.d.ts",
"../../../../../../front_end/global_typings/request_idle_callback.d.ts",
- "../../../../../../node_modules/@types/filesystem/index.d.ts",
- "../../../../../../node_modules/@webgpu/types/dist/index.d.ts"
+ "../../../../../../node_modules/@types/filesystem/index.d.ts"
],
"references": [
{
diff --git a/public/core/dom_extension/devtools_entrypoint-bundle-typescript-tsconfig.json b/public/core/dom_extension/devtools_entrypoint-bundle-typescript-tsconfig.json
index 0387d0e11..f5c763c16 100644
--- a/public/core/dom_extension/devtools_entrypoint-bundle-typescript-tsconfig.json
+++ b/public/core/dom_extension/devtools_entrypoint-bundle-typescript-tsconfig.json
@@ -33,8 +33,7 @@
"../../../../../../front_end/legacy/legacy-defs.d.ts",
"../../../../../../front_end/global_typings/global_defs.d.ts",
"../../../../../../front_end/global_typings/request_idle_callback.d.ts",
- "../../../../../../node_modules/@types/filesystem/index.d.ts",
- "../../../../../../node_modules/@webgpu/types/dist/index.d.ts"
+ "../../../../../../node_modules/@types/filesystem/index.d.ts"
],
"references": [
{
diff --git a/public/core/dom_extension/dom_extension-tsconfig.json b/public/core/dom_extension/dom_extension-tsconfig.json
index bc14de9a0..d8d5e55c8 100644
--- a/public/core/dom_extension/dom_extension-tsconfig.json
+++ b/public/core/dom_extension/dom_extension-tsconfig.json
@@ -33,8 +33,7 @@
"../../../../../../front_end/legacy/legacy-defs.d.ts",
"../../../../../../front_end/global_typings/global_defs.d.ts",
"../../../../../../front_end/global_typings/request_idle_callback.d.ts",
- "../../../../../../node_modules/@types/filesystem/index.d.ts",
- "../../../../../../node_modules/@webgpu/types/dist/index.d.ts"
+ "../../../../../../node_modules/@types/filesystem/index.d.ts"
],
"references": [
{
diff --git a/public/core/dom_extension/unittests-tsconfig.json b/public/core/dom_extension/unittests-tsconfig.json
index 59f2f09c3..513d9f5aa 100644
--- a/public/core/dom_extension/unittests-tsconfig.json
+++ b/public/core/dom_extension/unittests-tsconfig.json
@@ -41,8 +41,7 @@
"../../../../../../front_end/legacy/legacy-defs.d.ts",
"../../../../../../front_end/global_typings/global_defs.d.ts",
"../../../../../../front_end/global_typings/request_idle_callback.d.ts",
- "../../../../../../node_modules/@types/filesystem/index.d.ts",
- "../../../../../../node_modules/@webgpu/types/dist/index.d.ts"
+ "../../../../../../node_modules/@types/filesystem/index.d.ts"
],
"references": [
{
diff --git a/public/core/host/AidaClient.js b/public/core/host/AidaClient.js
index 2dede4b99..a924a5480 100644
--- a/public/core/host/AidaClient.js
+++ b/public/core/host/AidaClient.js
@@ -62,40 +62,56 @@ export class AidaClient {
const text = [];
let inCodeChunk = false;
while ((chunk = await stream.read())) {
- if (chunk.endsWith(']')) {
- chunk = chunk.slice(0, -1);
+ // The AIDA response is a JSON array of objects, split at the object
+ // boundary. Therefore each chunk may start with `[` or `,` and possibly
+ // followed by `]`. Each chunk may include one or more objects, so we
+ // make sure that each chunk becomes a well-formed JSON array when we
+ // parse it by adding `[` and `]` and removing `,` where appropriate.
+ if (!chunk.length) {
+ continue;
}
- if (chunk.startsWith(',') || chunk.startsWith('[')) {
+ if (chunk.startsWith(',')) {
chunk = chunk.slice(1);
}
- if (!chunk.length) {
- continue;
+ if (!chunk.startsWith('[')) {
+ chunk = '[' + chunk;
}
- const result = JSON.parse(chunk);
- const CODE_CHUNK_SEPARATOR = '\n`````\n';
- if ('textChunk' in result) {
- if (inCodeChunk) {
- text.push(CODE_CHUNK_SEPARATOR);
- inCodeChunk = false;
- }
- text.push(result.textChunk.text);
+ if (!chunk.endsWith(']')) {
+ chunk = chunk + ']';
}
- else if ('codeChunk' in result) {
- if (!inCodeChunk) {
- text.push(CODE_CHUNK_SEPARATOR);
- inCodeChunk = true;
- }
- text.push(result.codeChunk.code);
+ let results;
+ try {
+ results = JSON.parse(chunk);
}
- else if ('error' in result) {
- throw new Error(`Server responded: ${JSON.stringify(result)}`);
+ catch (error) {
+ throw new Error('Cannot parse chunk: ' + chunk, { cause: error });
}
- else {
- throw new Error('Unknown chunk result');
+ const CODE_CHUNK_SEPARATOR = '\n`````\n';
+ for (const result of results) {
+ if ('textChunk' in result) {
+ if (inCodeChunk) {
+ text.push(CODE_CHUNK_SEPARATOR);
+ inCodeChunk = false;
+ }
+ text.push(result.textChunk.text);
+ }
+ else if ('codeChunk' in result) {
+ if (!inCodeChunk) {
+ text.push(CODE_CHUNK_SEPARATOR);
+ inCodeChunk = true;
+ }
+ text.push(result.codeChunk.code);
+ }
+ else if ('error' in result) {
+ throw new Error(`Server responded: ${JSON.stringify(result)}`);
+ }
+ else {
+ throw new Error('Unknown chunk result');
+ }
}
yield {
explanation: text.join('') + (inCodeChunk ? CODE_CHUNK_SEPARATOR : ''),
- metadata: { rpcGlobalId: result?.metadata?.rpcGlobalId },
+ metadata: { rpcGlobalId: results[0]?.metadata?.rpcGlobalId },
};
}
}
diff --git a/public/core/host/AidaClient.js.map b/public/core/host/AidaClient.js.map
index 62440aecc..e8d3b253c 100644
--- a/public/core/host/AidaClient.js.map
+++ b/public/core/host/AidaClient.js.map
@@ -1 +1 @@
-{"version":3,"file":"AidaClient.js","sourceRoot":"","sources":["../../../../../../front_end/core/host/AidaClient.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2023 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as Platform from '../platform/platform.js';\nimport * as Root from '../root/root.js';\nimport {InspectorFrontendHostInstance} from './InspectorFrontendHost.js';\nimport {bindOutputStream} from './ResourceLoader.js';\n\nexport interface AidaRequest {\n input: string;\n client: string;\n options?: {\n temperature?: Number,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n model_id?: string,\n };\n}\n\nexport interface AidaResponse {\n explanation: string;\n metadata: {\n rpcGlobalId?: number,\n };\n}\n\nexport class AidaClient {\n static buildApiRequest(input: string): AidaRequest {\n const request: AidaRequest = {\n input,\n client: 'CHROME_DEVTOOLS',\n };\n const temperature = parseFloat(Root.Runtime.Runtime.queryParam('aidaTemperature') || '');\n if (!isNaN(temperature)) {\n request.options ??= {};\n request.options.temperature = temperature;\n }\n const modelId = Root.Runtime.Runtime.queryParam('aidaModelId');\n if (modelId) {\n request.options ??= {};\n request.options.model_id = modelId;\n }\n return request;\n }\n\n async * fetch(input: string): AsyncGenerator {\n if (!InspectorFrontendHostInstance.doAidaConversation) {\n throw new Error('doAidaConversation is not available');\n }\n const stream = (() => {\n let {promise, resolve, reject} = Platform.PromiseUtilities.promiseWithResolvers();\n return {\n write: async(data: string): Promise => {\n resolve(data);\n ({promise, resolve, reject} = Platform.PromiseUtilities.promiseWithResolvers());\n },\n close: async(): Promise => {\n resolve(null);\n },\n read: (): Promise => {\n return promise;\n },\n fail: (e: Error) => reject(e),\n };\n })();\n const streamId = bindOutputStream(stream);\n InspectorFrontendHostInstance.doAidaConversation(\n JSON.stringify(AidaClient.buildApiRequest(input)), streamId, result => {\n if (result.statusCode === 403) {\n stream.fail(new Error('Server responded: permission denied'));\n } else if (result.error) {\n stream.fail(new Error(`Cannot send request: ${result.error} ${result.detail || ''}`));\n } else if (result.statusCode !== 200) {\n stream.fail(new Error(`Request failed: ${JSON.stringify(result)}`));\n } else {\n void stream.close();\n }\n });\n let chunk;\n const text = [];\n let inCodeChunk = false;\n while ((chunk = await stream.read())) {\n if (chunk.endsWith(']')) {\n chunk = chunk.slice(0, -1);\n }\n if (chunk.startsWith(',') || chunk.startsWith('[')) {\n chunk = chunk.slice(1);\n }\n if (!chunk.length) {\n continue;\n }\n const result = JSON.parse(chunk);\n const CODE_CHUNK_SEPARATOR = '\\n`````\\n';\n if ('textChunk' in result) {\n if (inCodeChunk) {\n text.push(CODE_CHUNK_SEPARATOR);\n inCodeChunk = false;\n }\n text.push(result.textChunk.text);\n } else if ('codeChunk' in result) {\n if (!inCodeChunk) {\n text.push(CODE_CHUNK_SEPARATOR);\n inCodeChunk = true;\n }\n text.push(result.codeChunk.code);\n } else if ('error' in result) {\n throw new Error(`Server responded: ${JSON.stringify(result)}`);\n } else {\n throw new Error('Unknown chunk result');\n }\n yield {\n explanation: text.join('') + (inCodeChunk ? CODE_CHUNK_SEPARATOR : ''),\n metadata: {rpcGlobalId: result?.metadata?.rpcGlobalId},\n };\n }\n }\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"AidaClient.js","sourceRoot":"","sources":["../../../../../../front_end/core/host/AidaClient.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,yEAAyE;AACzE,6BAA6B;AAE7B,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAC,6BAA6B,EAAC,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AAmBrD,MAAM,OAAO,UAAU;IACrB,MAAM,CAAC,eAAe,CAAC,KAAa;QAClC,MAAM,OAAO,GAAgB;YAC3B,KAAK;YACL,MAAM,EAAE,iBAAiB;SAC1B,CAAC;QACF,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;YACvB,OAAO,CAAC,OAAO,KAAK,EAAE,CAAC;YACvB,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;SAC3C;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/D,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,OAAO,KAAK,EAAE,CAAC;YACvB,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;SACpC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,CAAE,KAAK,CAAC,KAAa;QACzB,IAAI,CAAC,6BAA6B,CAAC,kBAAkB,EAAE;YACrD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;SACxD;QACD,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE;YACnB,IAAI,EAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,oBAAoB,EAAe,CAAC;YAC/F,OAAO;gBACL,KAAK,EAAE,KAAK,EAAC,IAAY,EAAiB,EAAE;oBAC1C,OAAO,CAAC,IAAI,CAAC,CAAC;oBACd,CAAC,EAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,oBAAoB,EAAe,CAAC,CAAC;gBAC/F,CAAC;gBACD,KAAK,EAAE,KAAK,IAAkB,EAAE;oBAC9B,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;gBACD,IAAI,EAAE,GAAyB,EAAE;oBAC/B,OAAO,OAAO,CAAC;gBACjB,CAAC;gBACD,IAAI,EAAE,CAAC,CAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;aAC9B,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;QACL,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC1C,6BAA6B,CAAC,kBAAkB,CAC5C,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;YACpE,IAAI,MAAM,CAAC,UAAU,KAAK,GAAG,EAAE;gBAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;aAC/D;iBAAM,IAAI,MAAM,CAAC,KAAK,EAAE;gBACvB,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;aACvF;iBAAM,IAAI,MAAM,CAAC,UAAU,KAAK,GAAG,EAAE;gBACpC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;aACrE;iBAAM;gBACL,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;aACrB;QACH,CAAC,CAAC,CAAC;QACP,IAAI,KAAK,CAAC;QACV,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,OAAO,CAAC,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE;YACpC,oEAAoE;YACpE,wEAAwE;YACxE,qEAAqE;YACrE,qEAAqE;YACrE,qEAAqE;YACrE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBACjB,SAAS;aACV;YACD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBACzB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACxB;YACD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC1B,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;aACrB;YACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACxB,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;aACrB;YACD,IAAI,OAAO,CAAC;YACZ,IAAI;gBACF,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC7B;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,KAAK,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;aACjE;YACD,MAAM,oBAAoB,GAAG,WAAW,CAAC;YACzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,IAAI,WAAW,IAAI,MAAM,EAAE;oBACzB,IAAI,WAAW,EAAE;wBACf,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;wBAChC,WAAW,GAAG,KAAK,CAAC;qBACrB;oBACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBAClC;qBAAM,IAAI,WAAW,IAAI,MAAM,EAAE;oBAChC,IAAI,CAAC,WAAW,EAAE;wBAChB,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;wBAChC,WAAW,GAAG,IAAI,CAAC;qBACpB;oBACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;iBAClC;qBAAM,IAAI,OAAO,IAAI,MAAM,EAAE;oBAC5B,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;iBAChE;qBAAM;oBACL,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;iBACzC;aACF;YACD,MAAM;gBACJ,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,QAAQ,EAAE,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAC;aAC3D,CAAC;SACH;IACH,CAAC;CACF","sourcesContent":["// Copyright 2023 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as Platform from '../platform/platform.js';\nimport * as Root from '../root/root.js';\nimport {InspectorFrontendHostInstance} from './InspectorFrontendHost.js';\nimport {bindOutputStream} from './ResourceLoader.js';\n\nexport interface AidaRequest {\n input: string;\n client: string;\n options?: {\n temperature?: Number,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n model_id?: string,\n };\n}\n\nexport interface AidaResponse {\n explanation: string;\n metadata: {\n rpcGlobalId?: number,\n };\n}\n\nexport class AidaClient {\n static buildApiRequest(input: string): AidaRequest {\n const request: AidaRequest = {\n input,\n client: 'CHROME_DEVTOOLS',\n };\n const temperature = parseFloat(Root.Runtime.Runtime.queryParam('aidaTemperature') || '');\n if (!isNaN(temperature)) {\n request.options ??= {};\n request.options.temperature = temperature;\n }\n const modelId = Root.Runtime.Runtime.queryParam('aidaModelId');\n if (modelId) {\n request.options ??= {};\n request.options.model_id = modelId;\n }\n return request;\n }\n\n async * fetch(input: string): AsyncGenerator {\n if (!InspectorFrontendHostInstance.doAidaConversation) {\n throw new Error('doAidaConversation is not available');\n }\n const stream = (() => {\n let {promise, resolve, reject} = Platform.PromiseUtilities.promiseWithResolvers();\n return {\n write: async(data: string): Promise => {\n resolve(data);\n ({promise, resolve, reject} = Platform.PromiseUtilities.promiseWithResolvers());\n },\n close: async(): Promise => {\n resolve(null);\n },\n read: (): Promise => {\n return promise;\n },\n fail: (e: Error) => reject(e),\n };\n })();\n const streamId = bindOutputStream(stream);\n InspectorFrontendHostInstance.doAidaConversation(\n JSON.stringify(AidaClient.buildApiRequest(input)), streamId, result => {\n if (result.statusCode === 403) {\n stream.fail(new Error('Server responded: permission denied'));\n } else if (result.error) {\n stream.fail(new Error(`Cannot send request: ${result.error} ${result.detail || ''}`));\n } else if (result.statusCode !== 200) {\n stream.fail(new Error(`Request failed: ${JSON.stringify(result)}`));\n } else {\n void stream.close();\n }\n });\n let chunk;\n const text = [];\n let inCodeChunk = false;\n while ((chunk = await stream.read())) {\n // The AIDA response is a JSON array of objects, split at the object\n // boundary. Therefore each chunk may start with `[` or `,` and possibly\n // followed by `]`. Each chunk may include one or more objects, so we\n // make sure that each chunk becomes a well-formed JSON array when we\n // parse it by adding `[` and `]` and removing `,` where appropriate.\n if (!chunk.length) {\n continue;\n }\n if (chunk.startsWith(',')) {\n chunk = chunk.slice(1);\n }\n if (!chunk.startsWith('[')) {\n chunk = '[' + chunk;\n }\n if (!chunk.endsWith(']')) {\n chunk = chunk + ']';\n }\n let results;\n try {\n results = JSON.parse(chunk);\n } catch (error) {\n throw new Error('Cannot parse chunk: ' + chunk, {cause: error});\n }\n const CODE_CHUNK_SEPARATOR = '\\n`````\\n';\n for (const result of results) {\n if ('textChunk' in result) {\n if (inCodeChunk) {\n text.push(CODE_CHUNK_SEPARATOR);\n inCodeChunk = false;\n }\n text.push(result.textChunk.text);\n } else if ('codeChunk' in result) {\n if (!inCodeChunk) {\n text.push(CODE_CHUNK_SEPARATOR);\n inCodeChunk = true;\n }\n text.push(result.codeChunk.code);\n } else if ('error' in result) {\n throw new Error(`Server responded: ${JSON.stringify(result)}`);\n } else {\n throw new Error('Unknown chunk result');\n }\n }\n yield {\n explanation: text.join('') + (inCodeChunk ? CODE_CHUNK_SEPARATOR : ''),\n metadata: {rpcGlobalId: results[0]?.metadata?.rpcGlobalId},\n };\n }\n }\n}\n"]}
\ No newline at end of file
diff --git a/public/core/host/AidaClient.test.js b/public/core/host/AidaClient.test.js
index a6b2de718..d95b5213f 100644
--- a/public/core/host/AidaClient.test.js
+++ b/public/core/host/AidaClient.test.js
@@ -121,6 +121,68 @@ describe('AidaClient', () => {
{ explanation: 'hello brave new world!', metadata: { rpcGlobalId: 123 } },
]);
});
+ it('handles chunked response with multiple objects per chunk', async () => {
+ sinon.stub(Host.InspectorFrontendHost.InspectorFrontendHostInstance, 'doAidaConversation')
+ .callsFake(async (_, streamId, callback) => {
+ const response = JSON.stringify([
+ { textChunk: { text: 'Friends, Romans, countrymen, lend me your ears;\n' }, metadata: { rpcGlobalId: 123 } },
+ { textChunk: { text: 'I come to bury Caesar, not to praise him.\n' }, metadata: { rpcGlobalId: 123 } },
+ { textChunk: { text: 'The evil that men do lives after them;\n' }, metadata: { rpcGlobalId: 123 } },
+ { textChunk: { text: 'The good is oft interred with their bones;\n' }, metadata: { rpcGlobalId: 123 } },
+ { textChunk: { text: 'So let it be with Caesar. The noble Brutus\n' }, metadata: { rpcGlobalId: 123 } },
+ { textChunk: { text: 'Hath told you Caesar was ambitious:\n' }, metadata: { rpcGlobalId: 123 } },
+ { textChunk: { text: 'If it were so, it was a grievous fault,\n' }, metadata: { rpcGlobalId: 123 } },
+ { textChunk: { text: 'And grievously hath Caesar answer’d it.\n' }, metadata: { rpcGlobalId: 123 } },
+ ]);
+ const chunks = response.split(',{');
+ await new Promise(resolve => setTimeout(resolve, 0));
+ Host.ResourceLoader.streamWrite(streamId, chunks[0] + ',{' + chunks[1]);
+ await new Promise(resolve => setTimeout(resolve, 0));
+ Host.ResourceLoader.streamWrite(streamId, ',{' + chunks[2] + ',{' + chunks[3] + ',{' + chunks[4]);
+ await new Promise(resolve => setTimeout(resolve, 0));
+ Host.ResourceLoader.streamWrite(streamId, ',{' + chunks[5]);
+ await new Promise(resolve => setTimeout(resolve, 0));
+ Host.ResourceLoader.streamWrite(streamId, ',{' + chunks[6] + ',{' + chunks[7]);
+ callback({ statusCode: 200 });
+ });
+ const provider = new Host.AidaClient.AidaClient();
+ const results = await getAllResults(provider);
+ assert.deepStrictEqual(results, [
+ {
+ explanation: 'Friends, Romans, countrymen, lend me your ears;\n' +
+ 'I come to bury Caesar, not to praise him.\n',
+ metadata: { rpcGlobalId: 123 },
+ },
+ {
+ explanation: 'Friends, Romans, countrymen, lend me your ears;\n' +
+ 'I come to bury Caesar, not to praise him.\n' +
+ 'The evil that men do lives after them;\n' +
+ 'The good is oft interred with their bones;\n' +
+ 'So let it be with Caesar. The noble Brutus\n',
+ metadata: { rpcGlobalId: 123 },
+ },
+ {
+ explanation: 'Friends, Romans, countrymen, lend me your ears;\n' +
+ 'I come to bury Caesar, not to praise him.\n' +
+ 'The evil that men do lives after them;\n' +
+ 'The good is oft interred with their bones;\n' +
+ 'So let it be with Caesar. The noble Brutus\n' +
+ 'Hath told you Caesar was ambitious:\n',
+ metadata: { rpcGlobalId: 123 },
+ },
+ {
+ explanation: 'Friends, Romans, countrymen, lend me your ears;\n' +
+ 'I come to bury Caesar, not to praise him.\n' +
+ 'The evil that men do lives after them;\n' +
+ 'The good is oft interred with their bones;\n' +
+ 'So let it be with Caesar. The noble Brutus\n' +
+ 'Hath told you Caesar was ambitious:\n' +
+ 'If it were so, it was a grievous fault,\n' +
+ 'And grievously hath Caesar answer’d it.\n',
+ metadata: { rpcGlobalId: 123 },
+ },
+ ]);
+ });
it('handles subsequent code chunks', async () => {
sinon.stub(Host.InspectorFrontendHost.InspectorFrontendHostInstance, 'doAidaConversation')
.callsFake(async (_, streamId, callback) => {
diff --git a/public/core/host/AidaClient.test.js.map b/public/core/host/AidaClient.test.js.map
index b097713c7..b7859e03e 100644
--- a/public/core/host/AidaClient.test.js.map
+++ b/public/core/host/AidaClient.test.js.map
@@ -1 +1 @@
-{"version":3,"file":"AidaClient.test.js","sourceRoot":"","sources":["../../../../../../front_end/core/host/AidaClient.test.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2023 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as Host from './host.js';\nimport * as Root from '../root/root.js';\n\nconst {assert} = chai;\n\nconst TEST_MODEL_ID = 'testModelId';\n\ndescribe('AidaClient', () => {\n it('adds no model temperature if there is no aidaTemperature query param', () => {\n const stub = sinon.stub(Root.Runtime.Runtime, 'queryParam');\n stub.withArgs('aidaTemperature').returns(null);\n const request = Host.AidaClient.AidaClient.buildApiRequest('foo');\n assert.deepStrictEqual(request, {\n input: 'foo',\n client: 'CHROME_DEVTOOLS',\n });\n stub.restore();\n });\n\n it('adds a model temperature', () => {\n const stub = sinon.stub(Root.Runtime.Runtime, 'queryParam');\n stub.withArgs('aidaTemperature').returns('0.5');\n const request = Host.AidaClient.AidaClient.buildApiRequest('foo');\n assert.deepStrictEqual(request, {\n input: 'foo',\n client: 'CHROME_DEVTOOLS',\n options: {\n temperature: 0.5,\n },\n });\n stub.restore();\n });\n\n it('adds a model temperature of 0', () => {\n const stub = sinon.stub(Root.Runtime.Runtime, 'queryParam');\n stub.withArgs('aidaTemperature').returns('0');\n const request = Host.AidaClient.AidaClient.buildApiRequest('foo');\n assert.deepStrictEqual(request, {\n input: 'foo',\n client: 'CHROME_DEVTOOLS',\n options: {\n temperature: 0,\n },\n });\n stub.restore();\n });\n\n it('adds no model temperature if the aidaTemperature query param cannot be parsed into a float', () => {\n const stub = sinon.stub(Root.Runtime.Runtime, 'queryParam');\n stub.withArgs('aidaTemperature').returns('not a number');\n const request = Host.AidaClient.AidaClient.buildApiRequest('foo');\n assert.deepStrictEqual(request, {\n input: 'foo',\n client: 'CHROME_DEVTOOLS',\n });\n stub.restore();\n });\n\n it('adds no model id if there is no aidaModelId query param', () => {\n const stub = sinon.stub(Root.Runtime.Runtime, 'queryParam');\n stub.withArgs('aidaModelId').returns(null);\n const request = Host.AidaClient.AidaClient.buildApiRequest('foo');\n assert.deepStrictEqual(request, {\n input: 'foo',\n client: 'CHROME_DEVTOOLS',\n });\n stub.restore();\n });\n\n it('adds a model id', () => {\n const stub = sinon.stub(Root.Runtime.Runtime, 'queryParam');\n stub.withArgs('aidaModelId').returns(TEST_MODEL_ID);\n const request = Host.AidaClient.AidaClient.buildApiRequest('foo');\n assert.deepStrictEqual(request, {\n input: 'foo',\n client: 'CHROME_DEVTOOLS',\n options: {\n model_id: TEST_MODEL_ID,\n },\n });\n stub.restore();\n });\n\n it('adds a model id and temperature', () => {\n const stub = sinon.stub(Root.Runtime.Runtime, 'queryParam');\n stub.withArgs('aidaModelId').returns(TEST_MODEL_ID);\n stub.withArgs('aidaTemperature').returns('0.5');\n const request = Host.AidaClient.AidaClient.buildApiRequest('foo');\n assert.deepStrictEqual(request, {\n input: 'foo',\n client: 'CHROME_DEVTOOLS',\n options: {\n model_id: TEST_MODEL_ID,\n temperature: 0.5,\n },\n });\n stub.restore();\n });\n\n async function getAllResults(provider: Host.AidaClient.AidaClient): Promise {\n const results = [];\n for await (const result of provider.fetch('foo')) {\n results.push(result);\n }\n return results;\n }\n\n it('handles chunked response', async () => {\n sinon.stub(Host.InspectorFrontendHost.InspectorFrontendHostInstance, 'doAidaConversation')\n .callsFake(async (_, streamId, callback) => {\n const response = JSON.stringify([\n {textChunk: {text: 'hello '}, metadata: {rpcGlobalId: 123}},\n {textChunk: {text: 'brave '}, metadata: {rpcGlobalId: 123}},\n {textChunk: {text: 'new world!'}, metadata: {rpcGlobalId: 123}},\n ]);\n let first = true;\n for (const chunk of response.split(',{')) {\n await new Promise(resolve => setTimeout(resolve, 0));\n Host.ResourceLoader.streamWrite(streamId, first ? chunk : ',{' + chunk);\n first = false;\n }\n callback({statusCode: 200});\n });\n\n const provider = new Host.AidaClient.AidaClient();\n const results = await getAllResults(provider);\n assert.deepStrictEqual(results, [\n {explanation: 'hello ', metadata: {rpcGlobalId: 123}},\n {explanation: 'hello brave ', metadata: {rpcGlobalId: 123}},\n {explanation: 'hello brave new world!', metadata: {rpcGlobalId: 123}},\n ]);\n });\n\n it('handles subsequent code chunks', async () => {\n sinon.stub(Host.InspectorFrontendHost.InspectorFrontendHostInstance, 'doAidaConversation')\n .callsFake(async (_, streamId, callback) => {\n const response = JSON.stringify([\n {textChunk: {text: 'hello '}},\n {codeChunk: {code: 'brave '}},\n {codeChunk: {code: 'new World()'}},\n ]);\n for (const chunk of response.split(',')) {\n await new Promise(resolve => setTimeout(resolve, 0));\n Host.ResourceLoader.streamWrite(streamId, chunk);\n }\n callback({statusCode: 200});\n });\n\n const provider = new Host.AidaClient.AidaClient();\n const results = (await getAllResults(provider)).map(r => r.explanation);\n assert.deepStrictEqual(\n results, ['hello ', 'hello \\n`````\\nbrave \\n`````\\n', 'hello \\n`````\\nbrave new World()\\n`````\\n']);\n });\n\n it('throws a readable error on 403', async () => {\n sinon.stub(Host.InspectorFrontendHost.InspectorFrontendHostInstance, 'doAidaConversation').callsArgWith(2, {\n 'statusCode': 403,\n });\n const provider = new Host.AidaClient.AidaClient();\n try {\n await getAllResults(provider);\n expect.fail('provider.fetch did not throw');\n } catch (err) {\n expect(err.message).equals('Server responded: permission denied');\n }\n });\n\n it('throws an error for other codes', async () => {\n sinon.stub(Host.InspectorFrontendHost.InspectorFrontendHostInstance, 'doAidaConversation').callsArgWith(2, {\n 'statusCode': 418,\n });\n const provider = new Host.AidaClient.AidaClient();\n try {\n await getAllResults(provider);\n expect.fail('provider.fetch did not throw');\n } catch (err) {\n expect(err.message).equals('Request failed: {\"statusCode\":418}');\n }\n });\n\n it('throws an error with all details for other failures', async () => {\n sinon.stub(Host.InspectorFrontendHost.InspectorFrontendHostInstance, 'doAidaConversation').callsArgWith(2, {\n 'error': 'Cannot get OAuth credentials',\n 'detail': '{\\'@type\\': \\'type.googleapis.com/google.rpc.DebugInfo\\', \\'detail\\': \\'DETAILS\\'}',\n });\n const provider = new Host.AidaClient.AidaClient();\n try {\n await getAllResults(provider);\n expect.fail('provider.fetch did not throw');\n } catch (err) {\n expect(err.message)\n .equals(\n 'Cannot send request: Cannot get OAuth credentials {\\'@type\\': \\'type.googleapis.com/google.rpc.DebugInfo\\', \\'detail\\': \\'DETAILS\\'}');\n }\n });\n});\n"]}
\ No newline at end of file
+{"version":3,"file":"AidaClient.test.js","sourceRoot":"","sources":["../../../../../../front_end/core/host/AidaClient.test.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,yEAAyE;AACzE,6BAA6B;AAE7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AAExC,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,CAAC;AAEtB,MAAM,aAAa,GAAG,aAAa,CAAC;AAEpC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;YAC9B,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,iBAAiB;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;YAC9B,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,iBAAiB;YACzB,OAAO,EAAE;gBACP,WAAW,EAAE,GAAG;aACjB;SACF,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;YAC9B,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,iBAAiB;YACzB,OAAO,EAAE;gBACP,WAAW,EAAE,CAAC;aACf;SACF,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4FAA4F,EAAE,GAAG,EAAE;QACpG,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;YAC9B,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,iBAAiB;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;YAC9B,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,iBAAiB;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;YAC9B,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,iBAAiB;YACzB,OAAO,EAAE;gBACP,QAAQ,EAAE,aAAa;aACxB;SACF,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;YAC9B,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,iBAAiB;YACzB,OAAO,EAAE;gBACP,QAAQ,EAAE,aAAa;gBACvB,WAAW,EAAE,GAAG;aACjB;SACF,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,aAAa,CAAC,QAAoC;QAC/D,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAChD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACtB;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,EAAE,oBAAoB,CAAC;aACrF,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC9B,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC,EAAC;gBAC3D,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC,EAAC;gBAC3D,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,YAAY,EAAC,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC,EAAC;aAChE,CAAC,CAAC;YACH,IAAI,KAAK,GAAG,IAAI,CAAC;YACjB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACxC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;gBACxE,KAAK,GAAG,KAAK,CAAC;aACf;YACD,QAAQ,CAAC,EAAC,UAAU,EAAE,GAAG,EAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEP,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;YAC9B,EAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC,EAAC;YACrD,EAAC,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC,EAAC;YAC3D,EAAC,WAAW,EAAE,wBAAwB,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC,EAAC;SACtE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,EAAE,oBAAoB,CAAC;aACrF,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC9B,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,mDAAmD,EAAC,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC,EAAC;gBACtG,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,6CAA6C,EAAC,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC,EAAC;gBAChG,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,0CAA0C,EAAC,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC,EAAC;gBAC7F,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,8CAA8C,EAAC,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC,EAAC;gBACjG,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,8CAA8C,EAAC,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC,EAAC;gBACjG,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,uCAAuC,EAAC,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC,EAAC;gBAC1F,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,2CAA2C,EAAC,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC,EAAC;gBAC9F,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,2CAA2C,EAAC,EAAE,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC,EAAC;aAC/F,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAClG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/E,QAAQ,CAAC,EAAC,UAAU,EAAE,GAAG,EAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEP,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE;YAC9B;gBACE,WAAW,EAAE,mDAAmD;oBAC5D,6CAA6C;gBACjD,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC;aAC7B;YACD;gBACE,WAAW,EAAE,mDAAmD;oBAC5D,6CAA6C;oBAC7C,0CAA0C;oBAC1C,8CAA8C;oBAC9C,8CAA8C;gBAClD,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC;aAC7B;YACD;gBACE,WAAW,EAAE,mDAAmD;oBAC5D,6CAA6C;oBAC7C,0CAA0C;oBAC1C,8CAA8C;oBAC9C,8CAA8C;oBAC9C,uCAAuC;gBAC3C,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC;aAC7B;YACD;gBACE,WAAW,EAAE,mDAAmD;oBAC5D,6CAA6C;oBAC7C,0CAA0C;oBAC1C,8CAA8C;oBAC9C,8CAA8C;oBAC9C,uCAAuC;oBACvC,2CAA2C;oBAC3C,2CAA2C;gBAC/C,QAAQ,EAAE,EAAC,WAAW,EAAE,GAAG,EAAC;aAC7B;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,EAAE,oBAAoB,CAAC;aACrF,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC9B,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAC;gBAC7B,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAC;gBAC7B,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,aAAa,EAAC,EAAC;aACnC,CAAC,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACvC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;aAClD;YACD,QAAQ,CAAC,EAAC,UAAU,EAAE,GAAG,EAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEP,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,CAAC,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACxE,MAAM,CAAC,eAAe,CAClB,OAAO,EAAE,CAAC,QAAQ,EAAE,gCAAgC,EAAE,2CAA2C,CAAC,CAAC,CAAC;IAC1G,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,EAAE,oBAAoB,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE;YACzG,YAAY,EAAE,GAAG;SAClB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAClD,IAAI;YACF,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;SAC7C;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;SACnE;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,EAAE,oBAAoB,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE;YACzG,YAAY,EAAE,GAAG;SAClB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAClD,IAAI;YACF,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;SAC7C;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;SAClE;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,6BAA6B,EAAE,oBAAoB,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE;YACzG,OAAO,EAAE,8BAA8B;YACvC,QAAQ,EAAE,oFAAoF;SAC/F,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAClD,IAAI;YACF,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;SAC7C;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;iBACd,MAAM,CACH,sIAAsI,CAAC,CAAC;SACjJ;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["// Copyright 2023 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport * as Host from './host.js';\nimport * as Root from '../root/root.js';\n\nconst {assert} = chai;\n\nconst TEST_MODEL_ID = 'testModelId';\n\ndescribe('AidaClient', () => {\n it('adds no model temperature if there is no aidaTemperature query param', () => {\n const stub = sinon.stub(Root.Runtime.Runtime, 'queryParam');\n stub.withArgs('aidaTemperature').returns(null);\n const request = Host.AidaClient.AidaClient.buildApiRequest('foo');\n assert.deepStrictEqual(request, {\n input: 'foo',\n client: 'CHROME_DEVTOOLS',\n });\n stub.restore();\n });\n\n it('adds a model temperature', () => {\n const stub = sinon.stub(Root.Runtime.Runtime, 'queryParam');\n stub.withArgs('aidaTemperature').returns('0.5');\n const request = Host.AidaClient.AidaClient.buildApiRequest('foo');\n assert.deepStrictEqual(request, {\n input: 'foo',\n client: 'CHROME_DEVTOOLS',\n options: {\n temperature: 0.5,\n },\n });\n stub.restore();\n });\n\n it('adds a model temperature of 0', () => {\n const stub = sinon.stub(Root.Runtime.Runtime, 'queryParam');\n stub.withArgs('aidaTemperature').returns('0');\n const request = Host.AidaClient.AidaClient.buildApiRequest('foo');\n assert.deepStrictEqual(request, {\n input: 'foo',\n client: 'CHROME_DEVTOOLS',\n options: {\n temperature: 0,\n },\n });\n stub.restore();\n });\n\n it('adds no model temperature if the aidaTemperature query param cannot be parsed into a float', () => {\n const stub = sinon.stub(Root.Runtime.Runtime, 'queryParam');\n stub.withArgs('aidaTemperature').returns('not a number');\n const request = Host.AidaClient.AidaClient.buildApiRequest('foo');\n assert.deepStrictEqual(request, {\n input: 'foo',\n client: 'CHROME_DEVTOOLS',\n });\n stub.restore();\n });\n\n it('adds no model id if there is no aidaModelId query param', () => {\n const stub = sinon.stub(Root.Runtime.Runtime, 'queryParam');\n stub.withArgs('aidaModelId').returns(null);\n const request = Host.AidaClient.AidaClient.buildApiRequest('foo');\n assert.deepStrictEqual(request, {\n input: 'foo',\n client: 'CHROME_DEVTOOLS',\n });\n stub.restore();\n });\n\n it('adds a model id', () => {\n const stub = sinon.stub(Root.Runtime.Runtime, 'queryParam');\n stub.withArgs('aidaModelId').returns(TEST_MODEL_ID);\n const request = Host.AidaClient.AidaClient.buildApiRequest('foo');\n assert.deepStrictEqual(request, {\n input: 'foo',\n client: 'CHROME_DEVTOOLS',\n options: {\n model_id: TEST_MODEL_ID,\n },\n });\n stub.restore();\n });\n\n it('adds a model id and temperature', () => {\n const stub = sinon.stub(Root.Runtime.Runtime, 'queryParam');\n stub.withArgs('aidaModelId').returns(TEST_MODEL_ID);\n stub.withArgs('aidaTemperature').returns('0.5');\n const request = Host.AidaClient.AidaClient.buildApiRequest('foo');\n assert.deepStrictEqual(request, {\n input: 'foo',\n client: 'CHROME_DEVTOOLS',\n options: {\n model_id: TEST_MODEL_ID,\n temperature: 0.5,\n },\n });\n stub.restore();\n });\n\n async function getAllResults(provider: Host.AidaClient.AidaClient): Promise {\n const results = [];\n for await (const result of provider.fetch('foo')) {\n results.push(result);\n }\n return results;\n }\n\n it('handles chunked response', async () => {\n sinon.stub(Host.InspectorFrontendHost.InspectorFrontendHostInstance, 'doAidaConversation')\n .callsFake(async (_, streamId, callback) => {\n const response = JSON.stringify([\n {textChunk: {text: 'hello '}, metadata: {rpcGlobalId: 123}},\n {textChunk: {text: 'brave '}, metadata: {rpcGlobalId: 123}},\n {textChunk: {text: 'new world!'}, metadata: {rpcGlobalId: 123}},\n ]);\n let first = true;\n for (const chunk of response.split(',{')) {\n await new Promise(resolve => setTimeout(resolve, 0));\n Host.ResourceLoader.streamWrite(streamId, first ? chunk : ',{' + chunk);\n first = false;\n }\n callback({statusCode: 200});\n });\n\n const provider = new Host.AidaClient.AidaClient();\n const results = await getAllResults(provider);\n assert.deepStrictEqual(results, [\n {explanation: 'hello ', metadata: {rpcGlobalId: 123}},\n {explanation: 'hello brave ', metadata: {rpcGlobalId: 123}},\n {explanation: 'hello brave new world!', metadata: {rpcGlobalId: 123}},\n ]);\n });\n\n it('handles chunked response with multiple objects per chunk', async () => {\n sinon.stub(Host.InspectorFrontendHost.InspectorFrontendHostInstance, 'doAidaConversation')\n .callsFake(async (_, streamId, callback) => {\n const response = JSON.stringify([\n {textChunk: {text: 'Friends, Romans, countrymen, lend me your ears;\\n'}, metadata: {rpcGlobalId: 123}},\n {textChunk: {text: 'I come to bury Caesar, not to praise him.\\n'}, metadata: {rpcGlobalId: 123}},\n {textChunk: {text: 'The evil that men do lives after them;\\n'}, metadata: {rpcGlobalId: 123}},\n {textChunk: {text: 'The good is oft interred with their bones;\\n'}, metadata: {rpcGlobalId: 123}},\n {textChunk: {text: 'So let it be with Caesar. The noble Brutus\\n'}, metadata: {rpcGlobalId: 123}},\n {textChunk: {text: 'Hath told you Caesar was ambitious:\\n'}, metadata: {rpcGlobalId: 123}},\n {textChunk: {text: 'If it were so, it was a grievous fault,\\n'}, metadata: {rpcGlobalId: 123}},\n {textChunk: {text: 'And grievously hath Caesar answer’d it.\\n'}, metadata: {rpcGlobalId: 123}},\n ]);\n const chunks = response.split(',{');\n await new Promise(resolve => setTimeout(resolve, 0));\n Host.ResourceLoader.streamWrite(streamId, chunks[0] + ',{' + chunks[1]);\n await new Promise(resolve => setTimeout(resolve, 0));\n Host.ResourceLoader.streamWrite(streamId, ',{' + chunks[2] + ',{' + chunks[3] + ',{' + chunks[4]);\n await new Promise(resolve => setTimeout(resolve, 0));\n Host.ResourceLoader.streamWrite(streamId, ',{' + chunks[5]);\n await new Promise(resolve => setTimeout(resolve, 0));\n Host.ResourceLoader.streamWrite(streamId, ',{' + chunks[6] + ',{' + chunks[7]);\n callback({statusCode: 200});\n });\n\n const provider = new Host.AidaClient.AidaClient();\n const results = await getAllResults(provider);\n assert.deepStrictEqual(results, [\n {\n explanation: 'Friends, Romans, countrymen, lend me your ears;\\n' +\n 'I come to bury Caesar, not to praise him.\\n',\n metadata: {rpcGlobalId: 123},\n },\n {\n explanation: 'Friends, Romans, countrymen, lend me your ears;\\n' +\n 'I come to bury Caesar, not to praise him.\\n' +\n 'The evil that men do lives after them;\\n' +\n 'The good is oft interred with their bones;\\n' +\n 'So let it be with Caesar. The noble Brutus\\n',\n metadata: {rpcGlobalId: 123},\n },\n {\n explanation: 'Friends, Romans, countrymen, lend me your ears;\\n' +\n 'I come to bury Caesar, not to praise him.\\n' +\n 'The evil that men do lives after them;\\n' +\n 'The good is oft interred with their bones;\\n' +\n 'So let it be with Caesar. The noble Brutus\\n' +\n 'Hath told you Caesar was ambitious:\\n',\n metadata: {rpcGlobalId: 123},\n },\n {\n explanation: 'Friends, Romans, countrymen, lend me your ears;\\n' +\n 'I come to bury Caesar, not to praise him.\\n' +\n 'The evil that men do lives after them;\\n' +\n 'The good is oft interred with their bones;\\n' +\n 'So let it be with Caesar. The noble Brutus\\n' +\n 'Hath told you Caesar was ambitious:\\n' +\n 'If it were so, it was a grievous fault,\\n' +\n 'And grievously hath Caesar answer’d it.\\n',\n metadata: {rpcGlobalId: 123},\n },\n ]);\n });\n\n it('handles subsequent code chunks', async () => {\n sinon.stub(Host.InspectorFrontendHost.InspectorFrontendHostInstance, 'doAidaConversation')\n .callsFake(async (_, streamId, callback) => {\n const response = JSON.stringify([\n {textChunk: {text: 'hello '}},\n {codeChunk: {code: 'brave '}},\n {codeChunk: {code: 'new World()'}},\n ]);\n for (const chunk of response.split(',')) {\n await new Promise(resolve => setTimeout(resolve, 0));\n Host.ResourceLoader.streamWrite(streamId, chunk);\n }\n callback({statusCode: 200});\n });\n\n const provider = new Host.AidaClient.AidaClient();\n const results = (await getAllResults(provider)).map(r => r.explanation);\n assert.deepStrictEqual(\n results, ['hello ', 'hello \\n`````\\nbrave \\n`````\\n', 'hello \\n`````\\nbrave new World()\\n`````\\n']);\n });\n\n it('throws a readable error on 403', async () => {\n sinon.stub(Host.InspectorFrontendHost.InspectorFrontendHostInstance, 'doAidaConversation').callsArgWith(2, {\n 'statusCode': 403,\n });\n const provider = new Host.AidaClient.AidaClient();\n try {\n await getAllResults(provider);\n expect.fail('provider.fetch did not throw');\n } catch (err) {\n expect(err.message).equals('Server responded: permission denied');\n }\n });\n\n it('throws an error for other codes', async () => {\n sinon.stub(Host.InspectorFrontendHost.InspectorFrontendHostInstance, 'doAidaConversation').callsArgWith(2, {\n 'statusCode': 418,\n });\n const provider = new Host.AidaClient.AidaClient();\n try {\n await getAllResults(provider);\n expect.fail('provider.fetch did not throw');\n } catch (err) {\n expect(err.message).equals('Request failed: {\"statusCode\":418}');\n }\n });\n\n it('throws an error with all details for other failures', async () => {\n sinon.stub(Host.InspectorFrontendHost.InspectorFrontendHostInstance, 'doAidaConversation').callsArgWith(2, {\n 'error': 'Cannot get OAuth credentials',\n 'detail': '{\\'@type\\': \\'type.googleapis.com/google.rpc.DebugInfo\\', \\'detail\\': \\'DETAILS\\'}',\n });\n const provider = new Host.AidaClient.AidaClient();\n try {\n await getAllResults(provider);\n expect.fail('provider.fetch did not throw');\n } catch (err) {\n expect(err.message)\n .equals(\n 'Cannot send request: Cannot get OAuth credentials {\\'@type\\': \\'type.googleapis.com/google.rpc.DebugInfo\\', \\'detail\\': \\'DETAILS\\'}');\n }\n });\n});\n"]}
\ No newline at end of file
diff --git a/public/core/host/InspectorFrontendHostAPI.d.ts b/public/core/host/InspectorFrontendHostAPI.d.ts
index 14416afc6..81775cb98 100644
--- a/public/core/host/InspectorFrontendHostAPI.d.ts
+++ b/public/core/host/InspectorFrontendHostAPI.d.ts
@@ -131,7 +131,7 @@ export interface ChangeEvent {
context?: number;
}
export interface KeyDownEvent {
- veid: number;
+ veid?: number;
context?: number;
}
export type EventTypes = {
diff --git a/public/core/host/InspectorFrontendHostAPI.js.map b/public/core/host/InspectorFrontendHostAPI.js.map
index 43e6b700b..ad08b7272 100644
--- a/public/core/host/InspectorFrontendHostAPI.js.map
+++ b/public/core/host/InspectorFrontendHostAPI.js.map
@@ -1 +1 @@
-{"version":3,"file":"InspectorFrontendHostAPI.js","sourceRoot":"","sources":["../../../../../../front_end/core/host/InspectorFrontendHostAPI.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2015 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport type * as Platform from '../../core/platform/platform.js';\n\nexport enum Events {\n AppendedToURL = 'appendedToURL',\n CanceledSaveURL = 'canceledSaveURL',\n ColorThemeChanged = 'colorThemeChanged',\n ContextMenuCleared = 'contextMenuCleared',\n ContextMenuItemSelected = 'contextMenuItemSelected',\n DeviceCountUpdated = 'deviceCountUpdated',\n DevicesDiscoveryConfigChanged = 'devicesDiscoveryConfigChanged',\n DevicesPortForwardingStatusChanged = 'devicesPortForwardingStatusChanged',\n DevicesUpdated = 'devicesUpdated',\n DispatchMessage = 'dispatchMessage',\n DispatchMessageChunk = 'dispatchMessageChunk',\n EnterInspectElementMode = 'enterInspectElementMode',\n EyeDropperPickedColor = 'eyeDropperPickedColor',\n FileSystemsLoaded = 'fileSystemsLoaded',\n FileSystemRemoved = 'fileSystemRemoved',\n FileSystemAdded = 'fileSystemAdded',\n FileSystemFilesChangedAddedRemoved = 'FileSystemFilesChangedAddedRemoved',\n IndexingTotalWorkCalculated = 'indexingTotalWorkCalculated',\n IndexingWorked = 'indexingWorked',\n IndexingDone = 'indexingDone',\n KeyEventUnhandled = 'keyEventUnhandled',\n ReattachRootTarget = 'reattachMainTarget',\n ReloadInspectedPage = 'reloadInspectedPage',\n RevealSourceLine = 'revealSourceLine',\n SavedURL = 'savedURL',\n SearchCompleted = 'searchCompleted',\n SetInspectedTabId = 'setInspectedTabId',\n SetUseSoftMenu = 'setUseSoftMenu',\n ShowPanel = 'showPanel',\n}\n\nexport const EventDescriptors = [\n [Events.AppendedToURL, 'appendedToURL', ['url']],\n [Events.CanceledSaveURL, 'canceledSaveURL', ['url']],\n [Events.ColorThemeChanged, 'colorThemeChanged', []],\n [Events.ContextMenuCleared, 'contextMenuCleared', []],\n [Events.ContextMenuItemSelected, 'contextMenuItemSelected', ['id']],\n [Events.DeviceCountUpdated, 'deviceCountUpdated', ['count']],\n [Events.DevicesDiscoveryConfigChanged, 'devicesDiscoveryConfigChanged', ['config']],\n [Events.DevicesPortForwardingStatusChanged, 'devicesPortForwardingStatusChanged', ['status']],\n [Events.DevicesUpdated, 'devicesUpdated', ['devices']],\n [Events.DispatchMessage, 'dispatchMessage', ['messageObject']],\n [Events.DispatchMessageChunk, 'dispatchMessageChunk', ['messageChunk', 'messageSize']],\n [Events.EnterInspectElementMode, 'enterInspectElementMode', []],\n [Events.EyeDropperPickedColor, 'eyeDropperPickedColor', ['color']],\n [Events.FileSystemsLoaded, 'fileSystemsLoaded', ['fileSystems']],\n [Events.FileSystemRemoved, 'fileSystemRemoved', ['fileSystemPath']],\n [Events.FileSystemAdded, 'fileSystemAdded', ['errorMessage', 'fileSystem']],\n [Events.FileSystemFilesChangedAddedRemoved, 'fileSystemFilesChangedAddedRemoved', ['changed', 'added', 'removed']],\n [Events.IndexingTotalWorkCalculated, 'indexingTotalWorkCalculated', ['requestId', 'fileSystemPath', 'totalWork']],\n [Events.IndexingWorked, 'indexingWorked', ['requestId', 'fileSystemPath', 'worked']],\n [Events.IndexingDone, 'indexingDone', ['requestId', 'fileSystemPath']],\n [Events.KeyEventUnhandled, 'keyEventUnhandled', ['event']],\n [Events.ReattachRootTarget, 'reattachMainTarget', []],\n [Events.ReloadInspectedPage, 'reloadInspectedPage', ['hard']],\n [Events.RevealSourceLine, 'revealSourceLine', ['url', 'lineNumber', 'columnNumber']],\n [Events.SavedURL, 'savedURL', ['url', 'fileSystemPath']],\n [Events.SearchCompleted, 'searchCompleted', ['requestId', 'fileSystemPath', 'files']],\n [Events.SetInspectedTabId, 'setInspectedTabId', ['tabId']],\n [Events.SetUseSoftMenu, 'setUseSoftMenu', ['useSoftMenu']],\n [Events.ShowPanel, 'showPanel', ['panelName']],\n];\n\nexport interface DispatchMessageChunkEvent {\n messageChunk: string;\n messageSize: number;\n}\n\nexport interface EyeDropperPickedColorEvent {\n r: number;\n g: number;\n b: number;\n a: number;\n}\n\nexport interface DevToolsFileSystem {\n type: string;\n fileSystemName: string;\n rootURL: string;\n fileSystemPath: Platform.DevToolsPath.RawPathString;\n}\n\nexport interface FileSystemAddedEvent {\n errorMessage?: string;\n fileSystem: DevToolsFileSystem|null;\n}\n\nexport interface FilesChangedEvent {\n changed: Platform.DevToolsPath.RawPathString[];\n added: Platform.DevToolsPath.RawPathString[];\n removed: Platform.DevToolsPath.RawPathString[];\n}\n\nexport interface IndexingEvent {\n requestId: number;\n fileSystemPath: string;\n}\n\nexport interface IndexingTotalWorkCalculatedEvent extends IndexingEvent {\n totalWork: number;\n}\n\nexport interface IndexingWorkedEvent extends IndexingEvent {\n worked: number;\n}\n\nexport interface KeyEventUnhandledEvent {\n type: string;\n key: string;\n keyCode: number;\n modifiers: number;\n}\n\nexport interface RevealSourceLineEvent {\n url: Platform.DevToolsPath.UrlString;\n lineNumber: number;\n columnNumber: number;\n}\n\nexport interface SavedURLEvent {\n url: Platform.DevToolsPath.RawPathString|Platform.DevToolsPath.UrlString;\n fileSystemPath: Platform.DevToolsPath.RawPathString|Platform.DevToolsPath.UrlString;\n}\n\nexport interface SearchCompletedEvent {\n requestId: number;\n files: Platform.DevToolsPath.RawPathString[];\n}\n\nexport interface DoAidaConversationResult {\n statusCode?: number;\n headers?: {\n [x: string]: string,\n };\n netError?: number;\n netErrorName?: string;\n error?: string;\n detail?: string;\n}\n\nexport interface VisualElementImpression {\n id: number;\n type: number;\n parent?: number;\n context?: number;\n width?: number;\n height?: number;\n}\n\nexport interface ImpressionEvent {\n impressions: VisualElementImpression[];\n}\n\nexport interface ResizeEvent {\n veid: number;\n width?: number;\n height?: number;\n}\n\nexport interface ClickEvent {\n veid: number;\n mouseButton: number;\n context?: number;\n doubleClick: boolean;\n}\n\nexport interface HoverEvent {\n veid: number;\n time?: number;\n context?: number;\n}\n\nexport interface DragEvent {\n veid: number;\n context?: number;\n}\n\nexport interface ChangeEvent {\n veid: number;\n context?: number;\n}\n\nexport interface KeyDownEvent {\n veid: number;\n context?: number;\n}\n\n// While `EventDescriptors` are used to dynamically dispatch host binding events,\n// the `EventTypes` \"type map\" is used for type-checking said events by TypeScript.\n// `EventTypes` is not used at runtime.\n// Please note that the \"dispatch\" side can't be type-checked as the dispatch is\n// done dynamically.\nexport type EventTypes = {\n [Events.AppendedToURL]: Platform.DevToolsPath.RawPathString|Platform.DevToolsPath.UrlString,\n [Events.CanceledSaveURL]: Platform.DevToolsPath.UrlString,\n [Events.ColorThemeChanged]: void,\n [Events.ContextMenuCleared]: void,\n [Events.ContextMenuItemSelected]: number,\n [Events.DeviceCountUpdated]: number,\n [Events.DevicesDiscoveryConfigChanged]: Adb.Config,\n [Events.DevicesPortForwardingStatusChanged]: void,\n [Events.DevicesUpdated]: void,\n [Events.DispatchMessage]: string,\n [Events.DispatchMessageChunk]: DispatchMessageChunkEvent,\n [Events.EnterInspectElementMode]: void,\n [Events.EyeDropperPickedColor]: EyeDropperPickedColorEvent,\n [Events.FileSystemsLoaded]: DevToolsFileSystem[],\n [Events.FileSystemRemoved]: Platform.DevToolsPath.RawPathString,\n [Events.FileSystemAdded]: FileSystemAddedEvent,\n [Events.FileSystemFilesChangedAddedRemoved]: FilesChangedEvent,\n [Events.IndexingTotalWorkCalculated]: IndexingTotalWorkCalculatedEvent,\n [Events.IndexingWorked]: IndexingWorkedEvent,\n [Events.IndexingDone]: IndexingEvent,\n [Events.KeyEventUnhandled]: KeyEventUnhandledEvent,\n [Events.ReattachRootTarget]: void,\n [Events.ReloadInspectedPage]: boolean,\n [Events.RevealSourceLine]: RevealSourceLineEvent,\n [Events.SavedURL]: SavedURLEvent,\n [Events.SearchCompleted]: SearchCompletedEvent,\n [Events.SetInspectedTabId]: string,\n [Events.SetUseSoftMenu]: boolean,\n [Events.ShowPanel]: string,\n};\n\nexport interface InspectorFrontendHostAPI {\n addFileSystem(type?: string): void;\n\n loadCompleted(): void;\n\n indexPath(requestId: number, fileSystemPath: Platform.DevToolsPath.RawPathString, excludedFolders: string): void;\n\n /**\n * Requests inspected page to be placed atop of the inspector frontend with specified bounds.\n */\n setInspectedPageBounds(bounds: {\n x: number,\n y: number,\n width: number,\n height: number,\n }): void;\n\n showCertificateViewer(certChain: string[]): void;\n\n setWhitelistedShortcuts(shortcuts: string): void;\n\n setEyeDropperActive(active: boolean): void;\n\n inspectElementCompleted(): void;\n\n openInNewTab(url: Platform.DevToolsPath.UrlString): void;\n\n openSearchResultsInNewTab(query: string): void;\n\n showItemInFolder(fileSystemPath: Platform.DevToolsPath.RawPathString): void;\n\n removeFileSystem(fileSystemPath: Platform.DevToolsPath.RawPathString): void;\n\n requestFileSystems(): void;\n\n save(url: Platform.DevToolsPath.UrlString, content: string, forceSaveAs: boolean): void;\n\n append(url: Platform.DevToolsPath.UrlString, content: string): void;\n\n close(url: Platform.DevToolsPath.UrlString): void;\n\n searchInPath(requestId: number, fileSystemPath: Platform.DevToolsPath.RawPathString, query: string): void;\n\n stopIndexing(requestId: number): void;\n\n bringToFront(): void;\n\n closeWindow(): void;\n\n copyText(text: string|null|undefined): void;\n\n inspectedURLChanged(url: Platform.DevToolsPath.UrlString): void;\n\n isolatedFileSystem(fileSystemId: string, registeredName: string): FileSystem|null;\n\n loadNetworkResource(\n url: string, headers: string, streamId: number, callback: (arg0: LoadNetworkResourceResult) => void): void;\n\n registerPreference(name: string, options: {synced?: boolean}): void;\n\n getPreferences(callback: (arg0: {\n [x: string]: string,\n }) => void): void;\n\n getPreference(name: string, callback: (arg0: string) => void): void;\n\n setPreference(name: string, value: string): void;\n\n removePreference(name: string): void;\n\n clearPreferences(): void;\n\n getSyncInformation(callback: (arg0: SyncInformation) => void): void;\n\n upgradeDraggedFileSystemPermissions(fileSystem: FileSystem): void;\n\n platform(): string;\n\n recordCountHistogram(histogramName: string, sample: number, min: number, exclusiveMax: number, bucketSize: number):\n void;\n\n recordEnumeratedHistogram(actionName: EnumeratedHistogram, actionCode: number, bucketSize: number): void;\n\n recordPerformanceHistogram(histogramName: string, duration: number): void;\n\n recordUserMetricsAction(umaName: string): void;\n\n sendMessageToBackend(message: string): void;\n\n setDevicesDiscoveryConfig(config: Adb.Config): void;\n\n setDevicesUpdatesEnabled(enabled: boolean): void;\n\n performActionOnRemotePage(pageId: string, action: string): void;\n\n openRemotePage(browserId: string, url: string): void;\n\n openNodeFrontend(): void;\n\n setInjectedScriptForOrigin(origin: string, script: string): void;\n\n setIsDocked(isDocked: boolean, callback: () => void): void;\n\n showSurvey(trigger: string, callback: (arg0: ShowSurveyResult) => void): void;\n\n canShowSurvey(trigger: string, callback: (arg0: CanShowSurveyResult) => void): void;\n\n zoomFactor(): number;\n\n zoomIn(): void;\n\n zoomOut(): void;\n\n resetZoom(): void;\n\n showContextMenuAtPoint(x: number, y: number, items: ContextMenuDescriptor[], document: Document): void;\n\n reattach(callback: () => void): void;\n\n readyForTest(): void;\n\n connectionReady(): void;\n\n setOpenNewWindowForPopups(value: boolean): void;\n\n isHostedMode(): boolean;\n\n setAddExtensionCallback(callback: (arg0: ExtensionDescriptor) => void): void;\n\n initialTargetId(): Promise;\n\n doAidaConversation: (request: string, streamId: number, cb: (result: DoAidaConversationResult) => void) => void;\n registerAidaClientEvent: (request: string) => void;\n\n recordImpression(event: ImpressionEvent): void;\n recordClick(event: ClickEvent): void;\n recordHover(event: HoverEvent): void;\n recordDrag(event: DragEvent): void;\n recordChange(event: ChangeEvent): void;\n recordKeyDown(event: KeyDownEvent): void;\n}\n\nexport interface ContextMenuDescriptor {\n type: 'checkbox'|'item'|'separator'|'subMenu';\n id?: number;\n label?: string;\n enabled?: boolean;\n checked?: boolean;\n subItems?: ContextMenuDescriptor[];\n jslogContext?: string;\n}\nexport interface LoadNetworkResourceResult {\n statusCode: number;\n headers?: {\n [x: string]: string,\n };\n netError?: number;\n netErrorName?: string;\n urlValid?: boolean;\n messageOverride?: string;\n}\nexport interface ExtensionDescriptor {\n startPage: string;\n name: string;\n exposeExperimentalAPIs: boolean;\n hostsPolicy?: ExtensionHostsPolicy;\n allowFileAccess?: boolean;\n}\nexport interface ExtensionHostsPolicy {\n runtimeAllowedHosts: string[];\n runtimeBlockedHosts: string[];\n}\nexport interface ShowSurveyResult {\n surveyShown: boolean;\n}\nexport interface CanShowSurveyResult {\n canShowSurvey: boolean;\n}\nexport interface SyncInformation {\n /** Whether Chrome Sync is enabled and active */\n isSyncActive: boolean;\n /** Whether syncing of Chrome Settings is enabled via Chrome Sync is enabled */\n arePreferencesSynced?: boolean;\n /** The email of the account used for syncing */\n accountEmail?: string;\n /** The image of the account used for syncing. Its a base64 encoded PNG */\n accountImage?: string;\n}\n\n/**\n * Enum for recordPerformanceHistogram\n * Warning: There is another definition of this enum in the DevTools code\n * base, keep them in sync:\n * front_end/devtools_compatibility.js\n * @readonly\n */\nexport const enum EnumeratedHistogram {\n ActionTaken = 'DevTools.ActionTaken',\n BreakpointWithConditionAdded = 'DevTools.BreakpointWithConditionAdded',\n BreakpointEditDialogRevealedFrom = 'DevTools.BreakpointEditDialogRevealedFrom',\n PanelClosed = 'DevTools.PanelClosed',\n PanelShown = 'DevTools.PanelShown',\n PanelShownInLocation = 'DevTools.PanelShownInLocation',\n SidebarPaneShown = 'DevTools.SidebarPaneShown',\n KeyboardShortcutFired = 'DevTools.KeyboardShortcutFired',\n IssueCreated = 'DevTools.IssueCreated',\n IssuesPanelIssueExpanded = 'DevTools.IssuesPanelIssueExpanded',\n IssuesPanelOpenedFrom = 'DevTools.IssuesPanelOpenedFrom',\n IssuesPanelResourceOpened = 'DevTools.IssuesPanelResourceOpened',\n KeybindSetSettingChanged = 'DevTools.KeybindSetSettingChanged',\n ElementsSidebarTabShown = 'DevTools.Elements.SidebarTabShown',\n ExperimentEnabledAtLaunch = 'DevTools.ExperimentEnabledAtLaunch',\n ExperimentDisabledAtLaunch = 'DevTools.ExperimentDisabledAtLaunch',\n ExperimentEnabled = 'DevTools.ExperimentEnabled',\n ExperimentDisabled = 'DevTools.ExperimentDisabled',\n DeveloperResourceLoaded = 'DevTools.DeveloperResourceLoaded',\n DeveloperResourceScheme = 'DevTools.DeveloperResourceScheme',\n Language = 'DevTools.Language',\n SyncSetting = 'DevTools.SyncSetting',\n RecordingAssertion = 'DevTools.RecordingAssertion',\n RecordingCodeToggled = 'DevTools.RecordingCodeToggled',\n RecordingCopiedToClipboard = 'DevTools.RecordingCopiedToClipboard',\n RecordingEdited = 'DevTools.RecordingEdited',\n RecordingExported = 'DevTools.RecordingExported',\n RecordingReplayFinished = 'DevTools.RecordingReplayFinished',\n RecordingReplaySpeed = 'DevTools.RecordingReplaySpeed',\n RecordingReplayStarted = 'DevTools.RecordingReplayStarted',\n RecordingToggled = 'DevTools.RecordingToggled',\n SourcesSidebarTabShown = 'DevTools.Sources.SidebarTabShown',\n SourcesPanelFileDebugged = 'DevTools.SourcesPanelFileDebugged',\n SourcesPanelFileOpened = 'DevTools.SourcesPanelFileOpened',\n NetworkPanelResponsePreviewOpened = 'DevTools.NetworkPanelResponsePreviewOpened',\n StyleTextCopied = 'DevTools.StyleTextCopied',\n ManifestSectionSelected = 'DevTools.ManifestSectionSelected',\n CSSHintShown = 'DevTools.CSSHintShown',\n LighthouseModeRun = 'DevTools.LighthouseModeRun',\n LighthouseCategoryUsed = 'DevTools.LighthouseCategoryUsed',\n ColorConvertedFrom = 'DevTools.ColorConvertedFrom',\n ColorPickerOpenedFrom = 'DevTools.ColorPickerOpenedFrom',\n CSSPropertyDocumentation = 'DevTools.CSSPropertyDocumentation',\n InlineScriptParsed = 'DevTools.InlineScriptParsed',\n VMInlineScriptTypeShown = 'DevTools.VMInlineScriptShown',\n BreakpointsRestoredFromStorageCount = 'DevTools.BreakpointsRestoredFromStorageCount',\n SwatchActivated = 'DevTools.SwatchActivated',\n BadgeActivated = 'DevTools.BadgeActivated',\n AnimationPlaybackRateChanged = 'DevTools.AnimationPlaybackRateChanged',\n AnimationPointDragged = 'DevTools.AnimationPointDragged',\n LegacyResourceTypeFilterNumberOfSelectedChanged = 'DevTools.LegacyResourceTypeFilterNumberOfSelectedChanged',\n LegacyResourceTypeFilterItemSelected = 'DevTools.LegacyResourceTypeFilterItemSelected',\n ResourceTypeFilterNumberOfSelectedChanged = 'DevTools.ResourceTypeFilterNumberOfSelectedChanged',\n ResourceTypeFilterItemSelected = 'DevTools.ResourceTypeFilterItemSelected',\n NetworkPanelMoreFiltersNumberOfSelectedChanged = 'DevTools.NetworkPanelMoreFiltersNumberOfSelectedChanged',\n NetworkPanelMoreFiltersItemSelected = 'DevTools.NetworkPanelMoreFiltersItemSelected',\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"InspectorFrontendHostAPI.js","sourceRoot":"","sources":["../../../../../../front_end/core/host/InspectorFrontendHostAPI.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) 2015 The Chromium Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be\n// found in the LICENSE file.\n\nimport type * as Platform from '../../core/platform/platform.js';\n\nexport enum Events {\n AppendedToURL = 'appendedToURL',\n CanceledSaveURL = 'canceledSaveURL',\n ColorThemeChanged = 'colorThemeChanged',\n ContextMenuCleared = 'contextMenuCleared',\n ContextMenuItemSelected = 'contextMenuItemSelected',\n DeviceCountUpdated = 'deviceCountUpdated',\n DevicesDiscoveryConfigChanged = 'devicesDiscoveryConfigChanged',\n DevicesPortForwardingStatusChanged = 'devicesPortForwardingStatusChanged',\n DevicesUpdated = 'devicesUpdated',\n DispatchMessage = 'dispatchMessage',\n DispatchMessageChunk = 'dispatchMessageChunk',\n EnterInspectElementMode = 'enterInspectElementMode',\n EyeDropperPickedColor = 'eyeDropperPickedColor',\n FileSystemsLoaded = 'fileSystemsLoaded',\n FileSystemRemoved = 'fileSystemRemoved',\n FileSystemAdded = 'fileSystemAdded',\n FileSystemFilesChangedAddedRemoved = 'FileSystemFilesChangedAddedRemoved',\n IndexingTotalWorkCalculated = 'indexingTotalWorkCalculated',\n IndexingWorked = 'indexingWorked',\n IndexingDone = 'indexingDone',\n KeyEventUnhandled = 'keyEventUnhandled',\n ReattachRootTarget = 'reattachMainTarget',\n ReloadInspectedPage = 'reloadInspectedPage',\n RevealSourceLine = 'revealSourceLine',\n SavedURL = 'savedURL',\n SearchCompleted = 'searchCompleted',\n SetInspectedTabId = 'setInspectedTabId',\n SetUseSoftMenu = 'setUseSoftMenu',\n ShowPanel = 'showPanel',\n}\n\nexport const EventDescriptors = [\n [Events.AppendedToURL, 'appendedToURL', ['url']],\n [Events.CanceledSaveURL, 'canceledSaveURL', ['url']],\n [Events.ColorThemeChanged, 'colorThemeChanged', []],\n [Events.ContextMenuCleared, 'contextMenuCleared', []],\n [Events.ContextMenuItemSelected, 'contextMenuItemSelected', ['id']],\n [Events.DeviceCountUpdated, 'deviceCountUpdated', ['count']],\n [Events.DevicesDiscoveryConfigChanged, 'devicesDiscoveryConfigChanged', ['config']],\n [Events.DevicesPortForwardingStatusChanged, 'devicesPortForwardingStatusChanged', ['status']],\n [Events.DevicesUpdated, 'devicesUpdated', ['devices']],\n [Events.DispatchMessage, 'dispatchMessage', ['messageObject']],\n [Events.DispatchMessageChunk, 'dispatchMessageChunk', ['messageChunk', 'messageSize']],\n [Events.EnterInspectElementMode, 'enterInspectElementMode', []],\n [Events.EyeDropperPickedColor, 'eyeDropperPickedColor', ['color']],\n [Events.FileSystemsLoaded, 'fileSystemsLoaded', ['fileSystems']],\n [Events.FileSystemRemoved, 'fileSystemRemoved', ['fileSystemPath']],\n [Events.FileSystemAdded, 'fileSystemAdded', ['errorMessage', 'fileSystem']],\n [Events.FileSystemFilesChangedAddedRemoved, 'fileSystemFilesChangedAddedRemoved', ['changed', 'added', 'removed']],\n [Events.IndexingTotalWorkCalculated, 'indexingTotalWorkCalculated', ['requestId', 'fileSystemPath', 'totalWork']],\n [Events.IndexingWorked, 'indexingWorked', ['requestId', 'fileSystemPath', 'worked']],\n [Events.IndexingDone, 'indexingDone', ['requestId', 'fileSystemPath']],\n [Events.KeyEventUnhandled, 'keyEventUnhandled', ['event']],\n [Events.ReattachRootTarget, 'reattachMainTarget', []],\n [Events.ReloadInspectedPage, 'reloadInspectedPage', ['hard']],\n [Events.RevealSourceLine, 'revealSourceLine', ['url', 'lineNumber', 'columnNumber']],\n [Events.SavedURL, 'savedURL', ['url', 'fileSystemPath']],\n [Events.SearchCompleted, 'searchCompleted', ['requestId', 'fileSystemPath', 'files']],\n [Events.SetInspectedTabId, 'setInspectedTabId', ['tabId']],\n [Events.SetUseSoftMenu, 'setUseSoftMenu', ['useSoftMenu']],\n [Events.ShowPanel, 'showPanel', ['panelName']],\n];\n\nexport interface DispatchMessageChunkEvent {\n messageChunk: string;\n messageSize: number;\n}\n\nexport interface EyeDropperPickedColorEvent {\n r: number;\n g: number;\n b: number;\n a: number;\n}\n\nexport interface DevToolsFileSystem {\n type: string;\n fileSystemName: string;\n rootURL: string;\n fileSystemPath: Platform.DevToolsPath.RawPathString;\n}\n\nexport interface FileSystemAddedEvent {\n errorMessage?: string;\n fileSystem: DevToolsFileSystem|null;\n}\n\nexport interface FilesChangedEvent {\n changed: Platform.DevToolsPath.RawPathString[];\n added: Platform.DevToolsPath.RawPathString[];\n removed: Platform.DevToolsPath.RawPathString[];\n}\n\nexport interface IndexingEvent {\n requestId: number;\n fileSystemPath: string;\n}\n\nexport interface IndexingTotalWorkCalculatedEvent extends IndexingEvent {\n totalWork: number;\n}\n\nexport interface IndexingWorkedEvent extends IndexingEvent {\n worked: number;\n}\n\nexport interface KeyEventUnhandledEvent {\n type: string;\n key: string;\n keyCode: number;\n modifiers: number;\n}\n\nexport interface RevealSourceLineEvent {\n url: Platform.DevToolsPath.UrlString;\n lineNumber: number;\n columnNumber: number;\n}\n\nexport interface SavedURLEvent {\n url: Platform.DevToolsPath.RawPathString|Platform.DevToolsPath.UrlString;\n fileSystemPath: Platform.DevToolsPath.RawPathString|Platform.DevToolsPath.UrlString;\n}\n\nexport interface SearchCompletedEvent {\n requestId: number;\n files: Platform.DevToolsPath.RawPathString[];\n}\n\nexport interface DoAidaConversationResult {\n statusCode?: number;\n headers?: {\n [x: string]: string,\n };\n netError?: number;\n netErrorName?: string;\n error?: string;\n detail?: string;\n}\n\nexport interface VisualElementImpression {\n id: number;\n type: number;\n parent?: number;\n context?: number;\n width?: number;\n height?: number;\n}\n\nexport interface ImpressionEvent {\n impressions: VisualElementImpression[];\n}\n\nexport interface ResizeEvent {\n veid: number;\n width?: number;\n height?: number;\n}\n\nexport interface ClickEvent {\n veid: number;\n mouseButton: number;\n context?: number;\n doubleClick: boolean;\n}\n\nexport interface HoverEvent {\n veid: number;\n time?: number;\n context?: number;\n}\n\nexport interface DragEvent {\n veid: number;\n context?: number;\n}\n\nexport interface ChangeEvent {\n veid: number;\n context?: number;\n}\n\nexport interface KeyDownEvent {\n veid?: number;\n context?: number;\n}\n\n// While `EventDescriptors` are used to dynamically dispatch host binding events,\n// the `EventTypes` \"type map\" is used for type-checking said events by TypeScript.\n// `EventTypes` is not used at runtime.\n// Please note that the \"dispatch\" side can't be type-checked as the dispatch is\n// done dynamically.\nexport type EventTypes = {\n [Events.AppendedToURL]: Platform.DevToolsPath.RawPathString|Platform.DevToolsPath.UrlString,\n [Events.CanceledSaveURL]: Platform.DevToolsPath.UrlString,\n [Events.ColorThemeChanged]: void,\n [Events.ContextMenuCleared]: void,\n [Events.ContextMenuItemSelected]: number,\n [Events.DeviceCountUpdated]: number,\n [Events.DevicesDiscoveryConfigChanged]: Adb.Config,\n [Events.DevicesPortForwardingStatusChanged]: void,\n [Events.DevicesUpdated]: void,\n [Events.DispatchMessage]: string,\n [Events.DispatchMessageChunk]: DispatchMessageChunkEvent,\n [Events.EnterInspectElementMode]: void,\n [Events.EyeDropperPickedColor]: EyeDropperPickedColorEvent,\n [Events.FileSystemsLoaded]: DevToolsFileSystem[],\n [Events.FileSystemRemoved]: Platform.DevToolsPath.RawPathString,\n [Events.FileSystemAdded]: FileSystemAddedEvent,\n [Events.FileSystemFilesChangedAddedRemoved]: FilesChangedEvent,\n [Events.IndexingTotalWorkCalculated]: IndexingTotalWorkCalculatedEvent,\n [Events.IndexingWorked]: IndexingWorkedEvent,\n [Events.IndexingDone]: IndexingEvent,\n [Events.KeyEventUnhandled]: KeyEventUnhandledEvent,\n [Events.ReattachRootTarget]: void,\n [Events.ReloadInspectedPage]: boolean,\n [Events.RevealSourceLine]: RevealSourceLineEvent,\n [Events.SavedURL]: SavedURLEvent,\n [Events.SearchCompleted]: SearchCompletedEvent,\n [Events.SetInspectedTabId]: string,\n [Events.SetUseSoftMenu]: boolean,\n [Events.ShowPanel]: string,\n};\n\nexport interface InspectorFrontendHostAPI {\n addFileSystem(type?: string): void;\n\n loadCompleted(): void;\n\n indexPath(requestId: number, fileSystemPath: Platform.DevToolsPath.RawPathString, excludedFolders: string): void;\n\n /**\n * Requests inspected page to be placed atop of the inspector frontend with specified bounds.\n */\n setInspectedPageBounds(bounds: {\n x: number,\n y: number,\n width: number,\n height: number,\n }): void;\n\n showCertificateViewer(certChain: string[]): void;\n\n setWhitelistedShortcuts(shortcuts: string): void;\n\n setEyeDropperActive(active: boolean): void;\n\n inspectElementCompleted(): void;\n\n openInNewTab(url: Platform.DevToolsPath.UrlString): void;\n\n openSearchResultsInNewTab(query: string): void;\n\n showItemInFolder(fileSystemPath: Platform.DevToolsPath.RawPathString): void;\n\n removeFileSystem(fileSystemPath: Platform.DevToolsPath.RawPathString): void;\n\n requestFileSystems(): void;\n\n save(url: Platform.DevToolsPath.UrlString, content: string, forceSaveAs: boolean): void;\n\n append(url: Platform.DevToolsPath.UrlString, content: string): void;\n\n close(url: Platform.DevToolsPath.UrlString): void;\n\n searchInPath(requestId: number, fileSystemPath: Platform.DevToolsPath.RawPathString, query: string): void;\n\n stopIndexing(requestId: number): void;\n\n bringToFront(): void;\n\n closeWindow(): void;\n\n copyText(text: string|null|undefined): void;\n\n inspectedURLChanged(url: Platform.DevToolsPath.UrlString): void;\n\n isolatedFileSystem(fileSystemId: string, registeredName: string): FileSystem|null;\n\n loadNetworkResource(\n url: string, headers: string, streamId: number, callback: (arg0: LoadNetworkResourceResult) => void): void;\n\n registerPreference(name: string, options: {synced?: boolean}): void;\n\n getPreferences(callback: (arg0: {\n [x: string]: string,\n }) => void): void;\n\n getPreference(name: string, callback: (arg0: string) => void): void;\n\n setPreference(name: string, value: string): void;\n\n removePreference(name: string): void;\n\n clearPreferences(): void;\n\n getSyncInformation(callback: (arg0: SyncInformation) => void): void;\n\n upgradeDraggedFileSystemPermissions(fileSystem: FileSystem): void;\n\n platform(): string;\n\n recordCountHistogram(histogramName: string, sample: number, min: number, exclusiveMax: number, bucketSize: number):\n void;\n\n recordEnumeratedHistogram(actionName: EnumeratedHistogram, actionCode: number, bucketSize: number): void;\n\n recordPerformanceHistogram(histogramName: string, duration: number): void;\n\n recordUserMetricsAction(umaName: string): void;\n\n sendMessageToBackend(message: string): void;\n\n setDevicesDiscoveryConfig(config: Adb.Config): void;\n\n setDevicesUpdatesEnabled(enabled: boolean): void;\n\n performActionOnRemotePage(pageId: string, action: string): void;\n\n openRemotePage(browserId: string, url: string): void;\n\n openNodeFrontend(): void;\n\n setInjectedScriptForOrigin(origin: string, script: string): void;\n\n setIsDocked(isDocked: boolean, callback: () => void): void;\n\n showSurvey(trigger: string, callback: (arg0: ShowSurveyResult) => void): void;\n\n canShowSurvey(trigger: string, callback: (arg0: CanShowSurveyResult) => void): void;\n\n zoomFactor(): number;\n\n zoomIn(): void;\n\n zoomOut(): void;\n\n resetZoom(): void;\n\n showContextMenuAtPoint(x: number, y: number, items: ContextMenuDescriptor[], document: Document): void;\n\n reattach(callback: () => void): void;\n\n readyForTest(): void;\n\n connectionReady(): void;\n\n setOpenNewWindowForPopups(value: boolean): void;\n\n isHostedMode(): boolean;\n\n setAddExtensionCallback(callback: (arg0: ExtensionDescriptor) => void): void;\n\n initialTargetId(): Promise;\n\n doAidaConversation: (request: string, streamId: number, cb: (result: DoAidaConversationResult) => void) => void;\n registerAidaClientEvent: (request: string) => void;\n\n recordImpression(event: ImpressionEvent): void;\n recordClick(event: ClickEvent): void;\n recordHover(event: HoverEvent): void;\n recordDrag(event: DragEvent): void;\n recordChange(event: ChangeEvent): void;\n recordKeyDown(event: KeyDownEvent): void;\n}\n\nexport interface ContextMenuDescriptor {\n type: 'checkbox'|'item'|'separator'|'subMenu';\n id?: number;\n label?: string;\n enabled?: boolean;\n checked?: boolean;\n subItems?: ContextMenuDescriptor[];\n jslogContext?: string;\n}\nexport interface LoadNetworkResourceResult {\n statusCode: number;\n headers?: {\n [x: string]: string,\n };\n netError?: number;\n netErrorName?: string;\n urlValid?: boolean;\n messageOverride?: string;\n}\nexport interface ExtensionDescriptor {\n startPage: string;\n name: string;\n exposeExperimentalAPIs: boolean;\n hostsPolicy?: ExtensionHostsPolicy;\n allowFileAccess?: boolean;\n}\nexport interface ExtensionHostsPolicy {\n runtimeAllowedHosts: string[];\n runtimeBlockedHosts: string[];\n}\nexport interface ShowSurveyResult {\n surveyShown: boolean;\n}\nexport interface CanShowSurveyResult {\n canShowSurvey: boolean;\n}\nexport interface SyncInformation {\n /** Whether Chrome Sync is enabled and active */\n isSyncActive: boolean;\n /** Whether syncing of Chrome Settings is enabled via Chrome Sync is enabled */\n arePreferencesSynced?: boolean;\n /** The email of the account used for syncing */\n accountEmail?: string;\n /** The image of the account used for syncing. Its a base64 encoded PNG */\n accountImage?: string;\n}\n\n/**\n * Enum for recordPerformanceHistogram\n * Warning: There is another definition of this enum in the DevTools code\n * base, keep them in sync:\n * front_end/devtools_compatibility.js\n * @readonly\n */\nexport const enum EnumeratedHistogram {\n ActionTaken = 'DevTools.ActionTaken',\n BreakpointWithConditionAdded = 'DevTools.BreakpointWithConditionAdded',\n BreakpointEditDialogRevealedFrom = 'DevTools.BreakpointEditDialogRevealedFrom',\n PanelClosed = 'DevTools.PanelClosed',\n PanelShown = 'DevTools.PanelShown',\n PanelShownInLocation = 'DevTools.PanelShownInLocation',\n SidebarPaneShown = 'DevTools.SidebarPaneShown',\n KeyboardShortcutFired = 'DevTools.KeyboardShortcutFired',\n IssueCreated = 'DevTools.IssueCreated',\n IssuesPanelIssueExpanded = 'DevTools.IssuesPanelIssueExpanded',\n IssuesPanelOpenedFrom = 'DevTools.IssuesPanelOpenedFrom',\n IssuesPanelResourceOpened = 'DevTools.IssuesPanelResourceOpened',\n KeybindSetSettingChanged = 'DevTools.KeybindSetSettingChanged',\n ElementsSidebarTabShown = 'DevTools.Elements.SidebarTabShown',\n ExperimentEnabledAtLaunch = 'DevTools.ExperimentEnabledAtLaunch',\n ExperimentDisabledAtLaunch = 'DevTools.ExperimentDisabledAtLaunch',\n ExperimentEnabled = 'DevTools.ExperimentEnabled',\n ExperimentDisabled = 'DevTools.ExperimentDisabled',\n DeveloperResourceLoaded = 'DevTools.DeveloperResourceLoaded',\n DeveloperResourceScheme = 'DevTools.DeveloperResourceScheme',\n Language = 'DevTools.Language',\n SyncSetting = 'DevTools.SyncSetting',\n RecordingAssertion = 'DevTools.RecordingAssertion',\n RecordingCodeToggled = 'DevTools.RecordingCodeToggled',\n RecordingCopiedToClipboard = 'DevTools.RecordingCopiedToClipboard',\n RecordingEdited = 'DevTools.RecordingEdited',\n RecordingExported = 'DevTools.RecordingExported',\n RecordingReplayFinished = 'DevTools.RecordingReplayFinished',\n RecordingReplaySpeed = 'DevTools.RecordingReplaySpeed',\n RecordingReplayStarted = 'DevTools.RecordingReplayStarted',\n RecordingToggled = 'DevTools.RecordingToggled',\n SourcesSidebarTabShown = 'DevTools.Sources.SidebarTabShown',\n SourcesPanelFileDebugged = 'DevTools.SourcesPanelFileDebugged',\n SourcesPanelFileOpened = 'DevTools.SourcesPanelFileOpened',\n NetworkPanelResponsePreviewOpened = 'DevTools.NetworkPanelResponsePreviewOpened',\n StyleTextCopied = 'DevTools.StyleTextCopied',\n ManifestSectionSelected = 'DevTools.ManifestSectionSelected',\n CSSHintShown = 'DevTools.CSSHintShown',\n LighthouseModeRun = 'DevTools.LighthouseModeRun',\n LighthouseCategoryUsed = 'DevTools.LighthouseCategoryUsed',\n ColorConvertedFrom = 'DevTools.ColorConvertedFrom',\n ColorPickerOpenedFrom = 'DevTools.ColorPickerOpenedFrom',\n CSSPropertyDocumentation = 'DevTools.CSSPropertyDocumentation',\n InlineScriptParsed = 'DevTools.InlineScriptParsed',\n VMInlineScriptTypeShown = 'DevTools.VMInlineScriptShown',\n BreakpointsRestoredFromStorageCount = 'DevTools.BreakpointsRestoredFromStorageCount',\n SwatchActivated = 'DevTools.SwatchActivated',\n BadgeActivated = 'DevTools.BadgeActivated',\n AnimationPlaybackRateChanged = 'DevTools.AnimationPlaybackRateChanged',\n AnimationPointDragged = 'DevTools.AnimationPointDragged',\n LegacyResourceTypeFilterNumberOfSelectedChanged = 'DevTools.LegacyResourceTypeFilterNumberOfSelectedChanged',\n LegacyResourceTypeFilterItemSelected = 'DevTools.LegacyResourceTypeFilterItemSelected',\n ResourceTypeFilterNumberOfSelectedChanged = 'DevTools.ResourceTypeFilterNumberOfSelectedChanged',\n ResourceTypeFilterItemSelected = 'DevTools.ResourceTypeFilterItemSelected',\n NetworkPanelMoreFiltersNumberOfSelectedChanged = 'DevTools.NetworkPanelMoreFiltersNumberOfSelectedChanged',\n NetworkPanelMoreFiltersItemSelected = 'DevTools.NetworkPanelMoreFiltersItemSelected',\n}\n"]}
\ No newline at end of file
diff --git a/public/core/host/UserMetrics.d.ts b/public/core/host/UserMetrics.d.ts
index e8c7b4c54..f025554ed 100644
--- a/public/core/host/UserMetrics.d.ts
+++ b/public/core/host/UserMetrics.d.ts
@@ -207,7 +207,15 @@ export declare enum Action {
InsightErroredApi = 131,
InsightErroredMarkdown = 132,
ToggleShowWebVitals = 133,
- MaxValue = 134
+ InsightErroredPermissionDenied = 134,
+ InsightErroredCannotSend = 135,
+ InsightErroredRequestFailed = 136,
+ InsightErroredCannotParseChunk = 137,
+ InsightErroredUnknownChunk = 138,
+ InsightErroredOther = 139,
+ AutofillReceived = 140,
+ AutofillReceivedAndTabAutoOpened = 141,
+ MaxValue = 142
}
export declare enum PanelCodes {
elements = 1,
@@ -638,11 +646,9 @@ export declare enum DevtoolsExperiments {
'js-profiler-temporarily-enable' = 72,
'highlight-errors-elements-panel' = 73,
'set-all-breakpoints-eagerly' = 74,
- 'self-xss-warning' = 75,
'use-source-map-scopes' = 76,
'storage-buckets-tree' = 77,
'network-panel-filter-bar-redesign' = 79,
- 'track-context-menu' = 81,
'autofill-view' = 82,
'sources-frame-indentation-markers-temporarily-disable' = 83,
'heap-snapshot-treat-backing-store-as-containing-object' = 84,
diff --git a/public/core/host/UserMetrics.js b/public/core/host/UserMetrics.js
index 25d2f565c..71fbb1e98 100644
--- a/public/core/host/UserMetrics.js
+++ b/public/core/host/UserMetrics.js
@@ -512,7 +512,15 @@ export var Action;
Action[Action["InsightErroredApi"] = 131] = "InsightErroredApi";
Action[Action["InsightErroredMarkdown"] = 132] = "InsightErroredMarkdown";
Action[Action["ToggleShowWebVitals"] = 133] = "ToggleShowWebVitals";
- Action[Action["MaxValue"] = 134] = "MaxValue";
+ Action[Action["InsightErroredPermissionDenied"] = 134] = "InsightErroredPermissionDenied";
+ Action[Action["InsightErroredCannotSend"] = 135] = "InsightErroredCannotSend";
+ Action[Action["InsightErroredRequestFailed"] = 136] = "InsightErroredRequestFailed";
+ Action[Action["InsightErroredCannotParseChunk"] = 137] = "InsightErroredCannotParseChunk";
+ Action[Action["InsightErroredUnknownChunk"] = 138] = "InsightErroredUnknownChunk";
+ Action[Action["InsightErroredOther"] = 139] = "InsightErroredOther";
+ Action[Action["AutofillReceived"] = 140] = "AutofillReceived";
+ Action[Action["AutofillReceivedAndTabAutoOpened"] = 141] = "AutofillReceivedAndTabAutoOpened";
+ Action[Action["MaxValue"] = 142] = "MaxValue";
})(Action || (Action = {}));
/* eslint-disable @typescript-eslint/naming-convention */
export var PanelCodes;
@@ -956,11 +964,9 @@ export var DevtoolsExperiments;
DevtoolsExperiments[DevtoolsExperiments["js-profiler-temporarily-enable"] = 72] = "js-profiler-temporarily-enable";
DevtoolsExperiments[DevtoolsExperiments["highlight-errors-elements-panel"] = 73] = "highlight-errors-elements-panel";
DevtoolsExperiments[DevtoolsExperiments["set-all-breakpoints-eagerly"] = 74] = "set-all-breakpoints-eagerly";
- DevtoolsExperiments[DevtoolsExperiments["self-xss-warning"] = 75] = "self-xss-warning";
DevtoolsExperiments[DevtoolsExperiments["use-source-map-scopes"] = 76] = "use-source-map-scopes";
DevtoolsExperiments[DevtoolsExperiments["storage-buckets-tree"] = 77] = "storage-buckets-tree";
DevtoolsExperiments[DevtoolsExperiments["network-panel-filter-bar-redesign"] = 79] = "network-panel-filter-bar-redesign";
- DevtoolsExperiments[DevtoolsExperiments["track-context-menu"] = 81] = "track-context-menu";
DevtoolsExperiments[DevtoolsExperiments["autofill-view"] = 82] = "autofill-view";
DevtoolsExperiments[DevtoolsExperiments["sources-frame-indentation-markers-temporarily-disable"] = 83] = "sources-frame-indentation-markers-temporarily-disable";
DevtoolsExperiments[DevtoolsExperiments["heap-snapshot-treat-backing-store-as-containing-object"] = 84] = "heap-snapshot-treat-backing-store-as-containing-object";
diff --git a/public/core/host/UserMetrics.js.map b/public/core/host/UserMetrics.js.map
index 492189bb8..7f155ded6 100644
--- a/public/core/host/UserMetrics.js.map
+++ b/public/core/host/UserMetrics.js.map
@@ -1 +1 @@
-{"version":3,"file":"UserMetrics.js","sourceRoot":"","sources":["../../../../../../front_end/core/host/UserMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2011 Google Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following disclaimer\n * in the documentation and/or other materials provided with the\n * distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport {InspectorFrontendHostInstance} from './InspectorFrontendHost.js';\nimport {EnumeratedHistogram} from './InspectorFrontendHostAPI.js';\n\nexport class UserMetrics {\n #panelChangedSinceLaunch: boolean;\n #firedLaunchHistogram: boolean;\n #launchPanelName: string;\n constructor() {\n this.#panelChangedSinceLaunch = false;\n this.#firedLaunchHistogram = false;\n this.#launchPanelName = '';\n }\n\n breakpointWithConditionAdded(breakpointWithConditionAdded: BreakpointWithConditionAdded): void {\n if (breakpointWithConditionAdded >= BreakpointWithConditionAdded.MaxValue) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.BreakpointWithConditionAdded, breakpointWithConditionAdded,\n BreakpointWithConditionAdded.MaxValue);\n }\n\n breakpointEditDialogRevealedFrom(breakpointEditDialogRevealedFrom: BreakpointEditDialogRevealedFrom): void {\n if (breakpointEditDialogRevealedFrom >= BreakpointEditDialogRevealedFrom.MaxValue) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.BreakpointEditDialogRevealedFrom, breakpointEditDialogRevealedFrom,\n BreakpointEditDialogRevealedFrom.MaxValue);\n }\n\n panelShown(panelName: string, isLaunching?: boolean): void {\n const code = PanelCodes[panelName as keyof typeof PanelCodes] || 0;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.PanelShown, code, PanelCodes.MaxValue);\n InspectorFrontendHostInstance.recordUserMetricsAction('DevTools_PanelShown_' + panelName);\n // Store that the user has changed the panel so we know launch histograms should not be fired.\n if (!isLaunching) {\n this.#panelChangedSinceLaunch = true;\n }\n }\n\n /**\n * Fired when a panel is closed (regardless if it exists in the main panel or the drawer)\n */\n panelClosed(panelName: string): void {\n const code = PanelCodes[panelName as keyof typeof PanelCodes] || 0;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.PanelClosed, code, PanelCodes.MaxValue);\n // Store that the user has changed the panel so we know launch histograms should not be fired.\n this.#panelChangedSinceLaunch = true;\n }\n\n panelShownInLocation(panelName: string, location: 'main'|'drawer'): void {\n const panelWithLocationName = `${panelName}-${location}`;\n const panelWithLocation = PanelWithLocation[panelWithLocationName as keyof typeof PanelWithLocation] || 0;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.PanelShownInLocation,\n panelWithLocation,\n PanelWithLocation.MaxValue,\n );\n }\n\n elementsSidebarTabShown(sidebarPaneName: string): void {\n const code = ElementsSidebarTabCodes[sidebarPaneName as keyof typeof ElementsSidebarTabCodes] || 0;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ElementsSidebarTabShown, code, ElementsSidebarTabCodes.MaxValue);\n }\n\n sourcesSidebarTabShown(sidebarPaneName: string): void {\n const code = SourcesSidebarTabCodes[sidebarPaneName as keyof typeof SourcesSidebarTabCodes] || 0;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.SourcesSidebarTabShown, code, SourcesSidebarTabCodes.MaxValue);\n }\n\n settingsPanelShown(settingsViewId: string): void {\n this.panelShown('settings-' + settingsViewId);\n }\n\n sourcesPanelFileDebugged(mediaType?: string): void {\n const code = (mediaType && MediaTypes[mediaType as keyof typeof MediaTypes]) || MediaTypes.Unknown;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.SourcesPanelFileDebugged, code, MediaTypes.MaxValue);\n }\n\n sourcesPanelFileOpened(mediaType?: string): void {\n const code = (mediaType && MediaTypes[mediaType as keyof typeof MediaTypes]) || MediaTypes.Unknown;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.SourcesPanelFileOpened, code, MediaTypes.MaxValue);\n }\n\n networkPanelResponsePreviewOpened(mediaType: string): void {\n const code = (mediaType && MediaTypes[mediaType as keyof typeof MediaTypes]) || MediaTypes.Unknown;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.NetworkPanelResponsePreviewOpened, code, MediaTypes.MaxValue);\n }\n\n actionTaken(action: Action): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.ActionTaken, action, Action.MaxValue);\n }\n\n panelLoaded(panelName: string, histogramName: string): void {\n if (this.#firedLaunchHistogram || panelName !== this.#launchPanelName) {\n return;\n }\n\n this.#firedLaunchHistogram = true;\n // Use rAF and window.setTimeout to ensure the marker is fired after layout and rendering.\n // This will give the most accurate representation of the tool being ready for a user.\n requestAnimationFrame(() => {\n window.setTimeout(() => {\n // Mark the load time so that we can pinpoint it more easily in a trace.\n performance.mark(histogramName);\n // If the user has switched panel before we finished loading, ignore the histogram,\n // since the launch timings will have been affected and are no longer valid.\n if (this.#panelChangedSinceLaunch) {\n return;\n }\n // This fires the event for the appropriate launch histogram.\n // The duration is measured as the time elapsed since the time origin of the document.\n InspectorFrontendHostInstance.recordPerformanceHistogram(histogramName, performance.now());\n }, 0);\n });\n }\n\n setLaunchPanel(panelName: string|null): void {\n this.#launchPanelName = (panelName as string);\n }\n\n performanceTraceLoad(measure: PerformanceMeasure): void {\n InspectorFrontendHostInstance.recordPerformanceHistogram('DevTools.TraceLoad', measure.duration);\n }\n\n keybindSetSettingChanged(keybindSet: string): void {\n const value = KeybindSetSettings[keybindSet as keyof typeof KeybindSetSettings] || 0;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.KeybindSetSettingChanged, value, KeybindSetSettings.MaxValue);\n }\n\n keyboardShortcutFired(actionId: string): void {\n const action =\n KeyboardShortcutAction[actionId as keyof typeof KeyboardShortcutAction] || KeyboardShortcutAction.OtherShortcut;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.KeyboardShortcutFired, action, KeyboardShortcutAction.MaxValue);\n }\n\n issuesPanelOpenedFrom(issueOpener: IssueOpener): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.IssuesPanelOpenedFrom, issueOpener, IssueOpener.MaxValue);\n }\n\n issuesPanelIssueExpanded(issueExpandedCategory: string|undefined): void {\n if (issueExpandedCategory === undefined) {\n return;\n }\n\n const issueExpanded = IssueExpanded[issueExpandedCategory as keyof typeof IssueExpanded];\n\n if (issueExpanded === undefined) {\n return;\n }\n\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.IssuesPanelIssueExpanded, issueExpanded, IssueExpanded.MaxValue);\n }\n\n issuesPanelResourceOpened(issueCategory: string, type: string): void {\n const key = issueCategory + type;\n const value = IssueResourceOpened[key as keyof typeof IssueResourceOpened];\n\n if (value === undefined) {\n return;\n }\n\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.IssuesPanelResourceOpened, value, IssueResourceOpened.MaxValue);\n }\n\n issueCreated(code: string): void {\n const issueCreated = IssueCreated[code as keyof typeof IssueCreated];\n if (issueCreated === undefined) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.IssueCreated, issueCreated, IssueCreated.MaxValue);\n }\n\n experimentEnabledAtLaunch(experimentId: string): void {\n const experiment = DevtoolsExperiments[experimentId as keyof typeof DevtoolsExperiments];\n if (experiment === undefined) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ExperimentEnabledAtLaunch, experiment, DevtoolsExperiments.MaxValue);\n }\n\n experimentDisabledAtLaunch(experimentId: string): void {\n const experiment = DevtoolsExperiments[experimentId as keyof typeof DevtoolsExperiments];\n if (experiment === undefined) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ExperimentDisabledAtLaunch, experiment, DevtoolsExperiments.MaxValue);\n }\n\n experimentChanged(experimentId: string, isEnabled: boolean): void {\n const experiment = DevtoolsExperiments[experimentId as keyof typeof DevtoolsExperiments];\n if (experiment === undefined) {\n return;\n }\n const actionName = isEnabled ? EnumeratedHistogram.ExperimentEnabled : EnumeratedHistogram.ExperimentDisabled;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(actionName, experiment, DevtoolsExperiments.MaxValue);\n }\n\n developerResourceLoaded(developerResourceLoaded: DeveloperResourceLoaded): void {\n if (developerResourceLoaded >= DeveloperResourceLoaded.MaxValue) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.DeveloperResourceLoaded, developerResourceLoaded, DeveloperResourceLoaded.MaxValue);\n }\n\n developerResourceScheme(developerResourceScheme: DeveloperResourceScheme): void {\n if (developerResourceScheme >= DeveloperResourceScheme.MaxValue) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.DeveloperResourceScheme, developerResourceScheme, DeveloperResourceScheme.MaxValue);\n }\n\n inlineScriptParsed(inlineScriptType: VMInlineScriptType): void {\n if (inlineScriptType >= VMInlineScriptType.MaxValue) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.InlineScriptParsed, inlineScriptType, VMInlineScriptType.MaxValue);\n }\n\n vmInlineScriptContentShown(inlineScriptType: VMInlineScriptType): void {\n if (inlineScriptType >= VMInlineScriptType.MaxValue) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.VMInlineScriptTypeShown, inlineScriptType, VMInlineScriptType.MaxValue);\n }\n\n language(language: Intl.UnicodeBCP47LocaleIdentifier): void {\n const languageCode = Language[language as keyof typeof Language];\n if (languageCode === undefined) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.Language, languageCode, Language.MaxValue);\n }\n\n syncSetting(devtoolsSyncSettingEnabled: boolean): void {\n InspectorFrontendHostInstance.getSyncInformation(syncInfo => {\n let settingValue = SyncSetting.ChromeSyncDisabled;\n if (syncInfo.isSyncActive && !syncInfo.arePreferencesSynced) {\n settingValue = SyncSetting.ChromeSyncSettingsDisabled;\n } else if (syncInfo.isSyncActive && syncInfo.arePreferencesSynced) {\n settingValue = devtoolsSyncSettingEnabled ? SyncSetting.DevToolsSyncSettingEnabled :\n SyncSetting.DevToolsSyncSettingDisabled;\n }\n\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.SyncSetting, settingValue, SyncSetting.MaxValue);\n });\n }\n\n recordingAssertion(value: RecordingAssertion): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingAssertion, value, RecordingAssertion.MaxValue);\n }\n\n recordingToggled(value: RecordingToggled): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingToggled, value, RecordingToggled.MaxValue);\n }\n\n recordingReplayFinished(value: RecordingReplayFinished): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingReplayFinished, value, RecordingReplayFinished.MaxValue);\n }\n\n recordingReplaySpeed(value: RecordingReplaySpeed): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingReplaySpeed, value, RecordingReplaySpeed.MaxValue);\n }\n\n recordingReplayStarted(value: RecordingReplayStarted): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingReplayStarted, value, RecordingReplayStarted.MaxValue);\n }\n\n recordingEdited(value: RecordingEdited): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingEdited, value, RecordingEdited.MaxValue);\n }\n\n recordingExported(value: RecordingExported): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingExported, value, RecordingExported.MaxValue);\n }\n\n recordingCodeToggled(value: RecordingCodeToggled): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingCodeToggled, value, RecordingCodeToggled.MaxValue);\n }\n\n recordingCopiedToClipboard(value: RecordingCopiedToClipboard): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingCopiedToClipboard, value, RecordingCopiedToClipboard.MaxValue);\n }\n\n styleTextCopied(value: StyleTextCopied): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.StyleTextCopied, value, StyleTextCopied.MaxValue);\n }\n\n manifestSectionSelected(sectionTitle: string): void {\n const code =\n ManifestSectionCodes[sectionTitle as keyof typeof ManifestSectionCodes] || ManifestSectionCodes.OtherSection;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ManifestSectionSelected, code, ManifestSectionCodes.MaxValue);\n }\n\n cssHintShown(type: CSSHintType): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.CSSHintShown, type, CSSHintType.MaxValue);\n }\n\n lighthouseModeRun(type: LighthouseModeRun): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.LighthouseModeRun, type, LighthouseModeRun.MaxValue);\n }\n\n lighthouseCategoryUsed(type: LighthouseCategoryUsed): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.LighthouseCategoryUsed, type, LighthouseCategoryUsed.MaxValue);\n }\n\n colorConvertedFrom(type: ColorConvertedFrom): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ColorConvertedFrom, type, ColorConvertedFrom.MaxValue);\n }\n\n colorPickerOpenedFrom(type: ColorPickerOpenedFrom): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ColorPickerOpenedFrom, type, ColorPickerOpenedFrom.MaxValue);\n }\n\n cssPropertyDocumentation(type: CSSPropertyDocumentation): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.CSSPropertyDocumentation, type, CSSPropertyDocumentation.MaxValue);\n }\n\n swatchActivated(swatch: SwatchType): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.SwatchActivated, swatch, SwatchType.MaxValue);\n }\n\n badgeActivated(badge: BadgeType): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.BadgeActivated, badge, BadgeType.MaxValue);\n }\n\n breakpointsRestoredFromStorage(count: number): void {\n const countBucket = this.#breakpointCountToBucket(count);\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.BreakpointsRestoredFromStorageCount, countBucket,\n BreakpointsRestoredFromStorageCount.MaxValue);\n }\n\n animationPlaybackRateChanged(playbackRate: AnimationsPlaybackRate): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.AnimationPlaybackRateChanged, playbackRate, AnimationsPlaybackRate.MaxValue);\n }\n\n animationPointDragged(dragType: AnimationPointDragType): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.AnimationPointDragged, dragType, AnimationPointDragType.MaxValue);\n }\n\n #breakpointCountToBucket(count: number): BreakpointsRestoredFromStorageCount {\n if (count < 100) {\n return BreakpointsRestoredFromStorageCount.LessThan100;\n }\n if (count < 300) {\n return BreakpointsRestoredFromStorageCount.LessThan300;\n }\n if (count < 1000) {\n return BreakpointsRestoredFromStorageCount.LessThan1000;\n }\n if (count < 3000) {\n return BreakpointsRestoredFromStorageCount.LessThan3000;\n }\n if (count < 10000) {\n return BreakpointsRestoredFromStorageCount.LessThan10000;\n }\n if (count < 30000) {\n return BreakpointsRestoredFromStorageCount.LessThan30000;\n }\n if (count < 100000) {\n return BreakpointsRestoredFromStorageCount.LessThan100000;\n }\n if (count < 300000) {\n return BreakpointsRestoredFromStorageCount.LessThan300000;\n }\n if (count < 1000000) {\n return BreakpointsRestoredFromStorageCount.LessThan1000000;\n }\n return BreakpointsRestoredFromStorageCount.Above1000000;\n }\n\n workspacesPopulated(wallClockTimeInMilliseconds: number): void {\n InspectorFrontendHostInstance.recordPerformanceHistogram(\n 'DevTools.Workspaces.PopulateWallClocktime', wallClockTimeInMilliseconds);\n }\n\n visualLoggingProcessingDone(timeInMilliseconds: number): void {\n InspectorFrontendHostInstance.recordPerformanceHistogram(\n 'DevTools.VisualLogging.ProcessingTime', timeInMilliseconds);\n }\n\n legacyResourceTypeFilterNumberOfSelectedChanged(itemCount: number): void {\n const boundItemCount = Math.max(Math.min(itemCount, ResourceType.MaxValue - 1), 1);\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.LegacyResourceTypeFilterNumberOfSelectedChanged, boundItemCount, ResourceType.MaxValue);\n }\n\n legacyResourceTypeFilterItemSelected(resourceTypeName: string): void {\n const resourceType = ResourceType[resourceTypeName as keyof typeof ResourceType];\n if (resourceType === undefined) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.LegacyResourceTypeFilterItemSelected, resourceType, ResourceType.MaxValue);\n }\n\n resourceTypeFilterNumberOfSelectedChanged(itemCount: number): void {\n const boundItemCount = Math.max(Math.min(itemCount, ResourceType.MaxValue - 1), 1);\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ResourceTypeFilterNumberOfSelectedChanged, boundItemCount, ResourceType.MaxValue);\n }\n\n resourceTypeFilterItemSelected(resourceTypeName: string): void {\n const resourceType = ResourceType[resourceTypeName as keyof typeof ResourceType];\n if (resourceType === undefined) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ResourceTypeFilterItemSelected, resourceType, ResourceType.MaxValue);\n }\n\n networkPanelMoreFiltersNumberOfSelectedChanged(itemCount: number): void {\n const boundItemCount = Math.max(Math.min(itemCount, NetworkPanelMoreFilters.MaxValue), 0);\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.NetworkPanelMoreFiltersNumberOfSelectedChanged, boundItemCount,\n NetworkPanelMoreFilters.MaxValue);\n }\n\n networkPanelMoreFiltersItemSelected(filterName: string): void {\n const filter = NetworkPanelMoreFilters[filterName as keyof typeof NetworkPanelMoreFilters];\n if (filter === undefined) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.NetworkPanelMoreFiltersItemSelected, filter, NetworkPanelMoreFilters.MaxValue);\n }\n}\n\n/**\n * The numeric enum values are not necessarily continuous! It is possible that\n * values have been removed, which results in gaps in the sequence of values.\n * When adding a new value:\n * 1. Add an entry to the bottom of the enum before 'MaxValue'.\n * 2. Set the value of the new entry to the current value of 'MaxValue'.\n * 2. Increment the value of 'MaxValue' by 1.\n * When removing a value which is no longer needed:\n * 1. Delete the line with the unneeded value\n * 2. Do not update any 'MaxValue' or any other value.\n */\n\n// Codes below are used to collect UMA histograms in the Chromium port.\n// Do not change the values below, additional actions are needed on the Chromium side\n// in order to add more codes.\nexport enum Action {\n WindowDocked = 1,\n WindowUndocked = 2,\n ScriptsBreakpointSet = 3,\n TimelineStarted = 4,\n ProfilesCPUProfileTaken = 5,\n ProfilesHeapProfileTaken = 6,\n ConsoleEvaluated = 8,\n FileSavedInWorkspace = 9,\n DeviceModeEnabled = 10,\n AnimationsPlaybackRateChanged = 11,\n RevisionApplied = 12,\n FileSystemDirectoryContentReceived = 13,\n StyleRuleEdited = 14,\n CommandEvaluatedInConsolePanel = 15,\n DOMPropertiesExpanded = 16,\n ResizedViewInResponsiveMode = 17,\n TimelinePageReloadStarted = 18,\n ConnectToNodeJSFromFrontend = 19,\n ConnectToNodeJSDirectly = 20,\n CpuThrottlingEnabled = 21,\n CpuProfileNodeFocused = 22,\n CpuProfileNodeExcluded = 23,\n SelectFileFromFilePicker = 24,\n SelectCommandFromCommandMenu = 25,\n ChangeInspectedNodeInElementsPanel = 26,\n StyleRuleCopied = 27,\n CoverageStarted = 28,\n LighthouseStarted = 29,\n LighthouseFinished = 30,\n ShowedThirdPartyBadges = 31,\n LighthouseViewTrace = 32,\n FilmStripStartedRecording = 33,\n CoverageReportFiltered = 34,\n CoverageStartedPerBlock = 35,\n 'SettingsOpenedFromGear-deprecated' = 36,\n 'SettingsOpenedFromMenu-deprecated' = 37,\n 'SettingsOpenedFromCommandMenu-deprecated' = 38,\n TabMovedToDrawer = 39,\n TabMovedToMainPanel = 40,\n CaptureCssOverviewClicked = 41,\n VirtualAuthenticatorEnvironmentEnabled = 42,\n SourceOrderViewActivated = 43,\n UserShortcutAdded = 44,\n ShortcutRemoved = 45,\n ShortcutModified = 46,\n CustomPropertyLinkClicked = 47,\n CustomPropertyEdited = 48,\n ServiceWorkerNetworkRequestClicked = 49,\n ServiceWorkerNetworkRequestClosedQuickly = 50,\n NetworkPanelServiceWorkerRespondWith = 51,\n NetworkPanelCopyValue = 52,\n ConsoleSidebarOpened = 53,\n PerfPanelTraceImported = 54,\n PerfPanelTraceExported = 55,\n StackFrameRestarted = 56,\n CaptureTestProtocolClicked = 57,\n BreakpointRemovedFromRemoveButton = 58,\n BreakpointGroupExpandedStateChanged = 59,\n HeaderOverrideFileCreated = 60,\n HeaderOverrideEnableEditingClicked = 61,\n HeaderOverrideHeaderAdded = 62,\n HeaderOverrideHeaderEdited = 63,\n HeaderOverrideHeaderRemoved = 64,\n HeaderOverrideHeadersFileEdited = 65,\n PersistenceNetworkOverridesEnabled = 66,\n PersistenceNetworkOverridesDisabled = 67,\n BreakpointRemovedFromContextMenu = 68,\n BreakpointsInFileRemovedFromRemoveButton = 69,\n BreakpointsInFileRemovedFromContextMenu = 70,\n BreakpointsInFileCheckboxToggled = 71,\n BreakpointsInFileEnabledDisabledFromContextMenu = 72,\n BreakpointConditionEditedFromSidebar = 73,\n WorkspaceTabAddFolder = 74,\n WorkspaceTabRemoveFolder = 75,\n OverrideTabAddFolder = 76,\n OverrideTabRemoveFolder = 77,\n WorkspaceSourceSelected = 78,\n OverridesSourceSelected = 79,\n StyleSheetInitiatorLinkClicked = 80,\n BreakpointRemovedFromGutterContextMenu = 81,\n BreakpointRemovedFromGutterToggle = 82,\n StylePropertyInsideKeyframeEdited = 83,\n OverrideContentFromSourcesContextMenu = 84,\n OverrideContentFromNetworkContextMenu = 85,\n OverrideScript = 86,\n OverrideStyleSheet = 87,\n OverrideDocument = 88,\n OverrideFetchXHR = 89,\n OverrideImage = 90,\n OverrideFont = 91,\n OverrideContentContextMenuSetup = 92,\n OverrideContentContextMenuAbandonSetup = 93,\n OverrideContentContextMenuActivateDisabled = 94,\n OverrideContentContextMenuOpenExistingFile = 95,\n OverrideContentContextMenuSaveNewFile = 96,\n ShowAllOverridesFromSourcesContextMenu = 97,\n ShowAllOverridesFromNetworkContextMenu = 98,\n AnimationGroupsCleared = 99,\n AnimationsPaused = 100,\n AnimationsResumed = 101,\n AnimatedNodeDescriptionClicked = 102,\n AnimationGroupScrubbed = 103,\n AnimationGroupReplayed = 104,\n OverrideTabDeleteFolderContextMenu = 105,\n WorkspaceDropFolder = 107,\n WorkspaceSelectFolder = 108,\n OverrideContentContextMenuSourceMappedWarning = 109,\n OverrideContentContextMenuRedirectToDeployed = 110,\n NewStyleRuleAdded = 111,\n TraceExpanded = 112,\n InsightConsoleMessageShown = 113,\n InsightRequestedViaContextMenu = 114,\n InsightRequestedViaHoverButton = 115,\n InsightRatedPositive = 117,\n InsightRatedNegative = 118,\n InsightClosed = 119,\n InsightErrored = 120,\n InsightHoverButtonShown = 121,\n SelfXssWarningConsoleMessageShown = 122,\n SelfXssWarningDialogShown = 123,\n SelfXssAllowPastingInConsole = 124,\n SelfXssAllowPastingInDialog = 125,\n ToggleEmulateFocusedPageFromStylesPaneOn = 126,\n ToggleEmulateFocusedPageFromStylesPaneOff = 127,\n ToggleEmulateFocusedPageFromRenderingTab = 128,\n ToggleEmulateFocusedPageFromCommandMenu = 129,\n InsightGenerated = 130,\n InsightErroredApi = 131,\n InsightErroredMarkdown = 132,\n ToggleShowWebVitals = 133,\n MaxValue = 134,\n}\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum PanelCodes {\n elements = 1,\n resources = 2,\n network = 3,\n sources = 4,\n timeline = 5,\n 'heap-profiler' = 6,\n console = 8,\n layers = 9,\n 'console-view' = 10,\n 'animations' = 11,\n 'network.config' = 12,\n 'rendering' = 13,\n 'sensors' = 14,\n 'sources.search' = 15,\n security = 16,\n 'js-profiler' = 17,\n lighthouse = 18,\n 'coverage' = 19,\n 'protocol-monitor' = 20,\n 'remote-devices' = 21,\n 'web-audio' = 22,\n 'changes.changes' = 23,\n 'performance.monitor' = 24,\n 'release-note' = 25,\n 'live-heap-profile' = 26,\n 'sources.quick' = 27,\n 'network.blocked-urls' = 28,\n 'settings-preferences' = 29,\n 'settings-workspace' = 30,\n 'settings-experiments' = 31,\n 'settings-blackbox' = 32,\n 'settings-devices' = 33,\n 'settings-throttling-conditions' = 34,\n 'settings-emulation-locations' = 35,\n 'settings-shortcuts' = 36,\n 'issues-pane' = 37,\n 'settings-keybinds' = 38,\n 'cssoverview' = 39,\n 'chrome-recorder' = 40,\n 'trust-tokens' = 41,\n 'reporting-api' = 42,\n 'interest-groups' = 43,\n 'back-forward-cache' = 44,\n 'service-worker-cache' = 45,\n 'background-service-background-fetch' = 46,\n 'background-service-background-sync' = 47,\n 'background-service-push-messaging' = 48,\n 'background-service-notifications' = 49,\n 'background-service-payment-handler' = 50,\n 'background-service-periodic-background-sync' = 51,\n 'service-workers' = 52,\n 'app-manifest' = 53,\n 'storage' = 54,\n 'cookies' = 55,\n 'frame-details' = 56,\n 'frame-resource' = 57,\n 'frame-window' = 58,\n 'frame-worker' = 59,\n 'dom-storage' = 60,\n 'indexed-db' = 61,\n 'web-sql' = 62,\n 'performance-insights' = 63,\n 'preloading' = 64,\n 'bounce-tracking-mitigations' = 65,\n 'developer-resources' = 66,\n 'autofill-view' = 67,\n MaxValue = 68,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum PanelWithLocation {\n 'elements-main' = 1,\n 'elements-drawer' = 2,\n 'resources-main' = 3,\n 'resources-drawer' = 4,\n 'network-main' = 5,\n 'network-drawer' = 6,\n 'sources-main' = 7,\n 'sources-drawer' = 8,\n 'timeline-main' = 9,\n 'timeline-drawer' = 10,\n 'heap_profiler-main' = 11,\n 'heap_profiler-drawer' = 12,\n 'console-main' = 13,\n 'console-drawer' = 14,\n 'layers-main' = 15,\n 'layers-drawer' = 16,\n 'console-view-main' = 17,\n 'console-view-drawer' = 18,\n 'animations-main' = 19,\n 'animations-drawer' = 20,\n 'network.config-main' = 21,\n 'network.config-drawer' = 22,\n 'rendering-main' = 23,\n 'rendering-drawer' = 24,\n 'sensors-main' = 25,\n 'sensors-drawer' = 26,\n 'sources.search-main' = 27,\n 'sources.search-drawer' = 28,\n 'security-main' = 29,\n 'security-drawer' = 30,\n 'js_profiler-main' = 31,\n 'js_profiler-drawer' = 32,\n 'lighthouse-main' = 33,\n 'lighthouse-drawer' = 34,\n 'coverage-main' = 35,\n 'coverage-drawer' = 36,\n 'protocol-monitor-main' = 37,\n 'protocol-monitor-drawer' = 38,\n 'remote-devices-main' = 39,\n 'remote-devices-drawer' = 40,\n 'web-audio-main' = 41,\n 'web-audio-drawer' = 42,\n 'changes.changes-main' = 43,\n 'changes.changes-drawer' = 44,\n 'performance.monitor-main' = 45,\n 'performance.monitor-drawer' = 46,\n 'release-note-main' = 47,\n 'release-note-drawer' = 48,\n 'live_heap_profile-main' = 49,\n 'live_heap_profile-drawer' = 50,\n 'sources.quick-main' = 51,\n 'sources.quick-drawer' = 52,\n 'network.blocked-urls-main' = 53,\n 'network.blocked-urls-drawer' = 54,\n 'settings-preferences-main' = 55,\n 'settings-preferences-drawer' = 56,\n 'settings-workspace-main' = 57,\n 'settings-workspace-drawer' = 58,\n 'settings-experiments-main' = 59,\n 'settings-experiments-drawer' = 60,\n 'settings-blackbox-main' = 61,\n 'settings-blackbox-drawer' = 62,\n 'settings-devices-main' = 63,\n 'settings-devices-drawer' = 64,\n 'settings-throttling-conditions-main' = 65,\n 'settings-throttling-conditions-drawer' = 66,\n 'settings-emulation-locations-main' = 67,\n 'settings-emulation-locations-drawer' = 68,\n 'settings-shortcuts-main' = 69,\n 'settings-shortcuts-drawer' = 70,\n 'issues-pane-main' = 71,\n 'issues-pane-drawer' = 72,\n 'settings-keybinds-main' = 73,\n 'settings-keybinds-drawer' = 74,\n 'cssoverview-main' = 75,\n 'cssoverview-drawer' = 76,\n 'chrome_recorder-main' = 77,\n 'chrome_recorder-drawer' = 78,\n 'trust_tokens-main' = 79,\n 'trust_tokens-drawer' = 80,\n 'reporting_api-main' = 81,\n 'reporting_api-drawer' = 82,\n 'interest_groups-main' = 83,\n 'interest_groups-drawer' = 84,\n 'back_forward_cache-main' = 85,\n 'back_forward_cache-drawer' = 86,\n 'service_worker_cache-main' = 87,\n 'service_worker_cache-drawer' = 88,\n 'background_service_backgroundFetch-main' = 89,\n 'background_service_backgroundFetch-drawer' = 90,\n 'background_service_backgroundSync-main' = 91,\n 'background_service_backgroundSync-drawer' = 92,\n 'background_service_pushMessaging-main' = 93,\n 'background_service_pushMessaging-drawer' = 94,\n 'background_service_notifications-main' = 95,\n 'background_service_notifications-drawer' = 96,\n 'background_service_paymentHandler-main' = 97,\n 'background_service_paymentHandler-drawer' = 98,\n 'background_service_periodicBackgroundSync-main' = 99,\n 'background_service_periodicBackgroundSync-drawer' = 100,\n 'service_workers-main' = 101,\n 'service_workers-drawer' = 102,\n 'app_manifest-main' = 103,\n 'app_manifest-drawer' = 104,\n 'storage-main' = 105,\n 'storage-drawer' = 106,\n 'cookies-main' = 107,\n 'cookies-drawer' = 108,\n 'frame_details-main' = 109,\n 'frame_details-drawer' = 110,\n 'frame_resource-main' = 111,\n 'frame_resource-drawer' = 112,\n 'frame_window-main' = 113,\n 'frame_window-drawer' = 114,\n 'frame_worker-main' = 115,\n 'frame_worker-drawer' = 116,\n 'dom_storage-main' = 117,\n 'dom_storage-drawer' = 118,\n 'indexed_db-main' = 119,\n 'indexed_db-drawer' = 120,\n 'web_sql-main' = 121,\n 'web_sql-drawer' = 122,\n 'performance_insights-main' = 123,\n 'performance_insights-drawer' = 124,\n 'preloading-main' = 125,\n 'preloading-drawer' = 126,\n 'bounce_tracking_mitigations-main' = 127,\n 'bounce_tracking_mitigations-drawer' = 128,\n 'developer-resources-main' = 129,\n 'developer-resources-drawer' = 130,\n 'autofill-view-main' = 131,\n 'autofill-view-drawer' = 132,\n MaxValue = 133,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum ElementsSidebarTabCodes {\n 'OtherSidebarPane' = 0,\n 'styles' = 1,\n 'computed' = 2,\n 'elements.layout' = 3,\n 'elements.event-listeners' = 4,\n 'elements.dom-breakpoints' = 5,\n 'elements.dom-properties' = 6,\n 'accessibility.view' = 7,\n MaxValue = 8,\n}\n\n/* eslint-enable @typescript-eslint/naming-convention */\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum SourcesSidebarTabCodes {\n 'OtherSidebarPane' = 0,\n 'navigator-network' = 1,\n 'navigator-files' = 2,\n 'navigator-overrides' = 3,\n 'navigator-content-scripts' = 4,\n 'navigator-snippets' = 5,\n MaxValue = 6,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum MediaTypes {\n Unknown = 0,\n 'text/css' = 2,\n 'text/html' = 3,\n 'application/xml' = 4,\n 'application/wasm' = 5,\n 'application/manifest+json' = 6,\n 'application/x-aspx' = 7,\n 'application/jsp' = 8,\n 'text/x-c++src' = 9,\n 'text/x-coffeescript' = 10,\n 'application/vnd.dart' = 11,\n 'text/typescript' = 12,\n 'text/typescript-jsx' = 13,\n 'application/json' = 14,\n 'text/x-csharp' = 15,\n 'text/x-java' = 16,\n 'text/x-less' = 17,\n 'application/x-httpd-php' = 18,\n 'text/x-python' = 19,\n 'text/x-sh' = 20,\n 'text/x-gss' = 21,\n 'text/x-sass' = 22,\n 'text/x-scss' = 23,\n 'text/markdown' = 24,\n 'text/x-clojure' = 25,\n 'text/jsx' = 26,\n 'text/x-go' = 27,\n 'text/x-kotlin' = 28,\n 'text/x-scala' = 29,\n 'text/x.svelte' = 30,\n 'text/javascript+plain' = 31,\n 'text/javascript+minified' = 32,\n 'text/javascript+sourcemapped' = 33,\n 'text/x.angular' = 34,\n 'text/x.vue' = 35,\n MaxValue = 36,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum KeybindSetSettings {\n 'devToolsDefault' = 0,\n 'vsCode' = 1,\n MaxValue = 2,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum KeyboardShortcutAction {\n OtherShortcut = 0,\n 'quick-open.show-command-menu' = 1,\n 'console.clear' = 2,\n 'console.toggle' = 3,\n 'debugger.step' = 4,\n 'debugger.step-into' = 5,\n 'debugger.step-out' = 6,\n 'debugger.step-over' = 7,\n 'debugger.toggle-breakpoint' = 8,\n 'debugger.toggle-breakpoint-enabled' = 9,\n 'debugger.toggle-pause' = 10,\n 'elements.edit-as-html' = 11,\n 'elements.hide-element' = 12,\n 'elements.redo' = 13,\n 'elements.toggle-element-search' = 14,\n 'elements.undo' = 15,\n 'main.search-in-panel.find' = 16,\n 'main.toggle-drawer' = 17,\n 'network.hide-request-details' = 18,\n 'network.search' = 19,\n 'network.toggle-recording' = 20,\n 'quick-open.show' = 21,\n 'settings.show' = 22,\n 'sources.search' = 23,\n 'background-service.toggle-recording' = 24,\n 'components.collect-garbage' = 25,\n 'console.clear.history' = 26,\n 'console.create-pin' = 27,\n 'coverage.start-with-reload' = 28,\n 'coverage.toggle-recording' = 29,\n 'debugger.breakpoint-input-window' = 30,\n 'debugger.evaluate-selection' = 31,\n 'debugger.next-call-frame' = 32,\n 'debugger.previous-call-frame' = 33,\n 'debugger.run-snippet' = 34,\n 'debugger.toggle-breakpoints-active' = 35,\n 'elements.capture-area-screenshot' = 36,\n 'emulation.capture-full-height-screenshot' = 37,\n 'emulation.capture-node-screenshot' = 38,\n 'emulation.capture-screenshot' = 39,\n 'emulation.show-sensors' = 40,\n 'emulation.toggle-device-mode' = 41,\n 'help.release-notes' = 42,\n 'help.report-issue' = 43,\n 'input.start-replaying' = 44,\n 'input.toggle-pause' = 45,\n 'input.toggle-recording' = 46,\n 'inspector-main.focus-debuggee' = 47,\n 'inspector-main.hard-reload' = 48,\n 'inspector-main.reload' = 49,\n 'live-heap-profile.start-with-reload' = 50,\n 'live-heap-profile.toggle-recording' = 51,\n 'main.debug-reload' = 52,\n 'main.next-tab' = 53,\n 'main.previous-tab' = 54,\n 'main.search-in-panel.cancel' = 55,\n 'main.search-in-panel.find-next' = 56,\n 'main.search-in-panel.find-previous' = 57,\n 'main.toggle-dock' = 58,\n 'main.zoom-in' = 59,\n 'main.zoom-out' = 60,\n 'main.zoom-reset' = 61,\n 'network-conditions.network-low-end-mobile' = 62,\n 'network-conditions.network-mid-tier-mobile' = 63,\n 'network-conditions.network-offline' = 64,\n 'network-conditions.network-online' = 65,\n 'profiler.heap-toggle-recording' = 66,\n 'profiler.js-toggle-recording' = 67,\n 'resources.clear' = 68,\n 'settings.documentation' = 69,\n 'settings.shortcuts' = 70,\n 'sources.add-folder-to-workspace' = 71,\n 'sources.add-to-watch' = 72,\n 'sources.close-all' = 73,\n 'sources.close-editor-tab' = 74,\n 'sources.create-snippet' = 75,\n 'sources.go-to-line' = 76,\n 'sources.go-to-member' = 77,\n 'sources.jump-to-next-location' = 78,\n 'sources.jump-to-previous-location' = 79,\n 'sources.rename' = 80,\n 'sources.save' = 81,\n 'sources.save-all' = 82,\n 'sources.switch-file' = 83,\n 'timeline.jump-to-next-frame' = 84,\n 'timeline.jump-to-previous-frame' = 85,\n 'timeline.load-from-file' = 86,\n 'timeline.next-recording' = 87,\n 'timeline.previous-recording' = 88,\n 'timeline.record-reload' = 89,\n 'timeline.save-to-file' = 90,\n 'timeline.show-history' = 91,\n 'timeline.toggle-recording' = 92,\n 'sources.increment-css' = 93,\n 'sources.increment-css-by-ten' = 94,\n 'sources.decrement-css' = 95,\n 'sources.decrement-css-by-ten' = 96,\n 'layers.reset-view' = 97,\n 'layers.pan-mode' = 98,\n 'layers.rotate-mode' = 99,\n 'layers.zoom-in' = 100,\n 'layers.zoom-out' = 101,\n 'layers.up' = 102,\n 'layers.down' = 103,\n 'layers.left' = 104,\n 'layers.right' = 105,\n 'help.report-translation-issue' = 106,\n 'rendering.toggle-prefers-color-scheme' = 107,\n 'chrome-recorder.start-recording' = 108,\n 'chrome-recorder.replay-recording' = 109,\n 'chrome-recorder.toggle-code-view' = 110,\n 'chrome-recorder.copy-recording-or-step' = 111,\n 'changes.revert' = 112,\n 'changes.copy' = 113,\n 'elements.new-style-rule' = 114,\n 'elements.refresh-event-listeners' = 115,\n 'coverage.clear' = 116,\n 'coverage.export' = 117,\n MaxValue = 118,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport const enum IssueOpener {\n ConsoleInfoBar = 0,\n LearnMoreLinkCOEP = 1,\n StatusBarIssuesCounter = 2,\n HamburgerMenu = 3,\n Adorner = 4,\n CommandMenu = 5,\n MaxValue = 6,\n}\n\n/**\n * This list should contain the currently active Devtools Experiments,\n * gaps are expected.\n */\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum DevtoolsExperiments {\n 'apply-custom-stylesheet' = 0,\n 'capture-node-creation-stacks' = 1,\n 'live-heap-profile' = 11,\n 'protocol-monitor' = 13,\n 'sampling-heap-profiler-timeline' = 17,\n 'show-option-tp-expose-internals-in-heap-snapshot' = 18,\n 'timeline-invalidation-tracking' = 26,\n 'timeline-show-all-events' = 27,\n 'timeline-v8-runtime-call-stats' = 28,\n 'apca' = 39,\n 'font-editor' = 41,\n 'full-accessibility-tree' = 42,\n 'ignore-list-js-frames-on-timeline' = 43,\n 'contrast-issues' = 44,\n 'experimental-cookie-features' = 45,\n 'styles-pane-css-changes' = 55,\n 'evaluate-expressions-with-source-maps' = 58,\n 'instrumentation-breakpoints' = 61,\n 'authored-deployed-grouping' = 63,\n 'important-dom-properties' = 64,\n 'just-my-code' = 65,\n 'timeline-as-console-profile-result-panel' = 67,\n 'preloading-status-panel' = 68,\n 'outermost-target-selector' = 71,\n 'js-profiler-temporarily-enable' = 72,\n 'highlight-errors-elements-panel' = 73,\n 'set-all-breakpoints-eagerly' = 74,\n 'self-xss-warning' = 75,\n 'use-source-map-scopes' = 76,\n 'storage-buckets-tree' = 77,\n 'network-panel-filter-bar-redesign' = 79,\n 'track-context-menu' = 81,\n 'autofill-view' = 82,\n 'sources-frame-indentation-markers-temporarily-disable' = 83,\n 'heap-snapshot-treat-backing-store-as-containing-object' = 84,\n 'css-type-component-length-deprecate' = 85,\n\n // Increment this when new experiments are added.\n 'MaxValue' = 86,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport const enum BreakpointWithConditionAdded {\n Logpoint = 0,\n ConditionalBreakpoint = 1,\n MaxValue = 2,\n}\n\nexport const enum BreakpointEditDialogRevealedFrom {\n BreakpointSidebarContextMenu = 0,\n BreakpointSidebarEditButton = 1,\n BreakpointMarkerContextMenu = 2,\n LineGutterContextMenu = 3,\n KeyboardShortcut = 4,\n Linkifier = 5,\n MouseClick = 6,\n MaxValue = 7,\n}\n\nexport const enum ColorConvertedFrom {\n ColorSwatch = 0,\n ColorPicker = 1,\n MaxValue = 2,\n}\n\nexport const enum ColorPickerOpenedFrom {\n SourcesPanel = 0,\n StylesPane = 1,\n MaxValue = 2,\n}\n\nexport const enum CSSPropertyDocumentation {\n Shown = 0,\n ToggledOn = 1,\n ToggledOff = 2,\n MaxValue = 3,\n}\n\nexport const enum BreakpointsRestoredFromStorageCount {\n LessThan100 = 0,\n LessThan300 = 1,\n LessThan1000 = 2,\n LessThan3000 = 3,\n LessThan10000 = 4,\n LessThan30000 = 5,\n LessThan100000 = 6,\n LessThan300000 = 7,\n LessThan1000000 = 8,\n Above1000000 = 9,\n MaxValue = 10,\n}\n\n// Update DevToolsIssuesPanelIssueExpanded from tools/metrics/histograms/enums.xml if new enum is added.\nexport enum IssueExpanded {\n CrossOriginEmbedderPolicy = 0,\n MixedContent = 1,\n SameSiteCookie = 2,\n HeavyAd = 3,\n ContentSecurityPolicy = 4,\n Other = 5,\n Generic = 6,\n ThirdPartyPhaseoutCookie = 7,\n GenericCookie = 8,\n MaxValue = 9,\n}\n\nexport enum IssueResourceOpened {\n CrossOriginEmbedderPolicyRequest = 0,\n CrossOriginEmbedderPolicyElement = 1,\n MixedContentRequest = 2,\n SameSiteCookieCookie = 3,\n SameSiteCookieRequest = 4,\n HeavyAdElement = 5,\n ContentSecurityPolicyDirective = 6,\n ContentSecurityPolicyElement = 7,\n MaxValue = 13,\n}\n\n/**\n * This list should contain the currently active issue types,\n * gaps are expected.\n */\nexport enum IssueCreated {\n MixedContentIssue = 0,\n 'ContentSecurityPolicyIssue::kInlineViolation' = 1,\n 'ContentSecurityPolicyIssue::kEvalViolation' = 2,\n 'ContentSecurityPolicyIssue::kURLViolation' = 3,\n 'ContentSecurityPolicyIssue::kTrustedTypesSinkViolation' = 4,\n 'ContentSecurityPolicyIssue::kTrustedTypesPolicyViolation' = 5,\n 'HeavyAdIssue::NetworkTotalLimit' = 6,\n 'HeavyAdIssue::CpuTotalLimit' = 7,\n 'HeavyAdIssue::CpuPeakLimit' = 8,\n 'CrossOriginEmbedderPolicyIssue::CoepFrameResourceNeedsCoepHeader' = 9,\n 'CrossOriginEmbedderPolicyIssue::CoopSandboxedIFrameCannotNavigateToCoopPage' = 10,\n 'CrossOriginEmbedderPolicyIssue::CorpNotSameOrigin' = 11,\n 'CrossOriginEmbedderPolicyIssue::CorpNotSameOriginAfterDefaultedToSameOriginByCoep' = 12,\n 'CrossOriginEmbedderPolicyIssue::CorpNotSameSite' = 13,\n 'CookieIssue::ExcludeSameSiteNoneInsecure::ReadCookie' = 14,\n 'CookieIssue::ExcludeSameSiteNoneInsecure::SetCookie' = 15,\n 'CookieIssue::WarnSameSiteNoneInsecure::ReadCookie' = 16,\n 'CookieIssue::WarnSameSiteNoneInsecure::SetCookie' = 17,\n 'CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Secure' = 18,\n 'CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Insecure' = 19,\n 'CookieIssue::WarnCrossDowngrade::ReadCookie::Secure' = 20,\n 'CookieIssue::WarnCrossDowngrade::ReadCookie::Insecure' = 21,\n 'CookieIssue::WarnCrossDowngrade::SetCookie::Secure' = 22,\n 'CookieIssue::WarnCrossDowngrade::SetCookie::Insecure' = 23,\n 'CookieIssue::ExcludeNavigationContextDowngrade::Secure' = 24,\n 'CookieIssue::ExcludeNavigationContextDowngrade::Insecure' = 25,\n 'CookieIssue::ExcludeContextDowngrade::ReadCookie::Secure' = 26,\n 'CookieIssue::ExcludeContextDowngrade::ReadCookie::Insecure' = 27,\n 'CookieIssue::ExcludeContextDowngrade::SetCookie::Secure' = 28,\n 'CookieIssue::ExcludeContextDowngrade::SetCookie::Insecure' = 29,\n 'CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::ReadCookie' = 30,\n 'CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::SetCookie' = 31,\n 'CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::ReadCookie' = 32,\n 'CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::SetCookie' = 33,\n 'CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::ReadCookie' = 34,\n 'CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::SetCookie' = 35,\n 'SharedArrayBufferIssue::TransferIssue' = 36,\n 'SharedArrayBufferIssue::CreationIssue' = 37,\n LowTextContrastIssue = 41,\n 'CorsIssue::InsecurePrivateNetwork' = 42,\n 'CorsIssue::InvalidHeaders' = 44,\n 'CorsIssue::WildcardOriginWithCredentials' = 45,\n 'CorsIssue::PreflightResponseInvalid' = 46,\n 'CorsIssue::OriginMismatch' = 47,\n 'CorsIssue::AllowCredentialsRequired' = 48,\n 'CorsIssue::MethodDisallowedByPreflightResponse' = 49,\n 'CorsIssue::HeaderDisallowedByPreflightResponse' = 50,\n 'CorsIssue::RedirectContainsCredentials' = 51,\n 'CorsIssue::DisallowedByMode' = 52,\n 'CorsIssue::CorsDisabledScheme' = 53,\n 'CorsIssue::PreflightMissingAllowExternal' = 54,\n 'CorsIssue::PreflightInvalidAllowExternal' = 55,\n 'CorsIssue::NoCorsRedirectModeNotFollow' = 57,\n 'QuirksModeIssue::QuirksMode' = 58,\n 'QuirksModeIssue::LimitedQuirksMode' = 59,\n DeprecationIssue = 60,\n 'ClientHintIssue::MetaTagAllowListInvalidOrigin' = 61,\n 'ClientHintIssue::MetaTagModifiedHTML' = 62,\n 'CorsIssue::PreflightAllowPrivateNetworkError' = 63,\n 'GenericIssue::CrossOriginPortalPostMessageError' = 64,\n 'GenericIssue::FormLabelForNameError' = 65,\n 'GenericIssue::FormDuplicateIdForInputError' = 66,\n 'GenericIssue::FormInputWithNoLabelError' = 67,\n 'GenericIssue::FormAutocompleteAttributeEmptyError' = 68,\n 'GenericIssue::FormEmptyIdAndNameAttributesForInputError' = 69,\n 'GenericIssue::FormAriaLabelledByToNonExistingId' = 70,\n 'GenericIssue::FormInputAssignedAutocompleteValueToIdOrNameAttributeError' = 71,\n 'GenericIssue::FormLabelHasNeitherForNorNestedInput' = 72,\n 'GenericIssue::FormLabelForMatchesNonExistingIdError' = 73,\n 'GenericIssue::FormHasPasswordFieldWithoutUsernameFieldError' = 74,\n 'GenericIssue::FormInputHasWrongButWellIntendedAutocompleteValueError' = 75,\n 'StylesheetLoadingIssue::LateImportRule' = 76,\n 'StylesheetLoadingIssue::RequestFailed' = 77,\n 'CorsIssue::PreflightMissingPrivateNetworkAccessId' = 78,\n 'CorsIssue::PreflightMissingPrivateNetworkAccessName' = 79,\n 'CorsIssue::PrivateNetworkAccessPermissionUnavailable' = 80,\n 'CorsIssue::PrivateNetworkAccessPermissionDenied' = 81,\n 'CookieIssue::WarnThirdPartyPhaseout::ReadCookie' = 82,\n 'CookieIssue::WarnThirdPartyPhaseout::SetCookie' = 83,\n 'CookieIssue::ExcludeThirdPartyPhaseout::ReadCookie' = 84,\n 'CookieIssue::ExcludeThirdPartyPhaseout::SetCookie' = 85,\n MaxValue = 86,\n}\n\nexport const enum DeveloperResourceLoaded {\n LoadThroughPageViaTarget = 0,\n LoadThroughPageViaFrame = 1,\n LoadThroughPageFailure = 2,\n LoadThroughPageFallback = 3,\n FallbackAfterFailure = 4,\n FallbackPerOverride = 5,\n FallbackPerProtocol = 6,\n FallbackFailure = 7,\n MaxValue = 8,\n}\n\nexport const enum DeveloperResourceScheme {\n SchemeOther = 0,\n SchemeUnknown = 1,\n SchemeHttp = 2,\n SchemeHttps = 3,\n SchemeHttpLocalhost = 4,\n SchemeHttpsLocalhost = 5,\n SchemeData = 6,\n SchemeFile = 7,\n SchemeBlob = 8,\n MaxValue = 9,\n}\n\nexport enum ResourceType {\n /* eslint-disable @typescript-eslint/naming-convention */\n all = 0,\n /* eslint-enable @typescript-eslint/naming-convention */\n Documents = 1,\n Scripts = 2,\n 'Fetch and XHR' = 3,\n Stylesheets = 4,\n Fonts = 5,\n Images = 6,\n Media = 7,\n Manifest = 8,\n WebSockets = 9,\n WebAssembly = 10,\n Other = 11,\n MaxValue = 12,\n}\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum NetworkPanelMoreFilters {\n 'Hide data URLs' = 0,\n 'Hide extension URLs' = 1,\n 'Blocked response cookies' = 2,\n 'Blocked requests' = 3,\n '3rd-party requests' = 4,\n MaxValue = 5,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport const enum VMInlineScriptType {\n MODULE_SCRIPT = 0,\n CLASSIC_SCRIPT = 1,\n MaxValue = 2,\n}\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum Language {\n 'af' = 1,\n 'am' = 2,\n 'ar' = 3,\n 'as' = 4,\n 'az' = 5,\n 'be' = 6,\n 'bg' = 7,\n 'bn' = 8,\n 'bs' = 9,\n 'ca' = 10,\n 'cs' = 11,\n 'cy' = 12,\n 'da' = 13,\n 'de' = 14,\n 'el' = 15,\n 'en-GB' = 16,\n 'en-US' = 17,\n 'es-419' = 18,\n 'es' = 19,\n 'et' = 20,\n 'eu' = 21,\n 'fa' = 22,\n 'fi' = 23,\n 'fil' = 24,\n 'fr-CA' = 25,\n 'fr' = 26,\n 'gl' = 27,\n 'gu' = 28,\n 'he' = 29,\n 'hi' = 30,\n 'hr' = 31,\n 'hu' = 32,\n 'hy' = 33,\n 'id' = 34,\n 'is' = 35,\n 'it' = 36,\n 'ja' = 37,\n 'ka' = 38,\n 'kk' = 39,\n 'km' = 40,\n 'kn' = 41,\n 'ko' = 42,\n 'ky' = 43,\n 'lo' = 44,\n 'lt' = 45,\n 'lv' = 46,\n 'mk' = 47,\n 'ml' = 48,\n 'mn' = 49,\n 'mr' = 50,\n 'ms' = 51,\n 'my' = 52,\n 'ne' = 53,\n 'nl' = 54,\n 'no' = 55,\n 'or' = 56,\n 'pa' = 57,\n 'pl' = 58,\n 'pt-PT' = 59,\n 'pt' = 60,\n 'ro' = 61,\n 'ru' = 62,\n 'si' = 63,\n 'sk' = 64,\n 'sl' = 65,\n 'sq' = 66,\n 'sr-Latn' = 67,\n 'sr' = 68,\n 'sv' = 69,\n 'sw' = 70,\n 'ta' = 71,\n 'te' = 72,\n 'th' = 73,\n 'tr' = 74,\n 'uk' = 75,\n 'ur' = 76,\n 'uz' = 77,\n 'vi' = 78,\n 'zh' = 79,\n 'zh-HK' = 80,\n 'zh-TW' = 81,\n 'zu' = 82,\n MaxValue = 83,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport const enum SyncSetting {\n ChromeSyncDisabled = 1,\n ChromeSyncSettingsDisabled = 2,\n DevToolsSyncSettingDisabled = 3,\n DevToolsSyncSettingEnabled = 4,\n MaxValue = 5,\n}\n\nexport const enum RecordingToggled {\n RecordingStarted = 1,\n RecordingFinished = 2,\n MaxValue = 3,\n}\n\nexport const enum RecordingAssertion {\n AssertionAdded = 1,\n PropertyAssertionEdited = 2,\n AttributeAssertionEdited = 3,\n MaxValue = 4,\n}\n\nexport const enum RecordingReplayFinished {\n Success = 1,\n TimeoutErrorSelectors = 2,\n TimeoutErrorTarget = 3,\n OtherError = 4,\n MaxValue = 5,\n}\n\nexport const enum RecordingReplaySpeed {\n Normal = 1,\n Slow = 2,\n VerySlow = 3,\n ExtremelySlow = 4,\n MaxValue = 5,\n}\n\nexport const enum RecordingReplayStarted {\n ReplayOnly = 1,\n ReplayWithPerformanceTracing = 2,\n ReplayViaExtension = 3,\n MaxValue = 4,\n}\n\nexport const enum RecordingEdited {\n SelectorPickerUsed = 1,\n StepAdded = 2,\n StepRemoved = 3,\n SelectorAdded = 4,\n SelectorRemoved = 5,\n SelectorPartAdded = 6,\n SelectorPartEdited = 7,\n SelectorPartRemoved = 8,\n TypeChanged = 9,\n OtherEditing = 10,\n MaxValue = 11,\n}\n\nexport const enum RecordingExported {\n ToPuppeteer = 1,\n ToJSON = 2,\n ToPuppeteerReplay = 3,\n ToExtension = 4,\n ToLighthouse = 5,\n MaxValue = 6,\n}\n\nexport const enum RecordingCodeToggled {\n CodeShown = 1,\n CodeHidden = 2,\n MaxValue = 3,\n}\n\nexport const enum RecordingCopiedToClipboard {\n CopiedRecordingWithPuppeteer = 1,\n CopiedRecordingWithJSON = 2,\n CopiedRecordingWithReplay = 3,\n CopiedRecordingWithExtension = 4,\n CopiedStepWithPuppeteer = 5,\n CopiedStepWithJSON = 6,\n CopiedStepWithReplay = 7,\n CopiedStepWithExtension = 8,\n MaxValue = 9,\n}\n\nexport const enum StyleTextCopied {\n DeclarationViaChangedLine = 1,\n AllChangesViaStylesPane = 2,\n DeclarationViaContextMenu = 3,\n PropertyViaContextMenu = 4,\n ValueViaContextMenu = 5,\n DeclarationAsJSViaContextMenu = 6,\n RuleViaContextMenu = 7,\n AllDeclarationsViaContextMenu = 8,\n AllDeclarationsAsJSViaContextMenu = 9,\n SelectorViaContextMenu = 10,\n MaxValue = 11,\n}\n\nexport enum ManifestSectionCodes {\n OtherSection = 0,\n 'Identity' = 1,\n 'Presentation' = 2,\n 'Protocol Handlers' = 3,\n 'Icons' = 4,\n 'Window Controls Overlay' = 5,\n MaxValue = 6,\n}\n\n/* eslint-enable @typescript-eslint/naming-convention */\n\n// The names here match the CSSRuleValidator names in CSSRuleValidator.ts.\nexport const enum CSSHintType {\n Other = 0,\n AlignContent = 1,\n FlexItem = 2,\n FlexContainer = 3,\n GridContainer = 4,\n GridItem = 5,\n FlexGrid = 6,\n MulticolFlexGrid = 7,\n Padding = 8,\n Position = 9,\n ZIndex = 10,\n Sizing = 11,\n FlexOrGridItem = 12,\n FontVariationSettings = 13,\n MaxValue = 14,\n}\n\nexport const enum LighthouseModeRun {\n Navigation = 0,\n Timespan = 1,\n Snapshot = 2,\n LegacyNavigation = 3,\n MaxValue = 4,\n}\n\nexport const enum LighthouseCategoryUsed {\n Performance = 0,\n Accessibility = 1,\n BestPractices = 2,\n SEO = 3,\n PWA = 4,\n PubAds = 5,\n MaxValue = 6,\n}\n\nexport const enum SwatchType {\n VarLink = 0,\n AnimationNameLink = 1,\n Color = 2,\n AnimationTiming = 3,\n Shadow = 4,\n Grid = 5,\n Flex = 6,\n Angle = 7,\n Length = 8,\n PositionFallbackLink = 9,\n MaxValue = 10,\n}\n\nexport const enum BadgeType {\n GRID = 0,\n SUBGRID = 1,\n FLEX = 2,\n AD = 3,\n SCROLL_SNAP = 4,\n CONTAINER = 5,\n SLOT = 6,\n TOP_LAYER = 7,\n REVEAL = 8,\n MaxValue = 9,\n}\n\nexport const enum AnimationsPlaybackRate {\n Percent100 = 0,\n Percent25 = 1,\n Percent10 = 2,\n Other = 3,\n MaxValue = 4,\n}\n\nexport const enum AnimationPointDragType {\n // Animation is dragged as a whole in the Animations panel.\n AnimationDrag = 0,\n // A keyframe point inside animation timeline is dragged.\n KeyframeMove = 1,\n // Start point of the animation inside animation timeline is dragged.\n StartEndpointMove = 2,\n // Finish point of the animation inside animation timeline is dragged.\n FinishEndpointMove = 3,\n Other = 4,\n MaxValue = 5,\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"UserMetrics.js","sourceRoot":"","sources":["../../../../../../front_end/core/host/UserMetrics.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright (C) 2011 Google Inc. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following disclaimer\n * in the documentation and/or other materials provided with the\n * distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport {InspectorFrontendHostInstance} from './InspectorFrontendHost.js';\nimport {EnumeratedHistogram} from './InspectorFrontendHostAPI.js';\n\nexport class UserMetrics {\n #panelChangedSinceLaunch: boolean;\n #firedLaunchHistogram: boolean;\n #launchPanelName: string;\n constructor() {\n this.#panelChangedSinceLaunch = false;\n this.#firedLaunchHistogram = false;\n this.#launchPanelName = '';\n }\n\n breakpointWithConditionAdded(breakpointWithConditionAdded: BreakpointWithConditionAdded): void {\n if (breakpointWithConditionAdded >= BreakpointWithConditionAdded.MaxValue) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.BreakpointWithConditionAdded, breakpointWithConditionAdded,\n BreakpointWithConditionAdded.MaxValue);\n }\n\n breakpointEditDialogRevealedFrom(breakpointEditDialogRevealedFrom: BreakpointEditDialogRevealedFrom): void {\n if (breakpointEditDialogRevealedFrom >= BreakpointEditDialogRevealedFrom.MaxValue) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.BreakpointEditDialogRevealedFrom, breakpointEditDialogRevealedFrom,\n BreakpointEditDialogRevealedFrom.MaxValue);\n }\n\n panelShown(panelName: string, isLaunching?: boolean): void {\n const code = PanelCodes[panelName as keyof typeof PanelCodes] || 0;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.PanelShown, code, PanelCodes.MaxValue);\n InspectorFrontendHostInstance.recordUserMetricsAction('DevTools_PanelShown_' + panelName);\n // Store that the user has changed the panel so we know launch histograms should not be fired.\n if (!isLaunching) {\n this.#panelChangedSinceLaunch = true;\n }\n }\n\n /**\n * Fired when a panel is closed (regardless if it exists in the main panel or the drawer)\n */\n panelClosed(panelName: string): void {\n const code = PanelCodes[panelName as keyof typeof PanelCodes] || 0;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.PanelClosed, code, PanelCodes.MaxValue);\n // Store that the user has changed the panel so we know launch histograms should not be fired.\n this.#panelChangedSinceLaunch = true;\n }\n\n panelShownInLocation(panelName: string, location: 'main'|'drawer'): void {\n const panelWithLocationName = `${panelName}-${location}`;\n const panelWithLocation = PanelWithLocation[panelWithLocationName as keyof typeof PanelWithLocation] || 0;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.PanelShownInLocation,\n panelWithLocation,\n PanelWithLocation.MaxValue,\n );\n }\n\n elementsSidebarTabShown(sidebarPaneName: string): void {\n const code = ElementsSidebarTabCodes[sidebarPaneName as keyof typeof ElementsSidebarTabCodes] || 0;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ElementsSidebarTabShown, code, ElementsSidebarTabCodes.MaxValue);\n }\n\n sourcesSidebarTabShown(sidebarPaneName: string): void {\n const code = SourcesSidebarTabCodes[sidebarPaneName as keyof typeof SourcesSidebarTabCodes] || 0;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.SourcesSidebarTabShown, code, SourcesSidebarTabCodes.MaxValue);\n }\n\n settingsPanelShown(settingsViewId: string): void {\n this.panelShown('settings-' + settingsViewId);\n }\n\n sourcesPanelFileDebugged(mediaType?: string): void {\n const code = (mediaType && MediaTypes[mediaType as keyof typeof MediaTypes]) || MediaTypes.Unknown;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.SourcesPanelFileDebugged, code, MediaTypes.MaxValue);\n }\n\n sourcesPanelFileOpened(mediaType?: string): void {\n const code = (mediaType && MediaTypes[mediaType as keyof typeof MediaTypes]) || MediaTypes.Unknown;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.SourcesPanelFileOpened, code, MediaTypes.MaxValue);\n }\n\n networkPanelResponsePreviewOpened(mediaType: string): void {\n const code = (mediaType && MediaTypes[mediaType as keyof typeof MediaTypes]) || MediaTypes.Unknown;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.NetworkPanelResponsePreviewOpened, code, MediaTypes.MaxValue);\n }\n\n actionTaken(action: Action): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(EnumeratedHistogram.ActionTaken, action, Action.MaxValue);\n }\n\n panelLoaded(panelName: string, histogramName: string): void {\n if (this.#firedLaunchHistogram || panelName !== this.#launchPanelName) {\n return;\n }\n\n this.#firedLaunchHistogram = true;\n // Use rAF and window.setTimeout to ensure the marker is fired after layout and rendering.\n // This will give the most accurate representation of the tool being ready for a user.\n requestAnimationFrame(() => {\n window.setTimeout(() => {\n // Mark the load time so that we can pinpoint it more easily in a trace.\n performance.mark(histogramName);\n // If the user has switched panel before we finished loading, ignore the histogram,\n // since the launch timings will have been affected and are no longer valid.\n if (this.#panelChangedSinceLaunch) {\n return;\n }\n // This fires the event for the appropriate launch histogram.\n // The duration is measured as the time elapsed since the time origin of the document.\n InspectorFrontendHostInstance.recordPerformanceHistogram(histogramName, performance.now());\n }, 0);\n });\n }\n\n setLaunchPanel(panelName: string|null): void {\n this.#launchPanelName = (panelName as string);\n }\n\n performanceTraceLoad(measure: PerformanceMeasure): void {\n InspectorFrontendHostInstance.recordPerformanceHistogram('DevTools.TraceLoad', measure.duration);\n }\n\n keybindSetSettingChanged(keybindSet: string): void {\n const value = KeybindSetSettings[keybindSet as keyof typeof KeybindSetSettings] || 0;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.KeybindSetSettingChanged, value, KeybindSetSettings.MaxValue);\n }\n\n keyboardShortcutFired(actionId: string): void {\n const action =\n KeyboardShortcutAction[actionId as keyof typeof KeyboardShortcutAction] || KeyboardShortcutAction.OtherShortcut;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.KeyboardShortcutFired, action, KeyboardShortcutAction.MaxValue);\n }\n\n issuesPanelOpenedFrom(issueOpener: IssueOpener): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.IssuesPanelOpenedFrom, issueOpener, IssueOpener.MaxValue);\n }\n\n issuesPanelIssueExpanded(issueExpandedCategory: string|undefined): void {\n if (issueExpandedCategory === undefined) {\n return;\n }\n\n const issueExpanded = IssueExpanded[issueExpandedCategory as keyof typeof IssueExpanded];\n\n if (issueExpanded === undefined) {\n return;\n }\n\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.IssuesPanelIssueExpanded, issueExpanded, IssueExpanded.MaxValue);\n }\n\n issuesPanelResourceOpened(issueCategory: string, type: string): void {\n const key = issueCategory + type;\n const value = IssueResourceOpened[key as keyof typeof IssueResourceOpened];\n\n if (value === undefined) {\n return;\n }\n\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.IssuesPanelResourceOpened, value, IssueResourceOpened.MaxValue);\n }\n\n issueCreated(code: string): void {\n const issueCreated = IssueCreated[code as keyof typeof IssueCreated];\n if (issueCreated === undefined) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.IssueCreated, issueCreated, IssueCreated.MaxValue);\n }\n\n experimentEnabledAtLaunch(experimentId: string): void {\n const experiment = DevtoolsExperiments[experimentId as keyof typeof DevtoolsExperiments];\n if (experiment === undefined) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ExperimentEnabledAtLaunch, experiment, DevtoolsExperiments.MaxValue);\n }\n\n experimentDisabledAtLaunch(experimentId: string): void {\n const experiment = DevtoolsExperiments[experimentId as keyof typeof DevtoolsExperiments];\n if (experiment === undefined) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ExperimentDisabledAtLaunch, experiment, DevtoolsExperiments.MaxValue);\n }\n\n experimentChanged(experimentId: string, isEnabled: boolean): void {\n const experiment = DevtoolsExperiments[experimentId as keyof typeof DevtoolsExperiments];\n if (experiment === undefined) {\n return;\n }\n const actionName = isEnabled ? EnumeratedHistogram.ExperimentEnabled : EnumeratedHistogram.ExperimentDisabled;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(actionName, experiment, DevtoolsExperiments.MaxValue);\n }\n\n developerResourceLoaded(developerResourceLoaded: DeveloperResourceLoaded): void {\n if (developerResourceLoaded >= DeveloperResourceLoaded.MaxValue) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.DeveloperResourceLoaded, developerResourceLoaded, DeveloperResourceLoaded.MaxValue);\n }\n\n developerResourceScheme(developerResourceScheme: DeveloperResourceScheme): void {\n if (developerResourceScheme >= DeveloperResourceScheme.MaxValue) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.DeveloperResourceScheme, developerResourceScheme, DeveloperResourceScheme.MaxValue);\n }\n\n inlineScriptParsed(inlineScriptType: VMInlineScriptType): void {\n if (inlineScriptType >= VMInlineScriptType.MaxValue) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.InlineScriptParsed, inlineScriptType, VMInlineScriptType.MaxValue);\n }\n\n vmInlineScriptContentShown(inlineScriptType: VMInlineScriptType): void {\n if (inlineScriptType >= VMInlineScriptType.MaxValue) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.VMInlineScriptTypeShown, inlineScriptType, VMInlineScriptType.MaxValue);\n }\n\n language(language: Intl.UnicodeBCP47LocaleIdentifier): void {\n const languageCode = Language[language as keyof typeof Language];\n if (languageCode === undefined) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.Language, languageCode, Language.MaxValue);\n }\n\n syncSetting(devtoolsSyncSettingEnabled: boolean): void {\n InspectorFrontendHostInstance.getSyncInformation(syncInfo => {\n let settingValue = SyncSetting.ChromeSyncDisabled;\n if (syncInfo.isSyncActive && !syncInfo.arePreferencesSynced) {\n settingValue = SyncSetting.ChromeSyncSettingsDisabled;\n } else if (syncInfo.isSyncActive && syncInfo.arePreferencesSynced) {\n settingValue = devtoolsSyncSettingEnabled ? SyncSetting.DevToolsSyncSettingEnabled :\n SyncSetting.DevToolsSyncSettingDisabled;\n }\n\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.SyncSetting, settingValue, SyncSetting.MaxValue);\n });\n }\n\n recordingAssertion(value: RecordingAssertion): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingAssertion, value, RecordingAssertion.MaxValue);\n }\n\n recordingToggled(value: RecordingToggled): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingToggled, value, RecordingToggled.MaxValue);\n }\n\n recordingReplayFinished(value: RecordingReplayFinished): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingReplayFinished, value, RecordingReplayFinished.MaxValue);\n }\n\n recordingReplaySpeed(value: RecordingReplaySpeed): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingReplaySpeed, value, RecordingReplaySpeed.MaxValue);\n }\n\n recordingReplayStarted(value: RecordingReplayStarted): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingReplayStarted, value, RecordingReplayStarted.MaxValue);\n }\n\n recordingEdited(value: RecordingEdited): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingEdited, value, RecordingEdited.MaxValue);\n }\n\n recordingExported(value: RecordingExported): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingExported, value, RecordingExported.MaxValue);\n }\n\n recordingCodeToggled(value: RecordingCodeToggled): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingCodeToggled, value, RecordingCodeToggled.MaxValue);\n }\n\n recordingCopiedToClipboard(value: RecordingCopiedToClipboard): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.RecordingCopiedToClipboard, value, RecordingCopiedToClipboard.MaxValue);\n }\n\n styleTextCopied(value: StyleTextCopied): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.StyleTextCopied, value, StyleTextCopied.MaxValue);\n }\n\n manifestSectionSelected(sectionTitle: string): void {\n const code =\n ManifestSectionCodes[sectionTitle as keyof typeof ManifestSectionCodes] || ManifestSectionCodes.OtherSection;\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ManifestSectionSelected, code, ManifestSectionCodes.MaxValue);\n }\n\n cssHintShown(type: CSSHintType): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.CSSHintShown, type, CSSHintType.MaxValue);\n }\n\n lighthouseModeRun(type: LighthouseModeRun): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.LighthouseModeRun, type, LighthouseModeRun.MaxValue);\n }\n\n lighthouseCategoryUsed(type: LighthouseCategoryUsed): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.LighthouseCategoryUsed, type, LighthouseCategoryUsed.MaxValue);\n }\n\n colorConvertedFrom(type: ColorConvertedFrom): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ColorConvertedFrom, type, ColorConvertedFrom.MaxValue);\n }\n\n colorPickerOpenedFrom(type: ColorPickerOpenedFrom): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ColorPickerOpenedFrom, type, ColorPickerOpenedFrom.MaxValue);\n }\n\n cssPropertyDocumentation(type: CSSPropertyDocumentation): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.CSSPropertyDocumentation, type, CSSPropertyDocumentation.MaxValue);\n }\n\n swatchActivated(swatch: SwatchType): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.SwatchActivated, swatch, SwatchType.MaxValue);\n }\n\n badgeActivated(badge: BadgeType): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.BadgeActivated, badge, BadgeType.MaxValue);\n }\n\n breakpointsRestoredFromStorage(count: number): void {\n const countBucket = this.#breakpointCountToBucket(count);\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.BreakpointsRestoredFromStorageCount, countBucket,\n BreakpointsRestoredFromStorageCount.MaxValue);\n }\n\n animationPlaybackRateChanged(playbackRate: AnimationsPlaybackRate): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.AnimationPlaybackRateChanged, playbackRate, AnimationsPlaybackRate.MaxValue);\n }\n\n animationPointDragged(dragType: AnimationPointDragType): void {\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.AnimationPointDragged, dragType, AnimationPointDragType.MaxValue);\n }\n\n #breakpointCountToBucket(count: number): BreakpointsRestoredFromStorageCount {\n if (count < 100) {\n return BreakpointsRestoredFromStorageCount.LessThan100;\n }\n if (count < 300) {\n return BreakpointsRestoredFromStorageCount.LessThan300;\n }\n if (count < 1000) {\n return BreakpointsRestoredFromStorageCount.LessThan1000;\n }\n if (count < 3000) {\n return BreakpointsRestoredFromStorageCount.LessThan3000;\n }\n if (count < 10000) {\n return BreakpointsRestoredFromStorageCount.LessThan10000;\n }\n if (count < 30000) {\n return BreakpointsRestoredFromStorageCount.LessThan30000;\n }\n if (count < 100000) {\n return BreakpointsRestoredFromStorageCount.LessThan100000;\n }\n if (count < 300000) {\n return BreakpointsRestoredFromStorageCount.LessThan300000;\n }\n if (count < 1000000) {\n return BreakpointsRestoredFromStorageCount.LessThan1000000;\n }\n return BreakpointsRestoredFromStorageCount.Above1000000;\n }\n\n workspacesPopulated(wallClockTimeInMilliseconds: number): void {\n InspectorFrontendHostInstance.recordPerformanceHistogram(\n 'DevTools.Workspaces.PopulateWallClocktime', wallClockTimeInMilliseconds);\n }\n\n visualLoggingProcessingDone(timeInMilliseconds: number): void {\n InspectorFrontendHostInstance.recordPerformanceHistogram(\n 'DevTools.VisualLogging.ProcessingTime', timeInMilliseconds);\n }\n\n legacyResourceTypeFilterNumberOfSelectedChanged(itemCount: number): void {\n const boundItemCount = Math.max(Math.min(itemCount, ResourceType.MaxValue - 1), 1);\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.LegacyResourceTypeFilterNumberOfSelectedChanged, boundItemCount, ResourceType.MaxValue);\n }\n\n legacyResourceTypeFilterItemSelected(resourceTypeName: string): void {\n const resourceType = ResourceType[resourceTypeName as keyof typeof ResourceType];\n if (resourceType === undefined) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.LegacyResourceTypeFilterItemSelected, resourceType, ResourceType.MaxValue);\n }\n\n resourceTypeFilterNumberOfSelectedChanged(itemCount: number): void {\n const boundItemCount = Math.max(Math.min(itemCount, ResourceType.MaxValue - 1), 1);\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ResourceTypeFilterNumberOfSelectedChanged, boundItemCount, ResourceType.MaxValue);\n }\n\n resourceTypeFilterItemSelected(resourceTypeName: string): void {\n const resourceType = ResourceType[resourceTypeName as keyof typeof ResourceType];\n if (resourceType === undefined) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.ResourceTypeFilterItemSelected, resourceType, ResourceType.MaxValue);\n }\n\n networkPanelMoreFiltersNumberOfSelectedChanged(itemCount: number): void {\n const boundItemCount = Math.max(Math.min(itemCount, NetworkPanelMoreFilters.MaxValue), 0);\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.NetworkPanelMoreFiltersNumberOfSelectedChanged, boundItemCount,\n NetworkPanelMoreFilters.MaxValue);\n }\n\n networkPanelMoreFiltersItemSelected(filterName: string): void {\n const filter = NetworkPanelMoreFilters[filterName as keyof typeof NetworkPanelMoreFilters];\n if (filter === undefined) {\n return;\n }\n InspectorFrontendHostInstance.recordEnumeratedHistogram(\n EnumeratedHistogram.NetworkPanelMoreFiltersItemSelected, filter, NetworkPanelMoreFilters.MaxValue);\n }\n}\n\n/**\n * The numeric enum values are not necessarily continuous! It is possible that\n * values have been removed, which results in gaps in the sequence of values.\n * When adding a new value:\n * 1. Add an entry to the bottom of the enum before 'MaxValue'.\n * 2. Set the value of the new entry to the current value of 'MaxValue'.\n * 2. Increment the value of 'MaxValue' by 1.\n * When removing a value which is no longer needed:\n * 1. Delete the line with the unneeded value\n * 2. Do not update any 'MaxValue' or any other value.\n */\n\n// Codes below are used to collect UMA histograms in the Chromium port.\n// Do not change the values below, additional actions are needed on the Chromium side\n// in order to add more codes.\nexport enum Action {\n WindowDocked = 1,\n WindowUndocked = 2,\n ScriptsBreakpointSet = 3,\n TimelineStarted = 4,\n ProfilesCPUProfileTaken = 5,\n ProfilesHeapProfileTaken = 6,\n ConsoleEvaluated = 8,\n FileSavedInWorkspace = 9,\n DeviceModeEnabled = 10,\n AnimationsPlaybackRateChanged = 11,\n RevisionApplied = 12,\n FileSystemDirectoryContentReceived = 13,\n StyleRuleEdited = 14,\n CommandEvaluatedInConsolePanel = 15,\n DOMPropertiesExpanded = 16,\n ResizedViewInResponsiveMode = 17,\n TimelinePageReloadStarted = 18,\n ConnectToNodeJSFromFrontend = 19,\n ConnectToNodeJSDirectly = 20,\n CpuThrottlingEnabled = 21,\n CpuProfileNodeFocused = 22,\n CpuProfileNodeExcluded = 23,\n SelectFileFromFilePicker = 24,\n SelectCommandFromCommandMenu = 25,\n ChangeInspectedNodeInElementsPanel = 26,\n StyleRuleCopied = 27,\n CoverageStarted = 28,\n LighthouseStarted = 29,\n LighthouseFinished = 30,\n ShowedThirdPartyBadges = 31,\n LighthouseViewTrace = 32,\n FilmStripStartedRecording = 33,\n CoverageReportFiltered = 34,\n CoverageStartedPerBlock = 35,\n 'SettingsOpenedFromGear-deprecated' = 36,\n 'SettingsOpenedFromMenu-deprecated' = 37,\n 'SettingsOpenedFromCommandMenu-deprecated' = 38,\n TabMovedToDrawer = 39,\n TabMovedToMainPanel = 40,\n CaptureCssOverviewClicked = 41,\n VirtualAuthenticatorEnvironmentEnabled = 42,\n SourceOrderViewActivated = 43,\n UserShortcutAdded = 44,\n ShortcutRemoved = 45,\n ShortcutModified = 46,\n CustomPropertyLinkClicked = 47,\n CustomPropertyEdited = 48,\n ServiceWorkerNetworkRequestClicked = 49,\n ServiceWorkerNetworkRequestClosedQuickly = 50,\n NetworkPanelServiceWorkerRespondWith = 51,\n NetworkPanelCopyValue = 52,\n ConsoleSidebarOpened = 53,\n PerfPanelTraceImported = 54,\n PerfPanelTraceExported = 55,\n StackFrameRestarted = 56,\n CaptureTestProtocolClicked = 57,\n BreakpointRemovedFromRemoveButton = 58,\n BreakpointGroupExpandedStateChanged = 59,\n HeaderOverrideFileCreated = 60,\n HeaderOverrideEnableEditingClicked = 61,\n HeaderOverrideHeaderAdded = 62,\n HeaderOverrideHeaderEdited = 63,\n HeaderOverrideHeaderRemoved = 64,\n HeaderOverrideHeadersFileEdited = 65,\n PersistenceNetworkOverridesEnabled = 66,\n PersistenceNetworkOverridesDisabled = 67,\n BreakpointRemovedFromContextMenu = 68,\n BreakpointsInFileRemovedFromRemoveButton = 69,\n BreakpointsInFileRemovedFromContextMenu = 70,\n BreakpointsInFileCheckboxToggled = 71,\n BreakpointsInFileEnabledDisabledFromContextMenu = 72,\n BreakpointConditionEditedFromSidebar = 73,\n WorkspaceTabAddFolder = 74,\n WorkspaceTabRemoveFolder = 75,\n OverrideTabAddFolder = 76,\n OverrideTabRemoveFolder = 77,\n WorkspaceSourceSelected = 78,\n OverridesSourceSelected = 79,\n StyleSheetInitiatorLinkClicked = 80,\n BreakpointRemovedFromGutterContextMenu = 81,\n BreakpointRemovedFromGutterToggle = 82,\n StylePropertyInsideKeyframeEdited = 83,\n OverrideContentFromSourcesContextMenu = 84,\n OverrideContentFromNetworkContextMenu = 85,\n OverrideScript = 86,\n OverrideStyleSheet = 87,\n OverrideDocument = 88,\n OverrideFetchXHR = 89,\n OverrideImage = 90,\n OverrideFont = 91,\n OverrideContentContextMenuSetup = 92,\n OverrideContentContextMenuAbandonSetup = 93,\n OverrideContentContextMenuActivateDisabled = 94,\n OverrideContentContextMenuOpenExistingFile = 95,\n OverrideContentContextMenuSaveNewFile = 96,\n ShowAllOverridesFromSourcesContextMenu = 97,\n ShowAllOverridesFromNetworkContextMenu = 98,\n AnimationGroupsCleared = 99,\n AnimationsPaused = 100,\n AnimationsResumed = 101,\n AnimatedNodeDescriptionClicked = 102,\n AnimationGroupScrubbed = 103,\n AnimationGroupReplayed = 104,\n OverrideTabDeleteFolderContextMenu = 105,\n WorkspaceDropFolder = 107,\n WorkspaceSelectFolder = 108,\n OverrideContentContextMenuSourceMappedWarning = 109,\n OverrideContentContextMenuRedirectToDeployed = 110,\n NewStyleRuleAdded = 111,\n TraceExpanded = 112,\n InsightConsoleMessageShown = 113,\n InsightRequestedViaContextMenu = 114,\n InsightRequestedViaHoverButton = 115,\n InsightRatedPositive = 117,\n InsightRatedNegative = 118,\n InsightClosed = 119,\n InsightErrored = 120,\n InsightHoverButtonShown = 121,\n SelfXssWarningConsoleMessageShown = 122,\n SelfXssWarningDialogShown = 123,\n SelfXssAllowPastingInConsole = 124,\n SelfXssAllowPastingInDialog = 125,\n ToggleEmulateFocusedPageFromStylesPaneOn = 126,\n ToggleEmulateFocusedPageFromStylesPaneOff = 127,\n ToggleEmulateFocusedPageFromRenderingTab = 128,\n ToggleEmulateFocusedPageFromCommandMenu = 129,\n InsightGenerated = 130,\n InsightErroredApi = 131,\n InsightErroredMarkdown = 132,\n ToggleShowWebVitals = 133,\n InsightErroredPermissionDenied = 134,\n InsightErroredCannotSend = 135,\n InsightErroredRequestFailed = 136,\n InsightErroredCannotParseChunk = 137,\n InsightErroredUnknownChunk = 138,\n InsightErroredOther = 139,\n AutofillReceived = 140,\n AutofillReceivedAndTabAutoOpened = 141,\n MaxValue = 142,\n}\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum PanelCodes {\n elements = 1,\n resources = 2,\n network = 3,\n sources = 4,\n timeline = 5,\n 'heap-profiler' = 6,\n console = 8,\n layers = 9,\n 'console-view' = 10,\n 'animations' = 11,\n 'network.config' = 12,\n 'rendering' = 13,\n 'sensors' = 14,\n 'sources.search' = 15,\n security = 16,\n 'js-profiler' = 17,\n lighthouse = 18,\n 'coverage' = 19,\n 'protocol-monitor' = 20,\n 'remote-devices' = 21,\n 'web-audio' = 22,\n 'changes.changes' = 23,\n 'performance.monitor' = 24,\n 'release-note' = 25,\n 'live-heap-profile' = 26,\n 'sources.quick' = 27,\n 'network.blocked-urls' = 28,\n 'settings-preferences' = 29,\n 'settings-workspace' = 30,\n 'settings-experiments' = 31,\n 'settings-blackbox' = 32,\n 'settings-devices' = 33,\n 'settings-throttling-conditions' = 34,\n 'settings-emulation-locations' = 35,\n 'settings-shortcuts' = 36,\n 'issues-pane' = 37,\n 'settings-keybinds' = 38,\n 'cssoverview' = 39,\n 'chrome-recorder' = 40,\n 'trust-tokens' = 41,\n 'reporting-api' = 42,\n 'interest-groups' = 43,\n 'back-forward-cache' = 44,\n 'service-worker-cache' = 45,\n 'background-service-background-fetch' = 46,\n 'background-service-background-sync' = 47,\n 'background-service-push-messaging' = 48,\n 'background-service-notifications' = 49,\n 'background-service-payment-handler' = 50,\n 'background-service-periodic-background-sync' = 51,\n 'service-workers' = 52,\n 'app-manifest' = 53,\n 'storage' = 54,\n 'cookies' = 55,\n 'frame-details' = 56,\n 'frame-resource' = 57,\n 'frame-window' = 58,\n 'frame-worker' = 59,\n 'dom-storage' = 60,\n 'indexed-db' = 61,\n 'web-sql' = 62,\n 'performance-insights' = 63,\n 'preloading' = 64,\n 'bounce-tracking-mitigations' = 65,\n 'developer-resources' = 66,\n 'autofill-view' = 67,\n MaxValue = 68,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum PanelWithLocation {\n 'elements-main' = 1,\n 'elements-drawer' = 2,\n 'resources-main' = 3,\n 'resources-drawer' = 4,\n 'network-main' = 5,\n 'network-drawer' = 6,\n 'sources-main' = 7,\n 'sources-drawer' = 8,\n 'timeline-main' = 9,\n 'timeline-drawer' = 10,\n 'heap_profiler-main' = 11,\n 'heap_profiler-drawer' = 12,\n 'console-main' = 13,\n 'console-drawer' = 14,\n 'layers-main' = 15,\n 'layers-drawer' = 16,\n 'console-view-main' = 17,\n 'console-view-drawer' = 18,\n 'animations-main' = 19,\n 'animations-drawer' = 20,\n 'network.config-main' = 21,\n 'network.config-drawer' = 22,\n 'rendering-main' = 23,\n 'rendering-drawer' = 24,\n 'sensors-main' = 25,\n 'sensors-drawer' = 26,\n 'sources.search-main' = 27,\n 'sources.search-drawer' = 28,\n 'security-main' = 29,\n 'security-drawer' = 30,\n 'js_profiler-main' = 31,\n 'js_profiler-drawer' = 32,\n 'lighthouse-main' = 33,\n 'lighthouse-drawer' = 34,\n 'coverage-main' = 35,\n 'coverage-drawer' = 36,\n 'protocol-monitor-main' = 37,\n 'protocol-monitor-drawer' = 38,\n 'remote-devices-main' = 39,\n 'remote-devices-drawer' = 40,\n 'web-audio-main' = 41,\n 'web-audio-drawer' = 42,\n 'changes.changes-main' = 43,\n 'changes.changes-drawer' = 44,\n 'performance.monitor-main' = 45,\n 'performance.monitor-drawer' = 46,\n 'release-note-main' = 47,\n 'release-note-drawer' = 48,\n 'live_heap_profile-main' = 49,\n 'live_heap_profile-drawer' = 50,\n 'sources.quick-main' = 51,\n 'sources.quick-drawer' = 52,\n 'network.blocked-urls-main' = 53,\n 'network.blocked-urls-drawer' = 54,\n 'settings-preferences-main' = 55,\n 'settings-preferences-drawer' = 56,\n 'settings-workspace-main' = 57,\n 'settings-workspace-drawer' = 58,\n 'settings-experiments-main' = 59,\n 'settings-experiments-drawer' = 60,\n 'settings-blackbox-main' = 61,\n 'settings-blackbox-drawer' = 62,\n 'settings-devices-main' = 63,\n 'settings-devices-drawer' = 64,\n 'settings-throttling-conditions-main' = 65,\n 'settings-throttling-conditions-drawer' = 66,\n 'settings-emulation-locations-main' = 67,\n 'settings-emulation-locations-drawer' = 68,\n 'settings-shortcuts-main' = 69,\n 'settings-shortcuts-drawer' = 70,\n 'issues-pane-main' = 71,\n 'issues-pane-drawer' = 72,\n 'settings-keybinds-main' = 73,\n 'settings-keybinds-drawer' = 74,\n 'cssoverview-main' = 75,\n 'cssoverview-drawer' = 76,\n 'chrome_recorder-main' = 77,\n 'chrome_recorder-drawer' = 78,\n 'trust_tokens-main' = 79,\n 'trust_tokens-drawer' = 80,\n 'reporting_api-main' = 81,\n 'reporting_api-drawer' = 82,\n 'interest_groups-main' = 83,\n 'interest_groups-drawer' = 84,\n 'back_forward_cache-main' = 85,\n 'back_forward_cache-drawer' = 86,\n 'service_worker_cache-main' = 87,\n 'service_worker_cache-drawer' = 88,\n 'background_service_backgroundFetch-main' = 89,\n 'background_service_backgroundFetch-drawer' = 90,\n 'background_service_backgroundSync-main' = 91,\n 'background_service_backgroundSync-drawer' = 92,\n 'background_service_pushMessaging-main' = 93,\n 'background_service_pushMessaging-drawer' = 94,\n 'background_service_notifications-main' = 95,\n 'background_service_notifications-drawer' = 96,\n 'background_service_paymentHandler-main' = 97,\n 'background_service_paymentHandler-drawer' = 98,\n 'background_service_periodicBackgroundSync-main' = 99,\n 'background_service_periodicBackgroundSync-drawer' = 100,\n 'service_workers-main' = 101,\n 'service_workers-drawer' = 102,\n 'app_manifest-main' = 103,\n 'app_manifest-drawer' = 104,\n 'storage-main' = 105,\n 'storage-drawer' = 106,\n 'cookies-main' = 107,\n 'cookies-drawer' = 108,\n 'frame_details-main' = 109,\n 'frame_details-drawer' = 110,\n 'frame_resource-main' = 111,\n 'frame_resource-drawer' = 112,\n 'frame_window-main' = 113,\n 'frame_window-drawer' = 114,\n 'frame_worker-main' = 115,\n 'frame_worker-drawer' = 116,\n 'dom_storage-main' = 117,\n 'dom_storage-drawer' = 118,\n 'indexed_db-main' = 119,\n 'indexed_db-drawer' = 120,\n 'web_sql-main' = 121,\n 'web_sql-drawer' = 122,\n 'performance_insights-main' = 123,\n 'performance_insights-drawer' = 124,\n 'preloading-main' = 125,\n 'preloading-drawer' = 126,\n 'bounce_tracking_mitigations-main' = 127,\n 'bounce_tracking_mitigations-drawer' = 128,\n 'developer-resources-main' = 129,\n 'developer-resources-drawer' = 130,\n 'autofill-view-main' = 131,\n 'autofill-view-drawer' = 132,\n MaxValue = 133,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum ElementsSidebarTabCodes {\n 'OtherSidebarPane' = 0,\n 'styles' = 1,\n 'computed' = 2,\n 'elements.layout' = 3,\n 'elements.event-listeners' = 4,\n 'elements.dom-breakpoints' = 5,\n 'elements.dom-properties' = 6,\n 'accessibility.view' = 7,\n MaxValue = 8,\n}\n\n/* eslint-enable @typescript-eslint/naming-convention */\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum SourcesSidebarTabCodes {\n 'OtherSidebarPane' = 0,\n 'navigator-network' = 1,\n 'navigator-files' = 2,\n 'navigator-overrides' = 3,\n 'navigator-content-scripts' = 4,\n 'navigator-snippets' = 5,\n MaxValue = 6,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum MediaTypes {\n Unknown = 0,\n 'text/css' = 2,\n 'text/html' = 3,\n 'application/xml' = 4,\n 'application/wasm' = 5,\n 'application/manifest+json' = 6,\n 'application/x-aspx' = 7,\n 'application/jsp' = 8,\n 'text/x-c++src' = 9,\n 'text/x-coffeescript' = 10,\n 'application/vnd.dart' = 11,\n 'text/typescript' = 12,\n 'text/typescript-jsx' = 13,\n 'application/json' = 14,\n 'text/x-csharp' = 15,\n 'text/x-java' = 16,\n 'text/x-less' = 17,\n 'application/x-httpd-php' = 18,\n 'text/x-python' = 19,\n 'text/x-sh' = 20,\n 'text/x-gss' = 21,\n 'text/x-sass' = 22,\n 'text/x-scss' = 23,\n 'text/markdown' = 24,\n 'text/x-clojure' = 25,\n 'text/jsx' = 26,\n 'text/x-go' = 27,\n 'text/x-kotlin' = 28,\n 'text/x-scala' = 29,\n 'text/x.svelte' = 30,\n 'text/javascript+plain' = 31,\n 'text/javascript+minified' = 32,\n 'text/javascript+sourcemapped' = 33,\n 'text/x.angular' = 34,\n 'text/x.vue' = 35,\n MaxValue = 36,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum KeybindSetSettings {\n 'devToolsDefault' = 0,\n 'vsCode' = 1,\n MaxValue = 2,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum KeyboardShortcutAction {\n OtherShortcut = 0,\n 'quick-open.show-command-menu' = 1,\n 'console.clear' = 2,\n 'console.toggle' = 3,\n 'debugger.step' = 4,\n 'debugger.step-into' = 5,\n 'debugger.step-out' = 6,\n 'debugger.step-over' = 7,\n 'debugger.toggle-breakpoint' = 8,\n 'debugger.toggle-breakpoint-enabled' = 9,\n 'debugger.toggle-pause' = 10,\n 'elements.edit-as-html' = 11,\n 'elements.hide-element' = 12,\n 'elements.redo' = 13,\n 'elements.toggle-element-search' = 14,\n 'elements.undo' = 15,\n 'main.search-in-panel.find' = 16,\n 'main.toggle-drawer' = 17,\n 'network.hide-request-details' = 18,\n 'network.search' = 19,\n 'network.toggle-recording' = 20,\n 'quick-open.show' = 21,\n 'settings.show' = 22,\n 'sources.search' = 23,\n 'background-service.toggle-recording' = 24,\n 'components.collect-garbage' = 25,\n 'console.clear.history' = 26,\n 'console.create-pin' = 27,\n 'coverage.start-with-reload' = 28,\n 'coverage.toggle-recording' = 29,\n 'debugger.breakpoint-input-window' = 30,\n 'debugger.evaluate-selection' = 31,\n 'debugger.next-call-frame' = 32,\n 'debugger.previous-call-frame' = 33,\n 'debugger.run-snippet' = 34,\n 'debugger.toggle-breakpoints-active' = 35,\n 'elements.capture-area-screenshot' = 36,\n 'emulation.capture-full-height-screenshot' = 37,\n 'emulation.capture-node-screenshot' = 38,\n 'emulation.capture-screenshot' = 39,\n 'emulation.show-sensors' = 40,\n 'emulation.toggle-device-mode' = 41,\n 'help.release-notes' = 42,\n 'help.report-issue' = 43,\n 'input.start-replaying' = 44,\n 'input.toggle-pause' = 45,\n 'input.toggle-recording' = 46,\n 'inspector-main.focus-debuggee' = 47,\n 'inspector-main.hard-reload' = 48,\n 'inspector-main.reload' = 49,\n 'live-heap-profile.start-with-reload' = 50,\n 'live-heap-profile.toggle-recording' = 51,\n 'main.debug-reload' = 52,\n 'main.next-tab' = 53,\n 'main.previous-tab' = 54,\n 'main.search-in-panel.cancel' = 55,\n 'main.search-in-panel.find-next' = 56,\n 'main.search-in-panel.find-previous' = 57,\n 'main.toggle-dock' = 58,\n 'main.zoom-in' = 59,\n 'main.zoom-out' = 60,\n 'main.zoom-reset' = 61,\n 'network-conditions.network-low-end-mobile' = 62,\n 'network-conditions.network-mid-tier-mobile' = 63,\n 'network-conditions.network-offline' = 64,\n 'network-conditions.network-online' = 65,\n 'profiler.heap-toggle-recording' = 66,\n 'profiler.js-toggle-recording' = 67,\n 'resources.clear' = 68,\n 'settings.documentation' = 69,\n 'settings.shortcuts' = 70,\n 'sources.add-folder-to-workspace' = 71,\n 'sources.add-to-watch' = 72,\n 'sources.close-all' = 73,\n 'sources.close-editor-tab' = 74,\n 'sources.create-snippet' = 75,\n 'sources.go-to-line' = 76,\n 'sources.go-to-member' = 77,\n 'sources.jump-to-next-location' = 78,\n 'sources.jump-to-previous-location' = 79,\n 'sources.rename' = 80,\n 'sources.save' = 81,\n 'sources.save-all' = 82,\n 'sources.switch-file' = 83,\n 'timeline.jump-to-next-frame' = 84,\n 'timeline.jump-to-previous-frame' = 85,\n 'timeline.load-from-file' = 86,\n 'timeline.next-recording' = 87,\n 'timeline.previous-recording' = 88,\n 'timeline.record-reload' = 89,\n 'timeline.save-to-file' = 90,\n 'timeline.show-history' = 91,\n 'timeline.toggle-recording' = 92,\n 'sources.increment-css' = 93,\n 'sources.increment-css-by-ten' = 94,\n 'sources.decrement-css' = 95,\n 'sources.decrement-css-by-ten' = 96,\n 'layers.reset-view' = 97,\n 'layers.pan-mode' = 98,\n 'layers.rotate-mode' = 99,\n 'layers.zoom-in' = 100,\n 'layers.zoom-out' = 101,\n 'layers.up' = 102,\n 'layers.down' = 103,\n 'layers.left' = 104,\n 'layers.right' = 105,\n 'help.report-translation-issue' = 106,\n 'rendering.toggle-prefers-color-scheme' = 107,\n 'chrome-recorder.start-recording' = 108,\n 'chrome-recorder.replay-recording' = 109,\n 'chrome-recorder.toggle-code-view' = 110,\n 'chrome-recorder.copy-recording-or-step' = 111,\n 'changes.revert' = 112,\n 'changes.copy' = 113,\n 'elements.new-style-rule' = 114,\n 'elements.refresh-event-listeners' = 115,\n 'coverage.clear' = 116,\n 'coverage.export' = 117,\n MaxValue = 118,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport const enum IssueOpener {\n ConsoleInfoBar = 0,\n LearnMoreLinkCOEP = 1,\n StatusBarIssuesCounter = 2,\n HamburgerMenu = 3,\n Adorner = 4,\n CommandMenu = 5,\n MaxValue = 6,\n}\n\n/**\n * This list should contain the currently active Devtools Experiments,\n * gaps are expected.\n */\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum DevtoolsExperiments {\n 'apply-custom-stylesheet' = 0,\n 'capture-node-creation-stacks' = 1,\n 'live-heap-profile' = 11,\n 'protocol-monitor' = 13,\n 'sampling-heap-profiler-timeline' = 17,\n 'show-option-tp-expose-internals-in-heap-snapshot' = 18,\n 'timeline-invalidation-tracking' = 26,\n 'timeline-show-all-events' = 27,\n 'timeline-v8-runtime-call-stats' = 28,\n 'apca' = 39,\n 'font-editor' = 41,\n 'full-accessibility-tree' = 42,\n 'ignore-list-js-frames-on-timeline' = 43,\n 'contrast-issues' = 44,\n 'experimental-cookie-features' = 45,\n 'styles-pane-css-changes' = 55,\n 'evaluate-expressions-with-source-maps' = 58,\n 'instrumentation-breakpoints' = 61,\n 'authored-deployed-grouping' = 63,\n 'important-dom-properties' = 64,\n 'just-my-code' = 65,\n 'timeline-as-console-profile-result-panel' = 67,\n 'preloading-status-panel' = 68,\n 'outermost-target-selector' = 71,\n 'js-profiler-temporarily-enable' = 72,\n 'highlight-errors-elements-panel' = 73,\n 'set-all-breakpoints-eagerly' = 74,\n 'use-source-map-scopes' = 76,\n 'storage-buckets-tree' = 77,\n 'network-panel-filter-bar-redesign' = 79,\n 'autofill-view' = 82,\n 'sources-frame-indentation-markers-temporarily-disable' = 83,\n 'heap-snapshot-treat-backing-store-as-containing-object' = 84,\n 'css-type-component-length-deprecate' = 85,\n\n // Increment this when new experiments are added.\n 'MaxValue' = 86,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport const enum BreakpointWithConditionAdded {\n Logpoint = 0,\n ConditionalBreakpoint = 1,\n MaxValue = 2,\n}\n\nexport const enum BreakpointEditDialogRevealedFrom {\n BreakpointSidebarContextMenu = 0,\n BreakpointSidebarEditButton = 1,\n BreakpointMarkerContextMenu = 2,\n LineGutterContextMenu = 3,\n KeyboardShortcut = 4,\n Linkifier = 5,\n MouseClick = 6,\n MaxValue = 7,\n}\n\nexport const enum ColorConvertedFrom {\n ColorSwatch = 0,\n ColorPicker = 1,\n MaxValue = 2,\n}\n\nexport const enum ColorPickerOpenedFrom {\n SourcesPanel = 0,\n StylesPane = 1,\n MaxValue = 2,\n}\n\nexport const enum CSSPropertyDocumentation {\n Shown = 0,\n ToggledOn = 1,\n ToggledOff = 2,\n MaxValue = 3,\n}\n\nexport const enum BreakpointsRestoredFromStorageCount {\n LessThan100 = 0,\n LessThan300 = 1,\n LessThan1000 = 2,\n LessThan3000 = 3,\n LessThan10000 = 4,\n LessThan30000 = 5,\n LessThan100000 = 6,\n LessThan300000 = 7,\n LessThan1000000 = 8,\n Above1000000 = 9,\n MaxValue = 10,\n}\n\n// Update DevToolsIssuesPanelIssueExpanded from tools/metrics/histograms/enums.xml if new enum is added.\nexport enum IssueExpanded {\n CrossOriginEmbedderPolicy = 0,\n MixedContent = 1,\n SameSiteCookie = 2,\n HeavyAd = 3,\n ContentSecurityPolicy = 4,\n Other = 5,\n Generic = 6,\n ThirdPartyPhaseoutCookie = 7,\n GenericCookie = 8,\n MaxValue = 9,\n}\n\nexport enum IssueResourceOpened {\n CrossOriginEmbedderPolicyRequest = 0,\n CrossOriginEmbedderPolicyElement = 1,\n MixedContentRequest = 2,\n SameSiteCookieCookie = 3,\n SameSiteCookieRequest = 4,\n HeavyAdElement = 5,\n ContentSecurityPolicyDirective = 6,\n ContentSecurityPolicyElement = 7,\n MaxValue = 13,\n}\n\n/**\n * This list should contain the currently active issue types,\n * gaps are expected.\n */\nexport enum IssueCreated {\n MixedContentIssue = 0,\n 'ContentSecurityPolicyIssue::kInlineViolation' = 1,\n 'ContentSecurityPolicyIssue::kEvalViolation' = 2,\n 'ContentSecurityPolicyIssue::kURLViolation' = 3,\n 'ContentSecurityPolicyIssue::kTrustedTypesSinkViolation' = 4,\n 'ContentSecurityPolicyIssue::kTrustedTypesPolicyViolation' = 5,\n 'HeavyAdIssue::NetworkTotalLimit' = 6,\n 'HeavyAdIssue::CpuTotalLimit' = 7,\n 'HeavyAdIssue::CpuPeakLimit' = 8,\n 'CrossOriginEmbedderPolicyIssue::CoepFrameResourceNeedsCoepHeader' = 9,\n 'CrossOriginEmbedderPolicyIssue::CoopSandboxedIFrameCannotNavigateToCoopPage' = 10,\n 'CrossOriginEmbedderPolicyIssue::CorpNotSameOrigin' = 11,\n 'CrossOriginEmbedderPolicyIssue::CorpNotSameOriginAfterDefaultedToSameOriginByCoep' = 12,\n 'CrossOriginEmbedderPolicyIssue::CorpNotSameSite' = 13,\n 'CookieIssue::ExcludeSameSiteNoneInsecure::ReadCookie' = 14,\n 'CookieIssue::ExcludeSameSiteNoneInsecure::SetCookie' = 15,\n 'CookieIssue::WarnSameSiteNoneInsecure::ReadCookie' = 16,\n 'CookieIssue::WarnSameSiteNoneInsecure::SetCookie' = 17,\n 'CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Secure' = 18,\n 'CookieIssue::WarnSameSiteStrictLaxDowngradeStrict::Insecure' = 19,\n 'CookieIssue::WarnCrossDowngrade::ReadCookie::Secure' = 20,\n 'CookieIssue::WarnCrossDowngrade::ReadCookie::Insecure' = 21,\n 'CookieIssue::WarnCrossDowngrade::SetCookie::Secure' = 22,\n 'CookieIssue::WarnCrossDowngrade::SetCookie::Insecure' = 23,\n 'CookieIssue::ExcludeNavigationContextDowngrade::Secure' = 24,\n 'CookieIssue::ExcludeNavigationContextDowngrade::Insecure' = 25,\n 'CookieIssue::ExcludeContextDowngrade::ReadCookie::Secure' = 26,\n 'CookieIssue::ExcludeContextDowngrade::ReadCookie::Insecure' = 27,\n 'CookieIssue::ExcludeContextDowngrade::SetCookie::Secure' = 28,\n 'CookieIssue::ExcludeContextDowngrade::SetCookie::Insecure' = 29,\n 'CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::ReadCookie' = 30,\n 'CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::SetCookie' = 31,\n 'CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::ReadCookie' = 32,\n 'CookieIssue::WarnSameSiteUnspecifiedLaxAllowUnsafe::SetCookie' = 33,\n 'CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::ReadCookie' = 34,\n 'CookieIssue::WarnSameSiteUnspecifiedCrossSiteContext::SetCookie' = 35,\n 'SharedArrayBufferIssue::TransferIssue' = 36,\n 'SharedArrayBufferIssue::CreationIssue' = 37,\n LowTextContrastIssue = 41,\n 'CorsIssue::InsecurePrivateNetwork' = 42,\n 'CorsIssue::InvalidHeaders' = 44,\n 'CorsIssue::WildcardOriginWithCredentials' = 45,\n 'CorsIssue::PreflightResponseInvalid' = 46,\n 'CorsIssue::OriginMismatch' = 47,\n 'CorsIssue::AllowCredentialsRequired' = 48,\n 'CorsIssue::MethodDisallowedByPreflightResponse' = 49,\n 'CorsIssue::HeaderDisallowedByPreflightResponse' = 50,\n 'CorsIssue::RedirectContainsCredentials' = 51,\n 'CorsIssue::DisallowedByMode' = 52,\n 'CorsIssue::CorsDisabledScheme' = 53,\n 'CorsIssue::PreflightMissingAllowExternal' = 54,\n 'CorsIssue::PreflightInvalidAllowExternal' = 55,\n 'CorsIssue::NoCorsRedirectModeNotFollow' = 57,\n 'QuirksModeIssue::QuirksMode' = 58,\n 'QuirksModeIssue::LimitedQuirksMode' = 59,\n DeprecationIssue = 60,\n 'ClientHintIssue::MetaTagAllowListInvalidOrigin' = 61,\n 'ClientHintIssue::MetaTagModifiedHTML' = 62,\n 'CorsIssue::PreflightAllowPrivateNetworkError' = 63,\n 'GenericIssue::CrossOriginPortalPostMessageError' = 64,\n 'GenericIssue::FormLabelForNameError' = 65,\n 'GenericIssue::FormDuplicateIdForInputError' = 66,\n 'GenericIssue::FormInputWithNoLabelError' = 67,\n 'GenericIssue::FormAutocompleteAttributeEmptyError' = 68,\n 'GenericIssue::FormEmptyIdAndNameAttributesForInputError' = 69,\n 'GenericIssue::FormAriaLabelledByToNonExistingId' = 70,\n 'GenericIssue::FormInputAssignedAutocompleteValueToIdOrNameAttributeError' = 71,\n 'GenericIssue::FormLabelHasNeitherForNorNestedInput' = 72,\n 'GenericIssue::FormLabelForMatchesNonExistingIdError' = 73,\n 'GenericIssue::FormHasPasswordFieldWithoutUsernameFieldError' = 74,\n 'GenericIssue::FormInputHasWrongButWellIntendedAutocompleteValueError' = 75,\n 'StylesheetLoadingIssue::LateImportRule' = 76,\n 'StylesheetLoadingIssue::RequestFailed' = 77,\n 'CorsIssue::PreflightMissingPrivateNetworkAccessId' = 78,\n 'CorsIssue::PreflightMissingPrivateNetworkAccessName' = 79,\n 'CorsIssue::PrivateNetworkAccessPermissionUnavailable' = 80,\n 'CorsIssue::PrivateNetworkAccessPermissionDenied' = 81,\n 'CookieIssue::WarnThirdPartyPhaseout::ReadCookie' = 82,\n 'CookieIssue::WarnThirdPartyPhaseout::SetCookie' = 83,\n 'CookieIssue::ExcludeThirdPartyPhaseout::ReadCookie' = 84,\n 'CookieIssue::ExcludeThirdPartyPhaseout::SetCookie' = 85,\n MaxValue = 86,\n}\n\nexport const enum DeveloperResourceLoaded {\n LoadThroughPageViaTarget = 0,\n LoadThroughPageViaFrame = 1,\n LoadThroughPageFailure = 2,\n LoadThroughPageFallback = 3,\n FallbackAfterFailure = 4,\n FallbackPerOverride = 5,\n FallbackPerProtocol = 6,\n FallbackFailure = 7,\n MaxValue = 8,\n}\n\nexport const enum DeveloperResourceScheme {\n SchemeOther = 0,\n SchemeUnknown = 1,\n SchemeHttp = 2,\n SchemeHttps = 3,\n SchemeHttpLocalhost = 4,\n SchemeHttpsLocalhost = 5,\n SchemeData = 6,\n SchemeFile = 7,\n SchemeBlob = 8,\n MaxValue = 9,\n}\n\nexport enum ResourceType {\n /* eslint-disable @typescript-eslint/naming-convention */\n all = 0,\n /* eslint-enable @typescript-eslint/naming-convention */\n Documents = 1,\n Scripts = 2,\n 'Fetch and XHR' = 3,\n Stylesheets = 4,\n Fonts = 5,\n Images = 6,\n Media = 7,\n Manifest = 8,\n WebSockets = 9,\n WebAssembly = 10,\n Other = 11,\n MaxValue = 12,\n}\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum NetworkPanelMoreFilters {\n 'Hide data URLs' = 0,\n 'Hide extension URLs' = 1,\n 'Blocked response cookies' = 2,\n 'Blocked requests' = 3,\n '3rd-party requests' = 4,\n MaxValue = 5,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport const enum VMInlineScriptType {\n MODULE_SCRIPT = 0,\n CLASSIC_SCRIPT = 1,\n MaxValue = 2,\n}\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum Language {\n 'af' = 1,\n 'am' = 2,\n 'ar' = 3,\n 'as' = 4,\n 'az' = 5,\n 'be' = 6,\n 'bg' = 7,\n 'bn' = 8,\n 'bs' = 9,\n 'ca' = 10,\n 'cs' = 11,\n 'cy' = 12,\n 'da' = 13,\n 'de' = 14,\n 'el' = 15,\n 'en-GB' = 16,\n 'en-US' = 17,\n 'es-419' = 18,\n 'es' = 19,\n 'et' = 20,\n 'eu' = 21,\n 'fa' = 22,\n 'fi' = 23,\n 'fil' = 24,\n 'fr-CA' = 25,\n 'fr' = 26,\n 'gl' = 27,\n 'gu' = 28,\n 'he' = 29,\n 'hi' = 30,\n 'hr' = 31,\n 'hu' = 32,\n 'hy' = 33,\n 'id' = 34,\n 'is' = 35,\n 'it' = 36,\n 'ja' = 37,\n 'ka' = 38,\n 'kk' = 39,\n 'km' = 40,\n 'kn' = 41,\n 'ko' = 42,\n 'ky' = 43,\n 'lo' = 44,\n 'lt' = 45,\n 'lv' = 46,\n 'mk' = 47,\n 'ml' = 48,\n 'mn' = 49,\n 'mr' = 50,\n 'ms' = 51,\n 'my' = 52,\n 'ne' = 53,\n 'nl' = 54,\n 'no' = 55,\n 'or' = 56,\n 'pa' = 57,\n 'pl' = 58,\n 'pt-PT' = 59,\n 'pt' = 60,\n 'ro' = 61,\n 'ru' = 62,\n 'si' = 63,\n 'sk' = 64,\n 'sl' = 65,\n 'sq' = 66,\n 'sr-Latn' = 67,\n 'sr' = 68,\n 'sv' = 69,\n 'sw' = 70,\n 'ta' = 71,\n 'te' = 72,\n 'th' = 73,\n 'tr' = 74,\n 'uk' = 75,\n 'ur' = 76,\n 'uz' = 77,\n 'vi' = 78,\n 'zh' = 79,\n 'zh-HK' = 80,\n 'zh-TW' = 81,\n 'zu' = 82,\n MaxValue = 83,\n}\n/* eslint-enable @typescript-eslint/naming-convention */\n\nexport const enum SyncSetting {\n ChromeSyncDisabled = 1,\n ChromeSyncSettingsDisabled = 2,\n DevToolsSyncSettingDisabled = 3,\n DevToolsSyncSettingEnabled = 4,\n MaxValue = 5,\n}\n\nexport const enum RecordingToggled {\n RecordingStarted = 1,\n RecordingFinished = 2,\n MaxValue = 3,\n}\n\nexport const enum RecordingAssertion {\n AssertionAdded = 1,\n PropertyAssertionEdited = 2,\n AttributeAssertionEdited = 3,\n MaxValue = 4,\n}\n\nexport const enum RecordingReplayFinished {\n Success = 1,\n TimeoutErrorSelectors = 2,\n TimeoutErrorTarget = 3,\n OtherError = 4,\n MaxValue = 5,\n}\n\nexport const enum RecordingReplaySpeed {\n Normal = 1,\n Slow = 2,\n VerySlow = 3,\n ExtremelySlow = 4,\n MaxValue = 5,\n}\n\nexport const enum RecordingReplayStarted {\n ReplayOnly = 1,\n ReplayWithPerformanceTracing = 2,\n ReplayViaExtension = 3,\n MaxValue = 4,\n}\n\nexport const enum RecordingEdited {\n SelectorPickerUsed = 1,\n StepAdded = 2,\n StepRemoved = 3,\n SelectorAdded = 4,\n SelectorRemoved = 5,\n SelectorPartAdded = 6,\n SelectorPartEdited = 7,\n SelectorPartRemoved = 8,\n TypeChanged = 9,\n OtherEditing = 10,\n MaxValue = 11,\n}\n\nexport const enum RecordingExported {\n ToPuppeteer = 1,\n ToJSON = 2,\n ToPuppeteerReplay = 3,\n ToExtension = 4,\n ToLighthouse = 5,\n MaxValue = 6,\n}\n\nexport const enum RecordingCodeToggled {\n CodeShown = 1,\n CodeHidden = 2,\n MaxValue = 3,\n}\n\nexport const enum RecordingCopiedToClipboard {\n CopiedRecordingWithPuppeteer = 1,\n CopiedRecordingWithJSON = 2,\n CopiedRecordingWithReplay = 3,\n CopiedRecordingWithExtension = 4,\n CopiedStepWithPuppeteer = 5,\n CopiedStepWithJSON = 6,\n CopiedStepWithReplay = 7,\n CopiedStepWithExtension = 8,\n MaxValue = 9,\n}\n\nexport const enum StyleTextCopied {\n DeclarationViaChangedLine = 1,\n AllChangesViaStylesPane = 2,\n DeclarationViaContextMenu = 3,\n PropertyViaContextMenu = 4,\n ValueViaContextMenu = 5,\n DeclarationAsJSViaContextMenu = 6,\n RuleViaContextMenu = 7,\n AllDeclarationsViaContextMenu = 8,\n AllDeclarationsAsJSViaContextMenu = 9,\n SelectorViaContextMenu = 10,\n MaxValue = 11,\n}\n\nexport enum ManifestSectionCodes {\n OtherSection = 0,\n 'Identity' = 1,\n 'Presentation' = 2,\n 'Protocol Handlers' = 3,\n 'Icons' = 4,\n 'Window Controls Overlay' = 5,\n MaxValue = 6,\n}\n\n/* eslint-enable @typescript-eslint/naming-convention */\n\n// The names here match the CSSRuleValidator names in CSSRuleValidator.ts.\nexport const enum CSSHintType {\n Other = 0,\n AlignContent = 1,\n FlexItem = 2,\n FlexContainer = 3,\n GridContainer = 4,\n GridItem = 5,\n FlexGrid = 6,\n MulticolFlexGrid = 7,\n Padding = 8,\n Position = 9,\n ZIndex = 10,\n Sizing = 11,\n FlexOrGridItem = 12,\n FontVariationSettings = 13,\n MaxValue = 14,\n}\n\nexport const enum LighthouseModeRun {\n Navigation = 0,\n Timespan = 1,\n Snapshot = 2,\n LegacyNavigation = 3,\n MaxValue = 4,\n}\n\nexport const enum LighthouseCategoryUsed {\n Performance = 0,\n Accessibility = 1,\n BestPractices = 2,\n SEO = 3,\n PWA = 4,\n PubAds = 5,\n MaxValue = 6,\n}\n\nexport const enum SwatchType {\n VarLink = 0,\n AnimationNameLink = 1,\n Color = 2,\n AnimationTiming = 3,\n Shadow = 4,\n Grid = 5,\n Flex = 6,\n Angle = 7,\n Length = 8,\n PositionFallbackLink = 9,\n MaxValue = 10,\n}\n\nexport const enum BadgeType {\n GRID = 0,\n SUBGRID = 1,\n FLEX = 2,\n AD = 3,\n SCROLL_SNAP = 4,\n CONTAINER = 5,\n SLOT = 6,\n TOP_LAYER = 7,\n REVEAL = 8,\n MaxValue = 9,\n}\n\nexport const enum AnimationsPlaybackRate {\n Percent100 = 0,\n Percent25 = 1,\n Percent10 = 2,\n Other = 3,\n MaxValue = 4,\n}\n\nexport const enum AnimationPointDragType {\n // Animation is dragged as a whole in the Animations panel.\n AnimationDrag = 0,\n // A keyframe point inside animation timeline is dragged.\n KeyframeMove = 1,\n // Start point of the animation inside animation timeline is dragged.\n StartEndpointMove = 2,\n // Finish point of the animation inside animation timeline is dragged.\n FinishEndpointMove = 3,\n Other = 4,\n MaxValue = 5,\n}\n"]}
\ No newline at end of file
diff --git a/public/core/host/devtools_entrypoint-bundle-typescript-tsconfig.json b/public/core/host/devtools_entrypoint-bundle-typescript-tsconfig.json
index 4c076f674..52662ad77 100644
--- a/public/core/host/devtools_entrypoint-bundle-typescript-tsconfig.json
+++ b/public/core/host/devtools_entrypoint-bundle-typescript-tsconfig.json
@@ -33,8 +33,7 @@
"../../../../../../front_end/legacy/legacy-defs.d.ts",
"../../../../../../front_end/global_typings/global_defs.d.ts",
"../../../../../../front_end/global_typings/request_idle_callback.d.ts",
- "../../../../../../node_modules/@types/filesystem/index.d.ts",
- "../../../../../../node_modules/@webgpu/types/dist/index.d.ts"
+ "../../../../../../node_modules/@types/filesystem/index.d.ts"
],
"references": [
{
diff --git a/public/core/host/host-tsconfig.json b/public/core/host/host-tsconfig.json
index d7cde6745..df47ab71b 100644
--- a/public/core/host/host-tsconfig.json
+++ b/public/core/host/host-tsconfig.json
@@ -38,8 +38,7 @@
"../../../../../../front_end/legacy/legacy-defs.d.ts",
"../../../../../../front_end/global_typings/global_defs.d.ts",
"../../../../../../front_end/global_typings/request_idle_callback.d.ts",
- "../../../../../../node_modules/@types/filesystem/index.d.ts",
- "../../../../../../node_modules/@webgpu/types/dist/index.d.ts"
+ "../../../../../../node_modules/@types/filesystem/index.d.ts"
],
"references": [
{
diff --git a/public/core/host/unittests-tsconfig.json b/public/core/host/unittests-tsconfig.json
index 81fd42b8d..cf7651deb 100644
--- a/public/core/host/unittests-tsconfig.json
+++ b/public/core/host/unittests-tsconfig.json
@@ -41,8 +41,7 @@
"../../../../../../front_end/legacy/legacy-defs.d.ts",
"../../../../../../front_end/global_typings/global_defs.d.ts",
"../../../../../../front_end/global_typings/request_idle_callback.d.ts",
- "../../../../../../node_modules/@types/filesystem/index.d.ts",
- "../../../../../../node_modules/@webgpu/types/dist/index.d.ts"
+ "../../../../../../node_modules/@types/filesystem/index.d.ts"
],
"references": [
{
diff --git a/public/core/i18n/devtools_entrypoint-bundle-typescript-tsconfig.json b/public/core/i18n/devtools_entrypoint-bundle-typescript-tsconfig.json
index 9bb221abd..eab9fecf7 100644
--- a/public/core/i18n/devtools_entrypoint-bundle-typescript-tsconfig.json
+++ b/public/core/i18n/devtools_entrypoint-bundle-typescript-tsconfig.json
@@ -33,8 +33,7 @@
"../../../../../../front_end/legacy/legacy-defs.d.ts",
"../../../../../../front_end/global_typings/global_defs.d.ts",
"../../../../../../front_end/global_typings/request_idle_callback.d.ts",
- "../../../../../../node_modules/@types/filesystem/index.d.ts",
- "../../../../../../node_modules/@webgpu/types/dist/index.d.ts"
+ "../../../../../../node_modules/@types/filesystem/index.d.ts"
],
"references": [
{
diff --git a/public/core/i18n/i18n-tsconfig.json b/public/core/i18n/i18n-tsconfig.json
index 48a2f9c57..d5c976174 100644
--- a/public/core/i18n/i18n-tsconfig.json
+++ b/public/core/i18n/i18n-tsconfig.json
@@ -36,8 +36,7 @@
"../../../../../../front_end/legacy/legacy-defs.d.ts",
"../../../../../../front_end/global_typings/global_defs.d.ts",
"../../../../../../front_end/global_typings/request_idle_callback.d.ts",
- "../../../../../../node_modules/@types/filesystem/index.d.ts",
- "../../../../../../node_modules/@webgpu/types/dist/index.d.ts"
+ "../../../../../../node_modules/@types/filesystem/index.d.ts"
],
"references": [
{
diff --git a/public/core/i18n/locales/en-US.json b/public/core/i18n/locales/en-US.json
index 5b838e761..e64667d59 100644
--- a/public/core/i18n/locales/en-US.json
+++ b/public/core/i18n/locales/en-US.json
@@ -1 +1 @@
-{"core/common/ResourceType.ts | cspviolationreport":{"message":"CSPViolationReport"},"core/common/ResourceType.ts | css":{"message":"CSS"},"core/common/ResourceType.ts | doc":{"message":"Doc"},"core/common/ResourceType.ts | document":{"message":"Document"},"core/common/ResourceType.ts | eventsource":{"message":"EventSource"},"core/common/ResourceType.ts | fetch":{"message":"Fetch"},"core/common/ResourceType.ts | fetchAndXHR":{"message":"Fetch and XHR"},"core/common/ResourceType.ts | font":{"message":"Font"},"core/common/ResourceType.ts | image":{"message":"Image"},"core/common/ResourceType.ts | img":{"message":"Img"},"core/common/ResourceType.ts | javascript":{"message":"JavaScript"},"core/common/ResourceType.ts | js":{"message":"JS"},"core/common/ResourceType.ts | manifest":{"message":"Manifest"},"core/common/ResourceType.ts | media":{"message":"Media"},"core/common/ResourceType.ts | other":{"message":"Other"},"core/common/ResourceType.ts | ping":{"message":"Ping"},"core/common/ResourceType.ts | preflight":{"message":"Preflight"},"core/common/ResourceType.ts | script":{"message":"Script"},"core/common/ResourceType.ts | signedexchange":{"message":"SignedExchange"},"core/common/ResourceType.ts | stylesheet":{"message":"Stylesheet"},"core/common/ResourceType.ts | texttrack":{"message":"TextTrack"},"core/common/ResourceType.ts | wasm":{"message":"Wasm"},"core/common/ResourceType.ts | webassembly":{"message":"WebAssembly"},"core/common/ResourceType.ts | webbundle":{"message":"WebBundle"},"core/common/ResourceType.ts | websocket":{"message":"WebSocket"},"core/common/ResourceType.ts | webtransport":{"message":"WebTransport"},"core/common/ResourceType.ts | ws":{"message":"WS"},"core/common/Revealer.ts | applicationPanel":{"message":"Application panel"},"core/common/Revealer.ts | changesDrawer":{"message":"Changes drawer"},"core/common/Revealer.ts | elementsPanel":{"message":"Elements panel"},"core/common/Revealer.ts | issuesView":{"message":"Issues view"},"core/common/Revealer.ts | memoryInspectorPanel":{"message":"Memory inspector panel"},"core/common/Revealer.ts | networkPanel":{"message":"Network panel"},"core/common/Revealer.ts | sourcesPanel":{"message":"Sources panel"},"core/common/Revealer.ts | stylesSidebar":{"message":"styles sidebar"},"core/common/SettingRegistration.ts | adorner":{"message":"Adorner"},"core/common/SettingRegistration.ts | appearance":{"message":"Appearance"},"core/common/SettingRegistration.ts | console":{"message":"Console"},"core/common/SettingRegistration.ts | debugger":{"message":"Debugger"},"core/common/SettingRegistration.ts | elements":{"message":"Elements"},"core/common/SettingRegistration.ts | extension":{"message":"Extension"},"core/common/SettingRegistration.ts | global":{"message":"Global"},"core/common/SettingRegistration.ts | grid":{"message":"Grid"},"core/common/SettingRegistration.ts | memory":{"message":"Memory"},"core/common/SettingRegistration.ts | mobile":{"message":"Mobile"},"core/common/SettingRegistration.ts | network":{"message":"Network"},"core/common/SettingRegistration.ts | performance":{"message":"Performance"},"core/common/SettingRegistration.ts | persistence":{"message":"Persistence"},"core/common/SettingRegistration.ts | rendering":{"message":"Rendering"},"core/common/SettingRegistration.ts | sources":{"message":"Sources"},"core/common/SettingRegistration.ts | sync":{"message":"Sync"},"core/host/InspectorFrontendHost.ts | devtoolsS":{"message":"DevTools - {PH1}"},"core/host/ResourceLoader.ts | cacheError":{"message":"Cache error"},"core/host/ResourceLoader.ts | certificateError":{"message":"Certificate error"},"core/host/ResourceLoader.ts | certificateManagerError":{"message":"Certificate manager error"},"core/host/ResourceLoader.ts | connectionError":{"message":"Connection error"},"core/host/ResourceLoader.ts | decodingDataUrlFailed":{"message":"Decoding Data URL failed"},"core/host/ResourceLoader.ts | dnsResolverError":{"message":"DNS resolver error"},"core/host/ResourceLoader.ts | ftpError":{"message":"FTP error"},"core/host/ResourceLoader.ts | httpError":{"message":"HTTP error"},"core/host/ResourceLoader.ts | httpErrorStatusCodeSS":{"message":"HTTP error: status code {PH1}, {PH2}"},"core/host/ResourceLoader.ts | invalidUrl":{"message":"Invalid URL"},"core/host/ResourceLoader.ts | signedExchangeError":{"message":"Signed Exchange error"},"core/host/ResourceLoader.ts | systemError":{"message":"System error"},"core/host/ResourceLoader.ts | unknownError":{"message":"Unknown error"},"core/i18n/time-utilities.ts | fdays":{"message":"{PH1} days"},"core/i18n/time-utilities.ts | fhrs":{"message":"{PH1} hrs"},"core/i18n/time-utilities.ts | fmin":{"message":"{PH1} min"},"core/i18n/time-utilities.ts | fmms":{"message":"{PH1} μs"},"core/i18n/time-utilities.ts | fms":{"message":"{PH1} ms"},"core/i18n/time-utilities.ts | fs":{"message":"{PH1} s"},"core/sdk/ChildTargetManager.ts | main":{"message":"Main"},"core/sdk/CompilerSourceMappingContentProvider.ts | couldNotLoadContentForSS":{"message":"Could not load content for {PH1} ({PH2})"},"core/sdk/ConsoleModel.ts | bfcacheNavigation":{"message":"Navigation to {PH1} was restored from back/forward cache (see https://web.dev/bfcache/)"},"core/sdk/ConsoleModel.ts | failedToSaveToTempVariable":{"message":"Failed to save to temp variable."},"core/sdk/ConsoleModel.ts | navigatedToS":{"message":"Navigated to {PH1}"},"core/sdk/ConsoleModel.ts | profileSFinished":{"message":"Profile ''{PH1}'' finished."},"core/sdk/ConsoleModel.ts | profileSStarted":{"message":"Profile ''{PH1}'' started."},"core/sdk/CPUProfilerModel.ts | profileD":{"message":"Profile {PH1}"},"core/sdk/CSSStyleSheetHeader.ts | couldNotFindTheOriginalStyle":{"message":"Could not find the original style sheet."},"core/sdk/CSSStyleSheetHeader.ts | thereWasAnErrorRetrievingThe":{"message":"There was an error retrieving the source styles."},"core/sdk/DebuggerModel.ts | block":{"message":"Block"},"core/sdk/DebuggerModel.ts | catchBlock":{"message":"Catch block"},"core/sdk/DebuggerModel.ts | closure":{"message":"Closure"},"core/sdk/DebuggerModel.ts | expression":{"message":"Expression"},"core/sdk/DebuggerModel.ts | global":{"message":"Global"},"core/sdk/DebuggerModel.ts | local":{"message":"Local"},"core/sdk/DebuggerModel.ts | module":{"message":"Module"},"core/sdk/DebuggerModel.ts | script":{"message":"Script"},"core/sdk/DebuggerModel.ts | withBlock":{"message":"With block"},"core/sdk/NetworkManager.ts | fastG":{"message":"Fast 3G"},"core/sdk/NetworkManager.ts | noContentForPreflight":{"message":"No content available for preflight request"},"core/sdk/NetworkManager.ts | noContentForRedirect":{"message":"No content available because this request was redirected"},"core/sdk/NetworkManager.ts | noContentForWebSocket":{"message":"Content for WebSockets is currently not supported"},"core/sdk/NetworkManager.ts | noThrottling":{"message":"No throttling"},"core/sdk/NetworkManager.ts | offline":{"message":"Offline"},"core/sdk/NetworkManager.ts | requestWasBlockedByDevtoolsS":{"message":"Request was blocked by DevTools: \"{PH1}\""},"core/sdk/NetworkManager.ts | sFailedLoadingSS":{"message":"{PH1} failed loading: {PH2} \"{PH3}\"."},"core/sdk/NetworkManager.ts | sFinishedLoadingSS":{"message":"{PH1} finished loading: {PH2} \"{PH3}\"."},"core/sdk/NetworkManager.ts | slowG":{"message":"Slow 3G"},"core/sdk/NetworkRequest.ts | anUnknownErrorWasEncounteredWhenTrying":{"message":"An unknown error was encountered when trying to store this cookie."},"core/sdk/NetworkRequest.ts | binary":{"message":"(binary)"},"core/sdk/NetworkRequest.ts | blockedReasonInvalidDomain":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because its Domain attribute was invalid with regards to the current host url."},"core/sdk/NetworkRequest.ts | blockedReasonInvalidPrefix":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it used the \"__Secure-\" or \"__Host-\" prefix in its name and broke the additional rules applied to cookies with these prefixes as defined in https://tools.ietf.org/html/draft-west-cookie-prefixes-05."},"core/sdk/NetworkRequest.ts | blockedReasonOverwriteSecure":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it was not sent over a secure connection and would have overwritten a cookie with the Secure attribute."},"core/sdk/NetworkRequest.ts | blockedReasonSameSiteNoneInsecure":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it had the \"SameSite=None\" attribute but did not have the \"Secure\" attribute, which is required in order to use \"SameSite=None\"."},"core/sdk/NetworkRequest.ts | blockedReasonSameSiteStrictLax":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it had the \"{PH1}\" attribute but came from a cross-site response which was not the response to a top-level navigation."},"core/sdk/NetworkRequest.ts | blockedReasonSameSiteUnspecifiedTreatedAsLax":{"message":"This Set-Cookie header didn't specify a \"SameSite\" attribute and was defaulted to \"SameSite=Lax,\" and was blocked because it came from a cross-site response which was not the response to a top-level navigation. The Set-Cookie had to have been set with \"SameSite=None\" to enable cross-site usage."},"core/sdk/NetworkRequest.ts | blockedReasonSecureOnly":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it had the \"Secure\" attribute but was not received over a secure connection."},"core/sdk/NetworkRequest.ts | domainMismatch":{"message":"This cookie was blocked because neither did the request URL's domain exactly match the cookie's domain, nor was the request URL's domain a subdomain of the cookie's Domain attribute value."},"core/sdk/NetworkRequest.ts | exemptionReasonCorsOptIn":{"message":"This cookie is allowed by CORS opt-in. Learn more: goo.gle/cors"},"core/sdk/NetworkRequest.ts | exemptionReasonEnterprisePolicy":{"message":"This cookie is allowed by Chrome Enterprise policy. Learn more: goo.gle/ce-3pc"},"core/sdk/NetworkRequest.ts | exemptionReasonStorageAccessAPI":{"message":"This cookie is allowed by the Storage Access API. Learn more: goo.gle/saa"},"core/sdk/NetworkRequest.ts | exemptionReasonTopLevelStorageAccessAPI":{"message":"This cookie is allowed by the top-level Storage Access API. Learn more: goo.gle/saa-top"},"core/sdk/NetworkRequest.ts | exemptionReasonTPCDDeprecationTrial":{"message":"This cookie is allowed by third-party cookie phaseout deprecation trial."},"core/sdk/NetworkRequest.ts | exemptionReasonTPCDHeuristics":{"message":"This cookie is allowed by third-party cookie phaseout heuristics. Learn more: goo.gle/hbe"},"core/sdk/NetworkRequest.ts | exemptionReasonTPCDMetadata":{"message":"This cookie is allowed by a third-party cookie deprecation trial grace period. Learn more: goo.gle/ps-dt."},"core/sdk/NetworkRequest.ts | exemptionReasonUserSetting":{"message":"This cookie is allowed by user preference."},"core/sdk/NetworkRequest.ts | nameValuePairExceedsMaxSize":{"message":"This cookie was blocked because it was too large. The combined size of the name and value must be less than or equal to 4096 characters."},"core/sdk/NetworkRequest.ts | notOnPath":{"message":"This cookie was blocked because its path was not an exact match for or a superdirectory of the request url's path."},"core/sdk/NetworkRequest.ts | samePartyFromCrossPartyContext":{"message":"This cookie was blocked because it had the \"SameParty\" attribute but the request was cross-party. The request was considered cross-party because the domain of the resource's URL and the domains of the resource's enclosing frames/documents are neither owners nor members in the same First-Party Set."},"core/sdk/NetworkRequest.ts | sameSiteLax":{"message":"This cookie was blocked because it had the \"SameSite=Lax\" attribute and the request was made from a different site and was not initiated by a top-level navigation."},"core/sdk/NetworkRequest.ts | sameSiteNoneInsecure":{"message":"This cookie was blocked because it had the \"SameSite=None\" attribute but was not marked \"Secure\". Cookies without SameSite restrictions must be marked \"Secure\" and sent over a secure connection."},"core/sdk/NetworkRequest.ts | sameSiteStrict":{"message":"This cookie was blocked because it had the \"SameSite=Strict\" attribute and the request was made from a different site. This includes top-level navigation requests initiated by other sites."},"core/sdk/NetworkRequest.ts | sameSiteUnspecifiedTreatedAsLax":{"message":"This cookie didn't specify a \"SameSite\" attribute when it was stored and was defaulted to \"SameSite=Lax,\" and was blocked because the request was made from a different site and was not initiated by a top-level navigation. The cookie had to have been set with \"SameSite=None\" to enable cross-site usage."},"core/sdk/NetworkRequest.ts | schemefulSameSiteLax":{"message":"This cookie was blocked because it had the \"SameSite=Lax\" attribute but the request was cross-site and was not initiated by a top-level navigation. This request is considered cross-site because the URL has a different scheme than the current site."},"core/sdk/NetworkRequest.ts | schemefulSameSiteStrict":{"message":"This cookie was blocked because it had the \"SameSite=Strict\" attribute but the request was cross-site. This includes top-level navigation requests initiated by other sites. This request is considered cross-site because the URL has a different scheme than the current site."},"core/sdk/NetworkRequest.ts | schemefulSameSiteUnspecifiedTreatedAsLax":{"message":"This cookie didn't specify a \"SameSite\" attribute when it was stored, was defaulted to \"SameSite=Lax\", and was blocked because the request was cross-site and was not initiated by a top-level navigation. This request is considered cross-site because the URL has a different scheme than the current site."},"core/sdk/NetworkRequest.ts | secureOnly":{"message":"This cookie was blocked because it had the \"Secure\" attribute and the connection was not secure."},"core/sdk/NetworkRequest.ts | setcookieHeaderIsIgnoredIn":{"message":"Set-Cookie header is ignored in response from url: {PH1}. The combined size of the name and value must be less than or equal to 4096 characters."},"core/sdk/NetworkRequest.ts | theSchemeOfThisConnectionIsNot":{"message":"The scheme of this connection is not allowed to store cookies."},"core/sdk/NetworkRequest.ts | thirdPartyPhaseout":{"message":"This cookie was blocked due to third-party cookie phaseout. Learn more in the Issues tab."},"core/sdk/NetworkRequest.ts | thisSetcookieDidntSpecifyASamesite":{"message":"This Set-Cookie header didn't specify a \"SameSite\" attribute, was defaulted to \"SameSite=Lax\", and was blocked because it came from a cross-site response which was not the response to a top-level navigation. This response is considered cross-site because the URL has a different scheme than the current site."},"core/sdk/NetworkRequest.ts | thisSetcookieHadADisallowedCharacter":{"message":"This Set-Cookie header contained a disallowed character (a forbidden ASCII control character, or the tab character if it appears in the middle of the cookie name, value, an attribute name, or an attribute value)."},"core/sdk/NetworkRequest.ts | thisSetcookieHadInvalidSyntax":{"message":"This Set-Cookie header had invalid syntax."},"core/sdk/NetworkRequest.ts | thisSetcookieWasBlockedBecauseItHadTheSameparty":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it had the \"SameParty\" attribute but the request was cross-party. The request was considered cross-party because the domain of the resource's URL and the domains of the resource's enclosing frames/documents are neither owners nor members in the same First-Party Set."},"core/sdk/NetworkRequest.ts | thisSetcookieWasBlockedBecauseItHadTheSamepartyAttribute":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it had the \"SameParty\" attribute but also had other conflicting attributes. Chrome requires cookies that use the \"SameParty\" attribute to also have the \"Secure\" attribute, and to not be restricted to \"SameSite=Strict\"."},"core/sdk/NetworkRequest.ts | thisSetcookieWasBlockedBecauseItHadTheSamesiteStrictLax":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because it had the \"{PH1}\" attribute but came from a cross-site response which was not the response to a top-level navigation. This response is considered cross-site because the URL has a different scheme than the current site."},"core/sdk/NetworkRequest.ts | thisSetcookieWasBlockedBecauseTheNameValuePairExceedsMaxSize":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked because the cookie was too large. The combined size of the name and value must be less than or equal to 4096 characters."},"core/sdk/NetworkRequest.ts | thisSetcookieWasBlockedDueThirdPartyPhaseout":{"message":"Setting this cookie was blocked due to third-party cookie phaseout. Learn more in the Issues tab."},"core/sdk/NetworkRequest.ts | thisSetcookieWasBlockedDueToUser":{"message":"This attempt to set a cookie via a Set-Cookie header was blocked due to user preferences."},"core/sdk/NetworkRequest.ts | unknownError":{"message":"An unknown error was encountered when trying to send this cookie."},"core/sdk/NetworkRequest.ts | userPreferences":{"message":"This cookie was blocked due to user preferences."},"core/sdk/OverlayModel.ts | pausedInDebugger":{"message":"Paused in debugger"},"core/sdk/PageResourceLoader.ts | loadCanceledDueToReloadOf":{"message":"Load canceled due to reload of inspected page"},"core/sdk/Script.ts | scriptRemovedOrDeleted":{"message":"Script removed or deleted."},"core/sdk/Script.ts | unableToFetchScriptSource":{"message":"Unable to fetch script source."},"core/sdk/sdk-meta.ts | achromatopsia":{"message":"Achromatopsia (no color)"},"core/sdk/sdk-meta.ts | blurredVision":{"message":"Blurred vision"},"core/sdk/sdk-meta.ts | captureAsyncStackTraces":{"message":"Capture async stack traces"},"core/sdk/sdk-meta.ts | customFormatters":{"message":"Custom formatters"},"core/sdk/sdk-meta.ts | deuteranopia":{"message":"Deuteranopia (no green)"},"core/sdk/sdk-meta.ts | disableAsyncStackTraces":{"message":"Disable async stack traces"},"core/sdk/sdk-meta.ts | disableAvifFormat":{"message":"Disable AVIF format"},"core/sdk/sdk-meta.ts | disableCache":{"message":"Disable cache (while DevTools is open)"},"core/sdk/sdk-meta.ts | disableJavascript":{"message":"Disable JavaScript"},"core/sdk/sdk-meta.ts | disableLocalFonts":{"message":"Disable local fonts"},"core/sdk/sdk-meta.ts | disableNetworkRequestBlocking":{"message":"Disable network request blocking"},"core/sdk/sdk-meta.ts | disableWebpFormat":{"message":"Disable WebP format"},"core/sdk/sdk-meta.ts | doNotCaptureAsyncStackTraces":{"message":"Do not capture async stack traces"},"core/sdk/sdk-meta.ts | doNotEmulateAFocusedPage":{"message":"Do not emulate a focused page"},"core/sdk/sdk-meta.ts | doNotEmulateAnyVisionDeficiency":{"message":"Do not emulate any vision deficiency"},"core/sdk/sdk-meta.ts | doNotEmulateCss":{"message":"Do not emulate CSS {PH1}"},"core/sdk/sdk-meta.ts | doNotEmulateCssMediaType":{"message":"Do not emulate CSS media type"},"core/sdk/sdk-meta.ts | doNotExtendGridLines":{"message":"Do not extend grid lines"},"core/sdk/sdk-meta.ts | doNotHighlightAdFrames":{"message":"Do not highlight ad frames"},"core/sdk/sdk-meta.ts | doNotPauseOnExceptions":{"message":"Do not pause on exceptions"},"core/sdk/sdk-meta.ts | doNotPreserveLogUponNavigation":{"message":"Do not preserve log upon navigation"},"core/sdk/sdk-meta.ts | doNotShowGridNamedAreas":{"message":"Do not show grid named areas"},"core/sdk/sdk-meta.ts | doNotShowGridTrackSizes":{"message":"Do not show grid track sizes"},"core/sdk/sdk-meta.ts | doNotShowRulersOnHover":{"message":"Do not show rulers on hover"},"core/sdk/sdk-meta.ts | emulateAchromatopsia":{"message":"Emulate achromatopsia (no color)"},"core/sdk/sdk-meta.ts | emulateAFocusedPage":{"message":"Emulate a focused page"},"core/sdk/sdk-meta.ts | emulateAutoDarkMode":{"message":"Emulate auto dark mode"},"core/sdk/sdk-meta.ts | emulateBlurredVision":{"message":"Emulate blurred vision"},"core/sdk/sdk-meta.ts | emulateCss":{"message":"Emulate CSS {PH1}"},"core/sdk/sdk-meta.ts | emulateCssMediaFeature":{"message":"Emulate CSS media feature {PH1}"},"core/sdk/sdk-meta.ts | emulateCssMediaType":{"message":"Emulate CSS media type"},"core/sdk/sdk-meta.ts | emulateCssPrintMediaType":{"message":"Emulate CSS print media type"},"core/sdk/sdk-meta.ts | emulateCssScreenMediaType":{"message":"Emulate CSS screen media type"},"core/sdk/sdk-meta.ts | emulateDeuteranopia":{"message":"Emulate deuteranopia (no green)"},"core/sdk/sdk-meta.ts | emulateProtanopia":{"message":"Emulate protanopia (no red)"},"core/sdk/sdk-meta.ts | emulateReducedContrast":{"message":"Emulate reduced contrast"},"core/sdk/sdk-meta.ts | emulateTritanopia":{"message":"Emulate tritanopia (no blue)"},"core/sdk/sdk-meta.ts | emulateVisionDeficiencies":{"message":"Emulate vision deficiencies"},"core/sdk/sdk-meta.ts | enableAvifFormat":{"message":"Enable AVIF format"},"core/sdk/sdk-meta.ts | enableCache":{"message":"Enable cache"},"core/sdk/sdk-meta.ts | enableJavascript":{"message":"Enable JavaScript"},"core/sdk/sdk-meta.ts | enableLocalFonts":{"message":"Enable local fonts"},"core/sdk/sdk-meta.ts | enableNetworkRequestBlocking":{"message":"Enable network request blocking"},"core/sdk/sdk-meta.ts | enableRemoteFileLoading":{"message":"Allow DevTools to load resources, such as source maps, from remote file paths. Disabled by default for security reasons."},"core/sdk/sdk-meta.ts | enableWebpFormat":{"message":"Enable WebP format"},"core/sdk/sdk-meta.ts | extendGridLines":{"message":"Extend grid lines"},"core/sdk/sdk-meta.ts | hideCoreWebVitalsOverlay":{"message":"Hide Core Web Vitals overlay"},"core/sdk/sdk-meta.ts | hideFramesPerSecondFpsMeter":{"message":"Hide frames per second (FPS) meter"},"core/sdk/sdk-meta.ts | hideLayerBorders":{"message":"Hide layer borders"},"core/sdk/sdk-meta.ts | hideLayoutShiftRegions":{"message":"Hide layout shift regions"},"core/sdk/sdk-meta.ts | hideLineLabels":{"message":"Hide line labels"},"core/sdk/sdk-meta.ts | hidePaintFlashingRectangles":{"message":"Hide paint flashing rectangles"},"core/sdk/sdk-meta.ts | hideScrollPerformanceBottlenecks":{"message":"Hide scroll performance bottlenecks"},"core/sdk/sdk-meta.ts | highlightAdFrames":{"message":"Highlight ad frames"},"core/sdk/sdk-meta.ts | networkRequestBlocking":{"message":"Network request blocking"},"core/sdk/sdk-meta.ts | noEmulation":{"message":"No emulation"},"core/sdk/sdk-meta.ts | pauseOnExceptions":{"message":"Pause on exceptions"},"core/sdk/sdk-meta.ts | preserveLogUponNavigation":{"message":"Preserve log upon navigation"},"core/sdk/sdk-meta.ts | print":{"message":"print"},"core/sdk/sdk-meta.ts | protanopia":{"message":"Protanopia (no red)"},"core/sdk/sdk-meta.ts | query":{"message":"query"},"core/sdk/sdk-meta.ts | reducedContrast":{"message":"Reduced contrast"},"core/sdk/sdk-meta.ts | screen":{"message":"screen"},"core/sdk/sdk-meta.ts | showAreaNames":{"message":"Show area names"},"core/sdk/sdk-meta.ts | showCoreWebVitalsOverlay":{"message":"Show Core Web Vitals overlay"},"core/sdk/sdk-meta.ts | showFramesPerSecondFpsMeter":{"message":"Show frames per second (FPS) meter"},"core/sdk/sdk-meta.ts | showGridNamedAreas":{"message":"Show grid named areas"},"core/sdk/sdk-meta.ts | showGridTrackSizes":{"message":"Show grid track sizes"},"core/sdk/sdk-meta.ts | showLayerBorders":{"message":"Show layer borders"},"core/sdk/sdk-meta.ts | showLayoutShiftRegions":{"message":"Show layout shift regions"},"core/sdk/sdk-meta.ts | showLineLabels":{"message":"Show line labels"},"core/sdk/sdk-meta.ts | showLineNames":{"message":"Show line names"},"core/sdk/sdk-meta.ts | showLineNumbers":{"message":"Show line numbers"},"core/sdk/sdk-meta.ts | showPaintFlashingRectangles":{"message":"Show paint flashing rectangles"},"core/sdk/sdk-meta.ts | showRulersOnHover":{"message":"Show rulers on hover"},"core/sdk/sdk-meta.ts | showScrollPerformanceBottlenecks":{"message":"Show scroll performance bottlenecks"},"core/sdk/sdk-meta.ts | showTrackSizes":{"message":"Show track sizes"},"core/sdk/sdk-meta.ts | tritanopia":{"message":"Tritanopia (no blue)"},"core/sdk/ServerTiming.ts | deprecatedSyntaxFoundPleaseUse":{"message":"Deprecated syntax found. Please use: ;dur=;desc="},"core/sdk/ServerTiming.ts | duplicateParameterSIgnored":{"message":"Duplicate parameter \"{PH1}\" ignored."},"core/sdk/ServerTiming.ts | extraneousTrailingCharacters":{"message":"Extraneous trailing characters."},"core/sdk/ServerTiming.ts | noValueFoundForParameterS":{"message":"No value found for parameter \"{PH1}\"."},"core/sdk/ServerTiming.ts | unableToParseSValueS":{"message":"Unable to parse \"{PH1}\" value \"{PH2}\"."},"core/sdk/ServerTiming.ts | unrecognizedParameterS":{"message":"Unrecognized parameter \"{PH1}\"."},"core/sdk/ServiceWorkerCacheModel.ts | serviceworkercacheagentError":{"message":"ServiceWorkerCacheAgent error deleting cache entry {PH1} in cache: {PH2}"},"core/sdk/ServiceWorkerManager.ts | activated":{"message":"activated"},"core/sdk/ServiceWorkerManager.ts | activating":{"message":"activating"},"core/sdk/ServiceWorkerManager.ts | installed":{"message":"installed"},"core/sdk/ServiceWorkerManager.ts | installing":{"message":"installing"},"core/sdk/ServiceWorkerManager.ts | new":{"message":"new"},"core/sdk/ServiceWorkerManager.ts | redundant":{"message":"redundant"},"core/sdk/ServiceWorkerManager.ts | running":{"message":"running"},"core/sdk/ServiceWorkerManager.ts | sSS":{"message":"{PH1} #{PH2} ({PH3})"},"core/sdk/ServiceWorkerManager.ts | starting":{"message":"starting"},"core/sdk/ServiceWorkerManager.ts | stopped":{"message":"stopped"},"core/sdk/ServiceWorkerManager.ts | stopping":{"message":"stopping"},"entrypoints/inspector_main/inspector_main-meta.ts | autoOpenDevTools":{"message":"Auto-open DevTools for popups"},"entrypoints/inspector_main/inspector_main-meta.ts | blockAds":{"message":"Block ads on this site"},"entrypoints/inspector_main/inspector_main-meta.ts | colorVisionDeficiency":{"message":"color vision deficiency"},"entrypoints/inspector_main/inspector_main-meta.ts | cssMediaFeature":{"message":"CSS media feature"},"entrypoints/inspector_main/inspector_main-meta.ts | cssMediaType":{"message":"CSS media type"},"entrypoints/inspector_main/inspector_main-meta.ts | disablePaused":{"message":"Disable paused state overlay"},"entrypoints/inspector_main/inspector_main-meta.ts | doNotAutoOpen":{"message":"Do not auto-open DevTools for popups"},"entrypoints/inspector_main/inspector_main-meta.ts | forceAdBlocking":{"message":"Force ad blocking on this site"},"entrypoints/inspector_main/inspector_main-meta.ts | fps":{"message":"fps"},"entrypoints/inspector_main/inspector_main-meta.ts | hardReloadPage":{"message":"Hard reload page"},"entrypoints/inspector_main/inspector_main-meta.ts | layout":{"message":"layout"},"entrypoints/inspector_main/inspector_main-meta.ts | paint":{"message":"paint"},"entrypoints/inspector_main/inspector_main-meta.ts | reloadPage":{"message":"Reload page"},"entrypoints/inspector_main/inspector_main-meta.ts | rendering":{"message":"Rendering"},"entrypoints/inspector_main/inspector_main-meta.ts | showAds":{"message":"Show ads on this site, if allowed"},"entrypoints/inspector_main/inspector_main-meta.ts | showRendering":{"message":"Show Rendering"},"entrypoints/inspector_main/inspector_main-meta.ts | toggleCssPrefersColorSchemeMedia":{"message":"Toggle CSS media feature prefers-color-scheme"},"entrypoints/inspector_main/inspector_main-meta.ts | visionDeficiency":{"message":"vision deficiency"},"entrypoints/inspector_main/InspectorMain.ts | javascriptIsDisabled":{"message":"JavaScript is disabled"},"entrypoints/inspector_main/InspectorMain.ts | main":{"message":"Main"},"entrypoints/inspector_main/InspectorMain.ts | openDedicatedTools":{"message":"Open dedicated DevTools for Node.js"},"entrypoints/inspector_main/InspectorMain.ts | tab":{"message":"Tab"},"entrypoints/inspector_main/OutermostTargetSelector.ts | targetNotSelected":{"message":"Page: Not selected"},"entrypoints/inspector_main/OutermostTargetSelector.ts | targetS":{"message":"Page: {PH1}"},"entrypoints/inspector_main/RenderingOptions.ts | coreWebVitals":{"message":"Core Web Vitals"},"entrypoints/inspector_main/RenderingOptions.ts | disableAvifImageFormat":{"message":"Disable AVIF image format"},"entrypoints/inspector_main/RenderingOptions.ts | disableLocalFonts":{"message":"Disable local fonts"},"entrypoints/inspector_main/RenderingOptions.ts | disablesLocalSourcesInFontface":{"message":"Disables local() sources in @font-face rules. Requires a page reload to apply."},"entrypoints/inspector_main/RenderingOptions.ts | disableWebpImageFormat":{"message":"Disable WebP image format"},"entrypoints/inspector_main/RenderingOptions.ts | emulateAFocusedPage":{"message":"Emulate a focused page"},"entrypoints/inspector_main/RenderingOptions.ts | emulateAutoDarkMode":{"message":"Enable automatic dark mode"},"entrypoints/inspector_main/RenderingOptions.ts | emulatesAFocusedPage":{"message":"Keep page focused. Commonly used for debugging disappearing elements."},"entrypoints/inspector_main/RenderingOptions.ts | emulatesAutoDarkMode":{"message":"Enables automatic dark mode and sets prefers-color-scheme to dark."},"entrypoints/inspector_main/RenderingOptions.ts | forcesCssColorgamutMediaFeature":{"message":"Forces CSS color-gamut media feature"},"entrypoints/inspector_main/RenderingOptions.ts | forcesCssForcedColors":{"message":"Forces CSS forced-colors media feature"},"entrypoints/inspector_main/RenderingOptions.ts | forcesCssPreferscolorschemeMedia":{"message":"Forces CSS prefers-color-scheme media feature"},"entrypoints/inspector_main/RenderingOptions.ts | forcesCssPreferscontrastMedia":{"message":"Forces CSS prefers-contrast media feature"},"entrypoints/inspector_main/RenderingOptions.ts | forcesCssPrefersreduceddataMedia":{"message":"Forces CSS prefers-reduced-data media feature"},"entrypoints/inspector_main/RenderingOptions.ts | forcesCssPrefersreducedmotion":{"message":"Forces CSS prefers-reduced-motion media feature"},"entrypoints/inspector_main/RenderingOptions.ts | forcesCssPrefersreducedtransparencyMedia":{"message":"Forces CSS prefers-reduced-transparency media feature"},"entrypoints/inspector_main/RenderingOptions.ts | forcesMediaTypeForTestingPrint":{"message":"Forces media type for testing print and screen styles"},"entrypoints/inspector_main/RenderingOptions.ts | forcesVisionDeficiencyEmulation":{"message":"Forces vision deficiency emulation"},"entrypoints/inspector_main/RenderingOptions.ts | frameRenderingStats":{"message":"Frame Rendering Stats"},"entrypoints/inspector_main/RenderingOptions.ts | highlightAdFrames":{"message":"Highlight ad frames"},"entrypoints/inspector_main/RenderingOptions.ts | highlightsAreasOfThePageBlueThat":{"message":"Highlights areas of the page (blue) that were shifted. May not be suitable for people prone to photosensitive epilepsy."},"entrypoints/inspector_main/RenderingOptions.ts | highlightsAreasOfThePageGreen":{"message":"Highlights areas of the page (green) that need to be repainted. May not be suitable for people prone to photosensitive epilepsy."},"entrypoints/inspector_main/RenderingOptions.ts | highlightsElementsTealThatCan":{"message":"Highlights elements (teal) that can slow down scrolling, including touch & wheel event handlers and other main-thread scrolling situations."},"entrypoints/inspector_main/RenderingOptions.ts | highlightsFramesRedDetectedToBe":{"message":"Highlights frames (red) detected to be ads."},"entrypoints/inspector_main/RenderingOptions.ts | layerBorders":{"message":"Layer borders"},"entrypoints/inspector_main/RenderingOptions.ts | layoutShiftRegions":{"message":"Layout Shift Regions"},"entrypoints/inspector_main/RenderingOptions.ts | paintFlashing":{"message":"Paint flashing"},"entrypoints/inspector_main/RenderingOptions.ts | plotsFrameThroughputDropped":{"message":"Plots frame throughput, dropped frames distribution, and GPU memory."},"entrypoints/inspector_main/RenderingOptions.ts | requiresAPageReloadToApplyAnd":{"message":"Requires a page reload to apply and disables caching for image requests."},"entrypoints/inspector_main/RenderingOptions.ts | scrollingPerformanceIssues":{"message":"Scrolling performance issues"},"entrypoints/inspector_main/RenderingOptions.ts | showsAnOverlayWithCoreWebVitals":{"message":"Shows an overlay with Core Web Vitals."},"entrypoints/inspector_main/RenderingOptions.ts | showsLayerBordersOrangeoliveAnd":{"message":"Shows layer borders (orange/olive) and tiles (cyan)."},"entrypoints/js_app/js_app.ts | main":{"message":"Main"},"entrypoints/js_app/js_app.ts | networkTitle":{"message":"Scripts"},"entrypoints/js_app/js_app.ts | showNode":{"message":"Show Scripts"},"entrypoints/main/main-meta.ts | auto":{"message":"auto"},"entrypoints/main/main-meta.ts | bottom":{"message":"Bottom"},"entrypoints/main/main-meta.ts | browserLanguage":{"message":"Browser UI language"},"entrypoints/main/main-meta.ts | cancelSearch":{"message":"Cancel search"},"entrypoints/main/main-meta.ts | darkCapital":{"message":"Dark"},"entrypoints/main/main-meta.ts | darkLower":{"message":"dark"},"entrypoints/main/main-meta.ts | devtoolsDefault":{"message":"DevTools (Default)"},"entrypoints/main/main-meta.ts | dockToBottom":{"message":"Dock to bottom"},"entrypoints/main/main-meta.ts | dockToLeft":{"message":"Dock to left"},"entrypoints/main/main-meta.ts | dockToRight":{"message":"Dock to right"},"entrypoints/main/main-meta.ts | enableCtrlShortcutToSwitchPanels":{"message":"Enable Ctrl + 1-9 shortcut to switch panels"},"entrypoints/main/main-meta.ts | enableShortcutToSwitchPanels":{"message":"Enable ⌘ + 1-9 shortcut to switch panels"},"entrypoints/main/main-meta.ts | enableSync":{"message":"Enable settings sync"},"entrypoints/main/main-meta.ts | findNextResult":{"message":"Find next result"},"entrypoints/main/main-meta.ts | findPreviousResult":{"message":"Find previous result"},"entrypoints/main/main-meta.ts | focusDebuggee":{"message":"Focus page"},"entrypoints/main/main-meta.ts | horizontal":{"message":"horizontal"},"entrypoints/main/main-meta.ts | language":{"message":"Language:"},"entrypoints/main/main-meta.ts | left":{"message":"Left"},"entrypoints/main/main-meta.ts | lightCapital":{"message":"Light"},"entrypoints/main/main-meta.ts | lightLower":{"message":"light"},"entrypoints/main/main-meta.ts | nextPanel":{"message":"Next panel"},"entrypoints/main/main-meta.ts | panelLayout":{"message":"Panel layout:"},"entrypoints/main/main-meta.ts | previousPanel":{"message":"Previous panel"},"entrypoints/main/main-meta.ts | reloadDevtools":{"message":"Reload DevTools"},"entrypoints/main/main-meta.ts | resetZoomLevel":{"message":"Reset zoom level"},"entrypoints/main/main-meta.ts | restoreLastDockPosition":{"message":"Restore last dock position"},"entrypoints/main/main-meta.ts | right":{"message":"Right"},"entrypoints/main/main-meta.ts | searchAsYouTypeCommand":{"message":"Enable search as you type"},"entrypoints/main/main-meta.ts | searchAsYouTypeSetting":{"message":"Search as you type"},"entrypoints/main/main-meta.ts | searchInPanel":{"message":"Search in panel"},"entrypoints/main/main-meta.ts | searchOnEnterCommand":{"message":"Disable search as you type (press Enter to search)"},"entrypoints/main/main-meta.ts | switchToDarkTheme":{"message":"Switch to dark theme"},"entrypoints/main/main-meta.ts | switchToLightTheme":{"message":"Switch to light theme"},"entrypoints/main/main-meta.ts | switchToSystemPreferredColor":{"message":"Switch to system preferred color theme"},"entrypoints/main/main-meta.ts | systemPreference":{"message":"System preference"},"entrypoints/main/main-meta.ts | theme":{"message":"Theme:"},"entrypoints/main/main-meta.ts | toggleDrawer":{"message":"Toggle drawer"},"entrypoints/main/main-meta.ts | undocked":{"message":"Undocked"},"entrypoints/main/main-meta.ts | undockIntoSeparateWindow":{"message":"Undock into separate window"},"entrypoints/main/main-meta.ts | useAutomaticPanelLayout":{"message":"Use automatic panel layout"},"entrypoints/main/main-meta.ts | useHorizontalPanelLayout":{"message":"Use horizontal panel layout"},"entrypoints/main/main-meta.ts | useVerticalPanelLayout":{"message":"Use vertical panel layout"},"entrypoints/main/main-meta.ts | vertical":{"message":"vertical"},"entrypoints/main/main-meta.ts | zoomIn":{"message":"Zoom in"},"entrypoints/main/main-meta.ts | zoomOut":{"message":"Zoom out"},"entrypoints/main/MainImpl.ts | customizeAndControlDevtools":{"message":"Customize and control DevTools"},"entrypoints/main/MainImpl.ts | dockSide":{"message":"Dock side"},"entrypoints/main/MainImpl.ts | dockSideNaviation":{"message":"Use left and right arrow keys to navigate the options"},"entrypoints/main/MainImpl.ts | dockToBottom":{"message":"Dock to bottom"},"entrypoints/main/MainImpl.ts | dockToLeft":{"message":"Dock to left"},"entrypoints/main/MainImpl.ts | dockToRight":{"message":"Dock to right"},"entrypoints/main/MainImpl.ts | focusDebuggee":{"message":"Focus page"},"entrypoints/main/MainImpl.ts | help":{"message":"Help"},"entrypoints/main/MainImpl.ts | hideConsoleDrawer":{"message":"Hide console drawer"},"entrypoints/main/MainImpl.ts | moreTools":{"message":"More tools"},"entrypoints/main/MainImpl.ts | placementOfDevtoolsRelativeToThe":{"message":"Placement of DevTools relative to the page. ({PH1} to restore last position)"},"entrypoints/main/MainImpl.ts | showConsoleDrawer":{"message":"Show console drawer"},"entrypoints/main/MainImpl.ts | undockIntoSeparateWindow":{"message":"Undock into separate window"},"entrypoints/node_app/node_app.ts | connection":{"message":"Connection"},"entrypoints/node_app/node_app.ts | networkTitle":{"message":"Node"},"entrypoints/node_app/node_app.ts | node":{"message":"node"},"entrypoints/node_app/node_app.ts | showConnection":{"message":"Show Connection"},"entrypoints/node_app/node_app.ts | showNode":{"message":"Show Node"},"entrypoints/node_app/NodeConnectionsPanel.ts | addConnection":{"message":"Add connection"},"entrypoints/node_app/NodeConnectionsPanel.ts | networkAddressEgLocalhost":{"message":"Network address (e.g. localhost:9229)"},"entrypoints/node_app/NodeConnectionsPanel.ts | noConnectionsSpecified":{"message":"No connections specified"},"entrypoints/node_app/NodeConnectionsPanel.ts | nodejsDebuggingGuide":{"message":"Node.js debugging guide"},"entrypoints/node_app/NodeConnectionsPanel.ts | specifyNetworkEndpointAnd":{"message":"Specify network endpoint and DevTools will connect to it automatically. Read {PH1} to learn more."},"entrypoints/node_app/NodeMain.ts | main":{"message":"Main"},"entrypoints/node_app/NodeMain.ts | nodejsS":{"message":"Node.js: {PH1}"},"entrypoints/worker_app/WorkerMain.ts | main":{"message":"Main"},"generated/Deprecation.ts | AuthorizationCoveredByWildcard":{"message":"Authorization will not be covered by the wildcard symbol (*) in CORS Access-Control-Allow-Headers handling."},"generated/Deprecation.ts | CanRequestURLHTTPContainingNewline":{"message":"Resource requests whose URLs contained both removed whitespace \\(n|r|t) characters and less-than characters (<) are blocked. Please remove newlines and encode less-than characters from places like element attribute values in order to load these resources."},"generated/Deprecation.ts | ChromeLoadTimesConnectionInfo":{"message":"chrome.loadTimes() is deprecated, instead use standardized API: Navigation Timing 2."},"generated/Deprecation.ts | ChromeLoadTimesFirstPaintAfterLoadTime":{"message":"chrome.loadTimes() is deprecated, instead use standardized API: Paint Timing."},"generated/Deprecation.ts | ChromeLoadTimesWasAlternateProtocolAvailable":{"message":"chrome.loadTimes() is deprecated, instead use standardized API: nextHopProtocol in Navigation Timing 2."},"generated/Deprecation.ts | CookieWithTruncatingChar":{"message":"Cookies containing a \\(0|r|n) character will be rejected instead of truncated."},"generated/Deprecation.ts | CrossOriginAccessBasedOnDocumentDomain":{"message":"Relaxing the same-origin policy by setting document.domain is deprecated, and will be disabled by default. This deprecation warning is for a cross-origin access that was enabled by setting document.domain."},"generated/Deprecation.ts | CrossOriginWindowAlert":{"message":"Triggering window.alert from cross origin iframes has been deprecated and will be removed in the future."},"generated/Deprecation.ts | CrossOriginWindowConfirm":{"message":"Triggering window.confirm from cross origin iframes has been deprecated and will be removed in the future."},"generated/Deprecation.ts | CSSCustomStateDeprecatedSyntax":{"message":":--customstatename is deprecated. Please use the :state(customstatename) syntax instead."},"generated/Deprecation.ts | CSSSelectorInternalMediaControlsOverlayCastButton":{"message":"The disableRemotePlayback attribute should be used in order to disable the default Cast integration instead of using -internal-media-controls-overlay-cast-button selector."},"generated/Deprecation.ts | CSSValueAppearanceNonStandard":{"message":"CSS appearance values inner-spin-button, media-slider, media-sliderthumb, media-volume-slider, media-volume-sliderthumb, push-button, searchfield-cancel-button, slider-horizontal, sliderthumb-horizontal, sliderthumb-vertical, square-button are not standardized and will be removed."},"generated/Deprecation.ts | CSSValueAppearanceSliderVertical":{"message":"CSS appearance value slider-vertical is not standardized and will be removed."},"generated/Deprecation.ts | DataUrlInSvgUse":{"message":"Support for data: URLs in SVGUseElement is deprecated and it will be removed in the future."},"generated/Deprecation.ts | DocumentDomainSettingWithoutOriginAgentClusterHeader":{"message":"Relaxing the same-origin policy by setting document.domain is deprecated, and will be disabled by default. To continue using this feature, please opt-out of origin-keyed agent clusters by sending an Origin-Agent-Cluster: ?0 header along with the HTTP response for the document and frames. See https://developer.chrome.com/blog/immutable-document-domain/ for more details."},"generated/Deprecation.ts | DOMMutationEvents":{"message":"DOM Mutation Events, including DOMSubtreeModified, DOMNodeInserted, DOMNodeRemoved, DOMNodeRemovedFromDocument, DOMNodeInsertedIntoDocument, and DOMCharacterDataModified are deprecated (https://w3c.github.io/uievents/#legacy-event-types) and will be removed. Please use MutationObserver instead."},"generated/Deprecation.ts | GeolocationInsecureOrigin":{"message":"getCurrentPosition() and watchPosition() no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details."},"generated/Deprecation.ts | GeolocationInsecureOriginDeprecatedNotRemoved":{"message":"getCurrentPosition() and watchPosition() are deprecated on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details."},"generated/Deprecation.ts | GetUserMediaInsecureOrigin":{"message":"getUserMedia() no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details."},"generated/Deprecation.ts | HostCandidateAttributeGetter":{"message":"RTCPeerConnectionIceErrorEvent.hostCandidate is deprecated. Please use RTCPeerConnectionIceErrorEvent.address or RTCPeerConnectionIceErrorEvent.port instead."},"generated/Deprecation.ts | IdentityInCanMakePaymentEvent":{"message":"The merchant origin and arbitrary data from the canmakepayment service worker event are deprecated and will be removed: topOrigin, paymentRequestOrigin, methodData, modifiers."},"generated/Deprecation.ts | InsecurePrivateNetworkSubresourceRequest":{"message":"The website requested a subresource from a network that it could only access because of its users' privileged network position. These requests expose non-public devices and servers to the internet, increasing the risk of a cross-site request forgery (CSRF) attack, and/or information leakage. To mitigate these risks, Chrome deprecates requests to non-public subresources when initiated from non-secure contexts, and will start blocking them."},"generated/Deprecation.ts | InterestGroupDailyUpdateUrl":{"message":"The dailyUpdateUrl field of InterestGroups passed to joinAdInterestGroup() has been renamed to updateUrl, to more accurately reflect its behavior."},"generated/Deprecation.ts | LocalCSSFileExtensionRejected":{"message":"CSS cannot be loaded from file: URLs unless they end in a .css file extension."},"generated/Deprecation.ts | MediaSourceAbortRemove":{"message":"Using SourceBuffer.abort() to abort remove()'s asynchronous range removal is deprecated due to specification change. Support will be removed in the future. You should listen to the updateend event instead. abort() is intended to only abort an asynchronous media append or reset parser state."},"generated/Deprecation.ts | MediaSourceDurationTruncatingBuffered":{"message":"Setting MediaSource.duration below the highest presentation timestamp of any buffered coded frames is deprecated due to specification change. Support for implicit removal of truncated buffered media will be removed in the future. You should instead perform explicit remove(newDuration, oldDuration) on all sourceBuffers, where newDuration < oldDuration."},"generated/Deprecation.ts | NoSysexWebMIDIWithoutPermission":{"message":"Web MIDI will ask a permission to use even if the sysex is not specified in the MIDIOptions."},"generated/Deprecation.ts | NotificationInsecureOrigin":{"message":"The Notification API may no longer be used from insecure origins. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details."},"generated/Deprecation.ts | NotificationPermissionRequestedIframe":{"message":"Permission for the Notification API may no longer be requested from a cross-origin iframe. You should consider requesting permission from a top-level frame or opening a new window instead."},"generated/Deprecation.ts | ObsoleteCreateImageBitmapImageOrientationNone":{"message":"Option imageOrientation: 'none' in createImageBitmap is deprecated. Please use createImageBitmap with option {imageOrientation: 'from-image'} instead."},"generated/Deprecation.ts | ObsoleteWebRtcCipherSuite":{"message":"Your partner is negotiating an obsolete (D)TLS version. Please check with your partner to have this fixed."},"generated/Deprecation.ts | OverflowVisibleOnReplacedElement":{"message":"Specifying overflow: visible on img, video and canvas tags may cause them to produce visual content outside of the element bounds. See https://github.com/WICG/shared-element-transitions/blob/main/debugging_overflow_on_images.md."},"generated/Deprecation.ts | PaymentInstruments":{"message":"paymentManager.instruments is deprecated. Please use just-in-time install for payment handlers instead."},"generated/Deprecation.ts | PaymentRequestCSPViolation":{"message":"Your PaymentRequest call bypassed Content-Security-Policy (CSP) connect-src directive. This bypass is deprecated. Please add the payment method identifier from the PaymentRequest API (in supportedMethods field) to your CSP connect-src directive."},"generated/Deprecation.ts | PersistentQuotaType":{"message":"StorageType.persistent is deprecated. Please use standardized navigator.storage instead."},"generated/Deprecation.ts | PictureSourceSrc":{"message":"