OLD | NEW |
---|---|
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 // This should be executed immediately after InspectorBackend and InspectorBacke ndCommands | 5 // This should be executed immediately after InspectorBackend and InspectorBacke ndCommands |
6 | 6 |
7 WebInspector.InspectorBackendHostedMode = {}; | 7 WebInspector.InspectorBackendHostedMode = {}; |
8 | 8 |
9 /** | 9 /** |
10 * @param {string} jsonUrl | 10 * @param {!Array<string>} urls |
11 * @return {?Promise} | |
11 */ | 12 */ |
12 WebInspector.InspectorBackendHostedMode.loadFromJSONIfNeeded = function(jsonUrl) | 13 WebInspector.InspectorBackendHostedMode.loadFromJSONIfNeeded = function(urls) |
13 { | 14 { |
14 if (InspectorBackend.isInitialized()) | 15 if (InspectorBackend.isInitialized()) |
15 return; | 16 return null; |
16 | 17 |
17 var xhr = new XMLHttpRequest(); | 18 var promises = urls.map(url => loadURL(url)); |
18 xhr.open("GET", jsonUrl, false); | 19 return Promise.all(promises); |
19 xhr.send(null); | |
20 | 20 |
21 var schema = JSON.parse(xhr.responseText); | 21 /** |
22 var code = WebInspector.InspectorBackendHostedMode.generateCommands(schema); | 22 * @param {string} url |
23 eval(code); | 23 * @return {!Promise} |
24 */ | |
25 function loadURL(url) | |
26 { | |
27 return fetch(url) | |
28 .then(response => response.text()) | |
pfeldman
2016/07/07 23:25:44
I consider this an anti-pattern. Sync code should
| |
29 .then(schema => WebInspector.InspectorBackendHostedMode.generateComm ands(JSON.parse(schema))) | |
30 .then(code => eval(code)); | |
31 } | |
24 } | 32 } |
25 | 33 |
26 /** | 34 /** |
27 * @param {*} schema | 35 * @param {*} schema |
28 * @return {string} | 36 * @return {string} |
29 */ | 37 */ |
30 WebInspector.InspectorBackendHostedMode.generateCommands = function(schema) | 38 WebInspector.InspectorBackendHostedMode.generateCommands = function(schema) |
31 { | 39 { |
32 var jsTypes = { integer: "number", array: "object" }; | 40 var jsTypes = { integer: "number", array: "object" }; |
33 var rawTypes = {}; | 41 var rawTypes = {}; |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
115 for (var k = 0; event.parameters && k < event.parameters.length; ++k ) { | 123 for (var k = 0; event.parameters && k < event.parameters.length; ++k ) { |
116 var parameter = event.parameters[k]; | 124 var parameter = event.parameters[k]; |
117 paramsText.push("\"" + parameter.name + "\""); | 125 paramsText.push("\"" + parameter.name + "\""); |
118 } | 126 } |
119 result.push("InspectorBackend.registerEvent(\"" + domain.domain + ". " + event.name + "\", [" + paramsText.join(", ") + "]);"); | 127 result.push("InspectorBackend.registerEvent(\"" + domain.domain + ". " + event.name + "\", [" + paramsText.join(", ") + "]);"); |
120 } | 128 } |
121 } | 129 } |
122 return result.join("\n"); | 130 return result.join("\n"); |
123 } | 131 } |
124 | 132 |
125 WebInspector.InspectorBackendHostedMode.loadFromJSONIfNeeded("../inspector.json" ); | 133 WebInspector.InspectorBackendHostedMode.loadFromJSONIfNeeded([ |
134 "../sdk/protocol/browser_protocol.json", | |
135 "../sdk/protocol/js_protocol.json" | |
136 ]); | |
OLD | NEW |