// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. /** * @fileoverview Provides a "bottom half" helper to assist with raw requests. * This fills the same role as the Authenticator-Specific Module component of * U2F documents, although the API is different. */ 'use strict'; /** * @typedef {{ * type: string, * timeout: number * }} */ var HelperRequest; /** * @typedef {{ * type: string, * code: (number|undefined) * }} */ var HelperReply; /** * A helper to process requests. * @interface */ function RequestHelper() {} /** * Gets a handler for a request. * @param {HelperRequest} request The request to handle. * @return {RequestHandler} A handler for the request. */ RequestHelper.prototype.getHandler = function(request) {}; /** * A handler to track an outstanding request. * @extends {Closeable} * @interface */ function RequestHandler() {} /** @typedef {function(HelperReply, string=)} */ var RequestHandlerCallback; /** * @param {RequestHandlerCallback} cb Called with the result of the request, * and an optional source for the result. * @return {boolean} Whether this handler could be run. */ RequestHandler.prototype.run = function(cb) {}; /** Closes this handler. */ RequestHandler.prototype.close = function() {}; /** * Makes a response to a helper request with an error code. * @param {HelperRequest} request The request to make a response to. * @param {DeviceStatusCodes} code The error code to return. * @param {string=} opt_defaultType The default response type, if none is * present in the request. * @return {HelperReply} The helper error response. */ function makeHelperErrorResponse(request, code, opt_defaultType) { var type; if (request && request.type) { type = request.type.replace(/_request$/, '_reply'); } else { type = opt_defaultType || 'unknown_type_reply'; } var reply = { 'type': type, 'code': /** @type {number} */ (code) }; return reply; }