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

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

Issue 2939273002: DO NOT SUBMIT: what chrome/browser/resources/ could eventually look like with clang-format (Closed)
Patch Set: Created 3 years, 6 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 check whether an app id lists an origin. 6 * @fileoverview Implements a check whether an app id lists an origin.
7 */ 7 */
8 'use strict'; 8 'use strict';
9 9
10 /** 10 /**
11 * Parses the text as JSON and returns it as an array of strings. 11 * Parses the text as JSON and returns it as an array of strings.
12 * @param {string} text Input JSON 12 * @param {string} text Input JSON
13 * @return {!Array<string>} Array of origins 13 * @return {!Array<string>} Array of origins
14 */ 14 */
15 function getOriginsFromJson(text) { 15 function getOriginsFromJson(text) {
16 try { 16 try {
17 var urls, i; 17 var urls, i;
18 var appIdData = JSON.parse(text); 18 var appIdData = JSON.parse(text);
19 var trustedFacets = appIdData['trustedFacets']; 19 var trustedFacets = appIdData['trustedFacets'];
20 if (trustedFacets) { 20 if (trustedFacets) {
21 var versionBlock; 21 var versionBlock;
22 for (i = 0; versionBlock = trustedFacets[i]; i++) { 22 for (i = 0; versionBlock = trustedFacets[i]; i++) {
23 if (versionBlock['version'] && 23 if (versionBlock['version'] && versionBlock['version']['major'] == 1 &&
24 versionBlock['version']['major'] == 1 &&
25 versionBlock['version']['minor'] == 0) { 24 versionBlock['version']['minor'] == 0) {
26 urls = versionBlock['ids']; 25 urls = versionBlock['ids'];
27 break; 26 break;
28 } 27 }
29 } 28 }
30 } 29 }
31 if (typeof urls == 'undefined') { 30 if (typeof urls == 'undefined') {
32 throw Error('Could not find trustedFacets for version 1.0'); 31 throw Error('Could not find trustedFacets for version 1.0');
33 } 32 }
34 var origins = {}; 33 var origins = {};
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 72
74 /** 73 /**
75 * Checks whether the given origin is allowed by all of the given appIds. 74 * Checks whether the given origin is allowed by all of the given appIds.
76 * @param {!Countdown} timer A timer by which to resolve all provided app ids. 75 * @param {!Countdown} timer A timer by which to resolve all provided app ids.
77 * @param {string} origin The origin to check. 76 * @param {string} origin The origin to check.
78 * @param {!Array<string>} appIds The app ids to check. 77 * @param {!Array<string>} appIds The app ids to check.
79 * @param {boolean} allowHttp Whether to allow http:// URLs. 78 * @param {boolean} allowHttp Whether to allow http:// URLs.
80 * @param {string=} opt_logMsgUrl A log message URL. 79 * @param {string=} opt_logMsgUrl A log message URL.
81 * @return {Promise<boolean>} A promise for the result of the check 80 * @return {Promise<boolean>} A promise for the result of the check
82 */ 81 */
83 AppIdChecker.prototype.checkAppIds = 82 AppIdChecker.prototype.checkAppIds = function(
84 function(timer, origin, appIds, allowHttp, opt_logMsgUrl) {}; 83 timer, origin, appIds, allowHttp, opt_logMsgUrl) {};
85 84
86 /** 85 /**
87 * An interface to create an AppIdChecker. 86 * An interface to create an AppIdChecker.
88 * @interface 87 * @interface
89 */ 88 */
90 function AppIdCheckerFactory() {} 89 function AppIdCheckerFactory() {}
91 90
92 /** 91 /**
93 * @return {!AppIdChecker} A new AppIdChecker. 92 * @return {!AppIdChecker} A new AppIdChecker.
94 */ 93 */
(...skipping 12 matching lines...) Expand all
107 106
108 /** 107 /**
109 * Checks whether all the app ids provided can be asserted by the given origin. 108 * Checks whether all the app ids provided can be asserted by the given origin.
110 * @param {!Countdown} timer A timer by which to resolve all provided app ids. 109 * @param {!Countdown} timer A timer by which to resolve all provided app ids.
111 * @param {string} origin The origin to check. 110 * @param {string} origin The origin to check.
112 * @param {!Array<string>} appIds The app ids to check. 111 * @param {!Array<string>} appIds The app ids to check.
113 * @param {boolean} allowHttp Whether to allow http:// URLs. 112 * @param {boolean} allowHttp Whether to allow http:// URLs.
114 * @param {string=} opt_logMsgUrl A log message URL. 113 * @param {string=} opt_logMsgUrl A log message URL.
115 * @return {Promise<boolean>} A promise for the result of the check 114 * @return {Promise<boolean>} A promise for the result of the check
116 */ 115 */
117 XhrAppIdChecker.prototype.checkAppIds = 116 XhrAppIdChecker.prototype.checkAppIds = function(
118 function(timer, origin, appIds, allowHttp, opt_logMsgUrl) { 117 timer, origin, appIds, allowHttp, opt_logMsgUrl) {
119 if (this.timer_) { 118 if (this.timer_) {
120 // Can't use the same object to check appIds more than once. 119 // Can't use the same object to check appIds more than once.
121 return Promise.resolve(false); 120 return Promise.resolve(false);
122 } 121 }
123 122
124 /** @private {!Countdown} */ 123 /** @private {!Countdown} */
125 this.timer_ = timer; 124 this.timer_ = timer;
126 /** @private {string} */ 125 /** @private {string} */
127 this.origin_ = origin; 126 this.origin_ = origin;
128 var appIdsMap = {}; 127 var appIdsMap = {};
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 */ 162 */
164 XhrAppIdChecker.prototype.checkAppId_ = function(appId) { 163 XhrAppIdChecker.prototype.checkAppId_ = function(appId) {
165 if (appId == this.origin_) { 164 if (appId == this.origin_) {
166 // Trivially allowed 165 // Trivially allowed
167 return Promise.resolve(true); 166 return Promise.resolve(true);
168 } 167 }
169 var p = this.fetchAllowedOriginsForAppId_(appId); 168 var p = this.fetchAllowedOriginsForAppId_(appId);
170 var self = this; 169 var self = this;
171 return p.then(function(allowedOrigins) { 170 return p.then(function(allowedOrigins) {
172 if (allowedOrigins.indexOf(self.origin_) == -1) { 171 if (allowedOrigins.indexOf(self.origin_) == -1) {
173 console.warn(UTIL_fmt('Origin ' + self.origin_ + 172 console.warn(UTIL_fmt(
174 ' not allowed by app id ' + appId)); 173 'Origin ' + self.origin_ + ' not allowed by app id ' + appId));
175 return false; 174 return false;
176 } 175 }
177 return true; 176 return true;
178 }); 177 });
179 }; 178 };
180 179
181 /** 180 /**
182 * @return {boolean} Whether all the app ids being checked are equal to the 181 * @return {boolean} Whether all the app ids being checked are equal to the
183 * calling origin. 182 * calling origin.
184 * @private 183 * @private
(...skipping 23 matching lines...) Expand all
208 } 207 }
209 208
210 var origin = getOriginFromUrl(appId); 209 var origin = getOriginFromUrl(appId);
211 if (!origin) { 210 if (!origin) {
212 return Promise.resolve([]); 211 return Promise.resolve([]);
213 } 212 }
214 213
215 var p = this.fetcher_.fetch(appId); 214 var p = this.fetcher_.fetch(appId);
216 var self = this; 215 var self = this;
217 return p.then(getOriginsFromJson, function(rc_) { 216 return p.then(getOriginsFromJson, function(rc_) {
218 var rc = /** @type {number} */(rc_); 217 var rc = /** @type {number} */ (rc_);
219 console.log(UTIL_fmt('fetching ' + appId + ' failed: ' + rc)); 218 console.log(UTIL_fmt('fetching ' + appId + ' failed: ' + rc));
220 if (!(rc >= 400 && rc < 500) && !self.timer_.expired()) { 219 if (!(rc >= 400 && rc < 500) && !self.timer_.expired()) {
221 // Retry 220 // Retry
222 return self.fetchAllowedOriginsForAppId_(appId); 221 return self.fetchAllowedOriginsForAppId_(appId);
223 } 222 }
224 return []; 223 return [];
225 }); 224 });
226 }; 225 };
227 226
228 /** 227 /**
229 * A factory to create an XhrAppIdChecker. 228 * A factory to create an XhrAppIdChecker.
230 * @implements AppIdCheckerFactory 229 * @implements AppIdCheckerFactory
231 * @param {!TextFetcher} fetcher 230 * @param {!TextFetcher} fetcher
232 * @constructor 231 * @constructor
233 */ 232 */
234 function XhrAppIdCheckerFactory(fetcher) { 233 function XhrAppIdCheckerFactory(fetcher) {
235 /** @private {!TextFetcher} */ 234 /** @private {!TextFetcher} */
236 this.fetcher_ = fetcher; 235 this.fetcher_ = fetcher;
237 } 236 }
238 237
239 /** 238 /**
240 * @return {!AppIdChecker} A new AppIdChecker. 239 * @return {!AppIdChecker} A new AppIdChecker.
241 */ 240 */
242 XhrAppIdCheckerFactory.prototype.create = function() { 241 XhrAppIdCheckerFactory.prototype.create = function() {
243 return new XhrAppIdChecker(this.fetcher_); 242 return new XhrAppIdChecker(this.fetcher_);
244 }; 243 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698