Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2015 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 'use strict'; | |
| 6 | |
| 7 var remoting = remoting || {}; | |
| 8 | |
| 9 /** @typedef {{id: string, secret: string}} */ | |
| 10 remoting.PairingInfo; | |
| 11 | |
| 12 /** @typedef {{token: string, secret: string}} */ | |
| 13 remoting.ThirdPartyToken; | |
| 14 | |
| 15 /** | |
| 16 * Parameters for the remoting.CredentialsProvider constructor. | |
| 17 * | |
| 18 * fetchPin: Called by Me2Me connections when a PIN needs to be obtained | |
| 19 * interactively. | |
| 20 * | |
| 21 * pairingInfo: The pairing info for Me2Me Connections. | |
| 22 * | |
| 23 * accessCode: It2Me access code. | |
| 24 * | |
| 25 * fetchThirdPartyToken: Called when a third party authentication token | |
| 26 * is needed | |
| 27 * | |
| 28 * @typedef {{ | |
| 29 * accessCode: (string|undefined), | |
| 30 * fetchPin: (function(boolean,function(string): void)|undefined), | |
| 31 * pairingInfo: (remoting.PairingInfo|undefined), | |
| 32 * fetchThirdPartyToken: | |
| 33 * (function(string ,string , string, | |
| 34 * function(string, string):void) | undefined) | |
| 35 * }} | |
| 36 */ | |
| 37 remoting.CredentialsProviderParams; | |
| 38 | |
| 39 /** | |
| 40 * @param {remoting.CredentialsProviderParams} args | |
| 41 * @constructor | |
| 42 */ | |
| 43 remoting.CredentialsProvider = function(args) { | |
| 44 /** @private */ | |
| 45 this.fetchPin_ = args.fetchPin; | |
| 46 /** @private */ | |
| 47 this.pairingInfo_ = args.pairingInfo; | |
| 48 /** @private */ | |
| 49 this.accessCode_ = args.accessCode; | |
| 50 /** @private */ | |
| 51 this.fetchThirdPartyToken_ = args.fetchThirdPartyToken; | |
| 52 }; | |
| 53 | |
| 54 /** @enum {number} */ | |
| 55 remoting.CredentialsProvider.Methods = { | |
| 56 THIRD_PARTY: 0, | |
| 57 PAIRING: 1, | |
| 58 ACCESS_CODE: 2, | |
| 59 PIN: 3 | |
| 60 }; | |
| 61 | |
| 62 /** | |
| 63 * @param {remoting.CredentialsProvider.Methods} method | |
| 64 * @returns {boolean} Whether |method| is supported. | |
| 65 */ | |
| 66 remoting.CredentialsProvider.prototype.supports = function(method) { | |
| 67 var Methods = remoting.CredentialsProvider.Methods; | |
| 68 if (method === Methods.PIN) { | |
| 69 return Boolean(this.fetchPin_); | |
| 70 } else if (method === Methods.ACCESS_CODE) { | |
| 71 return Boolean(this.accessCode_); | |
| 72 } else if (method === Methods.THIRD_PARTY) { | |
| 73 return Boolean(this.fetchThirdPartyToken_); | |
| 74 } else if (method === Methods.PAIRING) { | |
| 75 return Boolean(this.pairingInfo_); | |
| 76 } | |
| 77 }; | |
| 78 | |
| 79 /** @returns {string} The It2Me access code */ | |
| 80 remoting.CredentialsProvider.prototype.getSharedSecret = function() { | |
| 81 return this.accessCode_ || ''; | |
|
Jamie
2015/02/26 23:20:14
Would an assert(supports(ACCESS_CODE)) be appropri
kelvinp
2015/02/27 01:03:21
Yes, will use AccessCode instead?
No, the problem
Jamie
2015/02/27 01:53:03
Maybe a better way of phrasing it would be to ask
kelvinp
2015/02/27 19:47:40
Agreed. As discussed, this is due to the fact tha
| |
| 82 }; | |
| 83 | |
| 84 /** @returns {remoting.PairingInfo} */ | |
| 85 remoting.CredentialsProvider.prototype.getPairingInfo = function() { | |
| 86 return this.pairingInfo_ || { id: '', secret: ''}; | |
| 87 }; | |
| 88 | |
| 89 /** | |
| 90 * @param {boolean} pairingSupported Whether pairing is supported by the host. | |
| 91 * @returns {Promise<string>} | |
| 92 */ | |
| 93 remoting.CredentialsProvider.prototype.getPIN = function(pairingSupported) { | |
| 94 var that = this; | |
| 95 if (!this.fetchPin_) { | |
| 96 Promise.resolve(''); | |
| 97 } | |
| 98 return new Promise(function(/** function(string) */ resolve) { | |
| 99 that.fetchPin_(pairingSupported, resolve); | |
| 100 }); | |
| 101 }; | |
| 102 | |
| 103 /** | |
| 104 * @param {string} tokenUrl Token-issue URL received from the host. | |
| 105 * @param {string} hostPublicKey Host public key (DER and Base64 encoded). | |
| 106 * @param {string} scope OAuth scope to request the token for. | |
| 107 * | |
| 108 * @returns {Promise<remoting.ThirdPartyToken>} | |
| 109 */ | |
| 110 remoting.CredentialsProvider.prototype.getThirdPartyToken = function( | |
| 111 tokenUrl, hostPublicKey, scope) { | |
| 112 var that = this; | |
| 113 if (!this.fetchThirdPartyToken_) { | |
| 114 Promise.resolve({token: '', secret: ''}); | |
| 115 } | |
| 116 return new Promise(function(/** Function */ resolve) { | |
| 117 var onTokenFetched = function(/** string */ token, /** string */ secret) { | |
| 118 resolve({token: token, secret: secret}); | |
| 119 }; | |
| 120 that.fetchThirdPartyToken_(tokenUrl, hostPublicKey, scope, onTokenFetched); | |
| 121 }); | |
| 122 }; | |
| 123 | |
| 124 | |
| OLD | NEW |