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