Roll src/third_party/WebKit bf18a82:a9cee16 (svn 185297:185304)
[chromium-blink-merge.git] / chrome / browser / resources / cryptotoken / cryptotokenbackground.js
blob0973cc1d6341ce732edc453fd4b7f5da00d53fd9
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 /**
6 * @fileoverview CryptoToken background page
7 */
9 'use strict';
11 /** @const */
12 var BROWSER_SUPPORTS_TLS_CHANNEL_ID = true;
14 /** @const */
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(),
26 TIMER_FACTORY,
27 new GstaticOriginChecker(),
28 new UsbHelper(),
29 new XhrTextFetcher());
31 var DEVICE_FACTORY_REGISTRY = new DeviceFactoryRegistry(
32 new UsbGnubbyFactory(gnubbies),
33 TIMER_FACTORY,
34 new GoogleCorpIndividualAttestation());
36 /**
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
42 * @return {boolean}
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'];
51 try {
52 sendResponse(response);
53 } catch (e) {
54 console.warn(UTIL_fmt('caught: ' + e.message));
56 });
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) {
63 var closeable;
64 port.onMessage.addListener(function(request) {
65 closeable = handleWebPageRequest(request, port.sender,
66 function(response) {
67 response['requestId'] = request['requestId'];
68 port.postMessage(response);
69 });
70 });
71 port.onDisconnect.addListener(function() {
72 if (closeable) {
73 closeable.close();
75 });
76 });
78 /**
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
88 return false;
90 originalUtilFmt_ = UTIL_fmt;
91 UTIL_fmt = function(s) {
92 var line = originalUtilFmt_(s);
93 chrome.runtime.sendMessage(LOG_SAVER_EXTENSION_ID, line);
94 return line;
96 } else if (request === 'stop') {
97 if (originalUtilFmt_) {
98 UTIL_fmt = originalUtilFmt_;
99 originalUtilFmt_ = null;
102 return false;
105 /** @private */
106 var originalUtilFmt_ = null;