• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4
5/**
6 * @fileoverview CryptoToken background page
7 */
8
9'use strict';
10
11// Singleton tracking available devices.
12var gnubbies = new Gnubbies();
13HidGnubbyDevice.register(gnubbies);
14UsbGnubbyDevice.register(gnubbies);
15
16var TIMER_FACTORY = new CountdownTimerFactory();
17
18var FACTORY_REGISTRY = new FactoryRegistry(
19    TIMER_FACTORY,
20    new GstaticOriginChecker(),
21    new UsbHelper(),
22    new XhrTextFetcher());
23
24var DEVICE_FACTORY_REGISTRY = new DeviceFactoryRegistry(
25    new UsbGnubbyFactory(gnubbies),
26    TIMER_FACTORY,
27    new GoogleCorpIndividualAttestation());
28
29// Listen to individual messages sent from (whitelisted) webpages via
30// chrome.runtime.sendMessage
31function messageHandlerExternal(request, sender, sendResponse) {
32  var closeable = handleWebPageRequest(request, sender, function(response) {
33    response['requestId'] = request['requestId'];
34    try {
35      sendResponse(response);
36    } catch (e) {
37      console.warn(UTIL_fmt('caught: ' + e.message));
38    }
39  });
40}
41chrome.runtime.onMessageExternal.addListener(messageHandlerExternal);
42
43// Listen to direct connection events, and wire up a message handler on the port
44chrome.runtime.onConnectExternal.addListener(function(port) {
45  var closeable;
46  port.onMessage.addListener(function(request) {
47    closeable = handleWebPageRequest(request, port.sender,
48        function(response) {
49          response['requestId'] = request['requestId'];
50          port.postMessage(response);
51        });
52  });
53  port.onDisconnect.addListener(function() {
54    if (closeable) {
55      closeable.close();
56    }
57  });
58});
59