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

Side by Side Diff: tracing/tracing/model/event_container.html

Issue 2162963002: [polymer] Merge of master into polymer10-migration (Closed) Base URL: git@github.com:catapult-project/catapult.git@polymer10-migration
Patch Set: Merge polymer10-migration int polymer10-merge Created 4 years, 5 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
« no previous file with comments | « tracing/tracing/model/device_test.html ('k') | tracing/tracing/model/event_set.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <!-- 2 <!--
3 Copyright (c) 2015 The Chromium Authors. All rights reserved. 3 Copyright (c) 2015 The Chromium Authors. All rights reserved.
4 Use of this source code is governed by a BSD-style license that can be 4 Use of this source code is governed by a BSD-style license that can be
5 found in the LICENSE file. 5 found in the LICENSE file.
6 --> 6 -->
7 7
8 <link rel="import" href="/tracing/base/base.html"> 8 <link rel="import" href="/tracing/base/base.html">
9 <link rel="import" href="/tracing/base/guid.html"> 9 <link rel="import" href="/tracing/base/guid.html">
10 <link rel="import" href="/tracing/base/range.html"> 10 <link rel="import" href="/tracing/base/range.html">
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 46
47 /** 47 /**
48 * Returns the bounds of the event container, which describe the range 48 * Returns the bounds of the event container, which describe the range
49 * of timestamps for all ancestor events. 49 * of timestamps for all ancestor events.
50 */ 50 */
51 get bounds() { 51 get bounds() {
52 return this.bounds_; 52 return this.bounds_;
53 }, 53 },
54 54
55 // TODO(charliea): A default implementation of this method could likely be 55 // TODO(charliea): A default implementation of this method could likely be
56 // provided that uses 'iterateAllEvents'. 56 // provided that iterates throuch getDescendantEvents.
57 /** 57 /**
58 * Updates the bounds of the event container. After updating, this.bounds 58 * Updates the bounds of the event container. After updating, this.bounds
59 * will describe the range of timestamps of all ancestor events. 59 * will describe the range of timestamps of all ancestor events.
60 */ 60 */
61 updateBounds: function() { 61 updateBounds: function() {
62 throw new Error('Not implemented'); 62 throw new Error('Not implemented');
63 }, 63 },
64 64
65 // TODO(charliea): A default implementation of this method could likely be 65 // TODO(charliea): A default implementation of this method could likely be
66 // provided that uses 'iterateAllEvents'. 66 // provided that iterates through getDescendantEvents.
67 /** 67 /**
68 * Shifts the timestamps for ancestor events by 'amount' milliseconds. 68 * Shifts the timestamps for ancestor events by 'amount' milliseconds.
69 */ 69 */
70 shiftTimestampsForward: function(amount) { 70 shiftTimestampsForward: function(amount) {
71 throw new Error('Not implemented'); 71 throw new Error('Not implemented');
72 }, 72 },
73 73
74
74 /** 75 /**
75 * Iterates over all child events. 76 * Returns an iterable of all child events.
76 */ 77 */
77 iterateAllEventsInThisContainer: function(eventTypePredicate, 78 childEvents: function*() {
78 callback, opt_this) {
79 // TODO(alexandermont): We need this.childEvents() to take an
80 // eventTypePredicate because it doesn't look possible to directly get the
81 // type object from an object, so we have to do the filtering before
82 // the iteration. Probably it would be better if we find a workaround
83 // for this.
84 for (var event of this.childEvents(eventTypePredicate, opt_this))
85 callback.call(opt_this, event);
86 }, 79 },
87 80
88 /** 81 /**
89 * Iterates over all child containers. 82 * Returns an iterable of all events in this and descendant
83 * event containers.
90 */ 84 */
91 iterateAllChildEventContainers: function(callback, opt_this) { 85 getDescendantEvents: function*() {
86 yield * this.childEvents();
92 for (var container of this.childEventContainers()) 87 for (var container of this.childEventContainers())
93 callback.call(opt_this, container); 88 yield * container.getDescendantEvents();
94 }, 89 },
95 90
96 /** 91 /**
97 * Iterates over all events in this container and in descendant 92 * Returns an iterable of all child event containers.
98 * event containers.
99 */ 93 */
100 iterateAllEvents: function(callback, opt_this) { 94 childEventContainers: function*() {
101 // If new-style iteration has been implemented for this container, use
102 // it for iterateAllEvents.
103 if (this.childEvents && this.childEventContainers) {
104 for (var event of this.childEvents(x => true, opt_this))
105 callback.call(opt_this, event);
106 for (var container of this.childEventContainers())
107 container.iterateAllEvents(callback, opt_this);
108 } else {
109 // Otherwise, just do it the old way.
110 this.iterateAllEventContainers(function(ec) {
111 ec.iterateAllEventsInThisContainer(x => true, callback, opt_this);
112 });
113 }
114 }, 95 },
115 96
116 /** 97 /**
117 * Iterates over this container and all descendant containers. 98 * Returns an iterable containing this and all descendant event containers.
118 */ 99 */
119 iterateAllEventContainers: function(callback, opt_this) { 100 getDescendantEventContainers: function*() {
120 // If new-style iteration has been implemented for this container, use 101 yield this;
121 // it for iterateAllEventContainers. 102 for (var container of this.childEventContainers())
122 if (this.childEvents && this.childEventContainers) { 103 yield * container.getDescendantEventContainers();
123 callback.call(opt_this, this);
124 for (var container of this.childEventContainers())
125 container.iterateAllEventContainers(callback, opt_this);
126 } else {
127 // Otherwise, just do it the old way.
128 function visit(ec) {
129 callback.call(opt_this, ec);
130 ec.iterateAllChildEventContainers(visit);
131 }
132 visit(this);
133 }
134 }, 104 },
135 105
136 /** 106 /**
137 * Finds topmost slices in this container (see docstring for 107 * Finds topmost slices in this container (see docstring for
138 * findTopmostSlices). 108 * findTopmostSlices).
139 */ 109 */
140 findTopmostSlicesInThisContainer: function(eventPredicate, callback, 110 findTopmostSlicesInThisContainer: function*(eventPredicate, opt_this) {
141 opt_this) {
142 throw new Error('Not implemented.');
143 }, 111 },
144 112
145 /** 113 /**
146 * The findTopmostSlices* series of helpers find all topmost slices 114 * The findTopmostSlices* series of helpers find all topmost slices
147 * satisfying the given predicates. 115 * satisfying the given predicates.
148 * 116 *
149 * As an example, suppose we are trying to find slices named 'C', with the 117 * As an example, suppose we are trying to find slices named 'C', with the
150 * following thread: 118 * following thread:
151 * 119 *
152 * -> |---C---| |-----D-----| 120 * -> |---C---| |-----D-----|
153 * |-C-| |---C---| <- 121 * |-C-| |---C---| <-
154 * 122 *
155 * findTopmostSlices would locate the pointed-to Cs, because the bottom C on 123 * findTopmostSlices would locate the pointed-to Cs, because the bottom C on
156 * the left is not the topmost C, and the right one is, even though it is 124 * the left is not the topmost C, and the right one is, even though it is
157 * not itself a top-level slice. 125 * not itself a top-level slice.
158 */ 126 */
159 findTopmostSlices: function(eventPredicate, callback, opt_this) { 127 findTopmostSlices: function*(eventPredicate) {
160 this.iterateAllEventContainers(function(ec) { 128 for (var ec of this.getDescendantEventContainers())
161 ec.findTopmostSlicesInThisContainer(eventPredicate, callback, opt_this); 129 yield * ec.findTopmostSlicesInThisContainer(eventPredicate);
162 });
163 }, 130 },
164 131
165 findTopmostSlicesNamed: function(name, callback, opt_this) { 132 findTopmostSlicesNamed: function*(name) {
166 this.findTopmostSlices(e => e.title === name, callback, opt_this); 133 yield * this.findTopmostSlices(e => e.title === name);
167 } 134 }
168 }; 135 };
169 136
170 return { 137 return {
171 EventContainer: EventContainer 138 EventContainer: EventContainer
172 }; 139 };
173 }); 140 });
174 </script> 141 </script>
OLDNEW
« no previous file with comments | « tracing/tracing/model/device_test.html ('k') | tracing/tracing/model/event_set.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698