diff options
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/bg/js/util.js | 13 | 
1 files changed, 12 insertions, 1 deletions
diff --git a/ext/bg/js/util.js b/ext/bg/js/util.js index 124438ed..914164b1 100644 --- a/ext/bg/js/util.js +++ b/ext/bg/js/util.js @@ -111,10 +111,17 @@ function splitField(field) {  function loadJson(url) {      return new Promise((resolve, reject) => {          const xhr = new XMLHttpRequest(); -        xhr.addEventListener('load', () => resolve(JSON.parse(xhr.responseText))); +        xhr.addEventListener('load', () => resolve(xhr.responseText));          xhr.addEventListener('error', () => reject('failed to execute network request'));          xhr.open('GET', url);          xhr.send(); +    }).then(responseText => { +        try { +            return JSON.parse(responseText); +        } +        catch (e) { +            return Promise.reject('invalid JSON response'); +        }      });  } @@ -125,6 +132,10 @@ function loadJsonInt(url) {  function importJsonDb(indexUrl, indexLoaded, termsLoaded, kanjiLoaded) {      const indexDir = indexUrl.slice(0, indexUrl.lastIndexOf('/'));      return loadJson(indexUrl).then(index => { +        if (!index.title || !index.version) { +            return Promise.reject('unrecognized dictionary format'); +        } +          if (indexLoaded !== null) {              return indexLoaded(                  index.title,  |