Merge pull request #9401 from brendandahl/svg-fail
Make the test framework more resilient to errors.
This commit is contained in:
commit
4f5fb78237
@ -44,7 +44,7 @@ var rasterizeTextLayer = (function rasterizeTextLayerClosure() {
|
|||||||
|
|
||||||
function rasterizeTextLayer(ctx, viewport, textContent,
|
function rasterizeTextLayer(ctx, viewport, textContent,
|
||||||
enhanceTextSelection) {
|
enhanceTextSelection) {
|
||||||
return new Promise(function (resolve) {
|
return new Promise(function (resolve, reject) {
|
||||||
// Building SVG with size of the viewport.
|
// Building SVG with size of the viewport.
|
||||||
var svg = document.createElementNS(SVG_NS, 'svg:svg');
|
var svg = document.createElementNS(SVG_NS, 'svg:svg');
|
||||||
svg.setAttribute('width', viewport.width + 'px');
|
svg.setAttribute('width', viewport.width + 'px');
|
||||||
@ -86,6 +86,9 @@ var rasterizeTextLayer = (function rasterizeTextLayerClosure() {
|
|||||||
ctx.drawImage(img, 0, 0);
|
ctx.drawImage(img, 0, 0);
|
||||||
resolve();
|
resolve();
|
||||||
};
|
};
|
||||||
|
img.onerror = function(e) {
|
||||||
|
reject(new Error('Error rasterizing text layer ' + e));
|
||||||
|
};
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -127,12 +130,15 @@ var rasterizeAnnotationLayer = (function rasterizeAnnotationLayerClosure() {
|
|||||||
|
|
||||||
// Load the style files and cache the results.
|
// Load the style files and cache the results.
|
||||||
for (let key in styles) {
|
for (let key in styles) {
|
||||||
styles[key].promise = new Promise(function(resolve) {
|
styles[key].promise = new Promise(function(resolve, reject) {
|
||||||
let xhr = new XMLHttpRequest();
|
let xhr = new XMLHttpRequest();
|
||||||
xhr.open('GET', styles[key].file);
|
xhr.open('GET', styles[key].file);
|
||||||
xhr.onload = function() {
|
xhr.onload = function() {
|
||||||
resolve(xhr.responseText);
|
resolve(xhr.responseText);
|
||||||
};
|
};
|
||||||
|
xhr.onerror = function(e) {
|
||||||
|
reject(new Error('Error fetching annotation style ' + e));
|
||||||
|
};
|
||||||
xhr.send(null);
|
xhr.send(null);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -143,7 +149,7 @@ var rasterizeAnnotationLayer = (function rasterizeAnnotationLayerClosure() {
|
|||||||
function inlineAnnotationImages(images) {
|
function inlineAnnotationImages(images) {
|
||||||
var imagePromises = [];
|
var imagePromises = [];
|
||||||
for (var i = 0, ii = images.length; i < ii; i++) {
|
for (var i = 0, ii = images.length; i < ii; i++) {
|
||||||
var imagePromise = new Promise(function(resolve) {
|
var imagePromise = new Promise(function(resolve, reject) {
|
||||||
var xhr = new XMLHttpRequest();
|
var xhr = new XMLHttpRequest();
|
||||||
xhr.responseType = 'blob';
|
xhr.responseType = 'blob';
|
||||||
xhr.onload = function() {
|
xhr.onload = function() {
|
||||||
@ -153,8 +159,8 @@ var rasterizeAnnotationLayer = (function rasterizeAnnotationLayerClosure() {
|
|||||||
};
|
};
|
||||||
reader.readAsDataURL(xhr.response);
|
reader.readAsDataURL(xhr.response);
|
||||||
};
|
};
|
||||||
xhr.onerror = function() {
|
xhr.onerror = function(e) {
|
||||||
resolve('');
|
reject(new Error('Error fetching inline annotation image ' + e));
|
||||||
};
|
};
|
||||||
xhr.open('GET', images[i].src);
|
xhr.open('GET', images[i].src);
|
||||||
xhr.send();
|
xhr.send();
|
||||||
@ -167,7 +173,7 @@ var rasterizeAnnotationLayer = (function rasterizeAnnotationLayerClosure() {
|
|||||||
function rasterizeAnnotationLayer(ctx, viewport, annotations, page,
|
function rasterizeAnnotationLayer(ctx, viewport, annotations, page,
|
||||||
imageResourcesPath,
|
imageResourcesPath,
|
||||||
renderInteractiveForms) {
|
renderInteractiveForms) {
|
||||||
return new Promise(function (resolve) {
|
return new Promise(function (resolve, reject) {
|
||||||
// Building SVG with size of the viewport.
|
// Building SVG with size of the viewport.
|
||||||
var svg = document.createElementNS(SVG_NS, 'svg:svg');
|
var svg = document.createElementNS(SVG_NS, 'svg:svg');
|
||||||
svg.setAttribute('width', viewport.width + 'px');
|
svg.setAttribute('width', viewport.width + 'px');
|
||||||
@ -205,9 +211,17 @@ var rasterizeAnnotationLayer = (function rasterizeAnnotationLayerClosure() {
|
|||||||
var images = div.getElementsByTagName('img');
|
var images = div.getElementsByTagName('img');
|
||||||
var imagePromises = inlineAnnotationImages(images);
|
var imagePromises = inlineAnnotationImages(images);
|
||||||
var converted = Promise.all(imagePromises).then(function(data) {
|
var converted = Promise.all(imagePromises).then(function(data) {
|
||||||
|
var loadedPromises = [];
|
||||||
for (var i = 0, ii = data.length; i < ii; i++) {
|
for (var i = 0, ii = data.length; i < ii; i++) {
|
||||||
images[i].src = data[i];
|
images[i].src = data[i];
|
||||||
|
loadedPromises.push(new Promise(function (resolve, reject) {
|
||||||
|
images[i].onload = resolve;
|
||||||
|
images[i].onerror = function(e) {
|
||||||
|
reject(new Error('Error loading image ' + e));
|
||||||
|
};
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
return loadedPromises;
|
||||||
});
|
});
|
||||||
|
|
||||||
foreignObject.appendChild(div);
|
foreignObject.appendChild(div);
|
||||||
@ -223,6 +237,9 @@ var rasterizeAnnotationLayer = (function rasterizeAnnotationLayerClosure() {
|
|||||||
ctx.drawImage(img, 0, 0);
|
ctx.drawImage(img, 0, 0);
|
||||||
resolve();
|
resolve();
|
||||||
};
|
};
|
||||||
|
img.onerror = function(e) {
|
||||||
|
reject(new Error('Error rasterizing annotation layer ' + e));
|
||||||
|
};
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -544,12 +561,11 @@ var Driver = (function DriverClosure() { // eslint-disable-line no-unused-vars
|
|||||||
self._snapshot(task, error);
|
self._snapshot(task, error);
|
||||||
});
|
});
|
||||||
initPromise.then(function () {
|
initPromise.then(function () {
|
||||||
page.render(renderContext).promise.then(function() {
|
return page.render(renderContext).promise.then(function() {
|
||||||
completeRender(false);
|
completeRender(false);
|
||||||
},
|
|
||||||
function(error) {
|
|
||||||
completeRender('render : ' + error);
|
|
||||||
});
|
});
|
||||||
|
}).catch(function (error) {
|
||||||
|
completeRender('render : ' + error);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
function(error) {
|
function(error) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user