Merge pull request #8400 from Snuffleupagus/ref-tests-wait-on-destroy

Wait for previous pdfDocument(s) to be destroyed before running the next reference test
This commit is contained in:
Yury Delendik 2017-05-11 11:59:20 -05:00 committed by GitHub
commit 15425d5b9b

View File

@ -334,66 +334,67 @@ var Driver = (function DriverClosure() { // eslint-disable-line no-unused-vars
}, this.delay);
},
_nextTask: function Driver_nextTask() {
var self = this;
var failure = '';
_nextTask() {
let failure = '';
this._cleanup();
this._cleanup().then(() => {
if (this.currentTask === this.manifest.length) {
this._done();
return;
}
let task = this.manifest[this.currentTask];
task.round = 0;
task.pageNum = task.firstPage || 1;
task.stats = { times: [] };
if (this.currentTask === this.manifest.length) {
this._done();
return;
}
var task = this.manifest[this.currentTask];
task.round = 0;
task.pageNum = task.firstPage || 1;
task.stats = { times: [] };
this._log('Loading file "' + task.file + '"\n');
this._log('Loading file "' + task.file + '"\n');
var absoluteUrl = new URL(task.file, window.location).href;
PDFJS.disableRange = task.disableRange;
PDFJS.disableAutoFetch = !task.enableAutoFetch;
try {
PDFJS.getDocument({
url: absoluteUrl,
password: task.password
}).then(function(doc) {
task.pdfDoc = doc;
self._nextPage(task, failure);
}, function(e) {
failure = 'Loading PDF document: ' + e;
self._nextPage(task, failure);
});
return;
} catch (e) {
failure = 'Loading PDF document: ' + this._exceptionToString(e);
}
this._nextPage(task, failure);
let absoluteUrl = new URL(task.file, window.location).href;
PDFJS.disableRange = task.disableRange;
PDFJS.disableAutoFetch = !task.enableAutoFetch;
try {
PDFJS.getDocument({
url: absoluteUrl,
password: task.password,
}).then((doc) => {
task.pdfDoc = doc;
this._nextPage(task, failure);
}, (err) => {
failure = 'Loading PDF document: ' + err;
this._nextPage(task, failure);
});
return;
} catch (e) {
failure = 'Loading PDF document: ' + this._exceptionToString(e);
}
this._nextPage(task, failure);
});
},
_cleanup: function Driver_cleanup() {
_cleanup() {
// Clear out all the stylesheets since a new one is created for each font.
while (document.styleSheets.length > 0) {
var styleSheet = document.styleSheets[0];
let styleSheet = document.styleSheets[0];
while (styleSheet.cssRules.length > 0) {
styleSheet.deleteRule(0);
}
var ownerNode = styleSheet.ownerNode;
let ownerNode = styleSheet.ownerNode;
ownerNode.parentNode.removeChild(ownerNode);
}
var body = document.body;
let body = document.body;
while (body.lastChild !== this.end) {
body.removeChild(body.lastChild);
}
let destroyedPromises = [];
// Wipe out the link to the pdfdoc so it can be GC'ed.
for (var i = 0; i < this.manifest.length; i++) {
for (let i = 0; i < this.manifest.length; i++) {
if (this.manifest[i].pdfDoc) {
this.manifest[i].pdfDoc.destroy();
destroyedPromises.push(this.manifest[i].pdfDoc.destroy());
delete this.manifest[i].pdfDoc;
}
}
return Promise.all(destroyedPromises);
},
_exceptionToString: function Driver_exceptionToString(e) {