diff options
| -rw-r--r-- | ext/bg/data/options-schema.json | 7 | ||||
| -rw-r--r-- | ext/bg/js/options.js | 3 | ||||
| -rw-r--r-- | ext/bg/settings.html | 4 | ||||
| -rw-r--r-- | ext/fg/js/popup.js | 8 | 
4 files changed, 19 insertions, 3 deletions
| diff --git a/ext/bg/data/options-schema.json b/ext/bg/data/options-schema.json index 656da989..0379fa75 100644 --- a/ext/bg/data/options-schema.json +++ b/ext/bg/data/options-schema.json @@ -109,7 +109,8 @@                                      "showPitchAccentDownstepNotation",                                      "showPitchAccentPositionNotation",                                      "showPitchAccentGraph", -                                    "showIframePopupsInRootFrame" +                                    "showIframePopupsInRootFrame", +                                    "unsecurePopupFrameUrl"                                  ],                                  "properties": {                                      "enable": { @@ -247,6 +248,10 @@                                      "showIframePopupsInRootFrame": {                                          "type": "boolean",                                          "default": false +                                    }, +                                    "unsecurePopupFrameUrl": { +                                        "type": "boolean", +                                        "default": false                                      }                                  }                              }, diff --git a/ext/bg/js/options.js b/ext/bg/js/options.js index 35fdde82..97368a0b 100644 --- a/ext/bg/js/options.js +++ b/ext/bg/js/options.js @@ -176,7 +176,8 @@ function profileOptionsCreateDefaults() {              showPitchAccentDownstepNotation: true,              showPitchAccentPositionNotation: true,              showPitchAccentGraph: false, -            showIframePopupsInRootFrame: false +            showIframePopupsInRootFrame: false, +            unsecurePopupFrameUrl: false          },          audio: { diff --git a/ext/bg/settings.html b/ext/bg/settings.html index a530534c..118a13b9 100644 --- a/ext/bg/settings.html +++ b/ext/bg/settings.html @@ -183,6 +183,10 @@                  </div>                  <div class="checkbox options-advanced"> +                    <label><input type="checkbox" id="show-iframe-popups-in-root-frame" data-setting="general.unsecurePopupFrameUrl"> Use unsecure popup frame URL</label> +                </div> + +                <div class="checkbox options-advanced">                      <label><input type="checkbox" id="show-debug-info" data-setting="general.debugInfo" data-transform-pre="setDocumentAttribute" data-transform-post="setDocumentAttribute" data-document-attribute="data-options-general-debug-info"> Show debug information</label>                  </div> diff --git a/ext/fg/js/popup.js b/ext/fg/js/popup.js index a8188143..af24989f 100644 --- a/ext/fg/js/popup.js +++ b/ext/fg/js/popup.js @@ -328,12 +328,18 @@ class Popup {      async _createInjectPromise() {          this._injectStyles(); +        const unsecurePopupFrameUrl = (this._options !== null && this._options.general.unsecurePopupFrameUrl);          const {secret, token} = await this._initializeFrame(this._frame, this._targetOrigin, this._frameId, (frame) => {              frame.removeAttribute('src');              frame.removeAttribute('srcdoc');              this._observeFullscreen(true);              this._onFullscreenChanged(); -            frame.contentDocument.location.href = chrome.runtime.getURL('/fg/float.html'); +            const url = chrome.runtime.getURL('/fg/float.html'); +            if (unsecurePopupFrameUrl) { +                frame.setAttribute('src', url); +            } else { +                frame.contentDocument.location.href = url; +            }          });          this._frameSecret = secret;          this._frameToken = token; |