| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 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 check whether an origin is allowed to assert an | 6 * @fileoverview Implements a check whether an origin is allowed to assert an |
| 7 * app id based on whether they share the same effective TLD + 1. | 7 * app id based on whether they share the same effective TLD + 1. |
| 8 * | 8 * |
| 9 */ | 9 */ |
| 10 'use strict'; | 10 'use strict'; |
| 11 | 11 |
| 12 /** | 12 /** |
| 13 * Implements half of the app id policy: whether an origin is allowed to claim | 13 * Implements half of the app id policy: whether an origin is allowed to claim |
| 14 * an app id. For checking whether the app id also lists the origin, | 14 * an app id. For checking whether the app id also lists the origin, |
| 15 * @see AppIdChecker. | 15 * @see AppIdChecker. |
| 16 * @implements OriginChecker | 16 * @implements OriginChecker |
| 17 * @constructor | 17 * @constructor |
| 18 */ | 18 */ |
| 19 function CryptoTokenOriginChecker() { | 19 function CryptoTokenOriginChecker() {} |
| 20 } | |
| 21 | 20 |
| 22 /** | 21 /** |
| 23 * Checks whether the origin is allowed to claim the app ids. | 22 * Checks whether the origin is allowed to claim the app ids. |
| 24 * @param {string} origin The origin claiming the app id. | 23 * @param {string} origin The origin claiming the app id. |
| 25 * @param {!Array<string>} appIds The app ids being claimed. | 24 * @param {!Array<string>} appIds The app ids being claimed. |
| 26 * @return {Promise<boolean>} A promise for the result of the check. | 25 * @return {Promise<boolean>} A promise for the result of the check. |
| 27 */ | 26 */ |
| 28 CryptoTokenOriginChecker.prototype.canClaimAppIds = function(origin, appIds) { | 27 CryptoTokenOriginChecker.prototype.canClaimAppIds = function(origin, appIds) { |
| 29 var appIdChecks = appIds.map(this.checkAppId_.bind(this, origin)); | 28 var appIdChecks = appIds.map(this.checkAppId_.bind(this, origin)); |
| 30 return Promise.all(appIdChecks).then(function(results) { | 29 return Promise.all(appIdChecks).then(function(results) { |
| 31 return results.every(function(result) { | 30 return results.every(function(result) { |
| 32 return result; | 31 return result; |
| 33 }); | 32 }); |
| 34 }); | 33 }); |
| 35 }; | 34 }; |
| 36 | 35 |
| 37 /** | 36 /** |
| 38 * Checks if a single appId can be asserted by the given origin. | 37 * Checks if a single appId can be asserted by the given origin. |
| 39 * @param {string} origin The origin. | 38 * @param {string} origin The origin. |
| 40 * @param {string} appId The appId to check | 39 * @param {string} appId The appId to check |
| 41 * @return {Promise<boolean>} A promise for the result of the check | 40 * @return {Promise<boolean>} A promise for the result of the check |
| 42 * @private | 41 * @private |
| 43 */ | 42 */ |
| 44 CryptoTokenOriginChecker.prototype.checkAppId_ = | 43 CryptoTokenOriginChecker.prototype.checkAppId_ = function(origin, appId) { |
| 45 function(origin, appId) { | |
| 46 return new Promise(function(resolve, reject) { | 44 return new Promise(function(resolve, reject) { |
| 47 if (!chrome.cryptotokenPrivate) { | 45 if (!chrome.cryptotokenPrivate) { |
| 48 reject(); | 46 reject(); |
| 49 return; | 47 return; |
| 50 } | 48 } |
| 51 chrome.cryptotokenPrivate.canOriginAssertAppId(origin, appId, resolve); | 49 chrome.cryptotokenPrivate.canOriginAssertAppId(origin, appId, resolve); |
| 52 }); | 50 }); |
| 53 }; | 51 }; |
| OLD | NEW |