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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/Runtime.js

Issue 2124203002: DevTools: copy protocol files to front-end to fix hosted mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments Created 4 years, 5 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 /* 1 /*
2 * Copyright (C) 2014 Google Inc. All rights reserved. 2 * Copyright (C) 2014 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 * @param {!Array.<string>} scriptNames 109 * @param {!Array.<string>} scriptNames
110 * @param {string=} base 110 * @param {string=} base
111 * @return {!Promise.<undefined>} 111 * @return {!Promise.<undefined>}
112 */ 112 */
113 function loadScriptsPromise(scriptNames, base) 113 function loadScriptsPromise(scriptNames, base)
114 { 114 {
115 /** @type {!Array<!Promise<undefined>>} */ 115 /** @type {!Array<!Promise<undefined>>} */
116 var promises = []; 116 var promises = [];
117 /** @type {!Array<string>} */ 117 /** @type {!Array<string>} */
118 var urls = []; 118 var urls = [];
119 var pauseSourceEvaluation = false;
119 var sources = new Array(scriptNames.length); 120 var sources = new Array(scriptNames.length);
120 var scriptToEval = 0; 121 var scriptToEval = 0;
121 for (var i = 0; i < scriptNames.length; ++i) { 122 for (var i = 0; i < scriptNames.length; ++i) {
122 var scriptName = scriptNames[i]; 123 var scriptName = scriptNames[i];
123 var sourceURL = (base || self._importScriptPathPrefix) + scriptName; 124 var sourceURL = (base || self._importScriptPathPrefix) + scriptName;
124 125
125 var schemaIndex = sourceURL.indexOf("://") + 3; 126 var schemaIndex = sourceURL.indexOf("://") + 3;
126 var pathIndex = sourceURL.indexOf("/", schemaIndex); 127 var pathIndex = sourceURL.indexOf("/", schemaIndex);
127 if (pathIndex === -1) 128 if (pathIndex === -1)
128 pathIndex = sourceURL.length; 129 pathIndex = sourceURL.length;
129 sourceURL = sourceURL.substring(0, pathIndex) + normalizePath(sourceURL. substring(pathIndex)); 130 sourceURL = sourceURL.substring(0, pathIndex) + normalizePath(sourceURL. substring(pathIndex));
130 131
131 if (_loadedScripts[sourceURL]) 132 if (_loadedScripts[sourceURL])
132 continue; 133 continue;
133 urls.push(sourceURL); 134 urls.push(sourceURL);
134 promises.push(loadResourcePromise(sourceURL).then(scriptSourceLoaded.bin d(null, i), scriptSourceLoaded.bind(null, i, undefined))); 135 var promise = loadResourcePromise(sourceURL)
136 .then(scriptSource => scriptSource || "")
137 .catch(e => "");
138 promises.push(promise);
135 } 139 }
136 return Promise.all(promises).then(undefined); 140 var allSourcesPromise = /** @type {!Promise<!Array<string>>} */(Promise.all( promises));
141 return allSourcesPromise.then(evaluateSources);
137 142
138 /** 143 /**
139 * @param {number} scriptNumber 144 * @param {!Array<string>} sources
140 * @param {string=} scriptSource 145 * @return {!Promise}
141 */ 146 */
142 function scriptSourceLoaded(scriptNumber, scriptSource) 147 function evaluateSources(sources)
143 { 148 {
144 sources[scriptNumber] = scriptSource || ""; 149 var result = Promise.resolve();
145 // Eval scripts as fast as possible. 150 for (var i = 0; i < sources.length; ++i)
146 while (typeof sources[scriptToEval] !== "undefined") { 151 result = result.then(evaluateScript.bind(null, urls[i], sources[i])) ;
147 evaluateScript(urls[scriptToEval], sources[scriptToEval]); 152 return result;
148 ++scriptToEval;
149 }
150 } 153 }
151 154
152 /** 155 /**
153 * @param {string} sourceURL 156 * @param {string} sourceURL
154 * @param {string=} scriptSource 157 * @param {string=} scriptSource
158 * @return {?Promise}
155 */ 159 */
156 function evaluateScript(sourceURL, scriptSource) 160 function evaluateScript(sourceURL, scriptSource)
157 { 161 {
158 _loadedScripts[sourceURL] = true; 162 _loadedScripts[sourceURL] = true;
159 if (!scriptSource) { 163 if (!scriptSource) {
160 // Do not reject, as this is normal in the hosted mode. 164 // Do not reject, as this is normal in the hosted mode.
161 console.error("Empty response arrived for script '" + sourceURL + "' "); 165 console.error("Empty response arrived for script '" + sourceURL + "' ");
162 return; 166 return null;
163 } 167 }
164 self.eval(scriptSource + "\n//# sourceURL=" + sourceURL); 168 var result = self.eval(scriptSource + "\n//# sourceURL=" + sourceURL);
169 return result instanceof Promise ? result : null;
165 } 170 }
166 } 171 }
167 172
168 (function() { 173 (function() {
169 var baseUrl = self.location ? self.location.origin + self.location.pathname : ""; 174 var baseUrl = self.location ? self.location.origin + self.location.pathname : "";
170 self._importScriptPathPrefix = baseUrl.substring(0, baseUrl.lastIndexOf("/") + 1); 175 self._importScriptPathPrefix = baseUrl.substring(0, baseUrl.lastIndexOf("/") + 1);
171 })(); 176 })();
172 177
173 /** 178 /**
174 * @constructor 179 * @constructor
(...skipping 1003 matching lines...) Expand 10 before | Expand all | Expand 10 after
1178 { 1183 {
1179 var sourceURL = self.location.href; 1184 var sourceURL = self.location.href;
1180 if (self.location.search) 1185 if (self.location.search)
1181 sourceURL = sourceURL.replace(self.location.search, ""); 1186 sourceURL = sourceURL.replace(self.location.search, "");
1182 sourceURL = sourceURL.substring(0, sourceURL.lastIndexOf("/") + 1) + path; 1187 sourceURL = sourceURL.substring(0, sourceURL.lastIndexOf("/") + 1) + path;
1183 return "\n/*# sourceURL=" + sourceURL + " */"; 1188 return "\n/*# sourceURL=" + sourceURL + " */";
1184 } 1189 }
1185 1190
1186 /** @type {!Runtime} */ 1191 /** @type {!Runtime} */
1187 var runtime; 1192 var runtime;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698