diff options
Diffstat (limited to 'ext/bg/js/clipboard-reader.js')
| -rw-r--r-- | ext/bg/js/clipboard-reader.js | 23 | 
1 files changed, 15 insertions, 8 deletions
| diff --git a/ext/bg/js/clipboard-reader.js b/ext/bg/js/clipboard-reader.js index 66cf0c25..d8c80c21 100644 --- a/ext/bg/js/clipboard-reader.js +++ b/ext/bg/js/clipboard-reader.js @@ -25,13 +25,14 @@ class ClipboardReader {       * @param pasteTargetSelector The selector for the paste target element.       * @param imagePasteTargetSelector The selector for the image paste target element.       */ -    constructor({document=null, pasteTargetSelector=null, imagePasteTargetSelector=null}) { +    constructor({document=null, pasteTargetSelector=null, imagePasteTargetSelector=null, mediaUtility=null}) {          this._document = document;          this._browser = null;          this._pasteTarget = null;          this._pasteTargetSelector = pasteTargetSelector;          this._imagePasteTarget = null;          this._imagePasteTargetSelector = imagePasteTargetSelector; +        this._mediaUtility = mediaUtility;      }      /** @@ -99,14 +100,20 @@ class ClipboardReader {       */      async getImage() {          // See browser-specific notes in getText -        if (this._isFirefox()) { -            if (typeof navigator.clipboard !== 'undefined' && typeof navigator.clipboard.read === 'function') { -                // This function is behind the flag: dom.events.asyncClipboard.dataTransfer -                const {files} = await navigator.clipboard.read(); -                if (files.length === 0) { return null; } -                const result = await this._readFileAsDataURL(files[0]); -                return result; +        if ( +            this._isFirefox() && +            this._mediaUtility !== null && +            typeof navigator.clipboard !== 'undefined' && +            typeof navigator.clipboard.read === 'function' +        ) { +            // This function is behind the Firefox flag: dom.events.asyncClipboard.dataTransfer +            const {files} = await navigator.clipboard.read(); +            for (const file of files) { +                if (this._mediaUtility.getFileExtensionFromImageMediaType(file.type) !== null) { +                    return await this._readFileAsDataURL(file); +                }              } +            return null;          }          const document = this._document; |