| <!DOCTYPE html> |
| <!-- |
| Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| |
| <link rel="import" href="/core/analysis/analysis_sub_view.html"> |
| <link rel="import" href="/core/analysis/util.html"> |
| <link rel="import" href="/core/analysis/analysis_link.html"> |
| <link rel="import" href="/base/utils.html"> |
| <polymer-element name="tv-c-single-cpu-slice-sub-view" |
| extends="tracing-analysis-sub-view"> |
| <template> |
| <style> |
| table { |
| border-collapse: collapse; |
| border-width: 0; |
| margin-bottom: 25px; |
| width: 100%; |
| } |
| |
| table tr > td:first-child { |
| padding-left: 2px; |
| } |
| |
| table tr > td { |
| padding: 2px 4px 2px 4px; |
| vertical-align: text-top; |
| width: 150px; |
| } |
| |
| table td td { |
| padding: 0 0 0 0; |
| width: auto; |
| } |
| tr { |
| vertical-align: top; |
| } |
| |
| tr:nth-child(2n+0) { |
| background-color: #e2e2e2; |
| } |
| </style> |
| <table> |
| <tr> |
| <td>Running process:</td><td id="process-name"></td> |
| </tr> |
| <tr> |
| <td>Running thread:</td><td id="thread-name"></td> |
| </tr> |
| <tr> |
| <td>Start:</td><td id="start"></td> |
| </tr> |
| <tr> |
| <td>Duration:</td><td id="duration"></td> |
| </tr> |
| <tr> |
| <td>Active slices:</td><td id="running-thread"></td> |
| </tr> |
| <tr> |
| <td>Args:</td> |
| <td> |
| <tv-c-analysis-generic-object-view id="args"> |
| </tv-c-analysis-generic-object-view> |
| </td> |
| </tr> |
| </table> |
| </template> |
| |
| <script> |
| 'use strict'; |
| Polymer({ |
| created: function() { |
| this.currentSelection_ = undefined; |
| }, |
| |
| get selection() { |
| return this.currentSelection_; |
| }, |
| |
| set selection(selection) { |
| if (selection.length !== 1) |
| throw new Error('Only supports single slices'); |
| if (!(selection[0] instanceof tv.c.trace_model.CpuSlice)) |
| throw new Error('Only supports thread time slices'); |
| |
| this.currentSelection_ = selection; |
| |
| var cpuSlice = selection[0]; |
| var thread = cpuSlice.threadThatWasRunning; |
| |
| var shadowRoot = this.shadowRoot; |
| if (thread) { |
| shadowRoot.querySelector('#process-name').textContent = |
| thread.parent.userFriendlyName; |
| shadowRoot.querySelector('#thread-name').textContent = |
| thread.userFriendlyName; |
| } else { |
| shadowRoot.querySelector('#process-name').parentElement.style.display = |
| 'none'; |
| shadowRoot.querySelector('#thread-name').textContent = cpuSlice.title; |
| } |
| |
| shadowRoot.querySelector('#start').textContent = |
| tv.c.analysis.tsString(cpuSlice.start); |
| |
| shadowRoot.querySelector('#duration').textContent = |
| tv.c.analysis.tsString(cpuSlice.duration); |
| var runningThreadEl = shadowRoot.querySelector('#running-thread'); |
| |
| var timeSlice = cpuSlice.getAssociatedTimeslice(); |
| if (!timeSlice) { |
| runningThreadEl.parentElement.style.display = 'none'; |
| } else { |
| var threadLink = document.createElement('tv-c-analysis-link'); |
| threadLink.selection = new tv.c.Selection(timeSlice); |
| threadLink.textContent = 'Click to select'; |
| runningThreadEl.parentElement.style.display = ''; |
| runningThreadEl.textContent = ''; |
| runningThreadEl.appendChild(threadLink); |
| } |
| |
| shadowRoot.querySelector('#args').object = cpuSlice.args; |
| |
| } |
| }); |
| </script> |
| </polymer-element> |