Merge pull request #6771 from yurydelendik/requirejs

Removes hardcoded module loading order
This commit is contained in:
Tim van der Meij 2015-12-30 00:37:32 +01:00
commit e8db825512
25 changed files with 363 additions and 530 deletions

View file

@ -414,7 +414,7 @@ PDFJS.getDocument = function getDocument(src,
var transport = new WorkerTransport(messageHandler, task, rangeTransport);
task._transport = transport;
});
}, task._capability.reject);
}).catch(task._capability.reject);
return task;
};
@ -1186,14 +1186,14 @@ var PDFWorker = (function PDFWorkerClosure() {
// pdf.worker.js file is needed.
//#if !PRODUCTION
if (typeof amdRequire === 'function') {
amdRequire(['pdfjs/core/worker'], function () {
amdRequire(['pdfjs/core/network', 'pdfjs/core/worker'], function () {
PDFJS.fakeWorkerFilesLoadedCapability.resolve();
});
} else if (typeof require === 'function') {
require('../core/worker.js');
PDFJS.fakeWorkerFilesLoadedCapability.resolve();
} else {
Util.loadScript(PDFJS.workerSrc);
throw new Error('AMD or CommonJS must be used to load fake worker.');
}
//#endif
//#if PRODUCTION && SINGLE_FILE
@ -1253,8 +1253,16 @@ 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);
//#if !PRODUCTION
// Don't allow worker to be destroyed by Chrome, see:
// https://code.google.com/p/chromium/issues/detail?id=572225
var jsWorkerId = '_workerKungfuGrip_' + Math.random();
window[jsWorkerId] = worker;
//#endif
messageHandler.on('test', function PDFWorker_test(data) {
//#if !PRODUCTION
delete window[jsWorkerId];
//#endif
if (this.destroyed) {
this._readyCapability.reject(new Error('Worker was destroyed'));
messageHandler.destroy();
@ -1284,16 +1292,40 @@ var PDFWorker = (function PDFWorkerClosure() {
console.error.apply(console, data);
});
var testObj = new Uint8Array([PDFJS.postMessageTransfers ? 255 : 0]);
// Some versions of Opera throw a DATA_CLONE_ERR on serializing the
// typed array. Also, checking if we can use transfers.
try {
messageHandler.send('test', testObj, [testObj.buffer]);
} catch (ex) {
info('Cannot use postMessage transfers');
testObj[0] = 0;
messageHandler.send('test', testObj);
}
messageHandler.on('ready', function (data) {
if (this.destroyed) {
this._readyCapability.reject(new Error('Worker was destroyed'));
messageHandler.destroy();
worker.terminate();
return; // worker was destroyed
}
try {
sendTest();
} catch (e) {
// We need fallback to a faked worker.
this._setupFakeWorker();
}
}.bind(this));
var sendTest = function () {
var testObj = new Uint8Array(
[PDFJS.postMessageTransfers ? 255 : 0]);
// Some versions of Opera throw a DATA_CLONE_ERR on serializing the
// typed array. Also, checking if we can use transfers.
try {
messageHandler.send('test', testObj, [testObj.buffer]);
} catch (ex) {
info('Cannot use postMessage transfers');
testObj[0] = 0;
messageHandler.send('test', testObj);
}
};
// It might take time for worker to initialize (especially when AMD
// loader is used). We will try to send test immediately, and then
// when 'ready' message will arrive. The worker shall process only
// first received 'test'.
sendTest();
return;
} catch (e) {
info('The worker has been disabled.');

View file

@ -16,6 +16,7 @@
'use strict';
//#if (GENERIC || SINGLE_FILE)
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define('pdfjs/display/svg', ['exports', 'pdfjs/shared/util'], factory);
@ -25,7 +26,6 @@
factory((root.pdfjsDisplaySVG = {}), root.pdfjsSharedUtil);
}
}(this, function (exports, sharedUtil) {
//#if (GENERIC || SINGLE_FILE)
var FONT_IDENTITY_MATRIX = sharedUtil.FONT_IDENTITY_MATRIX;
var IDENTITY_MATRIX = sharedUtil.IDENTITY_MATRIX;
@ -1209,5 +1209,5 @@ var SVGGraphics = (function SVGGraphicsClosure() {
PDFJS.SVGGraphics = SVGGraphics;
exports.SVGGraphics = SVGGraphics;
//#endif
}));
//#endif

View file

@ -12,22 +12,26 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* globals PDFJS */
'use strict';
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define('pdfjs/display/text_layer', ['exports', 'pdfjs/shared/util'],
factory);
define('pdfjs/display/text_layer', ['exports', 'pdfjs/shared/util',
'pdfjs/display/dom_utils', 'pdfjs/shared/global'], factory);
} else if (typeof exports !== 'undefined') {
factory(exports, require('../shared/util.js'));
factory(exports, require('../shared/util.js'), require('./dom_utils.js'),
require('../shared/global.js'));
} else {
factory((root.pdfjsDisplayTextLayer = {}), root.pdfjsSharedUtil);
factory((root.pdfjsDisplayTextLayer = {}), root.pdfjsSharedUtil,
root.pdfjsDisplayDOMUtils, root.pdfjsSharedGlobal);
}
}(this, function (exports, sharedUtil) {
}(this, function (exports, sharedUtil, displayDOMUtils, sharedGlobal) {
var Util = sharedUtil.Util;
var createPromiseCapability = sharedUtil.createPromiseCapability;
var CustomStyle = displayDOMUtils.CustomStyle;
var PDFJS = sharedGlobal.PDFJS;
/**
* Text layer render parameters.
@ -61,7 +65,7 @@ var renderTextLayer = (function renderTextLayerClosure() {
textDiv.dataset.isWhitespace = true;
return;
}
var tx = PDFJS.Util.transform(viewport.transform, geom.transform);
var tx = Util.transform(viewport.transform, geom.transform);
var angle = Math.atan2(tx[1], tx[0]);
if (style.vertical) {
angle += Math.PI / 2;
@ -167,7 +171,7 @@ var renderTextLayer = (function renderTextLayerClosure() {
transform = 'rotate(' + rotation + 'deg) ' + transform;
}
if (transform) {
PDFJS.CustomStyle.setProp('transform' , textDiv, transform);
CustomStyle.setProp('transform' , textDiv, transform);
}
}
}