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

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

Powered by Google App Engine
This is Rietveld 408576698