diff --git a/static/panels.js b/static/panels.js
index 7c399c8e..07f102aa 100644
--- a/static/panels.js
+++ b/static/panels.js
@@ -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 '
No extension-owned browser storage permission.
';
@@ -8209,6 +8208,7 @@ function _extensionSettingsControls(entry){
if(!settingsApi||!settingsApi.trusted){
return 'Reload WebUI after enabling or installing this extension to edit browser-local settings.
';
}
+ 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('')
diff --git a/tests/test_extensions_settings_panel.py b/tests/test_extensions_settings_panel.py
index fa23c1fa..bc2094a9 100644
--- a/tests/test_extensions_settings_panel.py
+++ b/tests/test_extensions_settings_panel.py
@@ -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
diff --git a/tests/test_issue4746_extension_gallery.py b/tests/test_issue4746_extension_gallery.py
index 5d2c2a2b..ce028983 100644
--- a/tests/test_issue4746_extension_gallery.py
+++ b/tests/test_issue4746_extension_gallery.py
@@ -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