fix(extensions): render installed controls from trusted state (#5094)

This commit is contained in:
Rod Boev 2026-06-28 18:15:36 -04:00
parent 938f721b16
commit 46d91a7c61
3 changed files with 20 additions and 2 deletions

View file

@ -8200,7 +8200,6 @@ function _extensionSettingsFieldHtml(field,value){
function _extensionSettingsControls(entry){
const id=(entry&&entry.id)||'';
const schema=Array.isArray(entry&&entry.settings_schema)?entry.settings_schema:[];
const storageOwned=!!(entry&&entry.storage_owned);
if(!storageOwned){
return '<div class="extension-settings-empty">No extension-owned browser storage permission.</div>';
@ -8209,6 +8208,7 @@ function _extensionSettingsControls(entry){
if(!settingsApi||!settingsApi.trusted){
return '<div class="extension-settings-empty">Reload WebUI after enabling or installing this extension to edit browser-local settings.</div>';
}
const schema=Array.isArray(settingsApi&&settingsApi.schema)?settingsApi.schema:[];
const values=settingsApi?settingsApi.values:{};
const fields=schema.length
? schema.map(field=>_extensionSettingsFieldHtml(field,values[field.key])).join('')

View file

@ -230,14 +230,16 @@ def test_extensions_installed_settings_route_through_shared_accessor():
bind_block = _between("function _bindExtensionSettingsButtons", "async function loadExtensionsPanel")
gallery_block = _between("function _renderExtensionsGallery", "function _bindExtensionGalleryButtons")
assert "entry&&entry.settings_schema" in settings_block
assert "entry&&entry.storage_owned" in settings_block
assert "window.HermesExtensionSettings.settingsForExtension(id)" in settings_block
assert "settingsApi&&settingsApi.schema" in settings_block
assert "settingsApi||!settingsApi.trusted" in settings_block
assert "data-extension-settings-save" in settings_block
assert "data-extension-settings-reset" in settings_block
assert "data-extension-storage-clear" in settings_block
assert "Browser-local extension settings" in settings_block
assert "Do not store secrets here" in settings_block
assert "Reload WebUI after enabling or installing this extension to edit browser-local settings." in settings_block
assert "_extensionSettingsControls(entry)" in installed_block
assert "window.HermesExtensionSettings.settingsForExtension(id).reset()" in bind_block
assert "window.HermesExtensionSettings.storageForExtension(id).clear()" in bind_block

View file

@ -133,6 +133,14 @@ def test_gallery_installed_extension_becomes_runtime_manifest(monkeypatch, tmp_p
"enabled": True,
"script_urls": ["/extensions/my-ext/assets/app.js"],
"stylesheet_urls": ["/extensions/my-ext/assets/app.css"],
"extensions": [
{
"id": "my-ext",
"name": "My Extension",
"storage_owned": False,
"settings_schema": [],
}
],
}
status = ext_mod.get_extension_status()
assert status["manifest"]["status"] == "gallery_installed"
@ -203,6 +211,14 @@ def test_install_bootstraps_managed_default_root_without_env(monkeypatch, tmp_pa
"enabled": True,
"script_urls": ["/extensions/plug-ext/app.js"],
"stylesheet_urls": [],
"extensions": [
{
"id": "plug-ext",
"name": "Plug And Play",
"storage_owned": False,
"settings_schema": [],
}
],
}
status = ext_mod.get_extension_status()
assert status["enabled"] is True