OLD | NEW |
| (Empty) |
1 // Copyright 2013 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. | |
4 | |
5 (function() { | |
6 'use strict'; | |
7 | |
8 /** | |
9 * A map of view ID (which identifies a particular PDF viewer instance) to | |
10 * stream object. | |
11 * @type {Object.<string, Object>} | |
12 */ | |
13 var streams = {}; | |
14 | |
15 /** | |
16 * A map of view ID (which identifies a particular PDF viewer instance) to | |
17 * initialization function for that view. | |
18 * @type {Object.<string, Function>} | |
19 */ | |
20 var pluginInitFunctions = {}; | |
21 | |
22 /** | |
23 * If we have received a stream object and an initialization function for a | |
24 * particular PDF viewer instance we know that the extension has loaded in | |
25 * and we can pass it the stream. We can then delete the corresponding map | |
26 * entries. | |
27 * @param {string} viewId The ID of the view to initialize with a stream. | |
28 */ | |
29 function flush(viewId) { | |
30 if (viewId in streams && viewId in pluginInitFunctions) { | |
31 pluginInitFunctions[viewId](streams[viewId]); | |
32 delete streams[viewId]; | |
33 delete pluginInitFunctions[viewId]; | |
34 } | |
35 } | |
36 | |
37 /** | |
38 * This is called when loading a document with the PDF mime type and passes a | |
39 * stream that points to the PDF file. This may be run before or after we | |
40 * receive a message from the PDF viewer with its initialization function. | |
41 */ | |
42 chrome.streamsPrivate.onExecuteMimeTypeHandler.addListener( | |
43 function(streamDetails) { | |
44 // Store the stream until we are contacted by the PDF viewer that owns the | |
45 // stream. | |
46 streams[streamDetails.viewId] = streamDetails; | |
47 flush(streamDetails.viewId); | |
48 } | |
49 ); | |
50 | |
51 /** | |
52 * This is called when we receive a message from the PDF viewer indicating | |
53 * it has loaded and is ready to receive a stream of the data. | |
54 */ | |
55 chrome.runtime.onMessage.addListener( | |
56 function(request, sender, responseFunction) { | |
57 // Store the initialization function until we receive the stream which | |
58 // corresponds to the PDF viewer. | |
59 pluginInitFunctions[request.viewId] = responseFunction; | |
60 flush(request.viewId); | |
61 } | |
62 ); | |
63 }()); | |
OLD | NEW |