Changes to regression tests for progressive loading
This commit is contained in:
parent
ef423ef30c
commit
6b2c6fc223
10
src/api.js
10
src/api.js
@ -528,11 +528,14 @@ var WorkerTransport = (function WorkerTransportClosure() {
|
|||||||
}
|
}
|
||||||
WorkerTransport.prototype = {
|
WorkerTransport.prototype = {
|
||||||
destroy: function WorkerTransport_destroy() {
|
destroy: function WorkerTransport_destroy() {
|
||||||
if (this.worker)
|
|
||||||
this.worker.terminate();
|
|
||||||
|
|
||||||
this.pageCache = [];
|
this.pageCache = [];
|
||||||
this.pagePromises = [];
|
this.pagePromises = [];
|
||||||
|
var self = this;
|
||||||
|
this.messageHandler.send('Terminate', null, function () {
|
||||||
|
if (self.worker) {
|
||||||
|
self.worker.terminate();
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
setupFakeWorker: function WorkerTransport_setupFakeWorker() {
|
setupFakeWorker: function WorkerTransport_setupFakeWorker() {
|
||||||
warn('Setting up fake worker.');
|
warn('Setting up fake worker.');
|
||||||
@ -733,6 +736,7 @@ var WorkerTransport = (function WorkerTransportClosure() {
|
|||||||
},
|
},
|
||||||
|
|
||||||
fetchDocument: function WorkerTransport_fetchDocument(source) {
|
fetchDocument: function WorkerTransport_fetchDocument(source) {
|
||||||
|
source.disableAutoFetch = PDFJS.disableAutoFetch;
|
||||||
source.chunkedViewerLoading = !!this.pdfDataRangeTransport;
|
source.chunkedViewerLoading = !!this.pdfDataRangeTransport;
|
||||||
this.messageHandler.send('GetDocRequest', {
|
this.messageHandler.send('GetDocRequest', {
|
||||||
source: source,
|
source: source,
|
||||||
|
@ -198,6 +198,7 @@ var ChunkedStreamManager = (function ChunkedStreamManagerClosure() {
|
|||||||
this.length = length;
|
this.length = length;
|
||||||
this.chunkSize = chunkSize;
|
this.chunkSize = chunkSize;
|
||||||
this.url = url;
|
this.url = url;
|
||||||
|
this.disableAutoFetch = args.disableAutoFetch;
|
||||||
var msgHandler = this.msgHandler = args.msgHandler;
|
var msgHandler = this.msgHandler = args.msgHandler;
|
||||||
|
|
||||||
if (args.chunkedViewerLoading) {
|
if (args.chunkedViewerLoading) {
|
||||||
@ -382,7 +383,7 @@ var ChunkedStreamManager = (function ChunkedStreamManagerClosure() {
|
|||||||
|
|
||||||
// If there are no pending requests, automatically fetch the next
|
// If there are no pending requests, automatically fetch the next
|
||||||
// unfetched chunk of the PDF
|
// unfetched chunk of the PDF
|
||||||
if (isEmptyObj(this.requestsByChunk)) {
|
if (!this.disableAutoFetch && isEmptyObj(this.requestsByChunk)) {
|
||||||
var nextEmptyChunk;
|
var nextEmptyChunk;
|
||||||
if (this.stream.numChunksLoaded === 1) {
|
if (this.stream.numChunksLoaded === 1) {
|
||||||
// This is a special optimization so that after fetching the first
|
// This is a special optimization so that after fetching the first
|
||||||
|
@ -118,7 +118,8 @@ var NetworkPdfManager = (function NetworkPdfManagerClosure() {
|
|||||||
var params = {
|
var params = {
|
||||||
msgHandler: msgHandler,
|
msgHandler: msgHandler,
|
||||||
httpHeaders: args.httpHeaders,
|
httpHeaders: args.httpHeaders,
|
||||||
chunkedViewerLoading: args.chunkedViewerLoading
|
chunkedViewerLoading: args.chunkedViewerLoading,
|
||||||
|
disableAutoFetch: args.disableAutoFetch
|
||||||
};
|
};
|
||||||
this.streamManager = new ChunkedStreamManager(args.length, CHUNK_SIZE,
|
this.streamManager = new ChunkedStreamManager(args.length, CHUNK_SIZE,
|
||||||
args.url, params);
|
args.url, params);
|
||||||
|
@ -292,6 +292,7 @@ var WorkerMessageHandler = {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pdfManager.requestLoadedStream();
|
||||||
pdfManager.onLoadedStream().then(function() {
|
pdfManager.onLoadedStream().then(function() {
|
||||||
loadDocument(true).then(onSuccess, onFailure);
|
loadDocument(true).then(onSuccess, onFailure);
|
||||||
});
|
});
|
||||||
@ -430,6 +431,11 @@ var WorkerMessageHandler = {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
handler.on('Terminate', function wphTerminate(data, promise) {
|
||||||
|
pdfManager.streamManager.networkManager.abortAllRequests();
|
||||||
|
promise.resolve();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -133,7 +133,8 @@ function nextTask() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// When generating reference images in masterMode, disable range requests
|
// When generating reference images in masterMode, disable range requests
|
||||||
PDFJS.disableRange = !task.rangeRequest || masterMode;
|
PDFJS.disableRange = task.disableRange || masterMode;
|
||||||
|
PDFJS.disableAutoFetch = !task.enableAutoFetch || masterMode;
|
||||||
try {
|
try {
|
||||||
var promise = PDFJS.getDocument(absoluteUrl);
|
var promise = PDFJS.getDocument(absoluteUrl);
|
||||||
promise.then(function(doc) {
|
promise.then(function(doc) {
|
||||||
|
38
test/test.py
38
test/test.py
@ -152,10 +152,28 @@ class TestHandlerBase(BaseHTTPRequestHandler):
|
|||||||
try:
|
try:
|
||||||
BaseHTTPRequestHandler.handle_one_request(self)
|
BaseHTTPRequestHandler.handle_one_request(self)
|
||||||
except socket.error, v:
|
except socket.error, v:
|
||||||
# Ignoring connection reset by peer exceptions
|
if v[0] == errno.ECONNRESET:
|
||||||
if v[0] != errno.ECONNRESET:
|
# Ignoring connection reset by peer exceptions
|
||||||
|
print 'Detected connection reset'
|
||||||
|
elif v[0] == errno.EPIPE:
|
||||||
|
print 'Detected remote peer disconnected'
|
||||||
|
elif v[0] == 10053:
|
||||||
|
# FIXME(mack): Address this issue
|
||||||
|
print 'An established connection was aborted by the' \
|
||||||
|
' software in your host machine'
|
||||||
|
else:
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
def finish(self,*args,**kw):
|
||||||
|
# From http://stackoverflow.com/a/14355079/1834797
|
||||||
|
try:
|
||||||
|
if not self.wfile.closed:
|
||||||
|
self.wfile.flush()
|
||||||
|
self.wfile.close()
|
||||||
|
except socket.error:
|
||||||
|
pass
|
||||||
|
self.rfile.close()
|
||||||
|
|
||||||
def sendFile(self, path, ext):
|
def sendFile(self, path, ext):
|
||||||
self.send_response(200)
|
self.send_response(200)
|
||||||
self.send_header("Accept-Ranges", "bytes")
|
self.send_header("Accept-Ranges", "bytes")
|
||||||
@ -173,13 +191,13 @@ class TestHandlerBase(BaseHTTPRequestHandler):
|
|||||||
self.send_error(416)
|
self.send_error(416)
|
||||||
return
|
return
|
||||||
chunk_len = end - start
|
chunk_len = end - start
|
||||||
|
time.sleep(chunk_len / 1000000.0)
|
||||||
self.send_response(206)
|
self.send_response(206)
|
||||||
self.send_header("Accept-Ranges", "bytes")
|
self.send_header("Accept-Ranges", "bytes")
|
||||||
self.send_header("Content-Type", MIMEs[ext])
|
self.send_header("Content-Type", MIMEs[ext])
|
||||||
self.send_header("Content-Length", chunk_len)
|
self.send_header("Content-Length", chunk_len)
|
||||||
self.send_header("Content-Range", 'bytes ' + str(start) + '-' + str(end - 1) + '/' + str(file_len))
|
self.send_header("Content-Range", 'bytes ' + str(start) + '-' + str(end - 1) + '/' + str(file_len))
|
||||||
self.end_headers()
|
self.end_headers()
|
||||||
time.sleep(chunk_len / 500000.0)
|
|
||||||
with open(path, "rb") as f:
|
with open(path, "rb") as f:
|
||||||
f.seek(start)
|
f.seek(start)
|
||||||
self.wfile.write(f.read(chunk_len))
|
self.wfile.write(f.read(chunk_len))
|
||||||
@ -212,15 +230,17 @@ class TestHandlerBase(BaseHTTPRequestHandler):
|
|||||||
range_re = re.compile(r"^bytes=(\d+)\-(\d+)?")
|
range_re = re.compile(r"^bytes=(\d+)\-(\d+)?")
|
||||||
parsed_range = range_re.search(self.headers.getheader("Range"))
|
parsed_range = range_re.search(self.headers.getheader("Range"))
|
||||||
if parsed_range is None:
|
if parsed_range is None:
|
||||||
self.send_error(501)
|
self.send_error(501)
|
||||||
return
|
return
|
||||||
print 'Range requested ' + parsed_range.group(1) + '-' + parsed_range.group(2)
|
if VERBOSE:
|
||||||
|
print 'Range requested %s - %s: %s' % (
|
||||||
|
parsed_range.group(1), parsed_range.group(2))
|
||||||
start = int(parsed_range.group(1))
|
start = int(parsed_range.group(1))
|
||||||
if parsed_range.group(2) is None:
|
if parsed_range.group(2) is None:
|
||||||
self.sendFileRange(path, ext, start, None)
|
self.sendFileRange(path, ext, start, None)
|
||||||
else:
|
else:
|
||||||
end = int(parsed_range.group(2)) + 1
|
end = int(parsed_range.group(2)) + 1
|
||||||
self.sendFileRange(path, ext, start, end)
|
self.sendFileRange(path, ext, start, end)
|
||||||
return
|
return
|
||||||
|
|
||||||
self.sendFile(path, ext)
|
self.sendFile(path, ext)
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
"file": "pdfs/filled-background.pdf",
|
"file": "pdfs/filled-background.pdf",
|
||||||
"md5": "2e3120255d9c3e79b96d2543b12d2589",
|
"md5": "2e3120255d9c3e79b96d2543b12d2589",
|
||||||
"rounds": 1,
|
"rounds": 1,
|
||||||
"rangeRequest": true,
|
|
||||||
"type": "eq"
|
"type": "eq"
|
||||||
},
|
},
|
||||||
{ "id": "tracemonkey-eq",
|
{ "id": "tracemonkey-eq",
|
||||||
@ -311,6 +310,14 @@
|
|||||||
"rounds": 1,
|
"rounds": 1,
|
||||||
"type": "eq"
|
"type": "eq"
|
||||||
},
|
},
|
||||||
|
{ "id": "usmanm-bad-auto-fetch",
|
||||||
|
"file": "pdfs/usmanm-bad.pdf",
|
||||||
|
"md5": "38afb822433aaf07fc8f54807cd4f61a",
|
||||||
|
"link": true,
|
||||||
|
"rounds": 1,
|
||||||
|
"type": "eq",
|
||||||
|
"enableAutoFetch": true
|
||||||
|
},
|
||||||
{ "id": "vesta-bad",
|
{ "id": "vesta-bad",
|
||||||
"file": "pdfs/vesta.pdf",
|
"file": "pdfs/vesta.pdf",
|
||||||
"md5": "0afebc109b7c17b95619ea3fab5eafe6",
|
"md5": "0afebc109b7c17b95619ea3fab5eafe6",
|
||||||
@ -1059,13 +1066,6 @@
|
|||||||
"type": "eq",
|
"type": "eq",
|
||||||
"about": "Image with indexed colorspace that has a base lab colorspace."
|
"about": "Image with indexed colorspace that has a base lab colorspace."
|
||||||
},
|
},
|
||||||
{ "id": "yo01",
|
|
||||||
"file": "pdfs/yo01.pdf",
|
|
||||||
"md5": "7d42435c20fe0d32de4ea3d7e4727ac1",
|
|
||||||
"rounds": 1,
|
|
||||||
"link": true,
|
|
||||||
"type": "eq"
|
|
||||||
},
|
|
||||||
{ "id": "20130226130259",
|
{ "id": "20130226130259",
|
||||||
"file": "pdfs/20130226130259.pdf",
|
"file": "pdfs/20130226130259.pdf",
|
||||||
"md5": "c33e90a1b369c508573023d2434b950f",
|
"md5": "c33e90a1b369c508573023d2434b950f",
|
||||||
|
@ -11,7 +11,7 @@ describe('api', function() {
|
|||||||
function waitsForPromise(promise) {
|
function waitsForPromise(promise) {
|
||||||
waitsFor(function() {
|
waitsFor(function() {
|
||||||
return promise.isResolved || promise.isRejected;
|
return promise.isResolved || promise.isRejected;
|
||||||
}, 4000);
|
}, 10000);
|
||||||
}
|
}
|
||||||
function expectAfterPromise(promise, successCallback) {
|
function expectAfterPromise(promise, successCallback) {
|
||||||
waitsForPromise(promise);
|
waitsForPromise(promise);
|
||||||
|
@ -3103,6 +3103,10 @@ document.addEventListener('DOMContentLoaded', function webViewerLoad(evt) {
|
|||||||
PDFJS.disableRange = (hashParams['disableRange'] === 'true');
|
PDFJS.disableRange = (hashParams['disableRange'] === 'true');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ('disableAutoFetch' in hashParams) {
|
||||||
|
PDFJS.disableAutoFetch = (hashParams['disableAutoFetch'] === 'true');
|
||||||
|
}
|
||||||
|
|
||||||
//#if !(FIREFOX || MOZCENTRAL)
|
//#if !(FIREFOX || MOZCENTRAL)
|
||||||
var locale = navigator.language;
|
var locale = navigator.language;
|
||||||
if ('locale' in hashParams)
|
if ('locale' in hashParams)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user