@ -18,6 +18,9 @@
@@ -18,6 +18,9 @@
'use strict' ;
var WAITING _TIME = 100 ; // ms
var PDF _TO _CSS _UNITS = 96.0 / 72.0 ;
/ * *
* @ class
* /
@ -133,28 +136,27 @@ var Driver = (function DriverClosure() {
@@ -133,28 +136,27 @@ var Driver = (function DriverClosure() {
Driver . prototype = {
_getQueryStringParameters : function Driver _getQueryStringParameters ( ) {
var qs = window . location . search . substring ( 1 ) ;
var k vs = qs . split ( '&' ) ;
var params = { } ;
for ( var i = 0 ; i < kv s. length ; ++ i ) {
var k v = k vs[ i ] . split ( '=' ) ;
params [ unescape ( k v[ 0 ] ) ] = unescape ( k v[ 1 ] ) ;
var queryString = window . location . search . substring ( 1 ) ;
var value s = queryString . split ( '&' ) ;
var parameter s = { } ;
for ( var i = 0 , ii = value s. length ; i < ii ; i ++ ) {
var value = value s [ i ] . split ( '=' ) ;
parameter s [ unescape ( value [ 0 ] ) ] = unescape ( value [ 1 ] ) ;
}
return params ;
return parameter s ;
} ,
run : function Driver _run ( ) {
this . _info ( 'User Agent: ' + navigator . userAgent ) ;
this . _log ( 'load...\n' ) ;
var self = this ;
this . _info ( 'User agent: ' + navigator . userAgent ) ;
this . _log ( 'Harness thinks this browser is "' + this . browser +
'" with path "' + this . appPath + '"\n' ) ;
this . _log ( 'Fetching manifest "' + this . manifestFile + '"... ' ) ;
var r = new XMLHttpRequest ( ) ;
var self = this ;
r . open ( 'GET' , this . manifestFile , false ) ;
r . onreadystatechange = function loadOnreadystatechange ( e ) {
r . onreadystatechange = function ( ) {
if ( r . readyState === 4 ) {
self . _log ( 'done\n' ) ;
self . manifest = JSON . parse ( r . responseText ) ;
@ -162,17 +164,20 @@ var Driver = (function DriverClosure() {
@@ -162,17 +164,20 @@ var Driver = (function DriverClosure() {
self . _nextTask ( ) ;
}
} ;
if ( this . delay ) {
this . _log ( '\nDelaying for ' + this . delay + 'ms...\n' ) ;
if ( this . delay > 0 ) {
this . _log ( '\nDelaying for ' + this . delay + ' ms...\n' ) ;
}
// When gathering the stats the numbers seem to be more reliable
// if the browser is given more time to startup .
// if the browser is given more time to start.
setTimeout ( function ( ) {
r . send ( null ) ;
} , this . delay ) ;
} ,
_nextTask : function Driver _nextTask ( ) {
var self = this ;
var failure = '' ;
this . _cleanup ( ) ;
if ( this . currentTask === this . manifest . length ) {
@ -181,17 +186,12 @@ var Driver = (function DriverClosure() {
@@ -181,17 +186,12 @@ var Driver = (function DriverClosure() {
}
var task = this . manifest [ this . currentTask ] ;
task . round = 0 ;
task . pageNum = task . firstPage || 1 ;
task . stats = { times : [ ] } ;
this . _log ( 'Loading file "' + task . file + '"\n' ) ;
var absoluteUrl = combineUrl ( window . location . href , task . file ) ;
var failure ;
var self = this ;
function continuation ( ) {
task . pageNum = task . firstPage || 1 ;
self . _nextPage ( task , failure ) ;
}
PDFJS . disableRange = task . disableRange ;
PDFJS . disableAutoFetch = ! task . enableAutoFetch ;
@ -201,16 +201,16 @@ var Driver = (function DriverClosure() {
@@ -201,16 +201,16 @@ var Driver = (function DriverClosure() {
password : task . password
} ) . then ( function ( doc ) {
task . pdfDoc = doc ;
continuation ( ) ;
self . _nextPage ( task , failure ) ;
} , function ( e ) {
failure = 'load PDF doc : ' + e ;
continuation ( ) ;
failure = 'Loading PDF document : ' + e ;
self . _nextPage ( task , failure ) ;
} ) ;
return ;
} catch ( e ) {
failure = 'load PDF doc : ' + this . _exceptionToString ( e ) ;
failure = 'Loading PDF document : ' + this . _exceptionToString ( e ) ;
}
continuation ( ) ;
this . _nextPage ( task , failure ) ;
} ,
_cleanup : function Driver _cleanup ( ) {
@ -247,20 +247,20 @@ var Driver = (function DriverClosure() {
@@ -247,20 +247,20 @@ var Driver = (function DriverClosure() {
return e . message + ( 'stack' in e ? ' at ' + e . stack . split ( '\n' ) [ 0 ] : '' ) ;
} ,
_getLastPageNum : function Driver _getLastPageNum ( task ) {
_getLastPageNumber : function Driver _getLastPageNumber ( task ) {
if ( ! task . pdfDoc ) {
return task . firstPage || 1 ;
}
var lastPageNum = task . lastPage || 0 ;
if ( ! lastPageNum || lastPageNum > task . pdfDoc . numPages ) {
lastPageNum = task . pdfDoc . numPages ;
var lastPageNumber = task . lastPage || 0 ;
if ( ! lastPageNumber || lastPageNumber > task . pdfDoc . numPages ) {
lastPageNumber = task . pdfDoc . numPages ;
}
return lastPageNum ;
return lastPageNumber ;
} ,
_nextPage : function Driver _nextPage ( task , loadError ) {
var failure = loadError || '' ;
var self = this ;
var failure = loadError || '' ;
if ( ! task . pdfDoc ) {
var dataUrl = this . canvas . toDataURL ( 'image/png' ) ;
@ -273,7 +273,7 @@ var Driver = (function DriverClosure() {
@@ -273,7 +273,7 @@ var Driver = (function DriverClosure() {
return ;
}
if ( task . pageNum > this . _getLastPageNum ( task ) ) {
if ( task . pageNum > this . _getLastPageNumber ( task ) ) {
if ( ++ task . round < task . rounds ) {
this . _log ( ' Round ' + ( 1 + task . round ) + '\n' ) ;
task . pageNum = task . firstPage || 1 ;
@ -285,13 +285,13 @@ var Driver = (function DriverClosure() {
@@ -285,13 +285,13 @@ var Driver = (function DriverClosure() {
}
if ( task . skipPages && task . skipPages . indexOf ( task . pageNum ) >= 0 ) {
this . _log ( ' s kipping page ' + task . pageNum + '/' +
this . _log ( ' S kipping page ' + task . pageNum + '/' +
task . pdfDoc . numPages + '... ' ) ;
// Empty the canvas
this . canvas . width = 1 ;
this . canvas . height = 1 ;
this . _clearCanvas ( this . canvas . getContext ( '2d' ) ) ;
this . _clearCanvas ( ) ;
this . _snapshot ( task , '' ) ;
return ;
@ -299,15 +299,14 @@ var Driver = (function DriverClosure() {
@@ -299,15 +299,14 @@ var Driver = (function DriverClosure() {
if ( ! failure ) {
try {
this . _log ( ' l oading page ' + task . pageNum + '/' +
this . _log ( ' L oading page ' + task . pageNum + '/' +
task . pdfDoc . numPages + '... ' ) ;
var ctx = this . canvas . getContext ( '2d' ) ;
task . pdfDoc . getPage ( task . pageNum ) . then ( function ( page ) {
var pdfToCssUnitsCoef = 96.0 / 72.0 ;
var viewport = page . getViewport ( pdfToCssUnitsCoef ) ;
var viewport = page . getViewport ( PDF _TO _CSS _UNITS ) ;
self . canvas . width = viewport . width ;
self . canvas . height = viewport . height ;
self . _clearCanvas ( ctx ) ;
self . _clearCanvas ( ) ;
var drawContext , textLayerBuilder ;
var resolveInitPromise ;
@ -369,7 +368,7 @@ var Driver = (function DriverClosure() {
@@ -369,7 +368,7 @@ var Driver = (function DriverClosure() {
_snapshot : function Driver _snapshot ( task , failure ) {
var self = this ;
this . _log ( 'done, s napshotting... ' ) ;
this . _log ( 'S napshotting... ' ) ;
var dataUrl = this . canvas . toDataURL ( 'image/png' ) ;
this . _sendResult ( dataUrl , task , failure , function ( ) {
@ -382,21 +381,14 @@ var Driver = (function DriverClosure() {
@@ -382,21 +381,14 @@ var Driver = (function DriverClosure() {
_quit : function Driver _quit ( ) {
this . _log ( 'Done !' ) ;
document . body . innerHTML = 'Tests finished. <h1>Close this window.</h1>' +
document . body . innerHTML ;
this . _sendQuitRequest ( function ( ) {
window . close ( ) ;
} ) ;
} ,
this . end . textContent = 'Tests finished. Close this window!' ;
_sendQuitRequest : function Driver _sendQuitRequest ( callback ) {
// Send the quit request
var r = new XMLHttpRequest ( ) ;
r . open ( 'POST' , '/tellMeToQuit?path=' + escape ( this . appPath ) , false ) ;
r . onreadystatechange = function sendQuitRequestOnreadystatechange ( e ) {
r . onreadystatechange = function ( e ) {
if ( r . readyState === 4 ) {
if ( callback ) {
callback ( ) ;
}
window . close ( ) ;
}
} ;
r . send ( null ) ;
@ -409,14 +401,16 @@ var Driver = (function DriverClosure() {
@@ -409,14 +401,16 @@ var Driver = (function DriverClosure() {
} ) ) ;
} ,
_log : function Driver _log ( str ) {
if ( output . insertAdjacentHTML ) {
this . output . insertAdjacentHTML ( 'BeforeEnd' , str ) ;
_log : function Driver _log ( message ) {
// Using insertAdjacentHTML yields a large performance gain and
// reduces runtime significantly.
if ( this . output . insertAdjacentHTML ) {
this . output . insertAdjacentHTML ( 'BeforeEnd' , message ) ;
} else {
this . output . innerHTML += str ;
this . output . textContent += message ;
}
if ( str . lastIndexOf ( '\n' ) >= 0 ) {
if ( message . lastIndexOf ( '\n' ) >= 0 ) {
// Scroll to the bottom of the page
window . scrollTo ( 0 , document . body . scrollHeight ) ;
}
@ -424,10 +418,10 @@ var Driver = (function DriverClosure() {
@@ -424,10 +418,10 @@ var Driver = (function DriverClosure() {
_done : function Driver _done ( ) {
if ( this . inFlightRequests > 0 ) {
this . inflight . innerHTML = this . inFlightRequests ;
setTimeout ( this . _done ( ) , 100 ) ;
this . inflight . textContent = this . inFlightRequests ;
setTimeout ( this . _done ( ) , WAITING _TIME ) ;
} else {
setTimeout ( this . _quit ( ) , 100 ) ;
setTimeout ( this . _quit ( ) , WAITING _TIME ) ;
}
} ,
@ -438,7 +432,7 @@ var Driver = (function DriverClosure() {
@@ -438,7 +432,7 @@ var Driver = (function DriverClosure() {
id : task . id ,
numPages : task . pdfDoc ?
( task . lastPage || task . pdfDoc . numPages ) : 0 ,
lastPageNum : this . _getLastPageNum ( task ) ,
lastPageNum : this . _getLastPageNumber ( task ) ,
failure : failure ,
file : task . file ,
round : task . round ,
@ -454,7 +448,7 @@ var Driver = (function DriverClosure() {
@@ -454,7 +448,7 @@ var Driver = (function DriverClosure() {
var r = new XMLHttpRequest ( ) ;
r . open ( 'POST' , url , true ) ;
r . setRequestHeader ( 'Content-Type' , 'application/json' ) ;
r . onreadystatechange = function sendResultOnreadystatechange ( e ) {
r . onreadystatechange = function ( e ) {
if ( r . readyState === 4 ) {
self . inFlightRequests -- ;
@ -469,7 +463,7 @@ var Driver = (function DriverClosure() {
@@ -469,7 +463,7 @@ var Driver = (function DriverClosure() {
}
}
} ;
this . inflight . innerHTML = this . inFlightRequests ++ ;
this . inflight . textContent = this . inFlightRequests ++ ;
r . send ( message ) ;
}
} ;