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

Side by Side Diff: chrome/browser/resources/tracing/timeline.js

Issue 9706010: about:tracing support for TRACE_ASYNC_START/FINISH events. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: try again Created 8 years, 9 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 Interactive visualizaiton of TimelineModel objects 6 * @fileoverview Interactive visualizaiton of TimelineModel objects
7 * based loosely on gantt charts. Each thread in the TimelineModel is given a 7 * based loosely on gantt charts. Each thread in the TimelineModel is given a
8 * set of TimelineTracks, one per subrow in the thread. The Timeline class 8 * set of TimelineTracks, one per subrow in the thread. The Timeline class
9 * acts as a controller, creating the individual tracks, while TimelineTracks 9 * acts as a controller, creating the individual tracks, while TimelineTracks
10 * do actual drawing. 10 * do actual drawing.
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 // Get a sorted list of threads. 389 // Get a sorted list of threads.
390 var threads = []; 390 var threads = [];
391 for (var tid in process.threads) 391 for (var tid in process.threads)
392 threads.push(process.threads[tid]); 392 threads.push(process.threads[tid]);
393 threads.sort(tracing.TimelineThread.compare); 393 threads.sort(tracing.TimelineThread.compare);
394 394
395 // Create the threads. 395 // Create the threads.
396 threads.forEach(function(thread) { 396 threads.forEach(function(thread) {
397 var track = new tracing.TimelineThreadTrack(); 397 var track = new tracing.TimelineThreadTrack();
398 track.heading = thread.userFriendlyName + ':'; 398 track.heading = thread.userFriendlyName + ':';
399 track.tooltip = thread.userFriendlyDetials; 399 track.tooltip = thread.userFriendlyDetails;
400 track.headingWidth = maxHeadingWidth; 400 track.headingWidth = maxHeadingWidth;
401 track.viewport = this.viewport_; 401 track.viewport = this.viewport_;
402 track.thread = thread; 402 track.thread = thread;
403 this.tracks_.appendChild(track); 403 this.tracks_.appendChild(track);
404 }.bind(this)); 404 }.bind(this));
405 }.bind(this)); 405 }.bind(this));
406 406
407 // Set up a reasonable viewport. 407 // Set up a reasonable viewport.
408 this.viewport_.setWhenPossible(function() { 408 this.viewport_.setWhenPossible(function() {
409 var rangeTimestamp = this.model_.maxTimestamp - 409 var rangeTimestamp = this.model_.maxTimestamp -
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 654
655 // Shift the timebase left until its just left of minTimestamp. 655 // Shift the timebase left until its just left of minTimestamp.
656 var numInterfvalsSinceStart = Math.ceil((tb - this.model_.minTimestamp) / 656 var numInterfvalsSinceStart = Math.ceil((tb - this.model_.minTimestamp) /
657 this.viewport_.gridStep_); 657 this.viewport_.gridStep_);
658 this.viewport_.gridTimebase = tb - 658 this.viewport_.gridTimebase = tb -
659 (numInterfvalsSinceStart + 1) * this.viewport_.gridStep_; 659 (numInterfvalsSinceStart + 1) * this.viewport_.gridStep_;
660 this.viewport_.gridEnabled = true; 660 this.viewport_.gridEnabled = true;
661 }, 661 },
662 662
663 onMouseDown_: function(e) { 663 onMouseDown_: function(e) {
664 rect = this.tracks_.getClientRects()[0]; 664 var canv = this.firstCanvas;
665 var rect = this.tracks_.getClientRects()[0];
665 var inside = rect && 666 var inside = rect &&
666 e.clientX >= rect.left && 667 e.clientX >= rect.left &&
667 e.clientX < rect.right && 668 e.clientX < rect.right &&
668 e.clientY >= rect.top && 669 e.clientY >= rect.top &&
669 e.clientY < rect.bottom; 670 e.clientY < rect.bottom &&
671 e.x >= canv.offsetLeft;
670 if (!inside) 672 if (!inside)
671 return; 673 return;
672 674
673 var canv = this.firstCanvas;
674 var pos = { 675 var pos = {
675 x: e.clientX - canv.offsetLeft, 676 x: e.clientX - canv.offsetLeft,
676 y: e.clientY - canv.offsetTop 677 y: e.clientY - canv.offsetTop
677 }; 678 };
678 679
679 var wX = this.viewport_.xViewToWorld(pos.x); 680 var wX = this.viewport_.xViewToWorld(pos.x);
680 681
681 this.dragBeginEvent_ = e; 682 this.dragBeginEvent_ = e;
682 e.preventDefault(); 683 e.preventDefault();
683 if (this.focusElement.tabIndex >= 0) 684 if (this.focusElement.tabIndex >= 0)
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 if (a <= b) { 737 if (a <= b) {
737 track.pickRange(loWX, hiWX, loY, hiY, addHit); 738 track.pickRange(loWX, hiWX, loY, hiY, addHit);
738 } 739 }
739 } 740 }
740 // Activate the new selection. 741 // Activate the new selection.
741 this.selection = selection; 742 this.selection = selection;
742 } 743 }
743 }, 744 },
744 745
745 onDblClick_: function(e) { 746 onDblClick_: function(e) {
747 var canv = this.firstCanvas;
748 if (e.x < canv.offsetLeft)
749 return;
750
746 var scale = 4; 751 var scale = 4;
747 if (e.shiftKey) 752 if (e.shiftKey)
748 scale = 1 / scale; 753 scale = 1 / scale;
749 this.zoomBy_(scale); 754 this.zoomBy_(scale);
750 e.preventDefault(); 755 e.preventDefault();
751 } 756 }
752 }; 757 };
753 758
754 /** 759 /**
755 * The TimelineModel being viewed by the timeline 760 * The TimelineModel being viewed by the timeline
756 * @type {TimelineModel} 761 * @type {TimelineModel}
757 */ 762 */
758 cr.defineProperty(Timeline, 'model', cr.PropertyKind.JS); 763 cr.defineProperty(Timeline, 'model', cr.PropertyKind.JS);
759 764
760 return { 765 return {
761 Timeline: Timeline, 766 Timeline: Timeline,
762 TimelineViewport: TimelineViewport 767 TimelineViewport: TimelineViewport
763 }; 768 };
764 }); 769 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/tracing/timeline.css ('k') | chrome/browser/resources/tracing/timeline_model.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698