From 2d03f93fedd5c1a6ea98954d2451375b3683c933 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Fri, 23 Sep 2011 20:25:24 +0300 Subject: [PATCH 1/5] Name anonymous functions for debugging purposes. It also makes profiling more convenient. --- test/driver.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/test/driver.js b/test/driver.js index 7d6c54509..4751910b2 100644 --- a/test/driver.js +++ b/test/driver.js @@ -39,7 +39,7 @@ function load() { var r = new XMLHttpRequest(); r.open('GET', manifestFile, false); - r.onreadystatechange = function(e) { + r.onreadystatechange = function loadOnreadystatechange(e) { if (r.readyState == 4) { log('done\n'); manifest = JSON.parse(r.responseText); @@ -62,7 +62,7 @@ function nextTask() { var r = new XMLHttpRequest(); r.open('GET', task.file); r.mozResponseType = r.responseType = 'arraybuffer'; - r.onreadystatechange = function() { + r.onreadystatechange = function nextTaskOnreadystatechange() { var failure; if (r.readyState == 4) { var data = r.mozResponseArrayBuffer || r.mozResponse || @@ -85,11 +85,15 @@ function isLastPage(task) { return (task.pageNum > task.pdfDoc.numPages); } +function canvasToDataURL() { + return canvas.toDataURL('image/png'); +} + function nextPage(task, loadError) { var failure = loadError || ''; if (!task.pdfDoc) { - sendTaskResult(canvas.toDataURL('image/png'), task, failure); + sendTaskResult(canvasToDataURL(), task, failure); log('done' + (failure ? ' (failed !: ' + failure + ')' : '') + '\n'); ++currentTaskIdx; nextTask(); @@ -126,7 +130,7 @@ function nextPage(task, loadError) { page.startRendering( ctx, - function(e) { + function nextPageStartRendering(e) { snapshotCurrentPage(task, (!failure && e) ? ('render : ' + e) : failure); } @@ -146,13 +150,13 @@ function nextPage(task, loadError) { function snapshotCurrentPage(task, failure) { log('done, snapshotting... '); - sendTaskResult(canvas.toDataURL('image/png'), task, failure); + sendTaskResult(canvasToDataURL(), task, failure); log('done' + (failure ? ' (failed !: ' + failure + ')' : '') + '\n'); // Set up the next request var backoff = (inFlightRequests > 0) ? inFlightRequests * 10 : 0; setTimeout( - function() { + function snapshotCurrentPageSetTimeout() { ++task.pageNum; nextPage(task); }, @@ -201,7 +205,7 @@ function sendTaskResult(snapshot, task, failure) { // (The POST URI is ignored atm.) r.open('POST', '/submit_task_results', true); r.setRequestHeader('Content-Type', 'application/json'); - r.onreadystatechange = function(e) { + r.onreadystatechange = function sendTaskResultOnreadystatechange(e) { if (r.readyState == 4) { inFlightRequests--; } From 0d5efbe9fec1a81b1b08ecf1308b4e20299d1c66 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Fri, 23 Sep 2011 20:44:48 +0300 Subject: [PATCH 2/5] Name anonymous functions for debugging purposes. It also makes profiling more convenient. --- fonts.js | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/fonts.js b/fonts.js index e5cce0b4f..653751083 100644 --- a/fonts.js +++ b/fonts.js @@ -124,7 +124,7 @@ var serifFonts = { var FontLoader = { listeningForFontLoad: false, - bind: function(fonts, callback) { + bind: function fontLoaderBind(fonts, callback) { function checkFontsLoaded() { for (var i = 0; i < objs.length; i++) { var fontObj = objs[i]; @@ -180,7 +180,7 @@ var FontLoader = { // loaded in a subdocument. It's expected that the load of |rules| // has already started in this (outer) document, so that they should // be ordered before the load in the subdocument. - prepareFontLoadEvent: function(rules, names, objs) { + prepareFontLoadEvent: function fontLoaderPrepareFontLoadEvent(rules, names, objs) { /** Hack begin */ // There's no event when a font has finished downloading so the // following code is a dirty hack to 'guess' when a font is @@ -219,7 +219,7 @@ var FontLoader = { if (!this.listeningForFontLoad) { window.addEventListener( 'message', - function(e) { + function fontLoaderMessage(e) { var fontNames = JSON.parse(e.data); for (var i = 0; i < objs.length; ++i) { var font = objs[i]; @@ -247,7 +247,7 @@ var FontLoader = { fontNamesArray += '"' + names[i] + '", '; } src += ' var fontNames=[' + fontNamesArray + '];\n'; - src += ' window.onload = function () {\n'; + src += ' window.onload = function fontLoaderOnload() {\n'; src += ' parent.postMessage(JSON.stringify(fontNames), "*");\n'; src += ' }'; src += ''; @@ -599,7 +599,7 @@ var Font = (function Font() { var length = glyphs.length; for (var n = 0; n < length; ++n) codes.push({ unicode: glyphs[n].unicode, code: n }); - codes.sort(function(a, b) { + codes.sort(function fontGetRangesSort(a, b) { return a.unicode - b.unicode; }); @@ -928,7 +928,7 @@ var Font = (function Font() { } // Check that table are sorted by platformID then encodingID, - records.sort(function(a, b) { + records.sort(function fontReplaceCMapTableSort(a, b) { return ((a.platformID << 16) + a.encodingID) - ((b.platformID << 16) + b.encodingID); }); @@ -1061,11 +1061,11 @@ var Font = (function Font() { var itemSize, itemDecode, itemEncode; if (isGlyphLocationsLong) { itemSize = 4; - itemDecode = function(data, offset) { + itemDecode = function fontItemDecodeLong(data, offset) { return (data[offset] << 24) | (data[offset + 1] << 16) | (data[offset + 2] << 8) | data[offset + 3]; }; - itemEncode = function(data, offset, value) { + itemEncode = function fontItemEncodeLong(data, offset, value) { data[offset] = (value >>> 24) & 0xFF; data[offset + 1] = (value >> 16) & 0xFF; data[offset + 2] = (value >> 8) & 0xFF; @@ -1073,10 +1073,10 @@ var Font = (function Font() { }; } else { itemSize = 2; - itemDecode = function(data, offset) { + itemDecode = function fontItemDecode(data, offset) { return (data[offset] << 9) | (data[offset + 1] << 1); }; - itemEncode = function(data, offset, value) { + itemEncode = function fontItemEncode(data, offset, value) { data[offset] = (value >> 9) & 0xFF; data[offset + 1] = (value >> 1) & 0xFF; }; @@ -1323,7 +1323,7 @@ var Font = (function Font() { 'cmap': createCMapTable(charstrings.slice(), font.glyphIds), // Font header - 'head': (function() { + 'head': (function fontFieldsHead() { return stringToArray( '\x00\x01\x00\x00' + // Version number '\x00\x00\x10\x00' + // fontRevision @@ -1345,7 +1345,7 @@ var Font = (function Font() { })(), // Horizontal header - 'hhea': (function() { + 'hhea': (function fontFieldsHhea() { return stringToArray( '\x00\x01\x00\x00' + // Version number string16(properties.ascent) + // Typographic Ascent @@ -1368,7 +1368,7 @@ var Font = (function Font() { })(), // Horizontal metrics - 'hmtx': (function() { + 'hmtx': (function fontFieldsHmtx() { var hmtx = '\x00\x00\x00\x00'; // Fake .notdef for (var i = 0; i < charstrings.length; i++) { hmtx += string16(charstrings[i].width) + string16(0); @@ -1377,7 +1377,7 @@ var Font = (function Font() { })(), // Maximum profile - 'maxp': (function() { + 'maxp': (function fontFieldsMaxp() { return stringToArray( '\x00\x00\x50\x00' + // Version number string16(charstrings.length + 1)); // Num of glyphs @@ -1505,7 +1505,7 @@ var Font = (function Font() { * program. Some of its logic depends on the Type2 charstrings * structure. */ -var Type1Parser = function() { +var Type1Parser = function type1Parser() { /* * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence * of Plaintext Bytes. The function took a key as a parameter which can be @@ -2033,7 +2033,7 @@ var CFFStrings = [ var type1Parser = new Type1Parser(); -var CFF = function(name, file, properties) { +var CFF = function cFF(name, file, properties) { // Get the data block containing glyphs and subrs informations var headerBlock = file.getBytes(properties.length1); type1Parser.extractFontHeader(headerBlock, properties); @@ -2233,7 +2233,7 @@ CFF.prototype = { 'names': this.createCFFIndexHeader([name]), 'topDict': (function topDict(self) { - return function() { + return function cFFWrapTopDict() { var header = '\x00\x01\x01\x01'; var dict = '\xf8\x1b\x00' + // version @@ -2310,7 +2310,7 @@ CFF.prototype = { 'charstrings': this.createCFFIndexHeader([[0x8B, 0x0E]].concat(glyphs), true), - 'private': (function(self) { + 'private': (function cFFWrapPrivate(self) { var data = '\x8b\x14' + // defaultWidth '\x8b\x15'; // nominalWidth @@ -2363,7 +2363,7 @@ CFF.prototype = { } }; -var Type2CFF = (function() { +var Type2CFF = (function type2CFF() { // TODO: replace parsing code with the Type2Parser in font_utils.js function constructor(file, properties) { var bytes = file.getBytes(); @@ -2503,7 +2503,9 @@ var Type2CFF = (function() { } // sort the array by the unicode value - charstrings.sort(function(a, b) {return a.unicode - b.unicode}); + charstrings.sort(function type2CFFGetCharStringsSort(a, b) { + return a.unicode - b.unicode + }); return charstrings; }, From 5ce5ca03d32272321d07b0a624fb942b90b04d78 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Fri, 23 Sep 2011 20:54:18 +0300 Subject: [PATCH 3/5] Name anonymous functions for debugging purposes. It also makes profiling more convenient. --- crypto.js | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/crypto.js b/crypto.js index a91f9e41d..42eeeda51 100644 --- a/crypto.js +++ b/crypto.js @@ -3,7 +3,7 @@ 'use strict'; -var ARCFourCipher = (function() { +var ARCFourCipher = (function aRCFourCipher() { function constructor(key) { this.a = 0; this.b = 0; @@ -21,7 +21,7 @@ var ARCFourCipher = (function() { } constructor.prototype = { - encryptBlock: function(data) { + encryptBlock: function aRCFourCipherEncryptBlock(data) { var i, n = data.length, tmp, tmp2; var a = this.a, b = this.b, s = this.s; var output = new Uint8Array(n); @@ -45,7 +45,7 @@ var ARCFourCipher = (function() { return constructor; })(); -var md5 = (function() { +var md5 = (function md5Md5() { var r = new Uint8Array([ 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, @@ -129,12 +129,12 @@ var md5 = (function() { return hash; })(); -var NullCipher = (function() { +var NullCipher = (function nullCipher() { function constructor() { } constructor.prototype = { - decryptBlock: function(data) { + decryptBlock: function nullCipherDecryptBlock(data) { return data; } }; @@ -142,7 +142,7 @@ var NullCipher = (function() { return constructor; })(); -var AES128Cipher = (function() { +var AES128Cipher = (function aES128Cipher() { var rcon = new Uint8Array([ 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, @@ -372,7 +372,7 @@ var AES128Cipher = (function() { } constructor.prototype = { - decryptBlock: function(data) { + decryptBlock: function aES128CipherDecryptBlock(data) { var i, sourceLength = data.length; var buffer = this.buffer, bufferLength = this.bufferPosition; // waiting for IV values -- they are at the start of the stream @@ -395,19 +395,21 @@ var AES128Cipher = (function() { return constructor; })(); -var CipherTransform = (function() { +var CipherTransform = (function cipherTransform() { function constructor(stringCipherConstructor, streamCipherConstructor) { this.stringCipherConstructor = stringCipherConstructor; this.streamCipherConstructor = streamCipherConstructor; } constructor.prototype = { - createStream: function(stream) { + createStream: function cipherTransformCreateStream(stream) { var cipher = new this.streamCipherConstructor(); - return new DecryptStream(stream, function(data) { - return cipher.decryptBlock(data); - }); + return new DecryptStream(stream, + function cipherTransformDecryptStream(data) { + return cipher.decryptBlock(data); + } + ); }, - decryptString: function(s) { + decryptString: function cipherTransformDecryptString(s) { var cipher = new this.stringCipherConstructor(); var data = stringToBytes(s); data = cipher.decryptBlock(data); @@ -417,7 +419,7 @@ var CipherTransform = (function() { return constructor; })(); -var CipherTransformFactory = (function() { +var CipherTransformFactory = (function cipherTransformFactory() { function prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) { var defaultPasswordBytes = new Uint8Array([ @@ -552,18 +554,18 @@ var CipherTransformFactory = (function() { if (cryptFilter != null) cfm = cryptFilter.get('CFM'); if (!cfm || cfm.name == 'None') { - return function() { + return function cipherTransformFactoryBuildCipherConstructorNone() { return new NullCipher(); }; } if ('V2' == cfm.name) { - return function() { + return function cipherTransformFactoryBuildCipherConstructorV2() { return new ARCFourCipher( buildObjectKey(num, gen, key, false)); }; } if ('AESV2' == cfm.name) { - return function() { + return function cipherTransformFactoryBuildCipherConstructorAESV2() { return new AES128Cipher( buildObjectKey(num, gen, key, true)); }; @@ -573,7 +575,8 @@ var CipherTransformFactory = (function() { } constructor.prototype = { - createCipherTransform: function(num, gen) { + createCipherTransform: function buildCipherCreateCipherTransform(num, + gen) { if (this.algorithm == 4) { return new CipherTransform( buildCipherConstructor(this.cf, this.stmf, @@ -583,7 +586,7 @@ var CipherTransformFactory = (function() { } // algorithms 1 and 2 var key = buildObjectKey(num, gen, this.encryptionKey, false); - var cipherConstructor = function() { + var cipherConstructor = function buildCipherCipherConstructor() { return new ARCFourCipher(key); }; return new CipherTransform(cipherConstructor, cipherConstructor); From 481f242b5a3acfb0ac0935a12600839bab3e2d4c Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Fri, 23 Sep 2011 20:56:21 +0300 Subject: [PATCH 4/5] Fix lint warnings. --- fonts.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fonts.js b/fonts.js index 653751083..bc1ad5569 100644 --- a/fonts.js +++ b/fonts.js @@ -180,7 +180,8 @@ var FontLoader = { // loaded in a subdocument. It's expected that the load of |rules| // has already started in this (outer) document, so that they should // be ordered before the load in the subdocument. - prepareFontLoadEvent: function fontLoaderPrepareFontLoadEvent(rules, names, objs) { + prepareFontLoadEvent: function fontLoaderPrepareFontLoadEvent(rules, names, + objs) { /** Hack begin */ // There's no event when a font has finished downloading so the // following code is a dirty hack to 'guess' when a font is @@ -2504,7 +2505,7 @@ var Type2CFF = (function type2CFF() { // sort the array by the unicode value charstrings.sort(function type2CFFGetCharStringsSort(a, b) { - return a.unicode - b.unicode + return a.unicode - b.unicode; }); return charstrings; }, From 335e86359dbb37cc309abeef2409490636628400 Mon Sep 17 00:00:00 2001 From: Kalervo Kujala Date: Fri, 23 Sep 2011 20:58:56 +0300 Subject: [PATCH 5/5] Name anonymous functions for debugging purposes. It also makes profiling more convenient. --- pdf.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pdf.js b/pdf.js index 6c66b84c4..3709afa17 100644 --- a/pdf.js +++ b/pdf.js @@ -6466,7 +6466,7 @@ var PDFFunction = (function pDFFunction() { return out; }; }, - constructStiched: function(fn, dict, xref) { + constructStiched: function pDFFunctionConstructStiched(fn, dict, xref) { var domain = dict.get('Domain'); var range = dict.get('Range'); @@ -6485,8 +6485,8 @@ var PDFFunction = (function pDFFunction() { var bounds = dict.get('Bounds'); var encode = dict.get('Encode'); - this.func = function(args) { - var clip = function(v, min, max) { + this.func = function pDFFunctionConstructStichedFunc(args) { + var clip = function pDFFunctionConstructStichedFuncClip(v, min, max) { if (v > max) v = max; else if (v < min) @@ -6519,9 +6519,9 @@ var PDFFunction = (function pDFFunction() { return fns[i].func([v2]); }; }, - constructPostScript: function() { + constructPostScript: function pDFFunctionConstructPostScript() { TODO('unhandled type of function'); - this.func = function() { + this.func = function pDFFunctionConstructPostScriptFunc() { return [255, 105, 180]; }; }