Merge pull request #7107 from Rob--W/worker-loading
Detect premature worker load error
This commit is contained in:
commit
055d642bf2
@ -1300,11 +1300,32 @@ var PDFWorker = (function PDFWorkerClosure() {
|
|||||||
// https://bugzilla.mozilla.org/show_bug.cgi?id=683280
|
// https://bugzilla.mozilla.org/show_bug.cgi?id=683280
|
||||||
var worker = new Worker(workerSrc);
|
var worker = new Worker(workerSrc);
|
||||||
var messageHandler = new MessageHandler('main', 'worker', worker);
|
var messageHandler = new MessageHandler('main', 'worker', worker);
|
||||||
messageHandler.on('test', function PDFWorker_test(data) {
|
var terminateEarly = function() {
|
||||||
|
worker.removeEventListener('error', onWorkerError);
|
||||||
|
messageHandler.destroy();
|
||||||
|
worker.terminate();
|
||||||
if (this.destroyed) {
|
if (this.destroyed) {
|
||||||
this._readyCapability.reject(new Error('Worker was destroyed'));
|
this._readyCapability.reject(new Error('Worker was destroyed'));
|
||||||
messageHandler.destroy();
|
} else {
|
||||||
worker.terminate();
|
// Fall back to fake worker if the termination is caused by an
|
||||||
|
// error (e.g. NetworkError / SecurityError).
|
||||||
|
this._setupFakeWorker();
|
||||||
|
}
|
||||||
|
}.bind(this);
|
||||||
|
|
||||||
|
var onWorkerError = function(event) {
|
||||||
|
if (!this._webWorker) {
|
||||||
|
// Worker failed to initialize due to an error. Clean up and fall
|
||||||
|
// back to the fake worker.
|
||||||
|
terminateEarly();
|
||||||
|
}
|
||||||
|
}.bind(this);
|
||||||
|
worker.addEventListener('error', onWorkerError);
|
||||||
|
|
||||||
|
messageHandler.on('test', function PDFWorker_test(data) {
|
||||||
|
worker.removeEventListener('error', onWorkerError);
|
||||||
|
if (this.destroyed) {
|
||||||
|
terminateEarly();
|
||||||
return; // worker was destroyed
|
return; // worker was destroyed
|
||||||
}
|
}
|
||||||
var supportTypedArray = data && data.supportTypedArray;
|
var supportTypedArray = data && data.supportTypedArray;
|
||||||
@ -1335,10 +1356,9 @@ var PDFWorker = (function PDFWorkerClosure() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
messageHandler.on('ready', function (data) {
|
messageHandler.on('ready', function (data) {
|
||||||
|
worker.removeEventListener('error', onWorkerError);
|
||||||
if (this.destroyed) {
|
if (this.destroyed) {
|
||||||
this._readyCapability.reject(new Error('Worker was destroyed'));
|
terminateEarly();
|
||||||
messageHandler.destroy();
|
|
||||||
worker.terminate();
|
|
||||||
return; // worker was destroyed
|
return; // worker was destroyed
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user