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 |
deleted file mode 100644 |
index 5b232946476962b03b6877ac64865f7b188061ae..0000000000000000000000000000000000000000 |
--- a/chrome/browser/resources/chromeos/chromevox/chromevox/injected/pdf_processor.js |
+++ /dev/null |
@@ -1,242 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
- |
-/** |
- * @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 current PDF we're processing, or null if we're not processing one. |
- * @type {Element} |
- */ |
-cvox.PdfProcessor.pdfEmbed = null; |
- |
-/** |
- * The number of pages in the current PDF, or null if we haven't |
- * retreived that yet. |
- * @type {?number} |
- */ |
-cvox.PdfProcessor.pageCount = null; |
- |
-/** |
- * The 0-based index of the page we're currently retrieving, or null |
- * if we don't know how many pages there are yet. |
- * @type {?number} |
- */ |
-cvox.PdfProcessor.pageIndex = null; |
- |
-/** |
- * The element on the page where all of the generated content from the PDF |
- * will go, or null if we're not currently processing a PDF. |
- * @type {Element} |
- */ |
-cvox.PdfProcessor.documentDiv = null; |
- |
-/** |
- * Process PDFs created with Chrome's built-in PDF plugin, which has an |
- * accessibility hook. |
- */ |
-cvox.PdfProcessor.processEmbeddedPdfs = function() { |
- if (window.location.hash == '#original') { |
- return; |
- } |
- |
- var pdfEmbeds = document.querySelectorAll( |
- 'embed[type="application/x-google-chrome-pdf"]'); |
- if (pdfEmbeds.length == 0) { |
- return; |
- } |
- cvox.PdfProcessor.pdfEmbed = pdfEmbeds[0]; |
- |
- // Install our event listener for responses. |
- window.addEventListener('message', |
- /** @type {EventListener} */(cvox.PdfProcessor.onMessage)); |
- |
- // Start processing the pdf. |
- cvox.PdfProcessor.process(); |
-}; |
- |
-/** |
- * 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.process = function() { |
- cvox.PdfProcessor.pageCount = null; |
- cvox.PdfProcessor.pageIndex = null; |
- 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(); |
-}; |
- |
-/** |
- * Handler for the 'message' event on the window, which is how we get responses |
- * from Chrome's PDF plugin. |
- * |
- * @param {{data: {type: string, json: string}}} message The message from the |
- * PDF plugin containing a type identifier and JSON string. |
- */ |
-cvox.PdfProcessor.onMessage = function(message) { |
- // Exit if it's not an accessibility JSON reply message. |
- if (message.data.type != 'getAccessibilityJSONReply') { |
- return; |
- } |
- |
- // Exit if we aren't in the middle of processing a PDF. |
- if (!cvox.PdfProcessor.pdfEmbed) { |
- return; |
- } |
- |
- // Parse the JSON. |
- var info = /** @type {PDFAccessibilityJSONReply} */( |
- JSON.parse(message.data.json)); |
- |
- // If we already know how many pages are in the doc, we expect this message |
- // contains the data for one particular page. |
- if (cvox.PdfProcessor.pageCount !== null) { |
- cvox.PdfProcessor.processOnePage(info); |
- return; |
- } |
- |
- // If not, we expect this message contains the info about the PDF overall: |
- // whether it's loaded, whether it's copyable, and how many total pages |
- // there are. |
- if (!info.loaded) { |
- cvox.PdfProcessor.pdfEmbed = null; |
- window.setTimeout(cvox.PdfProcessor.finish, 100); |
- return; |
- } |
- |
- // Create the initial HTML skeleton. |
- cvox.PdfProcessor.documentDiv = document.createElement('DIV'); |
- var headerDiv = document.createElement('DIV'); |
- headerDiv.style.position = 'relative'; |
- headerDiv.style.background = 'white'; |
- headerDiv.style.margin = '20pt'; |
- headerDiv.style.padding = '20pt'; |
- headerDiv.style.border = '1px solid #000'; |
- var src = cvox.PdfProcessor.pdfEmbed.src; |
- var filename = src.substr(src.lastIndexOf('/') + 1); |
- document.title = filename; |
- var html = Msgs.getMsg('pdf_header', [filename, src + '#original']); |
- headerDiv.innerHTML = html; |
- // Set up a handler to reload the page when 'Show original' is clicked. |
- var showLink = headerDiv.getElementsByTagName('a')[0]; |
- showLink.addEventListener('click', function() { |
- window.location.href = src + '#original'; |
- window.location.reload(); |
- }, true); |
- cvox.PdfProcessor.documentDiv.appendChild(headerDiv); |
- cvox.PdfProcessor.documentDiv.style.position = 'relative'; |
- cvox.PdfProcessor.documentDiv.style.background = '#CCC'; |
- cvox.PdfProcessor.documentDiv.style.paddingTop = '1pt'; |
- cvox.PdfProcessor.documentDiv.style.paddingBottom = '1pt'; |
- cvox.PdfProcessor.documentDiv.style.width = '100%'; |
- cvox.PdfProcessor.documentDiv.style.minHeight = '100%'; |
- |
- if (!info.copyable) { |
- var alert = document.createElement('div'); |
- alert.setAttribute('role', 'alert'); |
- alert.innerText = Msgs.getMsg('copy_protected_pdf'); |
- cvox.PdfProcessor.documentDiv.appendChild(alert); |
- cvox.PdfProcessor.pdfEmbed.parentElement.appendChild( |
- cvox.PdfProcessor.documentDiv); |
- return; |
- } |
- |
- // Start processing the first page. |
- cvox.PdfProcessor.pageCount = info.numberOfPages; |
- cvox.PdfProcessor.pageIndex = -1; |
- cvox.PdfProcessor.getNextPage(); |
-}; |
- |
-/** |
- * Send a message to the PDF plugin to get the next page. If we've finished |
- * getting all of the pages, clean up and get the next PDF in the document. |
- */ |
-cvox.PdfProcessor.getNextPage = function() { |
- cvox.PdfProcessor.pageIndex++; |
- if (cvox.PdfProcessor.pageIndex >= cvox.PdfProcessor.pageCount) { |
- cvox.PdfProcessor.pdfEmbed.style.display = 'none'; |
- cvox.PdfProcessor.pdfEmbed.parentElement.appendChild( |
- cvox.PdfProcessor.documentDiv); |
- cvox.PdfProcessor.finish(); |
- return; |
- } |
- |
- cvox.PdfProcessor.pdfEmbed.postMessage( |
- {'type': 'getAccessibilityJSON', |
- 'page': cvox.PdfProcessor.pageIndex}); |
-}; |
- |
-/** |
- * Process one page in the PDF file and turn it into HTML. |
- * @param {PDFAccessibilityJSONReply} info The data from one page of the PDF. |
- */ |
-cvox.PdfProcessor.processOnePage = function(info) { |
- var pageDiv = document.createElement('DIV'); |
- var pageAnchor = document.createElement('A'); |
- |
- // Page Achor Setup |
- pageAnchor.name = 'page' + cvox.PdfProcessor.pageIndex; |
- |
- // Page Styles |
- pageDiv.style.position = 'relative'; |
- pageDiv.style.background = 'white'; |
- pageDiv.style.margin = 'auto'; |
- pageDiv.style.marginTop = '20pt'; |
- pageDiv.style.marginBottom = '20pt'; |
- pageDiv.style.height = info.height + 'pt'; |
- pageDiv.style.width = info.width + 'pt'; |
- pageDiv.style.boxShadow = '0pt 0pt 10pt #333'; |
- |
- // Text Nodes |
- var texts = info.textBox; |
- for (var j = 0; j < texts.length; j++) { |
- var text = texts[j]; |
- var textSpan = document.createElement('Span'); |
- |
- // Text Styles |
- textSpan.style.position = 'absolute'; |
- textSpan.style.left = text.left + 'pt'; |
- textSpan.style.top = text.top + 'pt'; |
- textSpan.style.fontSize = (0.8 * text.height) + 'pt'; |
- |
- // Text Content |
- for (var k = 0; k < text.textNodes.length; k++) { |
- var node = text.textNodes[k]; |
- if (node.type == 'text') { |
- textSpan.appendChild(document.createTextNode(node.text)); |
- } else if (node.type == 'url') { |
- var a = document.createElement('A'); |
- a.href = node.url; |
- a.appendChild(document.createTextNode(node.text)); |
- textSpan.appendChild(a); |
- } |
- } |
- |
- pageDiv.appendChild(textSpan); |
- } |
- cvox.PdfProcessor.documentDiv.appendChild(pageAnchor); |
- cvox.PdfProcessor.documentDiv.appendChild(pageDiv); |
- |
- // Now get the next page. |
- cvox.PdfProcessor.getNextPage(); |
-}; |