| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 // This should be executed immediately after InspectorBackend and InspectorBacke
ndCommands | |
| 6 | |
| 7 WebInspector.InspectorBackendHostedMode = {}; | |
| 8 | |
| 9 /** | |
| 10 * @param {string} jsonUrl | |
| 11 */ | |
| 12 WebInspector.InspectorBackendHostedMode.loadFromJSONIfNeeded = function(jsonUrl) | |
| 13 { | |
| 14 if (InspectorBackend.isInitialized()) | |
| 15 return; | |
| 16 | |
| 17 var xhr = new XMLHttpRequest(); | |
| 18 xhr.open("GET", jsonUrl, false); | |
| 19 xhr.send(null); | |
| 20 | |
| 21 var schema = JSON.parse(xhr.responseText); | |
| 22 var code = WebInspector.InspectorBackendHostedMode.generateCommands(schema); | |
| 23 eval(code); | |
| 24 } | |
| 25 | |
| 26 /** | |
| 27 * @param {*} schema | |
| 28 * @return {string} | |
| 29 */ | |
| 30 WebInspector.InspectorBackendHostedMode.generateCommands = function(schema) | |
| 31 { | |
| 32 var jsTypes = { integer: "number", array: "object" }; | |
| 33 var rawTypes = {}; | |
| 34 var result = []; | |
| 35 | |
| 36 var domains = schema["domains"] || []; | |
| 37 for (var i = 0; i < domains.length; ++i) { | |
| 38 var domain = domains[i]; | |
| 39 for (var j = 0; domain.types && j < domain.types.length; ++j) { | |
| 40 var type = domain.types[j]; | |
| 41 rawTypes[domain.domain + "." + type.id] = jsTypes[type.type] || type
.type; | |
| 42 } | |
| 43 } | |
| 44 | |
| 45 function toUpperCase(groupIndex, group0, group1) | |
| 46 { | |
| 47 return [group0, group1][groupIndex].toUpperCase(); | |
| 48 } | |
| 49 function generateEnum(enumName, items) | |
| 50 { | |
| 51 var members = []; | |
| 52 for (var m = 0; m < items.length; ++m) { | |
| 53 var value = items[m]; | |
| 54 var name = value.replace(/-(\w)/g, toUpperCase.bind(null, 1)).toTitl
eCase(); | |
| 55 name = name.replace(/HTML|XML|WML|API/ig, toUpperCase.bind(null, 0))
; | |
| 56 members.push(name + ": \"" + value + "\""); | |
| 57 } | |
| 58 return "InspectorBackend.registerEnum(\"" + enumName + "\", {" + members
.join(", ") + "});"; | |
| 59 } | |
| 60 | |
| 61 for (var i = 0; i < domains.length; ++i) { | |
| 62 var domain = domains[i]; | |
| 63 | |
| 64 var types = domain["types"] || []; | |
| 65 for (var j = 0; j < types.length; ++j) { | |
| 66 var type = types[j]; | |
| 67 if ((type["type"] === "string") && type["enum"]) | |
| 68 result.push(generateEnum(domain.domain + "." + type.id, type["en
um"])); | |
| 69 else if (type["type"] === "object") { | |
| 70 var properties = type["properties"] || []; | |
| 71 for (var k = 0; k < properties.length; ++k) { | |
| 72 var property = properties[k]; | |
| 73 if ((property["type"] === "string") && property["enum"]) | |
| 74 result.push(generateEnum(domain.domain + "." + type.id +
property["name"].toTitleCase(), property["enum"])); | |
| 75 } | |
| 76 } | |
| 77 } | |
| 78 | |
| 79 var commands = domain["commands"] || []; | |
| 80 for (var j = 0; j < commands.length; ++j) { | |
| 81 var command = commands[j]; | |
| 82 var parameters = command["parameters"]; | |
| 83 var paramsText = []; | |
| 84 for (var k = 0; parameters && k < parameters.length; ++k) { | |
| 85 var parameter = parameters[k]; | |
| 86 | |
| 87 var type; | |
| 88 if (parameter.type) | |
| 89 type = jsTypes[parameter.type] || parameter.type; | |
| 90 else { | |
| 91 var ref = parameter["$ref"]; | |
| 92 if (ref.indexOf(".") !== -1) | |
| 93 type = rawTypes[ref]; | |
| 94 else | |
| 95 type = rawTypes[domain.domain + "." + ref]; | |
| 96 } | |
| 97 | |
| 98 var text = "{\"name\": \"" + parameter.name + "\", \"type\": \""
+ type + "\", \"optional\": " + (parameter.optional ? "true" : "false") + "}"; | |
| 99 paramsText.push(text); | |
| 100 } | |
| 101 | |
| 102 var returnsText = []; | |
| 103 var returns = command["returns"] || []; | |
| 104 for (var k = 0; k < returns.length; ++k) { | |
| 105 var parameter = returns[k]; | |
| 106 returnsText.push("\"" + parameter.name + "\""); | |
| 107 } | |
| 108 var hasErrorData = String(Boolean(command.error)); | |
| 109 result.push("InspectorBackend.registerCommand(\"" + domain.domain +
"." + command.name + "\", [" + paramsText.join(", ") + "], [" + returnsText.join
(", ") + "], " + hasErrorData + ");"); | |
| 110 } | |
| 111 | |
| 112 for (var j = 0; domain.events && j < domain.events.length; ++j) { | |
| 113 var event = domain.events[j]; | |
| 114 var paramsText = []; | |
| 115 for (var k = 0; event.parameters && k < event.parameters.length; ++k
) { | |
| 116 var parameter = event.parameters[k]; | |
| 117 paramsText.push("\"" + parameter.name + "\""); | |
| 118 } | |
| 119 result.push("InspectorBackend.registerEvent(\"" + domain.domain + ".
" + event.name + "\", [" + paramsText.join(", ") + "]);"); | |
| 120 } | |
| 121 } | |
| 122 return result.join("\n"); | |
| 123 } | |
| 124 | |
| 125 WebInspector.InspectorBackendHostedMode.loadFromJSONIfNeeded("../inspector.json"
); | |
| OLD | NEW |