ozone: evdev: Sync caps lock LED state to evdev
[chromium-blink-merge.git] / chrome / browser / resources / pdf / main.js
blob07fa2e047b30c5cf4845d2cc773a92e709e83caa
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 'use strict';
7 /**
8  * Global PDFViewer object, accessible for testing.
9  * @type Object
10  */
11 var viewer;
14 (function() {
15   /**
16    * Stores any pending messages received which should be passed to the
17    * PDFViewer when it is created.
18    * @type Array
19    */
20   var pendingMessages = [];
22   /**
23    * Handles events that are received prior to the PDFViewer being created.
24    * @param {Object} message A message event received.
25    */
26   function handleScriptingMessage(message) {
27     pendingMessages.push(message);
28   }
30   /**
31    * Initialize the global PDFViewer and pass any outstanding messages to it.
32    * @param {Object} streamDetails The stream object which points to the data
33    *     contained in the PDF.
34    */
35   function initViewer(streamDetails) {
36     // PDFViewer will handle any messages after it is created.
37     window.removeEventListener('message', handleScriptingMessage, false);
38     viewer = new PDFViewer(streamDetails);
39     while (pendingMessages.length > 0)
40       viewer.handleScriptingMessage(pendingMessages.shift());
41   }
43   function generateStreamDetailsAndInitViewer() {
44     var url = window.location.search.substring(1);
45     var streamDetails = {
46       streamUrl: url,
47       originalUrl: url,
48       responseHeaders: '',
49       embedded: window.parent != window,
50       tabId: -1
51     };
52     if (!chrome.tabs) {
53       initViewer(streamDetails);
54       return;
55     }
56     chrome.tabs.getCurrent(function(tab) {
57       streamDetails.tabId = tab.id;
58       initViewer(streamDetails);
59     });
60   }
62   /**
63    * Entrypoint for starting the PDF viewer. This function obtains the details
64    * of the PDF 'stream' (the data that points to the PDF) and constructs a
65    * PDFViewer object with it.
66    */
67   function main() {
68     // Set up an event listener to catch scripting messages which are sent prior
69     // to the PDFViewer being created.
70     window.addEventListener('message', handleScriptingMessage, false);
72     if (window.location.search) {
73       generateStreamDetailsAndInitViewer();
74       return;
75     }
77     // If the viewer is started from the browser plugin, getStreamInfo will
78     // return the details of the stream.
79     chrome.mimeHandlerPrivate.getStreamInfo(function(streamDetails) {
80       initViewer(streamDetails);
81     });
82   };
84   main();
85 })();