Chromium Code Reviews| 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 Protocol and InspectorBackendComman ds |
| 6 | 6 |
| 7 WebInspector.InspectorBackendHostedMode = {}; | 7 var HostedMode = {}; |
|
caseq
2016/10/26 23:43:20
nit: naming a namespace "...Mode" is somewhat weir
| |
| 8 | 8 |
| 9 WebInspector.InspectorBackendHostedMode.loadFromJSONIfNeeded = function() | 9 HostedMode.loadFromJSONIfNeeded = function() |
| 10 { | 10 { |
| 11 if (InspectorBackend.isInitialized()) | 11 if (Protocol.isInitialized()) |
| 12 return; | 12 return; |
| 13 | 13 |
| 14 for (var url of Object.keys(Runtime.cachedResources)) { | 14 for (var url of Object.keys(Runtime.cachedResources)) { |
| 15 if (url.indexOf("protocol.json") !== -1) { | 15 if (url.indexOf("protocol.json") !== -1) { |
| 16 var protocol = Runtime.cachedResources[url]; | 16 var protocol = Runtime.cachedResources[url]; |
| 17 var code = WebInspector.InspectorBackendHostedMode.generateCommands( JSON.parse(protocol)); | 17 var code = HostedMode.generateCommands(JSON.parse(protocol)); |
| 18 eval(code); | 18 eval(code); |
| 19 } | 19 } |
| 20 } | 20 } |
| 21 }; | 21 }; |
| 22 | 22 |
| 23 /** | 23 /** |
| 24 * @param {string} s | |
| 25 * @return {string} | |
| 26 */ | |
| 27 HostedMode.toTitleCase = function(s) | |
|
caseq
2016/10/26 23:43:20
..._toTitleCase(), i.e. private?
| |
| 28 { | |
| 29 return s.substring(0, 1).toUpperCase() + s.substring(1); | |
| 30 }; | |
| 31 | |
| 32 /** | |
| 24 * @param {*} schema | 33 * @param {*} schema |
| 25 * @return {string} | 34 * @return {string} |
| 26 */ | 35 */ |
| 27 WebInspector.InspectorBackendHostedMode.generateCommands = function(schema) | 36 HostedMode.generateCommands = function(schema) |
| 28 { | 37 { |
| 29 var jsTypes = { integer: "number", array: "object" }; | 38 var jsTypes = { integer: "number", array: "object" }; |
| 30 var rawTypes = {}; | 39 var rawTypes = {}; |
| 31 var result = []; | 40 var result = []; |
| 32 | 41 |
| 33 var domains = schema["domains"] || []; | 42 var domains = schema["domains"] || []; |
| 34 for (var i = 0; i < domains.length; ++i) { | 43 for (var i = 0; i < domains.length; ++i) { |
| 35 var domain = domains[i]; | 44 var domain = domains[i]; |
| 36 for (var j = 0; domain.types && j < domain.types.length; ++j) { | 45 for (var j = 0; domain.types && j < domain.types.length; ++j) { |
| 37 var type = domain.types[j]; | 46 var type = domain.types[j]; |
| 38 rawTypes[domain.domain + "." + type.id] = jsTypes[type.type] || type .type; | 47 rawTypes[domain.domain + "." + type.id] = jsTypes[type.type] || type .type; |
| 39 } | 48 } |
| 40 } | 49 } |
| 41 | 50 |
| 42 function toUpperCase(groupIndex, group0, group1) | 51 function toUpperCase(groupIndex, group0, group1) |
| 43 { | 52 { |
| 44 return [group0, group1][groupIndex].toUpperCase(); | 53 return [group0, group1][groupIndex].toUpperCase(); |
| 45 } | 54 } |
| 46 function generateEnum(enumName, items) | 55 function generateEnum(enumName, items) |
| 47 { | 56 { |
| 48 var members = []; | 57 var members = []; |
| 49 for (var m = 0; m < items.length; ++m) { | 58 for (var m = 0; m < items.length; ++m) { |
| 50 var value = items[m]; | 59 var value = items[m]; |
| 51 var name = value; | 60 var name = value; |
| 52 var prefix = ""; | 61 var prefix = ""; |
| 53 if (name[0] === "-") { | 62 if (name[0] === "-") { |
| 54 prefix = "Negative"; | 63 prefix = "Negative"; |
| 55 name = name.substring(1); | 64 name = name.substring(1); |
| 56 } | 65 } |
| 57 name = name.replace(/-(\w)/g, toUpperCase.bind(null, 1)).toTitleCase (); | 66 name = HostedMode.toTitleCase(name.replace(/-(\w)/g, toUpperCase.bin d(null, 1))); |
| 58 name = name.replace(/HTML|XML|WML|API/ig, toUpperCase.bind(null, 0)) ; | 67 name = name.replace(/HTML|XML|WML|API/ig, toUpperCase.bind(null, 0)) ; |
| 59 members.push(prefix + name + ": \"" + value + "\""); | 68 members.push(prefix + name + ": \"" + value + "\""); |
| 60 } | 69 } |
| 61 return "InspectorBackend.registerEnum(\"" + enumName + "\", {" + members .join(", ") + "});"; | 70 return "Protocol.registerEnum(\"" + enumName + "\", {" + members.join(", ") + "});"; |
| 62 } | 71 } |
| 63 | 72 |
| 64 for (var i = 0; i < domains.length; ++i) { | 73 for (var i = 0; i < domains.length; ++i) { |
| 65 var domain = domains[i]; | 74 var domain = domains[i]; |
| 66 | 75 |
| 67 var types = domain["types"] || []; | 76 var types = domain["types"] || []; |
| 68 for (var j = 0; j < types.length; ++j) { | 77 for (var j = 0; j < types.length; ++j) { |
| 69 var type = types[j]; | 78 var type = types[j]; |
| 70 if ((type["type"] === "string") && type["enum"]) | 79 if ((type["type"] === "string") && type["enum"]) |
| 71 result.push(generateEnum(domain.domain + "." + type.id, type["en um"])); | 80 result.push(generateEnum(domain.domain + "." + type.id, type["en um"])); |
| 72 else if (type["type"] === "object") { | 81 else if (type["type"] === "object") { |
| 73 var properties = type["properties"] || []; | 82 var properties = type["properties"] || []; |
| 74 for (var k = 0; k < properties.length; ++k) { | 83 for (var k = 0; k < properties.length; ++k) { |
| 75 var property = properties[k]; | 84 var property = properties[k]; |
| 76 if ((property["type"] === "string") && property["enum"]) | 85 if ((property["type"] === "string") && property["enum"]) |
| 77 result.push(generateEnum(domain.domain + "." + type.id + property["name"].toTitleCase(), property["enum"])); | 86 result.push(generateEnum(domain.domain + "." + type.id + HostedMode.toTitleCase(property["name"]), property["enum"])); |
| 78 } | 87 } |
| 79 } | 88 } |
| 80 } | 89 } |
| 81 | 90 |
| 82 var commands = domain["commands"] || []; | 91 var commands = domain["commands"] || []; |
| 83 for (var j = 0; j < commands.length; ++j) { | 92 for (var j = 0; j < commands.length; ++j) { |
| 84 var command = commands[j]; | 93 var command = commands[j]; |
| 85 var parameters = command["parameters"]; | 94 var parameters = command["parameters"]; |
| 86 var paramsText = []; | 95 var paramsText = []; |
| 87 for (var k = 0; parameters && k < parameters.length; ++k) { | 96 for (var k = 0; parameters && k < parameters.length; ++k) { |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 102 paramsText.push(text); | 111 paramsText.push(text); |
| 103 } | 112 } |
| 104 | 113 |
| 105 var returnsText = []; | 114 var returnsText = []; |
| 106 var returns = command["returns"] || []; | 115 var returns = command["returns"] || []; |
| 107 for (var k = 0; k < returns.length; ++k) { | 116 for (var k = 0; k < returns.length; ++k) { |
| 108 var parameter = returns[k]; | 117 var parameter = returns[k]; |
| 109 returnsText.push("\"" + parameter.name + "\""); | 118 returnsText.push("\"" + parameter.name + "\""); |
| 110 } | 119 } |
| 111 var hasErrorData = String(Boolean(command.error)); | 120 var hasErrorData = String(Boolean(command.error)); |
| 112 result.push("InspectorBackend.registerCommand(\"" + domain.domain + "." + command.name + "\", [" + paramsText.join(", ") + "], [" + returnsText.join (", ") + "], " + hasErrorData + ");"); | 121 result.push("Protocol.registerCommand(\"" + domain.domain + "." + co mmand.name + "\", [" + paramsText.join(", ") + "], [" + returnsText.join(", ") + "], " + hasErrorData + ");"); |
| 113 } | 122 } |
| 114 | 123 |
| 115 for (var j = 0; domain.events && j < domain.events.length; ++j) { | 124 for (var j = 0; domain.events && j < domain.events.length; ++j) { |
| 116 var event = domain.events[j]; | 125 var event = domain.events[j]; |
| 117 var paramsText = []; | 126 var paramsText = []; |
| 118 for (var k = 0; event.parameters && k < event.parameters.length; ++k ) { | 127 for (var k = 0; event.parameters && k < event.parameters.length; ++k ) { |
| 119 var parameter = event.parameters[k]; | 128 var parameter = event.parameters[k]; |
| 120 paramsText.push("\"" + parameter.name + "\""); | 129 paramsText.push("\"" + parameter.name + "\""); |
| 121 } | 130 } |
| 122 result.push("InspectorBackend.registerEvent(\"" + domain.domain + ". " + event.name + "\", [" + paramsText.join(", ") + "]);"); | 131 result.push("Protocol.registerEvent(\"" + domain.domain + "." + even t.name + "\", [" + paramsText.join(", ") + "]);"); |
| 123 } | 132 } |
| 124 } | 133 } |
| 125 return result.join("\n"); | 134 return result.join("\n"); |
| 126 }; | 135 }; |
| 127 | 136 |
| 128 WebInspector.InspectorBackendHostedMode.loadFromJSONIfNeeded(); | 137 HostedMode.loadFromJSONIfNeeded(); |
| OLD | NEW |