Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(284)

Side by Side Diff: chrome/browser/resources/cryptotoken/hidgnubbydevice.js

Issue 596083002: Update cryptotoken to 0.8.63 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove a deprecated line Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview Implements a low-level gnubby driver based on chrome.hid. 6 * @fileoverview Implements a low-level gnubby driver based on chrome.hid.
7 */ 7 */
8 'use strict'; 8 'use strict';
9 9
10 /** 10 /**
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 64
65 if (this.lockTID) { 65 if (this.lockTID) {
66 window.clearTimeout(this.lockTID); 66 window.clearTimeout(this.lockTID);
67 this.lockTID = null; 67 this.lockTID = null;
68 } 68 }
69 69
70 var dev = this.dev; 70 var dev = this.dev;
71 this.dev = null; 71 this.dev = null;
72 72
73 chrome.hid.disconnect(dev.connectionId, function() { 73 chrome.hid.disconnect(dev.connectionId, function() {
74 if (chrome.runtime.lastError) {
75 console.warn(UTIL_fmt('Device ' + dev.connectionId +
76 ' couldn\'t be disconnected:'));
77 console.warn(chrome.runtime.lastError);
78 return;
79 }
74 console.log(UTIL_fmt('Device ' + dev.connectionId + ' closed')); 80 console.log(UTIL_fmt('Device ' + dev.connectionId + ' closed'));
75 }); 81 });
76 }; 82 };
77 83
78 /** 84 /**
79 * Push frame to all clients. 85 * Push frame to all clients.
80 * @param {ArrayBuffer} f Data to push 86 * @param {ArrayBuffer} f Data to push
81 * @private 87 * @private
82 */ 88 */
83 HidGnubbyDevice.prototype.publishFrame_ = function(f) { 89 HidGnubbyDevice.prototype.publishFrame_ = function(f) {
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 * @param {number} cmd Request command 212 * @param {number} cmd Request command
207 * @return {boolean} true if not locked for this request. 213 * @return {boolean} true if not locked for this request.
208 * @private 214 * @private
209 */ 215 */
210 HidGnubbyDevice.prototype.checkLock_ = function(cid, cmd) { 216 HidGnubbyDevice.prototype.checkLock_ = function(cid, cmd) {
211 if (this.lockCID) { 217 if (this.lockCID) {
212 // We have an active lock. 218 // We have an active lock.
213 if (this.lockCID != cid) { 219 if (this.lockCID != cid) {
214 // Some other channel has active lock. 220 // Some other channel has active lock.
215 221
216 if (cmd != GnubbyDevice.CMD_SYNC) { 222 if (cmd != GnubbyDevice.CMD_SYNC &&
217 // Anything but SYNC gets an immediate busy. 223 cmd != GnubbyDevice.CMD_INIT) {
224 // Anything but SYNC|INIT gets an immediate busy.
218 var busy = new Uint8Array( 225 var busy = new Uint8Array(
219 [(cid >> 24) & 255, 226 [(cid >> 24) & 255,
220 (cid >> 16) & 255, 227 (cid >> 16) & 255,
221 (cid >> 8) & 255, 228 (cid >> 8) & 255,
222 cid & 255, 229 cid & 255,
223 GnubbyDevice.CMD_ERROR, 230 GnubbyDevice.CMD_ERROR,
224 0, 1, // length 231 0, 1, // length
225 GnubbyDevice.BUSY]); 232 GnubbyDevice.BUSY]);
226 // Log the synthetic busy too. 233 // Log the synthetic busy too.
227 console.log(UTIL_fmt('<' + UTIL_BytesToHex(busy))); 234 console.log(UTIL_fmt('<' + UTIL_BytesToHex(busy)));
228 this.publishFrame_(busy.buffer); 235 this.publishFrame_(busy.buffer);
229 return false; 236 return false;
230 } 237 }
231 238
232 // SYNC gets to go to the device to flush OS tx/rx queues. 239 // SYNC|INIT gets to go to the device to flush OS tx/rx queues.
233 // The usb firmware always responds to SYNC, regardless of lock status. 240 // The usb firmware is to alway respond to SYNC/INIT,
241 // regardless of lock status.
234 } 242 }
235 } 243 }
236 return true; 244 return true;
237 }; 245 };
238 246
239 /** 247 /**
240 * Update or grab lock. 248 * Update or grab lock.
241 * @param {number} cid Channel ID 249 * @param {number} cid Channel ID
242 * @param {number} cmd Command 250 * @param {number} cmd Command
243 * @param {number} arg Command argument 251 * @param {number} arg Command argument
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 var numEnumerated = 0; 412 var numEnumerated = 0;
405 var allDevs = []; 413 var allDevs = [];
406 414
407 function enumerated(devs) { 415 function enumerated(devs) {
408 allDevs = allDevs.concat(devs); 416 allDevs = allDevs.concat(devs);
409 if (++numEnumerated == permittedDevs.length) { 417 if (++numEnumerated == permittedDevs.length) {
410 cb(allDevs); 418 cb(allDevs);
411 } 419 }
412 } 420 }
413 421
414 GnubbyDevice.getPermittedUsbDevices(function(devs) { 422 try {
415 permittedDevs = devs; 423 chrome.hid.getDevices({filters: [{usagePage: 0xf1d0}]}, cb);
416 for (var i = 0; i < devs.length; i++) { 424 } catch (e) {
417 chrome.hid.getDevices(devs[i], enumerated); 425 console.log(e);
418 } 426 console.log(UTIL_fmt('falling back to vid/pid enumeration'));
419 }); 427 GnubbyDevice.getPermittedUsbDevices(function(devs) {
428 permittedDevs = devs;
429 for (var i = 0; i < devs.length; i++) {
430 chrome.hid.getDevices(devs[i], enumerated);
431 }
432 });
433 }
420 }; 434 };
421 435
422 /** 436 /**
423 * @param {Gnubbies} gnubbies The gnubbies instances this device is enumerated 437 * @param {Gnubbies} gnubbies The gnubbies instances this device is enumerated
424 * in. 438 * in.
425 * @param {number} which The index of the device to open. 439 * @param {number} which The index of the device to open.
426 * @param {!chrome.hid.HidDeviceInfo} dev The device to open. 440 * @param {!chrome.hid.HidDeviceInfo} dev The device to open.
427 * @param {function(number, GnubbyDevice=)} cb Called back with the 441 * @param {function(number, GnubbyDevice=)} cb Called back with the
428 * result of opening the device. 442 * result of opening the device.
429 */ 443 */
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 */ 476 */
463 HidGnubbyDevice.register = function(gnubbies) { 477 HidGnubbyDevice.register = function(gnubbies) {
464 var HID_GNUBBY_IMPL = { 478 var HID_GNUBBY_IMPL = {
465 isSharedAccess: true, 479 isSharedAccess: true,
466 enumerate: HidGnubbyDevice.enumerate, 480 enumerate: HidGnubbyDevice.enumerate,
467 deviceToDeviceId: HidGnubbyDevice.deviceToDeviceId, 481 deviceToDeviceId: HidGnubbyDevice.deviceToDeviceId,
468 open: HidGnubbyDevice.open 482 open: HidGnubbyDevice.open
469 }; 483 };
470 gnubbies.registerNamespace(HidGnubbyDevice.NAMESPACE, HID_GNUBBY_IMPL); 484 gnubbies.registerNamespace(HidGnubbyDevice.NAMESPACE, HID_GNUBBY_IMPL);
471 }; 485 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698