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.
6 * @fileoverview CryptoToken background page
12 var BROWSER_SUPPORTS_TLS_CHANNEL_ID
= true;
15 var LOG_SAVER_EXTENSION_ID
= 'fjajfjhkeibgmiggdfehjplbhmfkialk';
17 // Singleton tracking available devices.
18 var gnubbies
= new Gnubbies();
19 HidGnubbyDevice
.register(gnubbies
);
20 UsbGnubbyDevice
.register(gnubbies
);
22 var TIMER_FACTORY
= new CountdownTimerFactory();
24 var FACTORY_REGISTRY
= new FactoryRegistry(
25 new GoogleApprovedOrigins(),
27 new GstaticOriginChecker(),
29 new XhrTextFetcher());
31 var DEVICE_FACTORY_REGISTRY
= new DeviceFactoryRegistry(
32 new UsbGnubbyFactory(gnubbies
),
34 new GoogleCorpIndividualAttestation());
37 * Listen to individual messages sent from (whitelisted) webpages via
38 * chrome.runtime.sendMessage
39 * @param {*} request The received request
40 * @param {!MessageSender} sender The message sender
41 * @param {function(*): void} sendResponse A callback that delivers a response
44 function messageHandlerExternal(request
, sender
, sendResponse
) {
45 if (sender
.id
&& sender
.id
=== LOG_SAVER_EXTENSION_ID
) {
46 return handleLogSaverMessage(request
);
48 var closeable
= handleWebPageRequest(/** @type {Object} */(request
),
49 sender
, function(response
) {
50 response
['requestId'] = request
['requestId'];
52 sendResponse(response
);
54 console
.warn(UTIL_fmt('caught: ' + e
.message
));
57 return true; // Tell Chrome not to destroy sendResponse yet
59 chrome
.runtime
.onMessageExternal
.addListener(messageHandlerExternal
);
61 // Listen to direct connection events, and wire up a message handler on the port
62 chrome
.runtime
.onConnectExternal
.addListener(function(port
) {
64 port
.onMessage
.addListener(function(request
) {
65 closeable
= handleWebPageRequest(request
, port
.sender
,
67 response
['requestId'] = request
['requestId'];
68 port
.postMessage(response
);
71 port
.onDisconnect
.addListener(function() {
79 * Handles messages from the log-saver app. Temporarily replaces UTIL_fmt with
80 * a wrapper that also sends formatted messages to the app.
81 * @param {*} request The message received from the app
82 * @return {boolean} Used as chrome.runtime.onMessage handler return value
84 function handleLogSaverMessage(request
) {
85 if (request
=== 'start') {
86 if (originalUtilFmt_
) {
87 // We're already sending
90 originalUtilFmt_
= UTIL_fmt
;
91 UTIL_fmt = function(s
) {
92 var line
= originalUtilFmt_(s
);
93 chrome
.runtime
.sendMessage(LOG_SAVER_EXTENSION_ID
, line
);
96 } else if (request
=== 'stop') {
97 if (originalUtilFmt_
) {
98 UTIL_fmt
= originalUtilFmt_
;
99 originalUtilFmt_
= null;
106 var originalUtilFmt_
= null;