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