From 0fbbc5a840e1890e0ef0aa30b18e64e8fb53f584 Mon Sep 17 00:00:00 2001 From: Pimm Hogeling Date: Fri, 31 Aug 2012 13:40:37 +0200 Subject: [PATCH] Syntax changed that will help minifiers/compilers (such as the Closure Compiler) in their processing. In particular, preventing said minifiers/compilers from making dangerous renames. --- src/api.js | 5 +++-- src/fonts.js | 5 +++-- src/jpx.js | 2 +- src/util.js | 27 ++++++++++++++++++++------- src/worker.js | 20 +++++++++++++------- 5 files changed, 40 insertions(+), 19 deletions(-) diff --git a/src/api.js b/src/api.js index 6c862a91b..f1f6bc66f 100644 --- a/src/api.js +++ b/src/api.js @@ -345,8 +345,9 @@ var PDFPageProxy = (function PDFPageProxyClosure() { var length = this.operatorList.fnArray.length; var operatorList = this.operatorList; var stepper = null; - if (PDFJS.pdfBug && StepperManager.enabled) { - stepper = StepperManager.create(this.pageNumber - 1); + if (PDFJS.pdfBug && 'StepperManager' in globalScope && + globalScope['StepperManager'].enabled) { + stepper = globalScope['StepperManager'].create(this.pageNumber - 1); stepper.init(operatorList); stepper.nextBreakPoint = stepper.getNextBreakPoint(); } diff --git a/src/fonts.js b/src/fonts.js index e2b760542..c26a39ca1 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -3141,8 +3141,9 @@ var Font = (function FontClosure() { var styleSheet = styleElement.sheet; styleSheet.insertRule(rule, styleSheet.cssRules.length); - if (PDFJS.pdfBug && FontInspector.enabled) - FontInspector.fontAdded(this, url); + if (PDFJS.pdfBug && 'FontInspector' in globalScope && + globalScope['FontInspector'].enabled) + globalScope['FontInspector'].fontAdded(this, url); return rule; }, diff --git a/src/jpx.js b/src/jpx.js index fdf41f48b..c0c5d4116 100644 --- a/src/jpx.js +++ b/src/jpx.js @@ -255,7 +255,7 @@ var JpxImage = (function JpxImageClosure() { cod.resetContextProbabilities || cod.terminationOnEachCodingPass || cod.verticalyStripe || cod.predictableTermination) - throw 'Unsupported COD options: ' + uneval(cod); + throw 'Unsupported COD options: ' + globalScope.JSON.stringify(cod); if (context.mainHeader) context.COD = cod; diff --git a/src/util.js b/src/util.js index df91f6064..da721c57e 100644 --- a/src/util.js +++ b/src/util.js @@ -5,12 +5,16 @@ // Use only for debugging purposes. This should not be used in any code that is // in mozilla master. -function log(msg) { - if (console && console.log) - console.log(msg); - else if (print) - print(msg); -} +var log = (function() { + if ('console' in globalScope && 'log' in globalScope['console']) { + return globalScope['console']['log'].bind(globalScope['console']); + } else if ('print' in globalScope) { + return globalScope['print'].bind(globalScope); + } else { + return function nop() { + }; + } +})(); // A notice for devs that will not trigger the fallback UI. These are good // for things that are helpful to devs, such as warning that Workers were @@ -33,7 +37,16 @@ function warn(msg) { // Fatal errors that should trigger the fallback UI and halt execution by // throwing an exception. function error(msg) { - log('Error: ' + msg); + // If multiple arguments were passed, pass them all to the log function. + if (arguments.length > 1) { + var logArguments = ['Error:']; + logArguments.push.apply(logArguments, arguments); + log.apply(null, logArguments); + // Join the arguments into a single string for the lines below. + msg = [].join.call(arguments, ' '); + } else { + log('Error: ' + msg); + } log(backtrace()); PDFJS.LogManager.notify('error', msg); throw new Error(msg); diff --git a/src/worker.js b/src/worker.js index 3b3b68026..25a509e80 100644 --- a/src/worker.js +++ b/src/worker.js @@ -11,11 +11,17 @@ function MessageHandler(name, comObj) { var ah = this.actionHandler = {}; ah['console_log'] = [function ahConsoleLog(data) { - console.log.apply(console, data); - }]; - ah['console_error'] = [function ahConsoleError(data) { - console.error.apply(console, data); + log.apply(null, data); }]; + // If there's no console available, console_error in the action handler will do nothing. + if ('console' in globalScope) { + ah['console_error'] = [function ahConsoleError(data) { + globalScope['console'].error.apply(null, data); + }]; + } else { + ah['console_error'] = [function ahConsoleError(data) { + }]; + } ah['_warn'] = [function ah_Warn(data) { warn(data); }]; @@ -263,7 +269,7 @@ var consoleTimer = {}; var workerConsole = { log: function log() { var args = Array.prototype.slice.call(arguments); - postMessage({ + globalScope.postMessage({ action: 'console_log', data: args }); @@ -271,7 +277,7 @@ var workerConsole = { error: function error() { var args = Array.prototype.slice.call(arguments); - postMessage({ + globalScope.postMessage({ action: 'console_error', data: args }); @@ -299,7 +305,7 @@ if (typeof window === 'undefined') { // throw an exception which will be forwarded on automatically. PDFJS.LogManager.addLogger({ warn: function(msg) { - postMessage({ + globalScope.postMessage({ action: '_warn', data: msg });