Browse Source

Check that `this.baseUrl` is defined before attempting to fetch any data in `DOMCMapReaderFactory`/`NodeCMapReaderFactory`

Jonas Jenwald 8 years ago
parent
commit
a159c4f357
  1. 4
      src/display/dom_utils.js
  2. 40
      test/unit/cmap_spec.js
  3. 4
      test/unit/test_utils.js

4
src/display/dom_utils.js

@ -68,6 +68,10 @@ class DOMCMapReaderFactory { @@ -68,6 +68,10 @@ class DOMCMapReaderFactory {
}
fetch({ name, }) {
if (!this.baseUrl) {
return Promise.reject(new Error('CMap baseUrl must be specified, ' +
'see "PDFJS.cMapUrl" (and also "PDFJS.cMapPacked").'));
}
if (!name) {
return Promise.reject(new Error('CMap name must be specified.'));
}

40
test/unit/cmap_spec.js

@ -281,8 +281,44 @@ describe('cmap', function() { @@ -281,8 +281,44 @@ describe('cmap', function() {
done.fail('No CMap should be loaded');
}, function (reason) {
expect(reason instanceof Error).toEqual(true);
expect(reason.message).toEqual(
'Unable to load CMap at: nullAdobe-Japan1-1');
expect(reason.message).toEqual('CMap baseUrl must be specified, ' +
'see "PDFJS.cMapUrl" (and also "PDFJS.cMapPacked").');
done();
});
});
it('attempts to load a built-in CMap with inconsistent API parameters',
function(done) {
function tmpFetchBuiltInCMap(name) {
let CMapReaderFactory;
if (isNodeJS()) {
CMapReaderFactory = new NodeCMapReaderFactory({
baseUrl: cMapUrl.node,
isCompressed: false,
});
} else {
CMapReaderFactory = new DOMCMapReaderFactory({
baseUrl: cMapUrl.dom,
isCompressed: false,
});
}
return CMapReaderFactory.fetch({
name,
});
}
let cmapPromise = CMapFactory.create({
encoding: Name.get('Adobe-Japan1-1'),
fetchBuiltInCMap: tmpFetchBuiltInCMap,
useCMap: null,
});
cmapPromise.then(function () {
done.fail('No CMap should be loaded');
}, function (reason) {
expect(reason instanceof Error).toEqual(true);
let message = reason.message;
expect(message.startsWith('Unable to load CMap at: ')).toEqual(true);
expect(message.endsWith('/external/bcmaps/Adobe-Japan1-1')).toEqual(true);
done();
});
});

4
test/unit/test_utils.js

@ -51,6 +51,10 @@ class NodeCMapReaderFactory { @@ -51,6 +51,10 @@ class NodeCMapReaderFactory {
}
fetch({ name, }) {
if (!this.baseUrl) {
return Promise.reject(new Error('CMap baseUrl must be specified, ' +
'see "PDFJS.cMapUrl" (and also "PDFJS.cMapPacked").'));
}
if (!name) {
return Promise.reject(new Error('CMap name must be specified.'));
}

Loading…
Cancel
Save