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

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: nit 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 promises.push(loadResourcePromise(sourceURL).then(scriptSourceLoaded.bin d(null, i), scriptSourceLoaded.bind(null, i, undefined)));
135 } 136 }
136 return Promise.all(promises).then(undefined); 137 return Promise.all(promises).then(undefined);
137 138
138 /** 139 /**
139 * @param {number} scriptNumber 140 * @param {number} scriptNumber
140 * @param {string=} scriptSource 141 * @param {string=} scriptSource
141 */ 142 */
142 function scriptSourceLoaded(scriptNumber, scriptSource) 143 function scriptSourceLoaded(scriptNumber, scriptSource)
143 { 144 {
144 sources[scriptNumber] = scriptSource || ""; 145 sources[scriptNumber] = scriptSource || "";
146 evaluateLoadedSources();
147 }
148
149 function evaluateLoadedSources()
150 {
145 // Eval scripts as fast as possible. 151 // Eval scripts as fast as possible.
pfeldman 2016/07/07 04:13:34 optional: We could sacrifice this optimization for
lushnikov 2016/07/07 21:26:22 Done.
146 while (typeof sources[scriptToEval] !== "undefined") { 152 while (!pauseSourceEvaluation && typeof sources[scriptToEval] !== "undef ined") {
147 evaluateScript(urls[scriptToEval], sources[scriptToEval]); 153 var asyncEvalPromise = evaluateScript(urls[scriptToEval], sources[sc riptToEval]);
148 ++scriptToEval; 154 ++scriptToEval;
155 if (asyncEvalPromise) {
156 pauseSourceEvaluation = true;
157 asyncEvalPromise.then(onAsyncEvalCompleted);
158 }
149 } 159 }
150 } 160 }
151 161
162 function onAsyncEvalCompleted()
163 {
164 pauseSourceEvaluation = false;
165 evaluateLoadedSources();
166 }
167
152 /** 168 /**
153 * @param {string} sourceURL 169 * @param {string} sourceURL
154 * @param {string=} scriptSource 170 * @param {string=} scriptSource
171 * @return {?Promise}
155 */ 172 */
156 function evaluateScript(sourceURL, scriptSource) 173 function evaluateScript(sourceURL, scriptSource)
157 { 174 {
158 _loadedScripts[sourceURL] = true; 175 _loadedScripts[sourceURL] = true;
159 if (!scriptSource) { 176 if (!scriptSource) {
160 // Do not reject, as this is normal in the hosted mode. 177 // Do not reject, as this is normal in the hosted mode.
161 console.error("Empty response arrived for script '" + sourceURL + "' "); 178 console.error("Empty response arrived for script '" + sourceURL + "' ");
162 return; 179 return null;
163 } 180 }
181 self.runtime.onAsyncEvalCompletion = null;
pfeldman 2016/07/07 04:13:34 nuke
lushnikov 2016/07/07 21:26:22 Done.
164 self.eval(scriptSource + "\n//# sourceURL=" + sourceURL); 182 self.eval(scriptSource + "\n//# sourceURL=" + sourceURL);
pfeldman 2016/07/07 04:13:34 var promise = self.eval(scriptSource + "\n//# sour
lushnikov 2016/07/07 21:26:22 Done.
183 return self.runtime.onAsyncEvalCompletion;
165 } 184 }
166 } 185 }
167 186
168 (function() { 187 (function() {
169 var baseUrl = self.location ? self.location.origin + self.location.pathname : ""; 188 var baseUrl = self.location ? self.location.origin + self.location.pathname : "";
170 self._importScriptPathPrefix = baseUrl.substring(0, baseUrl.lastIndexOf("/") + 1); 189 self._importScriptPathPrefix = baseUrl.substring(0, baseUrl.lastIndexOf("/") + 1);
171 })(); 190 })();
172 191
173 /** 192 /**
174 * @constructor 193 * @constructor
(...skipping 1003 matching lines...) Expand 10 before | Expand all | Expand 10 after
1178 { 1197 {
1179 var sourceURL = self.location.href; 1198 var sourceURL = self.location.href;
1180 if (self.location.search) 1199 if (self.location.search)
1181 sourceURL = sourceURL.replace(self.location.search, ""); 1200 sourceURL = sourceURL.replace(self.location.search, "");
1182 sourceURL = sourceURL.substring(0, sourceURL.lastIndexOf("/") + 1) + path; 1201 sourceURL = sourceURL.substring(0, sourceURL.lastIndexOf("/") + 1) + path;
1183 return "\n/*# sourceURL=" + sourceURL + " */"; 1202 return "\n/*# sourceURL=" + sourceURL + " */";
1184 } 1203 }
1185 1204
1186 /** @type {!Runtime} */ 1205 /** @type {!Runtime} */
1187 var runtime; 1206 var runtime;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698