diff options
-rw-r--r-- | ext/js/app/popup.js | 5 | ||||
-rw-r--r-- | ext/js/display/display.js | 3 | ||||
-rw-r--r-- | ext/js/pages/settings/popup-preview-controller.js | 8 |
3 files changed, 15 insertions, 1 deletions
diff --git a/ext/js/app/popup.js b/ext/js/app/popup.js index 75e2bd84..50e2fca9 100644 --- a/ext/js/app/popup.js +++ b/ext/js/app/popup.js @@ -24,6 +24,7 @@ import {ExtensionError} from '../core/extension-error.js'; import {deepEqual} from '../core/utilities.js'; import {addFullscreenChangeEventListener, computeZoomScale, convertRectZoomCoordinates, getFullscreenElement} from '../dom/document-util.js'; import {loadStyle} from '../dom/style-util.js'; +import {checkPopupPreviewURL} from '../pages/settings/popup-preview-controller.js'; import {ThemeController} from './theme-controller.js'; /** @@ -1014,6 +1015,10 @@ export class Popup extends EventDispatcher { const {general} = options; this._themeController.theme = general.popupTheme; this._themeController.outerTheme = general.popupOuterTheme; + this._themeController.siteOverride = checkPopupPreviewURL(optionsContext.url); + if (this._themeController.outerTheme === 'site' && this._themeController.siteOverride && ['dark', 'light'].includes(this._themeController.theme)) { + this._themeController.outerTheme = this._themeController.theme; + } this._initialWidth = general.popupWidth; this._initialHeight = general.popupHeight; this._horizontalOffset = general.popupHorizontalOffset; diff --git a/ext/js/display/display.js b/ext/js/display/display.js index 33ab44e4..6b3838e5 100644 --- a/ext/js/display/display.js +++ b/ext/js/display/display.js @@ -33,6 +33,7 @@ import {ScrollElement} from '../dom/scroll-element.js'; import {TextSourceGenerator} from '../dom/text-source-generator.js'; import {HotkeyHelpController} from '../input/hotkey-help-controller.js'; import {TextScanner} from '../language/text-scanner.js'; +import {checkPopupPreviewURL} from '../pages/settings/popup-preview-controller.js'; import {DisplayContentManager} from './display-content-manager.js'; import {DisplayGenerator} from './display-generator.js'; import {DisplayHistory} from './display-history.js'; @@ -1161,7 +1162,7 @@ export class Display extends EventDispatcher { const pageTheme = historyState?.pageTheme; this._themeController.siteTheme = pageTheme ?? null; - if (historyState?.url?.includes('popup-preview.html')) { + if (checkPopupPreviewURL(historyState?.url)) { pageType = 'popupPreview'; } } catch (e) { diff --git a/ext/js/pages/settings/popup-preview-controller.js b/ext/js/pages/settings/popup-preview-controller.js index 4a09d169..da163a6a 100644 --- a/ext/js/pages/settings/popup-preview-controller.js +++ b/ext/js/pages/settings/popup-preview-controller.js @@ -112,3 +112,11 @@ export class PopupPreviewController { this._frame.contentWindow.postMessage({action, params}, this._targetOrigin); } } + +/** + * @param {string | undefined} url + * @returns {boolean} + */ +export function checkPopupPreviewURL(url) { + return !!(url && url.includes('popup-preview.html') && !['http:', 'https:', 'ws:', 'wss:', 'ftp:', 'data:', 'file:'].includes(new URL(url).protocol)); +} |