1<!DOCTYPE html>
2<!--
3Copyright (c) 2013 The Chromium Authors. All rights reserved.
4Use of this source code is governed by a BSD-style license that can be
5found in the LICENSE file.
6-->
7
8<link rel="import" href="/tracing/ui/analysis/analysis_sub_view.html">
9<link rel="import" href="/tracing/ui/analysis/multi_event_sub_view.html">
10<link rel="import" href="/tracing/ui/analysis/related_events.html">
11
12<polymer-element name="tr-ui-a-multi-thread-slice-sub-view"
13    extends="tr-ui-a-sub-view">
14  <template>
15    <style>
16    :host {
17      display: flex;
18    }
19    #content {
20      display: flex;
21      flex: 1 1 auto;
22    }
23    #content > tr-ui-a-related-events {
24      margin-left: 8px;
25      flex: 0 1 200px;
26    }
27    </style>
28    <div id="content"></div>
29  </template>
30
31  <script>
32  'use strict';
33
34  Polymer({
35    created: function() {
36      this.selection_ = undefined;
37    },
38
39    get selection() {
40      return this.selection_;
41    },
42
43    set selection(selection) {
44      this.selection_ = selection;
45
46      // TODO(nduca): This is a gross hack for cc Frame Viewer, but its only
47      // the frame viewer that needs this feature, so ~shrug~.
48      // We check for its presence so that we do not have a hard dependency
49      // on frame viewer.
50      if (tr.isExported('tr.ui.e.chrome.cc.RasterTaskSelection')) {
51        if (tr.ui.e.chrome.cc.RasterTaskSelection.supports(selection)) {
52          var ltvSelection = new tr.ui.e.chrome.cc.RasterTaskSelection(
53              selection);
54
55          var ltv = new tr.ui.e.chrome.cc.LayerTreeHostImplSnapshotView();
56          ltv.objectSnapshot = ltvSelection.containingSnapshot;
57          ltv.selection = ltvSelection;
58          ltv.extraHighlightsByLayerId = ltvSelection.extraHighlightsByLayerId;
59
60          this.$.content.textContent = '';
61          this.$.content.appendChild(ltv);
62
63          this.requiresTallView_ = true;
64          return;
65        }
66      }
67
68      this.$.content.textContent = '';
69
70      var mesv = document.createElement('tr-ui-a-multi-event-sub-view');
71      mesv.selection = selection;
72      this.$.content.appendChild(mesv);
73
74      var relatedEvents = document.createElement('tr-ui-a-related-events');
75      relatedEvents.setRelatedEvents(selection);
76
77      if (relatedEvents.hasRelatedEvents()) {
78        this.$.content.appendChild(relatedEvents);
79      }
80    },
81
82    get requiresTallView() {
83      if (this.$.content.children.length === 0)
84        return false;
85      var childTagName = this.$.content.children[0].tagName;
86      if (childTagName === 'TR-UI-A-MULTI-EVENT-SUB-VIEW')
87        return false;
88
89      // Using raster task view.
90      return true;
91    }
92  });
93  </script>
94</polymer-element>
95