diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-05-02 13:00:46 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-02 13:00:46 -0400 |
commit | c4ea9321dcffbda9004461a7b0027cf5c893f3c0 (patch) | |
tree | d42693165e657bd038d037ac65d61dbc99d59dcf /ext/mixed/js | |
parent | 51032d1eca04820a80f34dfd511a927c55975c1f (diff) |
Validate document nodes before use (#493)
* Validate document.body before use in loadScripts
This also fixes an issue where reject wasn't being passed to loadScriptSentinel.
* Validate document nodes before use in _getSiteColor
* Validate document.body before use in _getViewport
* Validate document.body before use in setContentScale
* Validate document.body before use in docImposterCreate
Diffstat (limited to 'ext/mixed/js')
-rw-r--r-- | ext/mixed/js/dynamic-loader.js | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/ext/mixed/js/dynamic-loader.js b/ext/mixed/js/dynamic-loader.js index 29672d36..51b6821b 100644 --- a/ext/mixed/js/dynamic-loader.js +++ b/ext/mixed/js/dynamic-loader.js @@ -31,8 +31,13 @@ const dynamicLoader = (() => { } function loadScripts(urls) { - return new Promise((resolve) => { + return new Promise((resolve, reject) => { const parent = document.body; + if (parent === null) { + reject(new Error('Missing body')); + return; + } + for (const url of urls) { const node = parent.querySelector(`script[src='${escapeCSSAttribute(url)}']`); if (node !== null) { continue; } @@ -43,12 +48,11 @@ const dynamicLoader = (() => { parent.appendChild(script); } - loadScriptSentinel(resolve); + loadScriptSentinel(parent, resolve, reject); }); } - function loadScriptSentinel(resolve, reject) { - const parent = document.body; + function loadScriptSentinel(parent, resolve, reject) { const script = document.createElement('script'); const sentinelEventName = 'dynamicLoaderSentinel'; |