Skip to content

Commit 8ae5d27

Browse files
committed
Merge pull request mozilla#3131 from mduan/issue3122
Only perform range requests for identity Content-Encoding
2 parents 3d3fd46 + e0d4b32 commit 8ae5d27

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

extensions/firefox/components/PdfStreamConverter.js

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -692,17 +692,34 @@ PdfStreamConverter.prototype = {
692692
// nsIRequestObserver::onStartRequest
693693
onStartRequest: function(aRequest, aContext) {
694694
// Setup the request so we can use it below.
695-
var acceptRanges = false;
695+
var isHttpRequest = false;
696696
try {
697697
aRequest.QueryInterface(Ci.nsIHttpChannel);
698-
if (aRequest.getResponseHeader('Accept-Ranges') === 'bytes') {
699-
var hash = aRequest.URI.ref;
700-
acceptRanges = hash.indexOf('disableRange=true') < 0;
701-
}
698+
isHttpRequest = true;
702699
} catch (e) {}
700+
701+
var rangeRequest = false;
702+
if (isHttpRequest) {
703+
var contentEncoding = 'identity';
704+
try {
705+
contentEncoding = aRequest.getResponseHeader('Content-Encoding');
706+
} catch (e) {}
707+
708+
var acceptRanges;
709+
try {
710+
acceptRanges = aRequest.getResponseHeader('Accept-Ranges');
711+
} catch (e) {}
712+
713+
var hash = aRequest.URI.ref;
714+
rangeRequest = contentEncoding === 'identity' &&
715+
acceptRanges === 'bytes' &&
716+
hash.indexOf('disableRange=true') < 0;
717+
}
718+
703719
aRequest.QueryInterface(Ci.nsIChannel);
704720

705721
aRequest.QueryInterface(Ci.nsIWritablePropertyBag);
722+
706723
var contentDispositionFilename;
707724
try {
708725
contentDispositionFilename = aRequest.contentDispositionFilename;
@@ -712,7 +729,7 @@ PdfStreamConverter.prototype = {
712729
aRequest.setProperty('contentType', aRequest.contentType);
713730
aRequest.contentType = 'text/html';
714731

715-
if (!acceptRanges) {
732+
if (!rangeRequest) {
716733
// Creating storage for PDF data
717734
var contentLength = aRequest.contentLength;
718735
this.dataListener = new PdfDataListener(contentLength);
@@ -750,7 +767,7 @@ PdfStreamConverter.prototype = {
750767
// Double check the url is still the correct one.
751768
if (domWindow.document.documentURIObject.equals(aRequest.URI)) {
752769
var actions;
753-
if (acceptRanges) {
770+
if (rangeRequest) {
754771
// We are going to be issuing range requests, so cancel the
755772
// original request
756773
aRequest.resume();

src/worker.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,12 @@ var WorkerMessageHandler = {
183183
return;
184184
}
185185

186+
var contentEncoding =
187+
fullRequestXhr.getResponseHeader('Content-Encoding') || 'identity';
188+
if (contentEncoding !== 'identity') {
189+
return;
190+
}
191+
186192
var length = fullRequestXhr.getResponseHeader('Content-Length');
187193
length = parseInt(length, 10);
188194
if (!isInt(length)) {

0 commit comments

Comments
 (0)