1b122baf563564a1d478804fb882fcba242a9949eChris Craik<!DOCTYPE html> 2b122baf563564a1d478804fb882fcba242a9949eChris Craik<!-- 3b122baf563564a1d478804fb882fcba242a9949eChris CraikCopyright (c) 2013 The Chromium Authors. All rights reserved. 4b122baf563564a1d478804fb882fcba242a9949eChris CraikUse of this source code is governed by a BSD-style license that can be 5b122baf563564a1d478804fb882fcba242a9949eChris Craikfound in the LICENSE file. 6b122baf563564a1d478804fb882fcba242a9949eChris Craik--> 7b122baf563564a1d478804fb882fcba242a9949eChris Craik 88d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi<link rel="import" href="/tracing/base/color_scheme.html"> 94a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair<link rel="import" href="/tracing/base/sorted_array_utils.html"> 104a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair<link rel="import" href="/tracing/base/utils.html"> 114a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair<link rel="import" href="/tracing/model/event_set.html"> 124a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair<link rel="import" href="/tracing/model/model.html"> 134a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair<link rel="import" href="/tracing/ui/analysis/analysis_link.html"> 144a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair<link rel="import" href="/tracing/ui/analysis/analysis_sub_view.html"> 154a4f2fe02baf385f6c24fc98c6e17bf6ac5e0724Dan Sinclair<link rel="import" href="/tracing/ui/analysis/generic_object_view.html"> 16cef7893435aa41160dd1255c43cb8498279738ccChris Craik<link rel="import" href="/tracing/value/ui/scalar_span.html"> 17cef7893435aa41160dd1255c43cb8498279738ccChris Craik<link rel="import" href="/tracing/value/unit.html"> 18ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik 19ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik<polymer-element name="tr-ui-a-single-thread-time-slice-sub-view" 20ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik extends="tr-ui-a-sub-view"> 21b122baf563564a1d478804fb882fcba242a9949eChris Craik <template> 22b122baf563564a1d478804fb882fcba242a9949eChris Craik <style> 23b122baf563564a1d478804fb882fcba242a9949eChris Craik table { 24b122baf563564a1d478804fb882fcba242a9949eChris Craik border-collapse: collapse; 25b122baf563564a1d478804fb882fcba242a9949eChris Craik border-width: 0; 26b122baf563564a1d478804fb882fcba242a9949eChris Craik margin-bottom: 25px; 27b122baf563564a1d478804fb882fcba242a9949eChris Craik width: 100%; 28b122baf563564a1d478804fb882fcba242a9949eChris Craik } 29b122baf563564a1d478804fb882fcba242a9949eChris Craik 30b122baf563564a1d478804fb882fcba242a9949eChris Craik table tr > td:first-child { 31b122baf563564a1d478804fb882fcba242a9949eChris Craik padding-left: 2px; 32b122baf563564a1d478804fb882fcba242a9949eChris Craik } 33b122baf563564a1d478804fb882fcba242a9949eChris Craik 34b122baf563564a1d478804fb882fcba242a9949eChris Craik table tr > td { 35b122baf563564a1d478804fb882fcba242a9949eChris Craik padding: 2px 4px 2px 4px; 36b122baf563564a1d478804fb882fcba242a9949eChris Craik vertical-align: text-top; 37b122baf563564a1d478804fb882fcba242a9949eChris Craik width: 150px; 38b122baf563564a1d478804fb882fcba242a9949eChris Craik } 39b122baf563564a1d478804fb882fcba242a9949eChris Craik 40b122baf563564a1d478804fb882fcba242a9949eChris Craik table td td { 41b122baf563564a1d478804fb882fcba242a9949eChris Craik padding: 0 0 0 0; 42b122baf563564a1d478804fb882fcba242a9949eChris Craik width: auto; 43b122baf563564a1d478804fb882fcba242a9949eChris Craik } 44b122baf563564a1d478804fb882fcba242a9949eChris Craik tr { 45b122baf563564a1d478804fb882fcba242a9949eChris Craik vertical-align: top; 46b122baf563564a1d478804fb882fcba242a9949eChris Craik } 47b122baf563564a1d478804fb882fcba242a9949eChris Craik 48b122baf563564a1d478804fb882fcba242a9949eChris Craik tr:nth-child(2n+0) { 49b122baf563564a1d478804fb882fcba242a9949eChris Craik background-color: #e2e2e2; 50b122baf563564a1d478804fb882fcba242a9949eChris Craik } 51b122baf563564a1d478804fb882fcba242a9949eChris Craik </style> 52b122baf563564a1d478804fb882fcba242a9949eChris Craik <table> 53b122baf563564a1d478804fb882fcba242a9949eChris Craik <tr> 54b122baf563564a1d478804fb882fcba242a9949eChris Craik <td>Running process:</td><td id="process-name"></td> 55b122baf563564a1d478804fb882fcba242a9949eChris Craik </tr> 56b122baf563564a1d478804fb882fcba242a9949eChris Craik <tr> 57b122baf563564a1d478804fb882fcba242a9949eChris Craik <td>Running thread:</td><td id="thread-name"></td> 58b122baf563564a1d478804fb882fcba242a9949eChris Craik </tr> 59b122baf563564a1d478804fb882fcba242a9949eChris Craik <tr> 60b122baf563564a1d478804fb882fcba242a9949eChris Craik <td>State:</td> 61b122baf563564a1d478804fb882fcba242a9949eChris Craik <td><b><span id="state"></span></b></td> 62b122baf563564a1d478804fb882fcba242a9949eChris Craik </tr> 63b122baf563564a1d478804fb882fcba242a9949eChris Craik <tr> 64ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik <td>Start:</td> 65ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik <td> 66cef7893435aa41160dd1255c43cb8498279738ccChris Craik <tr-v-ui-scalar-span id="start"> 67cef7893435aa41160dd1255c43cb8498279738ccChris Craik </tr-v-ui-scalar-span> 68ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik </td> 69b122baf563564a1d478804fb882fcba242a9949eChris Craik </tr> 70b122baf563564a1d478804fb882fcba242a9949eChris Craik <tr> 71ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik <td>Duration:</td> 72ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik <td> 73cef7893435aa41160dd1255c43cb8498279738ccChris Craik <tr-v-ui-scalar-span id="duration"> 74cef7893435aa41160dd1255c43cb8498279738ccChris Craik </tr-v-ui-scalar-span> 75ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik </td> 76b122baf563564a1d478804fb882fcba242a9949eChris Craik </tr> 77b122baf563564a1d478804fb882fcba242a9949eChris Craik 78b122baf563564a1d478804fb882fcba242a9949eChris Craik <tr> 79b122baf563564a1d478804fb882fcba242a9949eChris Craik <td>On CPU:</td><td id="on-cpu"></td> 80b122baf563564a1d478804fb882fcba242a9949eChris Craik </tr> 81b122baf563564a1d478804fb882fcba242a9949eChris Craik 82b122baf563564a1d478804fb882fcba242a9949eChris Craik <tr> 83b122baf563564a1d478804fb882fcba242a9949eChris Craik <td>Running instead:</td><td id="running-instead"></td> 84b122baf563564a1d478804fb882fcba242a9949eChris Craik </tr> 85b122baf563564a1d478804fb882fcba242a9949eChris Craik 86b122baf563564a1d478804fb882fcba242a9949eChris Craik <tr> 87b122baf563564a1d478804fb882fcba242a9949eChris Craik <td>Args:</td><td id="args"></td> 88b122baf563564a1d478804fb882fcba242a9949eChris Craik </tr> 89b122baf563564a1d478804fb882fcba242a9949eChris Craik </table> 90b122baf563564a1d478804fb882fcba242a9949eChris Craik </template> 91b122baf563564a1d478804fb882fcba242a9949eChris Craik 92b122baf563564a1d478804fb882fcba242a9949eChris Craik <script> 93b122baf563564a1d478804fb882fcba242a9949eChris Craik 'use strict'; 94b122baf563564a1d478804fb882fcba242a9949eChris Craik 95b122baf563564a1d478804fb882fcba242a9949eChris Craik Polymer({ 96b122baf563564a1d478804fb882fcba242a9949eChris Craik created: function() { 97b122baf563564a1d478804fb882fcba242a9949eChris Craik this.currentSelection_ = undefined; 98b122baf563564a1d478804fb882fcba242a9949eChris Craik }, 99b122baf563564a1d478804fb882fcba242a9949eChris Craik 100b122baf563564a1d478804fb882fcba242a9949eChris Craik get selection() { 101b122baf563564a1d478804fb882fcba242a9949eChris Craik return this.currentSelection_; 102b122baf563564a1d478804fb882fcba242a9949eChris Craik }, 103b122baf563564a1d478804fb882fcba242a9949eChris Craik 104b122baf563564a1d478804fb882fcba242a9949eChris Craik set selection(selection) { 105b122baf563564a1d478804fb882fcba242a9949eChris Craik if (selection.length !== 1) 106b122baf563564a1d478804fb882fcba242a9949eChris Craik throw new Error('Only supports single slices'); 10740f8da8088c9cd699f672242d0cdc3d677353bf8Chris Craik if (!(selection[0] instanceof tr.model.ThreadTimeSlice)) 108b122baf563564a1d478804fb882fcba242a9949eChris Craik throw new Error('Only supports thread time slices'); 109b122baf563564a1d478804fb882fcba242a9949eChris Craik 110b122baf563564a1d478804fb882fcba242a9949eChris Craik this.currentSelection_ = selection; 111b122baf563564a1d478804fb882fcba242a9949eChris Craik 112b122baf563564a1d478804fb882fcba242a9949eChris Craik var timeSlice = selection[0]; 113b122baf563564a1d478804fb882fcba242a9949eChris Craik var thread = timeSlice.thread; 114b122baf563564a1d478804fb882fcba242a9949eChris Craik 115b122baf563564a1d478804fb882fcba242a9949eChris Craik var shadowRoot = this.shadowRoot; 116b122baf563564a1d478804fb882fcba242a9949eChris Craik shadowRoot.querySelector('#state').textContent = timeSlice.title; 1178d2b206a675ec20ea07100c35df34e65ee1e45e8Ruchi Kandoi var stateColor = tr.b.ColorScheme.colorsAsStrings[timeSlice.colorId]; 118b122baf563564a1d478804fb882fcba242a9949eChris Craik shadowRoot.querySelector('#state').style.backgroundColor = stateColor; 119b122baf563564a1d478804fb882fcba242a9949eChris Craik 120b122baf563564a1d478804fb882fcba242a9949eChris Craik shadowRoot.querySelector('#process-name').textContent = 121b122baf563564a1d478804fb882fcba242a9949eChris Craik thread.parent.userFriendlyName; 122b122baf563564a1d478804fb882fcba242a9949eChris Craik shadowRoot.querySelector('#thread-name').textContent = 123b122baf563564a1d478804fb882fcba242a9949eChris Craik thread.userFriendlyName; 124b122baf563564a1d478804fb882fcba242a9949eChris Craik 125cef7893435aa41160dd1255c43cb8498279738ccChris Craik shadowRoot.querySelector('#start').setValueAndUnit( 126cef7893435aa41160dd1255c43cb8498279738ccChris Craik timeSlice.start, tr.v.Unit.byName.timeStampInMs); 127cef7893435aa41160dd1255c43cb8498279738ccChris Craik shadowRoot.querySelector('#duration').setValueAndUnit( 128cef7893435aa41160dd1255c43cb8498279738ccChris Craik timeSlice.duration, tr.v.Unit.byName.timeDurationInMs); 129cef7893435aa41160dd1255c43cb8498279738ccChris Craik 130b122baf563564a1d478804fb882fcba242a9949eChris Craik var onCpuEl = shadowRoot.querySelector('#on-cpu'); 131b122baf563564a1d478804fb882fcba242a9949eChris Craik onCpuEl.textContent = ''; 132b122baf563564a1d478804fb882fcba242a9949eChris Craik var runningInsteadEl = shadowRoot.querySelector('#running-instead'); 133b122baf563564a1d478804fb882fcba242a9949eChris Craik if (timeSlice.cpuOnWhichThreadWasRunning) { 134b122baf563564a1d478804fb882fcba242a9949eChris Craik runningInsteadEl.parentElement.removeChild(runningInsteadEl); 135b122baf563564a1d478804fb882fcba242a9949eChris Craik 136ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik var cpuLink = document.createElement('tr-ui-a-analysis-link'); 137ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik cpuLink.selection = new tr.model.EventSet( 138b122baf563564a1d478804fb882fcba242a9949eChris Craik timeSlice.getAssociatedCpuSlice()); 139b122baf563564a1d478804fb882fcba242a9949eChris Craik cpuLink.textContent = 140b122baf563564a1d478804fb882fcba242a9949eChris Craik timeSlice.cpuOnWhichThreadWasRunning.userFriendlyName; 141b122baf563564a1d478804fb882fcba242a9949eChris Craik onCpuEl.appendChild(cpuLink); 142b122baf563564a1d478804fb882fcba242a9949eChris Craik } else { 143b122baf563564a1d478804fb882fcba242a9949eChris Craik onCpuEl.parentElement.removeChild(onCpuEl); 144b122baf563564a1d478804fb882fcba242a9949eChris Craik 145b122baf563564a1d478804fb882fcba242a9949eChris Craik var cpuSliceThatTookCpu = timeSlice.getCpuSliceThatTookCpu(); 146b122baf563564a1d478804fb882fcba242a9949eChris Craik if (cpuSliceThatTookCpu) { 147ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik var cpuLink = document.createElement('tr-ui-a-analysis-link'); 148ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik cpuLink.selection = new tr.model.EventSet(cpuSliceThatTookCpu); 149b122baf563564a1d478804fb882fcba242a9949eChris Craik if (cpuSliceThatTookCpu.thread) 150b122baf563564a1d478804fb882fcba242a9949eChris Craik cpuLink.textContent = cpuSliceThatTookCpu.thread.userFriendlyName; 151b122baf563564a1d478804fb882fcba242a9949eChris Craik else 152b122baf563564a1d478804fb882fcba242a9949eChris Craik cpuLink.textContent = cpuSliceThatTookCpu.title; 153b122baf563564a1d478804fb882fcba242a9949eChris Craik runningInsteadEl.appendChild(cpuLink); 154b122baf563564a1d478804fb882fcba242a9949eChris Craik } else { 155b122baf563564a1d478804fb882fcba242a9949eChris Craik runningInsteadEl.parentElement.removeChild(runningInsteadEl); 156b122baf563564a1d478804fb882fcba242a9949eChris Craik } 157b122baf563564a1d478804fb882fcba242a9949eChris Craik } 158b122baf563564a1d478804fb882fcba242a9949eChris Craik 159b122baf563564a1d478804fb882fcba242a9949eChris Craik var argsEl = shadowRoot.querySelector('#args'); 16040f8da8088c9cd699f672242d0cdc3d677353bf8Chris Craik if (tr.b.dictionaryKeys(timeSlice.args).length > 0) { 161b122baf563564a1d478804fb882fcba242a9949eChris Craik var argsView = 162ced05db70069f9d84c4b0dd9b3b26b94e3482336Chris Craik document.createElement('tr-ui-a-generic-object-view'); 163b122baf563564a1d478804fb882fcba242a9949eChris Craik argsView.object = timeSlice.args; 164b122baf563564a1d478804fb882fcba242a9949eChris Craik 165b122baf563564a1d478804fb882fcba242a9949eChris Craik argsEl.parentElement.style.display = ''; 166b122baf563564a1d478804fb882fcba242a9949eChris Craik argsEl.textContent = ''; 167b122baf563564a1d478804fb882fcba242a9949eChris Craik argsEl.appendChild(argsView); 168b122baf563564a1d478804fb882fcba242a9949eChris Craik } else { 169b122baf563564a1d478804fb882fcba242a9949eChris Craik argsEl.parentElement.style.display = 'none'; 170b122baf563564a1d478804fb882fcba242a9949eChris Craik } 171b122baf563564a1d478804fb882fcba242a9949eChris Craik } 172b122baf563564a1d478804fb882fcba242a9949eChris Craik }); 173b122baf563564a1d478804fb882fcba242a9949eChris Craik </script> 17426c92f4cb78a275f1ebb94dd976f37bdd7d53ce7Chris Craik</polymer-element> 175