Index: chrome/browser/resources/chromeos/chromevox/chromevox/injected/pdf_processor.js |
diff --git a/chrome/browser/resources/chromeos/chromevox/chromevox/injected/pdf_processor.js b/chrome/browser/resources/chromeos/chromevox/chromevox/injected/pdf_processor.js |
index 92650ce0bb219ceb0ae8f1d3ad8a014517d9464b..531a0ad40a655cd8860ba3c28919584004f56f92 100644 |
--- a/chrome/browser/resources/chromeos/chromevox/chromevox/injected/pdf_processor.js |
+++ b/chrome/browser/resources/chromeos/chromevox/chromevox/injected/pdf_processor.js |
@@ -5,18 +5,16 @@ |
/** |
* @fileoverview Logic to process PDFs |
+ * |
+ * This file runs when ChromeVox is injected into Chrome's component |
+ * extension that implements PDF support. The extension wraps a |
+ * PDFium plug-in object. |
*/ |
goog.provide('cvox.PdfProcessor'); |
goog.require('cvox.QueueMode'); |
/** |
- * The array of PDFs yet to process. |
- * @type {Array<HTMLEmbedElement>} |
- */ |
-cvox.PdfProcessor.pdfEmbeds = []; |
- |
-/** |
* The current PDF we're processing, or null if we're not processing one. |
* @type {HTMLEmbedElement} |
*/ |
@@ -52,46 +50,40 @@ cvox.PdfProcessor.processEmbeddedPdfs = function() { |
return; |
} |
- var pdfEmbeds = document.querySelectorAll('embed[type="application/pdf"]'); |
+ var pdfEmbeds = document.querySelectorAll( |
+ 'embed[type="application/x-google-chrome-pdf"]'); |
if (pdfEmbeds.length == 0) { |
return; |
} |
- |
- // Convert it to an Array so we can slice off one at a time, and stick |
- // it in a class variable. The responses from the plug-in come as a |
- // generic 'message' event to the window with no context, so we have |
- // to use global state to keep track of progress. |
- cvox.PdfProcessor.pdfEmbeds = Array.prototype.slice.call(pdfEmbeds); |
+ cvox.PdfProcessor.pdfEmbed = pdfEmbeds[0]; |
// Install our event listener for responses. |
window.addEventListener('message', |
/** @type {EventListener} */(cvox.PdfProcessor.onMessage)); |
- // Start processing the first one. |
- cvox.PdfProcessor.processNextPdf(); |
+ // Start processing the pdf. |
+ cvox.PdfProcessor.process(); |
}; |
/** |
- * Pull off the next <embed> element from |cvox.PdfProcessor.pdfEmbeds| |
- * and send a message to it to begin processing. If there are no more |
+ * Send a message to the plug-in to begin processing. If there are no more |
* elements in the array, remove the event listener and reset |
* NavigationManager so that it lands at the top of the now-modified page. |
*/ |
-cvox.PdfProcessor.processNextPdf = function() { |
- if (cvox.PdfProcessor.pdfEmbeds.length == 0) { |
- window.removeEventListener('message', |
- /** @type {EventListener} */(cvox.PdfProcessor.onMessage)); |
- cvox.PdfProcessor.pdfEmbeds = null; |
- cvox.PdfProcessor.pdfEmbed = null; |
- |
- cvox.ChromeVox.navigationManager.reset(); |
- return; |
- } |
- |
- cvox.PdfProcessor.pdfEmbed = cvox.PdfProcessor.pdfEmbeds.shift(); |
+cvox.PdfProcessor.process = function() { |
cvox.PdfProcessor.pageCount = null; |
cvox.PdfProcessor.pageIndex = null; |
- cvox.PdfProcessor.pdfEmbed.postMessage({'type': 'getAccessibilityJSON'}); |
+ window.postMessage({'type': 'getAccessibilityJSON'}, '*'); |
+}; |
+ |
+/** |
+ * Called after finishing the pdf. |
+ */ |
+cvox.PdfProcessor.finish = function() { |
+ window.removeEventListener('message', |
+ /** @type {EventListener} */(cvox.PdfProcessor.onMessage)); |
+ cvox.PdfProcessor.pdfEmbed = null; |
+ cvox.ChromeVox.navigationManager.reset(); |
}; |
/** |
@@ -127,9 +119,8 @@ cvox.PdfProcessor.onMessage = function(message) { |
// whether it's loaded, whether it's copyable, and how many total pages |
// there are. |
if (!info.loaded) { |
- cvox.PdfProcessor.pdfEmbeds.unshift(cvox.PdfProcessor.pdfEmbed); |
cvox.PdfProcessor.pdfEmbed = null; |
- window.setTimeout(cvox.PdfProcessor.processNextPdf, 100); |
+ window.setTimeout(cvox.PdfProcessor.finish, 100); |
return; |
} |
@@ -186,7 +177,7 @@ cvox.PdfProcessor.getNextPage = function() { |
cvox.PdfProcessor.pdfEmbed.style.display = 'none'; |
cvox.PdfProcessor.pdfEmbed.parentElement.appendChild( |
cvox.PdfProcessor.documentDiv); |
- cvox.PdfProcessor.processNextPdf(); |
+ cvox.PdfProcessor.finish(); |
return; |
} |