| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 /** | 5 /** |
| 6 * @fileoverview Tools is a main class that wires all components of the | 6 * @fileoverview Tools is a main class that wires all components of the |
| 7 * DevTools frontend together. It is also responsible for overriding existing | 7 * DevTools frontend together. It is also responsible for overriding existing |
| 8 * WebInspector functionality while it is getting upstreamed into WebCore. | 8 * WebInspector functionality while it is getting upstreamed into WebCore. |
| 9 */ | 9 */ |
| 10 goog.provide('devtools.Tools'); | 10 goog.provide('devtools.Tools'); |
| 11 | 11 |
| 12 goog.require('devtools.DebuggerAgent'); | 12 goog.require('devtools.DebuggerAgent'); |
| 13 goog.require('devtools.DomAgent'); | 13 goog.require('devtools.DomAgent'); |
| 14 goog.require('devtools.NetAgent'); | |
| 15 | 14 |
| 16 | 15 |
| 17 /** | 16 /** |
| 18 * Dispatches raw message from the host. | 17 * Dispatches raw message from the host. |
| 19 * @param {Object} msg Message to dispatch. | 18 * @param {Object} msg Message to dispatch. |
| 20 */ | 19 */ |
| 21 devtools.dispatch = function(msg) { | 20 devtools.dispatch = function(msg) { |
| 22 var delegate = msg[0]; | 21 var delegate = msg[0]; |
| 23 var methodName = msg[1]; | 22 var methodName = msg[1]; |
| 24 var remoteName = 'Remote' + delegate.substring(0, delegate.length - 8); | 23 var remoteName = 'Remote' + delegate.substring(0, delegate.length - 8); |
| 25 var agent = window[remoteName]; | 24 var agent = window[remoteName]; |
| 26 if (!agent) { | 25 if (!agent) { |
| 27 debugPrint('No remote agent "' + remoteName + '" found.'); | 26 debugPrint('No remote agent "' + remoteName + '" found.'); |
| 28 return; | 27 return; |
| 29 } | 28 } |
| 30 var method = agent[methodName]; | 29 var method = agent[methodName]; |
| 31 if (!method) { | 30 if (!method) { |
| 32 debugPrint('No method "' + remoteName + '.' + methodName + '" found.'); | 31 debugPrint('No method "' + remoteName + '.' + methodName + '" found.'); |
| 33 return; | 32 return; |
| 34 } | 33 } |
| 35 method.apply(this, msg.slice(2)); | 34 method.apply(this, msg.slice(2)); |
| 36 }; | 35 }; |
| 37 | 36 |
| 38 | 37 |
| 39 devtools.ToolsAgent = function() { | 38 devtools.ToolsAgent = function() { |
| 40 RemoteToolsAgent.DidEvaluateJavaScript = devtools.Callback.processCallback; | 39 RemoteToolsAgent.DidEvaluateJavaScript = devtools.Callback.processCallback; |
| 41 RemoteToolsAgent.DidExecuteUtilityFunction = | 40 RemoteToolsAgent.DidExecuteUtilityFunction = |
| 42 devtools.Callback.processCallback; | 41 devtools.Callback.processCallback; |
| 43 RemoteToolsAgent.UpdateFocusedNode = | 42 RemoteToolsAgent.UpdateFocusedNode = |
| 44 goog.bind(this.updateFocusedNode, this); | 43 goog.bind(this.updateFocusedNode_, this); |
| 45 RemoteToolsAgent.FrameNavigate = | 44 RemoteToolsAgent.FrameNavigate = |
| 46 goog.bind(this.frameNavigate, this); | 45 goog.bind(this.frameNavigate_, this); |
| 47 RemoteToolsAgent.AddMessageToConsole = | 46 RemoteToolsAgent.AddMessageToConsole = |
| 48 goog.bind(this.addMessageToConsole, this); | 47 goog.bind(this.addMessageToConsole_, this); |
| 48 RemoteToolsAgent.DispatchOnClient = |
| 49 goog.bind(this.dispatchOnClient_, this); |
| 50 RemoteToolsAgent.DidGetResourceContent = |
| 51 devtools.Callback.processCallback; |
| 49 this.debuggerAgent_ = new devtools.DebuggerAgent(); | 52 this.debuggerAgent_ = new devtools.DebuggerAgent(); |
| 50 this.domAgent_ = new devtools.DomAgent(); | 53 this.domAgent_ = new devtools.DomAgent(); |
| 51 this.netAgent_ = new devtools.NetAgent(); | |
| 52 }; | 54 }; |
| 53 | 55 |
| 54 | 56 |
| 55 /** | 57 /** |
| 56 * Resets tools agent to its initial state. | 58 * Resets tools agent to its initial state. |
| 57 */ | 59 */ |
| 58 devtools.ToolsAgent.prototype.reset = function() { | 60 devtools.ToolsAgent.prototype.reset = function() { |
| 59 this.domAgent_.reset(); | 61 this.domAgent_.reset(); |
| 60 this.netAgent_.reset(); | |
| 61 this.debuggerAgent_.reset(); | 62 this.debuggerAgent_.reset(); |
| 62 | 63 |
| 63 this.domAgent_.getDocumentElementAsync(); | 64 this.domAgent_.getDocumentElementAsync(); |
| 64 }; | 65 }; |
| 65 | 66 |
| 66 | 67 |
| 67 /** | 68 /** |
| 68 * @param {string} script Script exression to be evaluated in the context of the | 69 * @param {string} script Script exression to be evaluated in the context of the |
| 69 * inspected page. | 70 * inspected page. |
| 70 * @param {function(string):undefined} callback Function to call with the | 71 * @param {function(string):undefined} callback Function to call with the |
| (...skipping 15 matching lines...) Expand all Loading... |
| 86 /** | 87 /** |
| 87 * DomAgent accessor. | 88 * DomAgent accessor. |
| 88 * @return {devtools.DomAgent} Dom agent instance. | 89 * @return {devtools.DomAgent} Dom agent instance. |
| 89 */ | 90 */ |
| 90 devtools.ToolsAgent.prototype.getDomAgent = function() { | 91 devtools.ToolsAgent.prototype.getDomAgent = function() { |
| 91 return this.domAgent_; | 92 return this.domAgent_; |
| 92 }; | 93 }; |
| 93 | 94 |
| 94 | 95 |
| 95 /** | 96 /** |
| 96 * NetAgent accessor. | |
| 97 * @return {devtools.NetAgent} Net agent instance. | |
| 98 */ | |
| 99 devtools.ToolsAgent.prototype.getNetAgent = function() { | |
| 100 return this.netAgent_; | |
| 101 }; | |
| 102 | |
| 103 | |
| 104 /** | |
| 105 * @see tools_agent.h | 97 * @see tools_agent.h |
| 98 * @private |
| 106 */ | 99 */ |
| 107 devtools.ToolsAgent.prototype.updateFocusedNode = function(nodeId) { | 100 devtools.ToolsAgent.prototype.updateFocusedNode_ = function(nodeId) { |
| 108 var node = this.domAgent_.getNodeForId(nodeId); | 101 var node = this.domAgent_.getNodeForId(nodeId); |
| 109 WebInspector.updateFocusedNode(node); | 102 WebInspector.updateFocusedNode(node); |
| 110 }; | 103 }; |
| 111 | 104 |
| 112 | 105 |
| 113 /** | 106 /** |
| 114 * @param {string} url Url frame navigated to. | 107 * @param {string} url Url frame navigated to. |
| 115 * @param {bool} topLevel True iff top level navigation occurred. | 108 * @param {bool} topLevel True iff top level navigation occurred. |
| 116 * @see tools_agent.h | 109 * @see tools_agent.h |
| 110 * @private |
| 117 */ | 111 */ |
| 118 devtools.ToolsAgent.prototype.frameNavigate = function(url, topLevel) { | 112 devtools.ToolsAgent.prototype.frameNavigate_ = function(url, topLevel) { |
| 119 if (topLevel) { | 113 if (topLevel) { |
| 120 this.reset(); | 114 this.reset(); |
| 121 WebInspector.reset(); | 115 WebInspector.reset(); |
| 122 } | 116 } |
| 123 }; | 117 }; |
| 124 | 118 |
| 125 | 119 |
| 126 /** | 120 /** |
| 127 * @param {Object} message Message object to add. | 121 * @param {Object} message Message object to add. |
| 128 * @see tools_agent.h | 122 * @see tools_agent.h |
| 123 * @private |
| 129 */ | 124 */ |
| 130 devtools.ToolsAgent.prototype.addMessageToConsole = function(message) { | 125 devtools.ToolsAgent.prototype.addMessageToConsole_ = function(message) { |
| 131 var console = WebInspector.console; | 126 var console = WebInspector.console; |
| 132 if (console) { | 127 if (console) { |
| 133 console.addMessage(new WebInspector.ConsoleMessage( | 128 console.addMessage(new WebInspector.ConsoleMessage( |
| 134 message.source, message.level, message.line, message.sourceId, | 129 message.source, message.level, message.line, message.sourceId, |
| 135 undefined, 1, message.text)); | 130 undefined, 1, message.text)); |
| 136 } | 131 } |
| 137 }; | 132 }; |
| 138 | 133 |
| 139 | 134 |
| 140 /** | 135 /** |
| 136 * @param {string} message Serialized call to be dispatched on WebInspector. |
| 137 * @private |
| 138 */ |
| 139 devtools.ToolsAgent.prototype.dispatchOnClient_ = function(message) { |
| 140 var messageObj = JSON.parse(message); |
| 141 WebInspector.dispatch.apply(WebInspector, messageObj); |
| 142 }; |
| 143 |
| 144 |
| 145 /** |
| 141 * Evaluates js expression. | 146 * Evaluates js expression. |
| 142 * @param {string} expr | 147 * @param {string} expr |
| 143 */ | 148 */ |
| 144 devtools.ToolsAgent.prototype.evaluate = function(expr) { | 149 devtools.ToolsAgent.prototype.evaluate = function(expr) { |
| 145 RemoteToolsAgent.evaluate(expr); | 150 RemoteToolsAgent.evaluate(expr); |
| 146 }; | 151 }; |
| 147 | 152 |
| 148 | 153 |
| 149 /** | 154 /** |
| 155 * Asynchronously queries for the resource content. |
| 156 * @param {number} identifier Resource identifier. |
| 157 * @param {function(string):undefined} opt_callback Callback to call when |
| 158 * result is available. |
| 159 */ |
| 160 devtools.ToolsAgent.prototype.getResourceContentAsync = function(identifier, |
| 161 opt_callback) { |
| 162 var resource = WebInspector.resources[identifier]; |
| 163 if (!resource) { |
| 164 return; |
| 165 } |
| 166 RemoteToolsAgent.GetResourceContent( |
| 167 devtools.Callback.wrap(opt_callback), identifier); |
| 168 }; |
| 169 |
| 170 |
| 171 /** |
| 150 * Prints string to the inspector console or shows alert if the console doesn't | 172 * Prints string to the inspector console or shows alert if the console doesn't |
| 151 * exist. | 173 * exist. |
| 152 * @param {string} text | 174 * @param {string} text |
| 153 */ | 175 */ |
| 154 function debugPrint(text) { | 176 function debugPrint(text) { |
| 155 var console = WebInspector.console; | 177 var console = WebInspector.console; |
| 156 if (console) { | 178 if (console) { |
| 157 console.addMessage(new WebInspector.ConsoleMessage( | 179 console.addMessage(new WebInspector.ConsoleMessage( |
| 158 '', undefined, 1, '', undefined, 1, text)); | 180 '', undefined, 1, '', undefined, 1, text)); |
| 159 } else { | 181 } else { |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 WebInspector.SourceView.prototype.setupSourceFrameIfNeeded = function() { | 514 WebInspector.SourceView.prototype.setupSourceFrameIfNeeded = function() { |
| 493 if (!this._frameNeedsSetup) { | 515 if (!this._frameNeedsSetup) { |
| 494 return; | 516 return; |
| 495 } | 517 } |
| 496 | 518 |
| 497 this.attach(); | 519 this.attach(); |
| 498 | 520 |
| 499 var self = this; | 521 var self = this; |
| 500 var identifier = this.resource.identifier; | 522 var identifier = this.resource.identifier; |
| 501 var element = this.sourceFrame.element; | 523 var element = this.sourceFrame.element; |
| 502 var netAgent = devtools.tools.getNetAgent(); | |
| 503 | 524 |
| 504 netAgent.getResourceContentAsync(identifier, function(source) { | 525 devtools.tools.getResourceContentAsync(identifier, function(source) { |
| 505 var resource = WebInspector.resources[identifier]; | 526 var resource = WebInspector.resources[identifier]; |
| 506 if (InspectorController.addSourceToFrame(resource.mimeType, source, | 527 if (InspectorController.addSourceToFrame(resource.mimeType, source, |
| 507 element)) { | 528 element)) { |
| 508 delete self._frameNeedsSetup; | 529 delete self._frameNeedsSetup; |
| 509 if (resource.type === WebInspector.Resource.Type.Script) { | 530 if (resource.type === WebInspector.Resource.Type.Script) { |
| 510 self.sourceFrame.addEventListener('syntax highlighting complete', | 531 self.sourceFrame.addEventListener('syntax highlighting complete', |
| 511 self._syntaxHighlightingComplete, self); | 532 self._syntaxHighlightingComplete, self); |
| 512 self.sourceFrame.syntaxHighlightJavascript(); | 533 self.sourceFrame.syntaxHighlightJavascript(); |
| 513 } else { | 534 } else { |
| 514 self._sourceFrameSetupFinished(); | 535 self._sourceFrameSetupFinished(); |
| (...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 897 } | 918 } |
| 898 return new originalDataGrid(columns); | 919 return new originalDataGrid(columns); |
| 899 }; | 920 }; |
| 900 })(); | 921 })(); |
| 901 | 922 |
| 902 | 923 |
| 903 /** | 924 /** |
| 904 * @override | 925 * @override |
| 905 * TODO(pfeldman): Add l10n. | 926 * TODO(pfeldman): Add l10n. |
| 906 */ | 927 */ |
| 907 WebInspector.UIString = function(string) | 928 WebInspector.UIString = function(string) { |
| 908 { | |
| 909 return String.vsprintf(string, Array.prototype.slice.call(arguments, 1)); | 929 return String.vsprintf(string, Array.prototype.slice.call(arguments, 1)); |
| 910 } | 930 }; |
| 931 |
| 932 |
| 933 // There is no clear way of setting frame title yet. So sniffing main resource |
| 934 // load. |
| 935 (function OverrideUpdateResource() { |
| 936 var originalUpdateResource = WebInspector.updateResource; |
| 937 WebInspector.updateResource = function(identifier, payload) { |
| 938 originalUpdateResource.call(this, identifier, payload); |
| 939 var resource = this.resources[identifier]; |
| 940 if (resource && resource.mainResource && resource.finished) { |
| 941 document.title = 'Developer Tools - ' + resource.url; |
| 942 } |
| 943 }; |
| 944 })(); |
| OLD | NEW |