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
|
||||
var worker = new Worker(workerSrc);
|
||||
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) {
|
||||
this._readyCapability.reject(new Error('Worker was destroyed'));
|
||||
messageHandler.destroy();
|
||||
worker.terminate();
|
||||
} else {
|
||||
// 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
|
||||
}
|
||||
var supportTypedArray = data && data.supportTypedArray;
|
||||
@ -1335,10 +1356,9 @@ var PDFWorker = (function PDFWorkerClosure() {
|
||||
});
|
||||
|
||||
messageHandler.on('ready', function (data) {
|
||||
worker.removeEventListener('error', onWorkerError);
|
||||
if (this.destroyed) {
|
||||
this._readyCapability.reject(new Error('Worker was destroyed'));
|
||||
messageHandler.destroy();
|
||||
worker.terminate();
|
||||
terminateEarly();
|
||||
return; // worker was destroyed
|
||||
}
|
||||
try {
|
||||
|
Loading…
x
Reference in New Issue
Block a user