diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-11-21 15:08:39 -0500 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-21 15:08:39 -0500 | 
| commit | 06e70c1cd8a6e23b54ba9081caf82902820ceccd (patch) | |
| tree | b4b05d6a878285bd9c43962e33716ce7aadead55 /ext/js | |
| parent | 36967b18397dc7f6414d81584ea37f364195b164 (diff) | |
FrameOffsetForwarder fixes (#2017)
* Fix handling of null iframe rect
* Handle errors inside of getOffset
Diffstat (limited to 'ext/js')
| -rw-r--r-- | ext/js/app/popup-proxy.js | 7 | ||||
| -rw-r--r-- | ext/js/comm/frame-offset-forwarder.js | 33 | 
2 files changed, 20 insertions, 20 deletions
| diff --git a/ext/js/app/popup-proxy.js b/ext/js/app/popup-proxy.js index 85014c47..3e95ff2a 100644 --- a/ext/js/app/popup-proxy.js +++ b/ext/js/app/popup-proxy.js @@ -316,12 +316,7 @@ class PopupProxy extends EventDispatcher {      async _updateFrameOffsetInner(now) {          this._frameOffsetPromise = this._frameOffsetForwarder.getOffset();          try { -            let offset = null; -            try { -                offset = await this._frameOffsetPromise; -            } catch (e) { -                // NOP -            } +            const offset = await this._frameOffsetPromise;              this._frameOffset = offset !== null ? offset : [0, 0];              if (offset === null) {                  this.trigger('offsetNotFound'); diff --git a/ext/js/comm/frame-offset-forwarder.js b/ext/js/comm/frame-offset-forwarder.js index dd064a64..d8e3fa4f 100644 --- a/ext/js/comm/frame-offset-forwarder.js +++ b/ext/js/comm/frame-offset-forwarder.js @@ -37,24 +37,29 @@ class FrameOffsetForwarder {              return [0, 0];          } -        const ancestorFrameIds = await this._frameAncestryHandler.getFrameAncestryInfo(); +        try { +            const ancestorFrameIds = await this._frameAncestryHandler.getFrameAncestryInfo(); -        let childFrameId = this._frameId; -        const promises = []; -        for (const frameId of ancestorFrameIds) { -            promises.push(yomichan.crossFrame.invoke(frameId, 'FrameOffsetForwarder.getChildFrameRect', {frameId: childFrameId})); -            childFrameId = frameId; -        } +            let childFrameId = this._frameId; +            const promises = []; +            for (const frameId of ancestorFrameIds) { +                promises.push(yomichan.crossFrame.invoke(frameId, 'FrameOffsetForwarder.getChildFrameRect', {frameId: childFrameId})); +                childFrameId = frameId; +            } -        const results = await Promise.all(promises); +            const results = await Promise.all(promises); -        let xOffset = 0; -        let yOffset = 0; -        for (const {x, y} of results) { -            xOffset += x; -            yOffset += y; +            let x = 0; +            let y = 0; +            for (const result of results) { +                if (result === null) { return null; } +                x += result.x; +                y += result.y; +            } +            return [x, y]; +        } catch (e) { +            return null;          } -        return [xOffset, yOffset];      }      // Private |