diff options
| author | Alex Yatskov <alex@foosoft.net> | 2019-10-05 10:14:07 -0700 | 
|---|---|---|
| committer | Alex Yatskov <alex@foosoft.net> | 2019-10-05 10:14:07 -0700 | 
| commit | 7f5f3951f057b84864f7f37825804f9049ddab10 (patch) | |
| tree | 1a724bbd4d8cf2b053f3e2b99b46ba41008508b8 /ext/mixed/js/extension.js | |
| parent | f4b6527ed6ed1f0f4f5a63b94766b20f3b90e6ec (diff) | |
| parent | 46ab36180f486a19332c538401b4db12ffe1bda1 (diff) | |
Merge branch 'master' into testing
Diffstat (limited to 'ext/mixed/js/extension.js')
| -rw-r--r-- | ext/mixed/js/extension.js | 15 | 
1 files changed, 13 insertions, 2 deletions
| diff --git a/ext/mixed/js/extension.js b/ext/mixed/js/extension.js index d7085e5b..5c803132 100644 --- a/ext/mixed/js/extension.js +++ b/ext/mixed/js/extension.js @@ -17,13 +17,24 @@   */ +// toIterable is required on Edge for cross-window origin objects.  function toIterable(value) {      if (typeof Symbol !== 'undefined' && typeof value[Symbol.iterator] !== 'undefined') {          return value;      } -    const array = JSON.parse(JSON.stringify(value)); -    return Array.isArray(array) ? array : []; +    if (value !== null && typeof value === 'object') { +        const length = value.length; +        if (typeof length === 'number' && Number.isFinite(length)) { +            const array = []; +            for (let i = 0; i < length; ++i) { +                array.push(value[i]); +            } +            return array; +        } +    } + +    throw 'Could not convert to iterable';  }  function extensionHasChrome() { |