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

Side by Side Diff: webkit/glue/devtools/js/devtools.js

Issue 118112: DevTools Profiler UI changes.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 6 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 | Annotate | Revision Log
OLDNEW
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 14
15 15
16 /** 16 /**
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 this.domAgent_ = new devtools.DomAgent(); 53 this.domAgent_ = new devtools.DomAgent();
54 }; 54 };
55 55
56 56
57 /** 57 /**
58 * Resets tools agent to its initial state. 58 * Resets tools agent to its initial state.
59 */ 59 */
60 devtools.ToolsAgent.prototype.reset = function() { 60 devtools.ToolsAgent.prototype.reset = function() {
61 this.domAgent_.reset(); 61 this.domAgent_.reset();
62 this.debuggerAgent_.reset(); 62 this.debuggerAgent_.reset();
63 63
64 this.domAgent_.getDocumentElementAsync(); 64 this.domAgent_.getDocumentElementAsync();
65 }; 65 };
66 66
67 67
68 /** 68 /**
69 * @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
70 * inspected page. 70 * inspected page.
71 * @param {function(string):undefined} callback Function to call with the 71 * @param {function(string):undefined} callback Function to call with the
72 * result. 72 * result.
73 */ 73 */
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 * @param {string} expr 147 * @param {string} expr
148 */ 148 */
149 devtools.ToolsAgent.prototype.evaluate = function(expr) { 149 devtools.ToolsAgent.prototype.evaluate = function(expr) {
150 RemoteToolsAgent.evaluate(expr); 150 RemoteToolsAgent.evaluate(expr);
151 }; 151 };
152 152
153 153
154 /** 154 /**
155 * Asynchronously queries for the resource content. 155 * Asynchronously queries for the resource content.
156 * @param {number} identifier Resource identifier. 156 * @param {number} identifier Resource identifier.
157 * @param {function(string):undefined} opt_callback Callback to call when 157 * @param {function(string):undefined} opt_callback Callback to call when
158 * result is available. 158 * result is available.
159 */ 159 */
160 devtools.ToolsAgent.prototype.getResourceContentAsync = function(identifier, 160 devtools.ToolsAgent.prototype.getResourceContentAsync = function(identifier,
161 opt_callback) { 161 opt_callback) {
162 var resource = WebInspector.resources[identifier]; 162 var resource = WebInspector.resources[identifier];
163 if (!resource) { 163 if (!resource) {
164 return; 164 return;
165 } 165 }
166 RemoteToolsAgent.GetResourceContent( 166 RemoteToolsAgent.GetResourceContent(
167 devtools.Callback.wrap(opt_callback), identifier); 167 devtools.Callback.wrap(opt_callback), identifier);
168 }; 168 };
169 169
170 170
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 goog.bind(this.performSearchCallback_, this)); 234 goog.bind(this.performSearchCallback_, this));
235 }; 235 };
236 236
237 237
238 WebInspector.ElementsPanel.prototype.performSearchCallback_ = function(nodes) { 238 WebInspector.ElementsPanel.prototype.performSearchCallback_ = function(nodes) {
239 for (var i = 0; i < nodes.length; ++i) { 239 for (var i = 0; i < nodes.length; ++i) {
240 var treeElement = this.treeOutline.findTreeElement(nodes[i]); 240 var treeElement = this.treeOutline.findTreeElement(nodes[i]);
241 if (treeElement) 241 if (treeElement)
242 treeElement.highlighted = true; 242 treeElement.highlighted = true;
243 } 243 }
244 244
245 if (nodes.length) { 245 if (nodes.length) {
246 this.currentSearchResultIndex_ = 0; 246 this.currentSearchResultIndex_ = 0;
247 this.focusedDOMNode = nodes[0]; 247 this.focusedDOMNode = nodes[0];
248 } 248 }
249 249
250 this.searchResultCount_ = nodes.length; 250 this.searchResultCount_ = nodes.length;
251 }; 251 };
252 252
253 253
254 /** 254 /**
255 * @override 255 * @override
256 */ 256 */
257 WebInspector.ElementsPanel.prototype.searchCanceled = function() { 257 WebInspector.ElementsPanel.prototype.searchCanceled = function() {
258 this.currentSearchResultIndex_ = 0; 258 this.currentSearchResultIndex_ = 0;
259 this.searchResultCount_ = 0; 259 this.searchResultCount_ = 0;
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 * Temporarily sets style fetched from the inspectable tab to the currently 354 * Temporarily sets style fetched from the inspectable tab to the currently
355 * focused node, invokes updateUI callback and clears the styles. 355 * focused node, invokes updateUI callback and clears the styles.
356 * @param {function(Node):undefined} updateUI Callback to call while styles are 356 * @param {function(Node):undefined} updateUI Callback to call while styles are
357 * set. 357 * set.
358 */ 358 */
359 WebInspector.ElementsPanel.prototype.invokeWithStyleSet_ = 359 WebInspector.ElementsPanel.prototype.invokeWithStyleSet_ =
360 function(updateUI) { 360 function(updateUI) {
361 var node = this.focusedDOMNode; 361 var node = this.focusedDOMNode;
362 if (node && node.nodeType === Node.TEXT_NODE && node.parentNode) 362 if (node && node.nodeType === Node.TEXT_NODE && node.parentNode)
363 node = node.parentNode; 363 node = node.parentNode;
364 364
365 if (node && node.nodeType == Node.ELEMENT_NODE) { 365 if (node && node.nodeType == Node.ELEMENT_NODE) {
366 var callback = function(stylesStr) { 366 var callback = function(stylesStr) {
367 var styles = JSON.parse(stylesStr); 367 var styles = JSON.parse(stylesStr);
368 if (!styles.computedStyle) { 368 if (!styles.computedStyle) {
369 return; 369 return;
370 } 370 }
371 node.setStyles(styles.computedStyle, styles.inlineStyle, 371 node.setStyles(styles.computedStyle, styles.inlineStyle,
372 styles.styleAttributes, styles.matchedCSSRules); 372 styles.styleAttributes, styles.matchedCSSRules);
373 updateUI(node); 373 updateUI(node);
374 node.clearStyles(); 374 node.clearStyles();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 WebInspector.PropertiesSidebarPane.prototype.update = function(object) { 418 WebInspector.PropertiesSidebarPane.prototype.update = function(object) {
419 var body = this.bodyElement; 419 var body = this.bodyElement;
420 body.removeChildren(); 420 body.removeChildren();
421 421
422 this.sections = []; 422 this.sections = [];
423 423
424 if (!object) { 424 if (!object) {
425 return; 425 return;
426 } 426 }
427 427
428 428
429 var self = this; 429 var self = this;
430 devtools.tools.getDomAgent().getNodePrototypesAsync(object.id_, 430 devtools.tools.getDomAgent().getNodePrototypesAsync(object.id_,
431 function(json) { 431 function(json) {
432 // Get array of prototype user-friendly names. 432 // Get array of prototype user-friendly names.
433 var prototypes = JSON.parse(json); 433 var prototypes = JSON.parse(json);
434 for (var i = 0; i < prototypes.length; ++i) { 434 for (var i = 0; i < prototypes.length; ++i) {
435 var prototype = {}; 435 var prototype = {};
436 prototype.id_ = object.id_; 436 prototype.id_ = object.id_;
437 prototype.protoDepth_ = i; 437 prototype.protoDepth_ = i;
438 var section = new WebInspector.SidebarObjectPropertiesSection( 438 var section = new WebInspector.SidebarObjectPropertiesSection(
439 prototype, 439 prototype,
440 prototypes[i]); 440 prototypes[i]);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 490
491 491
492 /** 492 /**
493 * @override 493 * @override
494 */ 494 */
495 WebInspector.SidebarObjectPropertyTreeElement.prototype.onpopulate = 495 WebInspector.SidebarObjectPropertyTreeElement.prototype.onpopulate =
496 function() { 496 function() {
497 var nodeId = this.parentObject.devtools$$nodeId_; 497 var nodeId = this.parentObject.devtools$$nodeId_;
498 var path = this.parentObject.devtools$$path_.slice(0); 498 var path = this.parentObject.devtools$$path_.slice(0);
499 path.push(this.propertyName); 499 path.push(this.propertyName);
500 devtools.tools.getDomAgent().getNodePropertiesAsync(nodeId, path, -1, 500 devtools.tools.getDomAgent().getNodePropertiesAsync(nodeId, path, -1,
501 goog.partial( 501 goog.partial(
502 WebInspector.didGetNodePropertiesAsync_, 502 WebInspector.didGetNodePropertiesAsync_,
503 this, 503 this,
504 this.treeOutline.section.treeElementConstructor, 504 this.treeOutline.section.treeElementConstructor,
505 nodeId, path)); 505 nodeId, path));
506 }; 506 };
507 507
508 508
509 /** 509 /**
510 * This override is necessary for starting highlighting after the resource 510 * This override is necessary for starting highlighting after the resource
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 /** 543 /**
544 * This override is necessary for adding script source asynchronously. 544 * This override is necessary for adding script source asynchronously.
545 * @override 545 * @override
546 */ 546 */
547 WebInspector.ScriptView.prototype.setupSourceFrameIfNeeded = function() { 547 WebInspector.ScriptView.prototype.setupSourceFrameIfNeeded = function() {
548 if (!this._frameNeedsSetup) { 548 if (!this._frameNeedsSetup) {
549 return; 549 return;
550 } 550 }
551 551
552 this.attach(); 552 this.attach();
553 553
554 if (this.script.source) { 554 if (this.script.source) {
555 this.didResolveScriptSource_(); 555 this.didResolveScriptSource_();
556 } else { 556 } else {
557 var self = this; 557 var self = this;
558 devtools.tools.getDebuggerAgent().resolveScriptSource( 558 devtools.tools.getDebuggerAgent().resolveScriptSource(
559 this.script.sourceID, 559 this.script.sourceID,
560 function(source) { 560 function(source) {
561 self.script.source = source || '<source is not available>'; 561 self.script.source = source || '<source is not available>';
562 self.didResolveScriptSource_(); 562 self.didResolveScriptSource_();
563 }); 563 });
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 WebInspector.DataGrid = function(columns) { 914 WebInspector.DataGrid = function(columns) {
915 if (('average' in columns) && ('calls' in columns)) { 915 if (('average' in columns) && ('calls' in columns)) {
916 delete columns['average']; 916 delete columns['average'];
917 delete columns['calls']; 917 delete columns['calls'];
918 } 918 }
919 return new originalDataGrid(columns); 919 return new originalDataGrid(columns);
920 }; 920 };
921 })(); 921 })();
922 922
923 923
924 // WebKit's profiler displays milliseconds with high resolution (shows
925 // three digits after the decimal point). We never have such resolution,
926 // as our minimal sampling rate is 1 ms. So we are disabling high resolution
927 // to avoid visual clutter caused by meaningless ".000" parts.
928 (function InterceptTimeDisplayInProfiler() {
929 var originalDataGetter =
930 WebInspector.ProfileDataGridNode.prototype.__lookupGetter__('data');
931 WebInspector.ProfileDataGridNode.prototype.__defineGetter__('data',
932 function() {
933 var oldNumberSecondsToString = Number.secondsToString;
934 Number.secondsToString = function(seconds, formatterFunction) {
935 return oldNumberSecondsToString(seconds, formatterFunction, false);
936 };
937 var data = originalDataGetter.call(this);
938 Number.secondsToString = oldNumberSecondsToString;
939 return data;
940 });
941 })();
942
943
924 /** 944 /**
925 * @override 945 * @override
926 * TODO(pfeldman): Add l10n. 946 * TODO(pfeldman): Add l10n.
927 */ 947 */
928 WebInspector.UIString = function(string) { 948 WebInspector.UIString = function(string) {
929 return String.vsprintf(string, Array.prototype.slice.call(arguments, 1)); 949 return String.vsprintf(string, Array.prototype.slice.call(arguments, 1));
930 }; 950 };
931 951
932 952
933 // There is no clear way of setting frame title yet. So sniffing main resource 953 // There is no clear way of setting frame title yet. So sniffing main resource
934 // load. 954 // load.
935 (function OverrideUpdateResource() { 955 (function OverrideUpdateResource() {
936 var originalUpdateResource = WebInspector.updateResource; 956 var originalUpdateResource = WebInspector.updateResource;
937 WebInspector.updateResource = function(identifier, payload) { 957 WebInspector.updateResource = function(identifier, payload) {
938 originalUpdateResource.call(this, identifier, payload); 958 originalUpdateResource.call(this, identifier, payload);
939 var resource = this.resources[identifier]; 959 var resource = this.resources[identifier];
940 if (resource && resource.mainResource && resource.finished) { 960 if (resource && resource.mainResource && resource.finished) {
941 document.title = 'Developer Tools - ' + resource.url; 961 document.title = 'Developer Tools - ' + resource.url;
942 } 962 }
943 }; 963 };
944 })(); 964 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698