| Index: sky/framework/inspector/inspector.sky
|
| diff --git a/sky/framework/inspector/inspector.sky b/sky/framework/inspector/inspector.sky
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..80b285f093c83101c036b9290327a5f22bc631e1
|
| --- /dev/null
|
| +++ b/sky/framework/inspector/inspector.sky
|
| @@ -0,0 +1,83 @@
|
| +<link rel="import" href="/mojo/public/html/connection.html" as="connection" />
|
| +<link rel="import" href="/mojo/public/html/core.html" as="core" />
|
| +<link rel="import" href="/mojo/public/html/support.html" as="support" />
|
| +<link rel="import" href="/sky/framework/inspector/server/inspector.mojom.html" as="inspector" />
|
| +<link rel="import" href="console-agent.sky" as="ConsoleAgent" />
|
| +<link rel="import" href="dom-agent.sky" as="DOMAgent" />
|
| +<link rel="import" href="page-agent.sky" as="PageAgent" />
|
| +<link rel="import" href="worker-agent.sky" as="WorkerAgent" />
|
| +<script>
|
| +function InspectorBackend(frontend) {
|
| + this.frontend = frontend;
|
| + this.agents = {
|
| + Console: new ConsoleAgent(),
|
| + DOM: new DOMAgent(this),
|
| + Page: new PageAgent(),
|
| + Worker: new WorkerAgent(),
|
| + };
|
| +}
|
| +
|
| +InspectorBackend.prototype = Object.create(
|
| + inspector.InspectorBackend.stubClass.prototype);
|
| +
|
| +InspectorBackend.prototype.onConnect = function() {
|
| +};
|
| +
|
| +InspectorBackend.prototype.onDisconnect = function() {
|
| +};
|
| +
|
| +InspectorBackend.prototype.dispatch_ = function(descriptor, params) {
|
| + var parsed = descriptor.split('.');
|
| +
|
| + var agentName = parsed[0];
|
| + var methodName = parsed[1];
|
| +
|
| + if (!(agentName in this.agents)) {
|
| + console.log("InspectorBackend cannot find agent " + agentName);
|
| + return {};
|
| + }
|
| +
|
| + var agent = this.agents[agentName];
|
| +
|
| + if (!(methodName in agent)) {
|
| + console.log("InspectorBackend cannot find method " +
|
| + methodName + " on agent " + agentName);
|
| + return {};
|
| + }
|
| +
|
| + try {
|
| + return agent[methodName](params);
|
| + } catch(ex) {
|
| + console.log(descriptor + ": " + ex);
|
| + }
|
| +};
|
| +
|
| +InspectorBackend.prototype.onMessage = function(data) {
|
| + var message = JSON.parse(data);
|
| + var result = this.dispatch_(message.method, message.params);
|
| + var response = {
|
| + id: message.id,
|
| + };
|
| + if (typeof result !== "undefined")
|
| + response.result = result;
|
| + this.frontend.sendMessage(JSON.stringify(response));
|
| +};
|
| +
|
| +InspectorBackend.prototype.sendMessage = function(method, params) {
|
| + var message = JSON.stringify({
|
| + method: method,
|
| + params: params,
|
| + });
|
| + this.frontend.sendMessage(message);
|
| +};
|
| +
|
| +var frontendHandle = internals.connectToService(
|
| + "mojo:sky_inspector_server", inspector.InspectorFrontend.name);
|
| +window.frontendConnection = new connection.Connection(
|
| + frontendHandle,
|
| + InspectorBackend,
|
| + inspector.InspectorFrontend.proxyClass);
|
| +
|
| +window.frontend = frontendConnection.remote;
|
| +frontend.listen(9898);
|
| +</script>
|
|
|