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

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

Issue 2453673002: [DevTools] Scope common protocol infrastructure under Protocol namespace in a separate module. (Closed)
Patch Set: Created 4 years, 1 month 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 // 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
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();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698