]> git.parisson.com Git - pdf.js.git/commitdiff
Test refactoring for async api.
authorBrendan Dahl <brendan.dahl@gmail.com>
Thu, 12 Apr 2012 01:05:43 +0000 (18:05 -0700)
committerBrendan Dahl <brendan.dahl@gmail.com>
Thu, 12 Apr 2012 01:05:43 +0000 (18:05 -0700)
src/api.js
test/driver.js
test/test_slave.html

index 82e85681c3282d1f054e3e98ace5f3b9f0d03ff9..3d683af07280a505f08bb641e7660d22cf1fb8bb 100644 (file)
@@ -15,7 +15,6 @@
     // all requirements to run parts of pdf.js in a web worker.
     // Right now, the requirement is, that an Uint8Array is still an Uint8Array
     // as it arrives on the worker. Chrome added this with version 15.
-    globalScope.PDFJS.disableWorker = true;
     if (!globalScope.PDFJS.disableWorker && typeof Worker !== 'undefined') {
       var workerSrc = PDFJS.workerSrc;
       if (typeof workerSrc === 'undefined') {
 
     getPage: function WorkerTransport_getPage(n, promise) {
       if (this.pageCache[n - 1]) {
-         promise.resolve(pageCache[n - 1]);
+         promise.resolve(this.pageCache[n - 1]);
          return;
       }
       if ((n - 1) in this.pagePromises) {
index a1dc4b242ee7ca974d569b62da0ca9ccee75d437..600f53c9cf50534442845358fb4c7318a83bf7bb 100644 (file)
@@ -100,13 +100,24 @@ function nextTask() {
 
   getPdf(task.file, function nextTaskGetPdf(data) {
     var failure;
+    function continuation() {
+      task.pageNum = task.firstPage || 1;
+      nextPage(task, failure);
+    }
     try {
-      task.pdfDoc = new PDFJS.PDFDoc(data);
+      var promise = PDFJS.getDocument(data);
+      promise.then(function(doc) {
+        task.pdfDoc = doc;
+        continuation();
+      }, function(e) {
+        failure = 'load PDF doc : ' + e;
+        continuation();
+      });
+      return;
     } catch (e) {
       failure = 'load PDF doc : ' + exceptionToString(e);
     }
-    task.pageNum = task.firstPage || 1;
-    nextPage(task, failure);
+    continuation();
   });
 }
 
@@ -163,45 +174,43 @@ function nextPage(task, loadError) {
       log(' loading page ' + task.pageNum + '/' + task.pdfDoc.numPages +
           '... ');
       var ctx = canvas.getContext('2d');
-      page = task.pdfDoc.getPage(task.pageNum);
-
-      var pdfToCssUnitsCoef = 96.0 / 72.0;
-      // using mediaBox for the canvas size
-      var pageWidth = page.width;
-      var pageHeight = page.height;
-      canvas.width = pageWidth * pdfToCssUnitsCoef;
-      canvas.height = pageHeight * pdfToCssUnitsCoef;
-      clear(ctx);
-
-      // using the text layer builder that does nothing to test
-      // text layer creation operations
-      var textLayerBuilder = {
-        beginLayout: function nullTextLayerBuilderBeginLayout() {},
-        endLayout: function nullTextLayerBuilderEndLayout() {},
-        appendText: function nullTextLayerBuilderAppendText(text, fontName,
-                                                            fontSize) {}
-      };
-
-      page.startRendering(
-        ctx,
-        function nextPageStartRendering(error) {
-          var failureMessage = false;
-          if (error)
-            failureMessage = 'render : ' + error.message;
-          snapshotCurrentPage(task, failureMessage);
+      task.pdfDoc.getPage(task.pageNum).then(function(page) {
+        var pdfToCssUnitsCoef = 96.0 / 72.0;
+        // using mediaBox for the canvas size
+        var pageWidth = page.width;
+        var pageHeight = page.height;
+        canvas.width = pageWidth * pdfToCssUnitsCoef;
+        canvas.height = pageHeight * pdfToCssUnitsCoef;
+        clear(ctx);
+
+        // using the text layer builder that does nothing to test
+        // text layer creation operations
+        var textLayerBuilder = {
+          beginLayout: function nullTextLayerBuilderBeginLayout() {},
+          endLayout: function nullTextLayerBuilderEndLayout() {},
+          appendText: function nullTextLayerBuilderAppendText(text, fontName,
+                                                              fontSize) {}
+        };
+        var renderContext = {
+          canvasContext: ctx,
+          textLayer: textLayerBuilder,
+          viewport: page.getViewport(1)
+        };
+        page.render(renderContext).then(function() {
+          snapshotCurrentPage(task, false);
         },
-        textLayerBuilder
-      );
+        function(error) {
+          snapshotCurrentPage(task, 'render : ' + error);
+        });
+      },
+      function(error) {
+        snapshotCurrentPage(task, 'render : ' + error);
+      });
     } catch (e) {
       failure = 'page setup : ' + exceptionToString(e);
+      snapshotCurrentPage(task, failure);
     }
   }
-
-  if (failure) {
-    // Skip right to snapshotting if there was a failure, since the
-    // fonts might be in an inconsistent state.
-    snapshotCurrentPage(task, failure);
-  }
 }
 
 function snapshotCurrentPage(task, failure) {
index 50bb067e1d196a879bbeaa2cbc52dcfbf995fbed..7c2097110bb908d7f8c4fff17287ccbb6bc9fab2 100644 (file)
@@ -5,6 +5,7 @@
     <style type="text/css"></style>
     <script type="text/javascript" src="/src/core.js"></script>
     <script type="text/javascript" src="/src/util.js"></script>
+    <script type="text/javascript" src="/src/api.js"></script>
     <script type="text/javascript" src="/src/canvas.js"></script>
     <script type="text/javascript" src="/src/obj.js"></script>
     <script type="text/javascript" src="/src/function.js"></script>