Separate `aidaAvailability` section in hostConfig
Whether AIDA is available or not affects more than one DevTools
feature. Instead of repeating that info in multiple objects within `hostConfig`, move it to its own section instead.
This CL should land first, before landing the Chromium CL
(https://crrev.com/c/5783303) which updates the `hostConfig`'s shape
there. `hostConfigOldToNew()` in `devtools_compatibility.js` ensures
that DevTools is still able to handle receiving the old shape in the
meantime.
In addition, when remote debugging an older version of Chrome, a
DevTools version matching the remove Chrome is being executed. In
order to not break this older DevTools version, `hostConfigNewToOld()`
is added to convert the new `hostConfig` shape back to the old shape,
which the old DevTools will be able to handle.
Disable tests CL: https://crrev.com/c/5782922
Re-enable tests CL: https://crrev.com/c/5782872
Chromium CL: https://crrev.com/c/5783303
Doc: go/chrome-devtools:genai-availability (non-public)
Bug: b/348136212
Change-Id: I746330bd009bc03f06a5d2cdb40a8830fb200af3
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/5782756
Reviewed-by: Ergün Erdoğmuş <[email protected]>
Reviewed-by: Alex Rudenko <[email protected]>
Commit-Queue: Wolfgang Beyer <[email protected]>
diff --git a/front_end/devtools_compatibility.js b/front_end/devtools_compatibility.js
index 8a44f34..6061e28 100644
--- a/front_end/devtools_compatibility.js
+++ b/front_end/devtools_compatibility.js
@@ -641,7 +641,85 @@
* @param {function(Object<string, Object<string, string|boolean>>):void} callback
*/
getHostConfig(callback) {
- DevToolsAPI.sendMessageToEmbedder('getHostConfig', [], /** @type {function(?Object)} */ (callback));
+ DevToolsAPI.sendMessageToEmbedder('getHostConfig', [], hostConfig => {
+ const majorVersion = getRemoteMajorVersion();
+ if (majorVersion && majorVersion < 129 && hostConfig?.aidaAvailability) {
+ return callback(this.hostConfigNewToOld(hostConfig));
+ }
+ // TODO(crbug.com/348136212): Remove as soon as Chromium sends the new shape.
+ if (hostConfig && !hostConfig.aidaAvailability && hostConfig.devToolsConsoleInsights) {
+ return callback(this.hostConfigOldToNew(hostConfig));
+ }
+ return callback(hostConfig);
+ });
+ }
+
+ // TODO(crbug.com/348136212): Remove as soon as Chromium sends the new shape.
+ /**
+ * @param {Object<string, Object<string, string|boolean>>} oldConfig
+ */
+ hostConfigOldToNew(oldConfig) {
+ const aidaAvailability = {
+ // Not a perfect match, but good enough temporarily.
+ enabled: oldConfig.devToolsConsoleInsights?.enabled ?? false,
+ blockedByAge: oldConfig.devToolsConsoleInsights?.blockedByAge ?? true,
+ blockedByEnterprisePolicy: oldConfig.devToolsConsoleInsights?.blockedByEnterprisePolicy ?? true,
+ blockedByGeo: oldConfig.devToolsConsoleInsights?.blockedByGeo ?? true,
+ disallowLogging: oldConfig.devToolsConsoleInsights?.disallowLogging ?? true,
+ };
+ const devToolsConsoleInsights = {
+ enabled: oldConfig.devToolsConsoleInsights?.enabled ?? false,
+ modelId: oldConfig.devToolsConsoleInsights?.aidaModelId ?? '',
+ temperature: oldConfig.devToolsConsoleInsights?.aidaTemperature ?? 0,
+ };
+ const devToolsFreestylerDogfood = {
+ enabled: oldConfig.devToolsFreestylerDogfood?.enabled ?? false,
+ modelId: oldConfig.devToolsFreestylerDogfood?.aidaModelId ?? '',
+ temperature: oldConfig.devToolsFreestylerDogfood?.aidaTemperature ?? 0,
+ };
+ const devToolsExplainThisResourceDogfood = {
+ enabled: oldConfig.devToolsExplainThisResourceDogfood?.enabled ?? false,
+ modelId: oldConfig.devToolsExplainThisResourceDogfood?.aidaModelId ?? '',
+ temperature: oldConfig.devToolsExplainThisResourceDogfood?.aidaTemperature ?? 0,
+ };
+ return {
+ ...oldConfig,
+ aidaAvailability,
+ devToolsConsoleInsights,
+ devToolsExplainThisResourceDogfood,
+ devToolsFreestylerDogfood,
+ };
+ }
+
+ /**
+ * @param {Object<string, Object<string, string|boolean>>} newConfig
+ */
+ hostConfigNewToOld(newConfig) {
+ const devToolsConsoleInsights = {
+ enabled: (newConfig.devToolsConsoleInsights?.enabled && newConfig.aidaAvailability?.enabled) ?? false,
+ aidaModelId: newConfig.devToolsConsoleInsights?.modelId ?? '',
+ aidaTemperature: newConfig.devToolsConsoleInsights?.temperature ?? 0,
+ blockedByAge: newConfig.aidaAvailability?.blockedByAge ?? true,
+ blockedByEnterprisePolicy: newConfig.aidaAvailability?.blockedByEnterprisePolicy ?? true,
+ blockedByGeo: newConfig.aidaAvailability?.blockedByGeo ?? true,
+ blockedByRollout: false,
+ disallowLogging: newConfig.aidaAvailability?.disallowLogging ?? true,
+ optIn: false,
+ };
+ const devToolsFreestylerDogfood = {
+ enabled: (newConfig.devToolsFreestylerDogfood?.enabled && newConfig.aidaAvailability?.enabled) ?? false,
+ aidaModelId: newConfig.devToolsFreestylerDogfood?.modelId ?? '',
+ aidaTemperature: newConfig.devToolsFreestylerDogfood?.temperature ?? 0,
+ blockedByAge: newConfig.aidaAvailability?.blockedByAge ?? true,
+ blockedByEnterprisePolicy: newConfig.aidaAvailability?.blockedByEnterprisePolicy ?? true,
+ blockedByGeo: newConfig.aidaAvailability?.blockedByGeo ?? true,
+ };
+ return {
+ devToolsConsoleInsights,
+ devToolsFreestylerDogfood,
+ devToolsVeLogging: newConfig.devToolsVeLogging,
+ isOffTheRecord: newConfig.isOffTheRecord,
+ };
}
/**