From aa00fe44c44111a030778eb499cf68fbd0600820 Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Wed, 22 Aug 2012 13:20:50 -0500 Subject: [PATCH 1/2] Fixing the length given by HTTP headers --- .../firefox/components/PdfStreamConverter.js | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/extensions/firefox/components/PdfStreamConverter.js b/extensions/firefox/components/PdfStreamConverter.js index d5b12dbde..b22329efb 100644 --- a/extensions/firefox/components/PdfStreamConverter.js +++ b/extensions/firefox/components/PdfStreamConverter.js @@ -132,28 +132,28 @@ function PdfDataListener(length) { PdfDataListener.prototype = { set: function PdfDataListener_set(chunk, offset) { - if (this.length < 0) { - var willBeLoaded = this.loaded + chunk.length; + var willBeLoaded = this.loaded + chunk.length; + if (this.length >= 0 && this.length < willBeLoaded) { + this.length = -1; // reset the length, server is giving incorrect one + } + if (this.length < 0 && this.data.length < willBeLoaded) { // data length is unknown and new chunk will not fit in the existing // buffer, resizing the buffer by doubling the its last length - if (this.data.length < willBeLoaded) { - var newLength = this.data.length; - for (; newLength < willBeLoaded; newLength *= 2) {} - var newData = new Uint8Array(newLength); - newData.set(this.data); - this.data = newData; - } - this.data.set(chunk, this.loaded); - this.loaded = willBeLoaded; - } else { - this.data.set(chunk, offset); - this.loaded = offset + chunk.length; - this.onprogress(this.loaded, this.length); + var newLength = this.data.length; + for (; newLength < willBeLoaded; newLength *= 2) {} + var newData = new Uint8Array(newLength); + newData.set(this.data); + this.data = newData; } + this.data.set(chunk, this.loaded); + this.loaded = willBeLoaded; + if (this.length >= 0) + this.onprogress(this.loaded, this.length); }, getData: function PdfDataListener_getData() { - var data = this.length >= 0 ? this.data : - this.data.subarray(0, this.loaded); + var data = this.data; + if (this.loaded != data.length) + data = data.subarray(0, this.loaded); delete this.data; // releasing temporary storage return data; }, From 19c62f526ce73445c5119e543256e667378e8c60 Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Wed, 22 Aug 2012 13:34:01 -0500 Subject: [PATCH 2/2] Removes offset and renames set to append --- extensions/firefox/components/PdfStreamConverter.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/firefox/components/PdfStreamConverter.js b/extensions/firefox/components/PdfStreamConverter.js index b22329efb..f8a5a315f 100644 --- a/extensions/firefox/components/PdfStreamConverter.js +++ b/extensions/firefox/components/PdfStreamConverter.js @@ -131,7 +131,7 @@ function PdfDataListener(length) { } PdfDataListener.prototype = { - set: function PdfDataListener_set(chunk, offset) { + append: function PdfDataListener_append(chunk) { var willBeLoaded = this.loaded + chunk.length; if (this.length >= 0 && this.length < willBeLoaded) { this.length = -1; // reset the length, server is giving incorrect one @@ -462,7 +462,7 @@ PdfStreamConverter.prototype = { var binaryStream = this.binaryStream; binaryStream.setInputStream(aInputStream); - this.dataListener.set(binaryStream.readByteArray(aCount), aOffset); + this.dataListener.append(binaryStream.readByteArray(aCount)); }, // nsIRequestObserver::onStartRequest