166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Copyright (c) 2013 The Chromium Authors. All rights reserved. 266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Use of this source code is governed by a BSD-style license that can be 366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// found in the LICENSE file. 466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict'; 666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.tracks.process_track_base'); 866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.exportTo('tracing.tracks', function() { 1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var ProcessTrackBase = tracing.tracks.ProcessTrackBase; 1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis /** 1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis * @constructor 1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis */ 1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var ProcessTrack = ui.define('process-track', ProcessTrackBase); 1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis ProcessTrack.prototype = { 1866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis __proto__: ProcessTrackBase.prototype, 1966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis decorate: function(viewport) { 2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis tracing.tracks.ProcessTrackBase.prototype.decorate.call(this, viewport); 2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }, 2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 246833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis drawTrack: function(type) { 256833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis switch (type) { 266833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis case tracing.tracks.DrawType.INSTANT_EVENT: 276833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis if (!this.processBase.instantEvents || 286833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis this.processBase.instantEvents.length === 0) 296833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis break; 306833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis 316833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis var ctx = this.context(); 326833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis if (ctx === undefined) 336833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis break; 346833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis 356833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis ctx.save(); 366833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis var worldBounds = this.setupCanvasForDraw_(); 376833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis this.drawInstantEvents_( 386833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis this.processBase.instantEvents, 396833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis worldBounds.left, 406833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis worldBounds.right); 416833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis ctx.restore(); 426833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis break; 436833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis } 446833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis 456833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis tracing.tracks.ContainerTrack.prototype.drawTrack.call(this, type); 466833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis }, 476833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis 4866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis // Process maps to processBase because we derive from ProcessTrackBase. 4966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis set process(process) { 5066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis this.processBase = process; 5166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }, 5266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 5366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis get process() { 5466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return this.processBase; 556833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis }, 566833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis 576833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis addIntersectingItemsInRangeToSelectionInWorldSpace: function( 586833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis loWX, hiWX, viewPixWidthWorld, selection) { 596833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis function onPickHit(instantEvent) { 606833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis var hit = selection.addSlice(this, instantEvent); 616833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis this.decorateHit(hit); 626833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis } 636833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis base.iterateOverIntersectingIntervals(this.processBase.instantEvents, 646833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis function(x) { return x.start; }, 656833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis function(x) { return x.duration; }, 666833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis loWX, hiWX, 676833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis onPickHit.bind(this)); 686833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis 696833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis tracing.tracks.ContainerTrack.prototype. 706833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis addIntersectingItemsInRangeToSelectionInWorldSpace. 716833e18b1d4077bf3a727b4422cc2acdbeee35a7Jamie Gennis apply(this, arguments); 7266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 7366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 7466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 7566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return { 7666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis ProcessTrack: ProcessTrack 7766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 7866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis}); 79