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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/sdk/InspectorBackendHostedMode.js

Issue 2109243003: Introduce --remote-debugging-frontend switch for custom remote debugging front-end (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: support absolute path instead of HTTP endpoint Created 4 years, 5 months 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 /**
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" );
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/devtools/devtools.gypi ('k') | third_party/WebKit/Source/devtools/front_end/sdk/module.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698