From 4bfcb27d0be27b5e7516a27238b65bd2f218404e Mon Sep 17 00:00:00 2001
From: Jonas Jenwald <jonas.jenwald@gmail.com>
Date: Wed, 7 May 2014 21:06:44 +0200
Subject: [PATCH] Remove 'outline' from GetDoc

---
 src/core/worker.js | 20 +++++++++++++-------
 src/display/api.js | 15 +++++++++++----
 2 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/src/core/worker.js b/src/core/worker.js
index 2b15e528a..770d7feea 100644
--- a/src/core/worker.js
+++ b/src/core/worker.js
@@ -32,23 +32,21 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
       var parseSuccess = function parseSuccess() {
         var numPagesPromise = pdfManager.ensureDoc('numPages');
         var fingerprintPromise = pdfManager.ensureDoc('fingerprint');
-        var outlinePromise = pdfManager.ensureCatalog('documentOutline');
         var infoPromise = pdfManager.ensureDoc('documentInfo');
         var metadataPromise = pdfManager.ensureCatalog('metadata');
         var encryptedPromise = pdfManager.ensureXRef('encrypt');
         var javaScriptPromise = pdfManager.ensureCatalog('javaScript');
-        Promise.all([numPagesPromise, fingerprintPromise, outlinePromise,
+        Promise.all([numPagesPromise, fingerprintPromise,
                      infoPromise, metadataPromise, encryptedPromise,
                      javaScriptPromise]).then(function onDocReady(results) {
 
           var doc = {
             numPages: results[0],
             fingerprint: results[1],
-            outline: results[2],
-            info: results[3],
-            metadata: results[4],
-            encrypted: !!results[5],
-            javaScript: results[6]
+            info: results[2],
+            metadata: results[3],
+            encrypted: !!results[4],
+            javaScript: results[5]
           };
           loadDocumentCapability.resolve(doc);
         },
@@ -313,6 +311,14 @@ var WorkerMessageHandler = PDFJS.WorkerMessageHandler = {
       }
     );
 
+    handler.on('GetOutline',
+      function wphSetupGetOutline(data, deferred) {
+        pdfManager.ensureCatalog('documentOutline').then(function (outline) {
+          deferred.resolve(outline);
+        }, deferred.reject);
+      }
+    );
+
     handler.on('GetData', function wphSetupGetData(data, deferred) {
       pdfManager.requestLoadedStream();
       pdfManager.onLoadedStream().then(function(stream) {
diff --git a/src/display/api.js b/src/display/api.js
index e7035abfe..f8cbdc6e4 100644
--- a/src/display/api.js
+++ b/src/display/api.js
@@ -293,10 +293,7 @@ var PDFDocumentProxy = (function PDFDocumentProxyClosure() {
      * ].
      */
     getOutline: function PDFDocumentProxy_getOutline() {
-      return new Promise(function (resolve) {
-        var outline = this.pdfInfo.outline;
-        resolve(outline);
-      }.bind(this));
+      return this.transport.getOutline();
     },
     /**
      * @return {Promise} A promise that is resolved with an {Object} that has
@@ -1066,6 +1063,16 @@ var WorkerTransport = (function WorkerTransportClosure() {
       }.bind(this));
     },
 
+    getOutline: function WorkerTransport_getOutline() {
+      return new Promise(function (resolve) {
+        this.messageHandler.send('GetOutline', null,
+          function transportOutline(outline) {
+            resolve(outline);
+          }
+        );
+      }.bind(this));
+    },
+
     startCleanup: function WorkerTransport_startCleanup() {
       this.messageHandler.send('Cleanup', null,
         function endCleanup() {