viztracer 1.1.0__cp314-cp314-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of viztracer might be problematic. Click here for more details.

Files changed (109) hide show
  1. viztracer/__init__.py +19 -0
  2. viztracer/__main__.py +8 -0
  3. viztracer/attach.py +67 -0
  4. viztracer/attach_process/LICENSE +203 -0
  5. viztracer/attach_process/__init__.py +0 -0
  6. viztracer/attach_process/add_code_to_python_process.py +582 -0
  7. viztracer/attach_process/attach_x86.dll +0 -0
  8. viztracer/attach_process/inject_dll_amd64.exe +0 -0
  9. viztracer/attach_process/linux_and_mac/lldb_prepare.py +54 -0
  10. viztracer/attach_process/run_code_on_dllmain_amd64.dll +0 -0
  11. viztracer/attach_process/run_code_on_dllmain_x86.dll +0 -0
  12. viztracer/cellmagic.py +70 -0
  13. viztracer/code_monkey.py +353 -0
  14. viztracer/decorator.py +164 -0
  15. viztracer/event_base.py +81 -0
  16. viztracer/functree.py +135 -0
  17. viztracer/html/flamegraph.html +34 -0
  18. viztracer/html/trace_viewer_embedder.html +203 -0
  19. viztracer/html/trace_viewer_full.html +10207 -0
  20. viztracer/main.py +699 -0
  21. viztracer/modules/eventnode.c +172 -0
  22. viztracer/modules/eventnode.h +73 -0
  23. viztracer/modules/pythoncapi_compat.h +1726 -0
  24. viztracer/modules/quicktime.c +177 -0
  25. viztracer/modules/quicktime.h +104 -0
  26. viztracer/modules/snaptrace.c +2205 -0
  27. viztracer/modules/snaptrace.h +134 -0
  28. viztracer/modules/snaptrace_member.c +483 -0
  29. viztracer/modules/util.c +45 -0
  30. viztracer/modules/util.h +22 -0
  31. viztracer/modules/vcompressor/vc_dump.c +1131 -0
  32. viztracer/modules/vcompressor/vc_dump.h +49 -0
  33. viztracer/modules/vcompressor/vcompressor.c +396 -0
  34. viztracer/modules/vcompressor/vcompressor.h +15 -0
  35. viztracer/patch.py +307 -0
  36. viztracer/report_builder.py +311 -0
  37. viztracer/snaptrace.cp314-win_amd64.pyd +0 -0
  38. viztracer/snaptrace.pyi +77 -0
  39. viztracer/util.py +196 -0
  40. viztracer/vcompressor.cp314-win_amd64.pyd +0 -0
  41. viztracer/vcompressor.pyi +10 -0
  42. viztracer/viewer.py +528 -0
  43. viztracer/vizcounter.py +20 -0
  44. viztracer/vizevent.py +31 -0
  45. viztracer/vizlogging.py +20 -0
  46. viztracer/vizobject.py +28 -0
  47. viztracer/vizplugin.py +143 -0
  48. viztracer/viztracer.py +472 -0
  49. viztracer/web_dist/LICENSE +189 -0
  50. viztracer/web_dist/index.html +127 -0
  51. viztracer/web_dist/service_worker.js +279 -0
  52. viztracer/web_dist/trace_processor +300 -0
  53. viztracer/web_dist/v52.0-6b9586def/assets/MaterialSymbolsOutlined.woff2 +0 -0
  54. viztracer/web_dist/v52.0-6b9586def/assets/Roboto-100.woff2 +0 -0
  55. viztracer/web_dist/v52.0-6b9586def/assets/Roboto-300.woff2 +0 -0
  56. viztracer/web_dist/v52.0-6b9586def/assets/Roboto-400.woff2 +0 -0
  57. viztracer/web_dist/v52.0-6b9586def/assets/Roboto-500.woff2 +0 -0
  58. viztracer/web_dist/v52.0-6b9586def/assets/RobotoCondensed-Light.woff2 +0 -0
  59. viztracer/web_dist/v52.0-6b9586def/assets/RobotoCondensed-Regular.woff2 +0 -0
  60. viztracer/web_dist/v52.0-6b9586def/assets/RobotoMono-Regular.woff2 +0 -0
  61. viztracer/web_dist/v52.0-6b9586def/assets/brand.png +0 -0
  62. viztracer/web_dist/v52.0-6b9586def/assets/catapult_trace_viewer.html +3946 -0
  63. viztracer/web_dist/v52.0-6b9586def/assets/catapult_trace_viewer.js +7539 -0
  64. viztracer/web_dist/v52.0-6b9586def/assets/favicon.png +0 -0
  65. viztracer/web_dist/v52.0-6b9586def/assets/logo-128.png +0 -0
  66. viztracer/web_dist/v52.0-6b9586def/assets/logo-3d.png +0 -0
  67. viztracer/web_dist/v52.0-6b9586def/assets/rec_atrace.png +0 -0
  68. viztracer/web_dist/v52.0-6b9586def/assets/rec_battery_counters.png +0 -0
  69. viztracer/web_dist/v52.0-6b9586def/assets/rec_board_voltage.png +0 -0
  70. viztracer/web_dist/v52.0-6b9586def/assets/rec_cpu_coarse.png +0 -0
  71. viztracer/web_dist/v52.0-6b9586def/assets/rec_cpu_fine.png +0 -0
  72. viztracer/web_dist/v52.0-6b9586def/assets/rec_cpu_freq.png +0 -0
  73. viztracer/web_dist/v52.0-6b9586def/assets/rec_cpu_voltage.png +0 -0
  74. viztracer/web_dist/v52.0-6b9586def/assets/rec_frame_timeline.png +0 -0
  75. viztracer/web_dist/v52.0-6b9586def/assets/rec_ftrace.png +0 -0
  76. viztracer/web_dist/v52.0-6b9586def/assets/rec_gpu_mem_total.png +0 -0
  77. viztracer/web_dist/v52.0-6b9586def/assets/rec_java_heap_dump.png +0 -0
  78. viztracer/web_dist/v52.0-6b9586def/assets/rec_lmk.png +0 -0
  79. viztracer/web_dist/v52.0-6b9586def/assets/rec_logcat.png +0 -0
  80. viztracer/web_dist/v52.0-6b9586def/assets/rec_long_trace.png +0 -0
  81. viztracer/web_dist/v52.0-6b9586def/assets/rec_mem_hifreq.png +0 -0
  82. viztracer/web_dist/v52.0-6b9586def/assets/rec_meminfo.png +0 -0
  83. viztracer/web_dist/v52.0-6b9586def/assets/rec_native_heap_profiler.png +0 -0
  84. viztracer/web_dist/v52.0-6b9586def/assets/rec_one_shot.png +0 -0
  85. viztracer/web_dist/v52.0-6b9586def/assets/rec_profiling.png +0 -0
  86. viztracer/web_dist/v52.0-6b9586def/assets/rec_ps_stats.png +0 -0
  87. viztracer/web_dist/v52.0-6b9586def/assets/rec_ring_buf.png +0 -0
  88. viztracer/web_dist/v52.0-6b9586def/assets/rec_syscalls.png +0 -0
  89. viztracer/web_dist/v52.0-6b9586def/assets/rec_vmstat.png +0 -0
  90. viztracer/web_dist/v52.0-6b9586def/assets/scheduling_latency.png +0 -0
  91. viztracer/web_dist/v52.0-6b9586def/assets/vscode-icon.png +0 -0
  92. viztracer/web_dist/v52.0-6b9586def/engine_bundle.js +3 -0
  93. viztracer/web_dist/v52.0-6b9586def/frontend_bundle.js +5495 -0
  94. viztracer/web_dist/v52.0-6b9586def/index.html +127 -0
  95. viztracer/web_dist/v52.0-6b9586def/manifest.json +52 -0
  96. viztracer/web_dist/v52.0-6b9586def/perfetto.css +5737 -0
  97. viztracer/web_dist/v52.0-6b9586def/stdlib_docs.json +1 -0
  98. viztracer/web_dist/v52.0-6b9586def/trace_config_utils.wasm +0 -0
  99. viztracer/web_dist/v52.0-6b9586def/trace_processor.wasm +0 -0
  100. viztracer/web_dist/v52.0-6b9586def/trace_processor_memory64.wasm +0 -0
  101. viztracer/web_dist/v52.0-6b9586def/traceconv.wasm +0 -0
  102. viztracer/web_dist/v52.0-6b9586def/traceconv_bundle.js +2 -0
  103. viztracer-1.1.0.dist-info/METADATA +316 -0
  104. viztracer-1.1.0.dist-info/RECORD +109 -0
  105. viztracer-1.1.0.dist-info/WHEEL +5 -0
  106. viztracer-1.1.0.dist-info/entry_points.txt +3 -0
  107. viztracer-1.1.0.dist-info/licenses/LICENSE +222 -0
  108. viztracer-1.1.0.dist-info/licenses/NOTICE.txt +27 -0
  109. viztracer-1.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,3946 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head i18n-values="dir:textdirection;">
4
+ <!-- WebComponents V0 origin trial token for https://*.ui.perfetto.dev
5
+ Expires 1 Feb 2021. https://crbug.com/1021137. -->
6
+ <meta http-equiv="origin-trial" content="AjGFDFU57Af4e5OJJQd7kmYR0nEiObDCHkev6BBWzhGohACl1ri+pMhaVe9V8dDBaXDkWy4g7WYj3c5GiPwatgIAAABreyJvcmlnaW4iOiJodHRwczovL3VpLnBlcmZldHRvLmRldjo0NDMiLCJmZWF0dXJlIjoiV2ViQ29tcG9uZW50c1YwIiwiZXhwaXJ5IjoxNjEyMjIzOTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZX0=">
7
+
8
+ <!-- WebComponents V0 origin trial token for http://localhost:10000
9
+ Expires 28 Jan 2021. https://crbug.com/1021137. -->
10
+ <meta http-equiv="origin-trial" content="AicMEv5glMGL1lq6ZRsxFJj8xlhn3XDYZrHK0/2KreAD/r62vTFjUBOueeMTxWuU1IlRXqCugRFDD7rY45YEgwkAAABTeyJvcmlnaW4iOiJodHRwOi8vbG9jYWxob3N0OjEwMDAwIiwiZmVhdHVyZSI6IldlYkNvbXBvbmVudHNWMCIsImV4cGlyeSI6MTYxMTg0MDczNH0=">
11
+
12
+ <!-- WebComponents V0 origin trial token for https://staging-dot-perfetto-ui.appspot.com
13
+ Expires 1 Feb 2021. https://crbug.com/1021137. -->
14
+ <meta http-equiv="origin-trial" content="Au1cwnWfBB/GCD22HnNZE93/KamhGDsz8BZbEewICJB2PRtW+E1bobrtZbTZs8q5748uRiKXPvgaut5JOZ8jSw4AAABseyJvcmlnaW4iOiJodHRwczovL3N0YWdpbmctZG90LXBlcmZldHRvLXVpLmFwcHNwb3QuY29tOjQ0MyIsImZlYXR1cmUiOiJXZWJDb21wb25lbnRzVjAiLCJleHBpcnkiOjE2MTIyMjM5OTl9">
15
+
16
+ <!-- WebComponents V0 origin trial token for https://storage.googleapis.com/
17
+ Expires 1 Feb 2021. https://crbug.com/1021137. -->
18
+ <meta http-equiv="origin-trial" content="AtobKUpdVFIb6cx2Ev0EbAFX4SzLuXPnsnADRA8JV5w4B64q65gz42shquyLLNd2QP9rY22oNGxbatpTO0kd2AIAAABfeyJvcmlnaW4iOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb206NDQzIiwiZmVhdHVyZSI6IldlYkNvbXBvbmVudHNWMCIsImV4cGlyeSI6MTYxMjIyMzk5OX0=">
19
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
20
+ <meta http-equiv="origin-trial" content="AnYuQDtUf6OrWCmR9Okd67JhWVTbmnRedvPi1TEvAxac8+1p6o9q08FoDO6oCbLD0xEqev+SkZFiIhFSzlY9HgUAAABxeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXVzZXJjb250ZW50LmNvbTo0NDMiLCJmZWF0dXJlIjoiV2ViQ29tcG9uZW50c1YwIiwiZXhwaXJ5IjoxNjA0NjE0NTM4LCJpc1N1YmRvbWFpbiI6dHJ1ZX0=">
21
+ <meta http-equiv="origin-trial" content="AkFXw3wHnOs/XXYqFXpc3diDLrRFd9PTgGs/gs43haZmngI/u1g8L4bDnSKLZkB6fecjmjTwcAMQFCpWMAoHSQEAAAB8eyJvcmlnaW4iOiJodHRwczovL2Nocm9taXVtLWJ1aWxkLXN0YXRzLmFwcHNwb3QuY29tOjQ0MyIsImZlYXR1cmUiOiJXZWJDb21wb25lbnRzVjAiLCJleHBpcnkiOjE2MTIyMjM5OTksImlzU3ViZG9tYWluIjp0cnVlfQ==">
22
+ <meta http-equiv="origin-trial" content="AtQY4wpX9+nj+Vn27cTgygzIPbtB2WoAoMQR5jK9mCm/H2gRIDH6MmGVAaziv9XnYTDKjhBnQYtecbTiIHCQiAIAAACEeyJvcmlnaW4iOiJodHRwczovL2Nocm9taXVtLWJ1aWxkLXN0YXRzLXN0YWdpbmcuYXBwc3BvdC5jb206NDQzIiwiZmVhdHVyZSI6IldlYkNvbXBvbmVudHNWMCIsImV4cGlyeSI6MTYxMjIyMzk5OSwiaXNTdWJkb21haW4iOnRydWV9">
23
+ <title>chrome://tracing</title>
24
+ <template id="overlay-template">
25
+ <style>
26
+ overlay-mask {
27
+ left: 0;
28
+ padding: 8px;
29
+ position: absolute;
30
+ top: 0;
31
+ z-index: 1000;
32
+ font-family: sans-serif;
33
+ -webkit-justify-content: center;
34
+ background: rgba(0, 0, 0, 0.8);
35
+ display: flex;
36
+ height: 100%;
37
+ left: 0;
38
+ position: fixed;
39
+ top: 0;
40
+ width: 100%;
41
+ }
42
+ overlay-mask:focus {
43
+ outline: none;
44
+ }
45
+ overlay-vertical-centering-container {
46
+ -webkit-justify-content: center;
47
+ flex-direction: column;
48
+ display: flex;
49
+ }
50
+ overlay-frame {
51
+ z-index: 1100;
52
+ background: rgb(255, 255, 255);
53
+ border: 1px solid #ccc;
54
+ margin: 75px;
55
+ display: flex;
56
+ flex-direction: column;
57
+ min-height: 0;
58
+ }
59
+ title-bar {
60
+ -webkit-align-items: center;
61
+ flex-direction: row;
62
+ border-bottom: 1px solid #ccc;
63
+ background-color: #ddd;
64
+ display: flex;
65
+ padding: 5px;
66
+ flex: 0 0 auto;
67
+ }
68
+ title {
69
+ display: inline;
70
+ font-weight: bold;
71
+ flex: 1 1 auto;
72
+ }
73
+ close-button {
74
+ -webkit-align-self: flex-end;
75
+ border: 1px solid #eee;
76
+ background-color: #999;
77
+ font-size: 10pt;
78
+ font-weight: bold;
79
+ padding: 2px;
80
+ text-align: center;
81
+ width: 16px;
82
+ }
83
+ close-button:hover {
84
+ background-color: #ddd;
85
+ border-color: black;
86
+ cursor: pointer;
87
+ }
88
+ overlay-content {
89
+ display: flex;
90
+ flex: 1 1 auto;
91
+ flex-direction: column;
92
+ overflow-y: auto;
93
+ padding: 10px;
94
+ min-width: 300px;
95
+ min-height: 0;
96
+ }
97
+ button-bar {
98
+ -webkit-align-items: baseline;
99
+ border-top: 1px solid #ccc;
100
+ display: flex;
101
+ flex: 0 0 auto;
102
+ flex-direction: row-reverse;
103
+ padding: 4px;
104
+ }
105
+ </style>
106
+
107
+ <overlay-mask>
108
+ <overlay-vertical-centering-container>
109
+ <overlay-frame>
110
+ <title-bar>
111
+ <title></title>
112
+ <close-button>✕</close-button>
113
+ </title-bar>
114
+ <overlay-content>
115
+ <content></content>
116
+ </overlay-content>
117
+ <button-bar></button-bar>
118
+ </overlay-frame>
119
+ </overlay-vertical-centering-container>
120
+ </overlay-mask>
121
+ </template><dom-module id="tv-ui-b-hotkey-controller">
122
+ <template>
123
+ <div></div>
124
+ </template>
125
+ </dom-module><dom-module id="tr-ui-b-info-bar">
126
+ <template>
127
+ <style>
128
+ :host {
129
+ align-items: center;
130
+ flex: 0 0 auto;
131
+ background-color: rgb(252, 235, 162);
132
+ border-bottom: 1px solid #A3A3A3;
133
+ border-left: 1px solid white;
134
+ border-right: 1px solid #A3A3A3;
135
+ border-top: 1px solid white;
136
+ display: flex;
137
+ min-height: 26px;
138
+ padding: 0 3px 0 3px;
139
+ }
140
+
141
+ :host([hidden]) {
142
+ display: none !important;
143
+ }
144
+
145
+ #message { flex: 1 1 auto; }
146
+ </style>
147
+
148
+ <span id="message"></span>
149
+ <span id="buttons"></span>
150
+ </template>
151
+ </dom-module><dom-module id="tr-ui-b-info-bar-group">
152
+ <template>
153
+ <style>
154
+ :host {
155
+ flex: 0 0 auto;
156
+ flex-direction: column;
157
+ display: flex;
158
+ }
159
+ </style>
160
+ <div id="messages"></div>
161
+ </template>
162
+ </dom-module><template id="record-selection-dialog-template">
163
+ <style>
164
+ .categories-column-view {
165
+ display: flex;
166
+ flex-direction: column;
167
+ font-family: sans-serif;
168
+ max-width: 640px;
169
+ min-height: 0;
170
+ min-width: 0;
171
+ opacity: 1;
172
+ transition: max-height 1s ease, max-width 1s ease, opacity 1s ease;
173
+ will-change: opacity;
174
+ }
175
+
176
+ .categories-column-view-hidden {
177
+ max-height: 0;
178
+ max-width: 0;
179
+ opacity: 0;
180
+ overflow: hidden;
181
+ display: none;
182
+ }
183
+
184
+ .categories-selection {
185
+ display: flex;
186
+ flex-direction: row;
187
+ }
188
+
189
+ .category-presets {
190
+ padding: 4px;
191
+ }
192
+
193
+ .category-description {
194
+ color: #aaa;
195
+ font-size: small;
196
+ max-height: 1em;
197
+ opacity: 1;
198
+ padding-left: 4px;
199
+ padding-right: 4px;
200
+ text-align: right;
201
+ transition: max-height 1s ease, opacity 1s ease;
202
+ will-change: opacity;
203
+ }
204
+
205
+ .category-description-hidden {
206
+ max-height: 0;
207
+ opacity: 0;
208
+ }
209
+
210
+ .default-enabled-categories,
211
+ .default-disabled-categories {
212
+ flex: 1 1 auto;
213
+ display: flex;
214
+ flex-direction: column;
215
+ padding: 4px;
216
+ width: 300px;
217
+ }
218
+
219
+ .default-enabled-categories > div,
220
+ .default-disabled-categories > div {
221
+ padding: 4px;
222
+ }
223
+
224
+ .tracing-modes {
225
+ flex: 1 0 auto;
226
+ display: flex;
227
+ flex-direction: reverse;
228
+ padding: 4px;
229
+ border-bottom: 2px solid #ddd;
230
+ border-top: 2px solid #ddd;
231
+ }
232
+
233
+ .default-disabled-categories {
234
+ border-left: 2px solid #ddd;
235
+ }
236
+
237
+ .warning-default-disabled-categories {
238
+ display: inline-block;
239
+ font-weight: bold;
240
+ text-align: center;
241
+ color: #BD2E2E;
242
+ width: 2.0ex;
243
+ height: 2.0ex;
244
+ border-radius: 2.0ex;
245
+ border: 1px solid #BD2E2E;
246
+ }
247
+
248
+ .categories {
249
+ font-size: 80%;
250
+ padding: 10px;
251
+ flex: 1 1 auto;
252
+ }
253
+
254
+ .group-selectors {
255
+ font-size: 80%;
256
+ border-bottom: 1px solid #ddd;
257
+ padding-bottom: 6px;
258
+ flex: 0 0 auto;
259
+ }
260
+
261
+ .group-selectors button {
262
+ padding: 1px;
263
+ }
264
+
265
+ .record-selection-dialog .labeled-option-group {
266
+ flex: 0 0 auto;
267
+ flex-direction: column;
268
+ display: flex;
269
+ }
270
+
271
+ .record-selection-dialog .labeled-option {
272
+ border-top: 5px solid white;
273
+ border-bottom: 5px solid white;
274
+ }
275
+
276
+ .record-selection-dialog .edit-categories {
277
+ padding-left: 6px;
278
+ }
279
+
280
+ .record-selection-dialog .edit-categories:after {
281
+ padding-left: 15px;
282
+ font-size: 125%;
283
+ }
284
+
285
+ .record-selection-dialog .labeled-option-group:not(.categories-expanded)
286
+ .edit-categories:after {
287
+ content: '\25B8'; /* Right triangle */
288
+ }
289
+
290
+ .record-selection-dialog .labeled-option-group.categories-expanded
291
+ .edit-categories:after {
292
+ content: '\25BE'; /* Down triangle */
293
+ }
294
+
295
+ </style>
296
+
297
+ <div class="record-selection-dialog">
298
+ <tr-ui-b-info-bar-group></tr-ui-b-info-bar-group>
299
+ <div class="category-presets">
300
+ </div>
301
+ <div class="category-description"></div>
302
+ <div class="categories-column-view">
303
+ <div class="tracing-modes"></div>
304
+ <div class="categories-selection">
305
+ <div class="default-enabled-categories">
306
+ <div>Record Categories</div>
307
+ <div class="group-selectors">
308
+ Select
309
+ <button class="all-btn">All</button>
310
+ <button class="none-btn">None</button>
311
+ </div>
312
+ <div class="categories"></div>
313
+ </div>
314
+ <div class="default-disabled-categories">
315
+ <div>Disabled by Default Categories
316
+ <a class="warning-default-disabled-categories">!</a>
317
+ </div>
318
+ <div class="group-selectors">
319
+ Select
320
+ <button class="all-btn">All</button>
321
+ <button class="none-btn">None</button>
322
+ </div>
323
+ <div class="categories"></div>
324
+ </div>
325
+ </div>
326
+ </div>
327
+ </div>
328
+ </template><dom-module id="tr-ui-a-analysis-link">
329
+ <template>
330
+ <style>
331
+ :host {
332
+ display: inline;
333
+ cursor: pointer;
334
+ cursor: pointer;
335
+ white-space: nowrap;
336
+ }
337
+ a {
338
+ text-decoration: underline;
339
+ }
340
+ </style>
341
+ <a href="{{href}}" on-click="onClicked_" on-mouseenter="onMouseEnter_" on-mouseleave="onMouseLeave_"><slot></slot></a>
342
+
343
+ </template>
344
+ </dom-module><dom-module id="tr-ui-b-table">
345
+ <template>
346
+ <style>
347
+ :host {
348
+ display: flex;
349
+ flex-direction: column;
350
+ }
351
+
352
+ table {
353
+ flex: 1 1 auto;
354
+ align-self: stretch;
355
+ border-collapse: separate;
356
+ border-spacing: 0;
357
+ border-width: 0;
358
+ -webkit-user-select: initial;
359
+ }
360
+
361
+ tr > td {
362
+ padding: 2px 4px 2px 4px;
363
+ vertical-align: top;
364
+ }
365
+
366
+ table > tbody:focus {
367
+ outline: none;
368
+ }
369
+ table > tbody:focus[selection-mode="row"] > tr[selected],
370
+ table > tbody:focus[selection-mode="cell"] > tr > td[selected],
371
+ table > tbody:focus > tr.empty-row > td {
372
+ outline: 1px dotted #666666;
373
+ outline-offset: -1px;
374
+ }
375
+
376
+ button.toggle-button {
377
+ height: 15px;
378
+ line-height: 60%;
379
+ vertical-align: middle;
380
+ width: 100%;
381
+ }
382
+
383
+ button > * {
384
+ height: 15px;
385
+ vertical-align: middle;
386
+ }
387
+
388
+ td.button-column {
389
+ width: 30px;
390
+ }
391
+
392
+ table > thead > tr > td.sensitive:hover {
393
+ background-color: #fcfcfc;
394
+ }
395
+
396
+ table > thead > tr > td {
397
+ font-weight: bold;
398
+ text-align: left;
399
+
400
+ background-color: #eee;
401
+ white-space: nowrap;
402
+ overflow: hidden;
403
+ text-overflow: ellipsis;
404
+
405
+ border-top: 1px solid #ffffff;
406
+ border-bottom: 1px solid #aaa;
407
+ }
408
+
409
+ table > tfoot {
410
+ background-color: #eee;
411
+ font-weight: bold;
412
+ }
413
+
414
+ /* Light row and cell highlight. */
415
+ table > tbody[row-highlight-style="light"] > tr[selected],
416
+ table > tbody[cell-highlight-style="light"] > tr > td[selected] {
417
+ background-color: rgb(213, 236, 229); /* light turquoise */
418
+ }
419
+ table > tbody[row-highlight-style="light"] >
420
+ tr:not(.empty-row):not([selected]):hover,
421
+ table > tbody[cell-highlight-style="light"] >
422
+ tr:not(.empty-row):not([selected]) > td:hover {
423
+ background-color: #f6f6f6; /* light grey */
424
+ }
425
+
426
+ /* Dark row and cell highlight. */
427
+ table > tbody[row-highlight-style="dark"] > tr[selected],
428
+ table > tbody[cell-highlight-style="dark"] > tr > td[selected] {
429
+ background-color: rgb(103, 199, 165); /* turquoise */
430
+ }
431
+ table > tbody[row-highlight-style="dark"] >
432
+ tr:not(.empty-row):not([selected]):hover,
433
+ table > tbody[cell-highlight-style="dark"] >
434
+ tr:not(.empty-row):not([selected]) > td:hover {
435
+ background-color: #e6e6e6; /* grey */
436
+ }
437
+ table > tbody[row-highlight-style="dark"] > tr:hover[selected],
438
+ table > tbody[cell-highlight-style="dark"] > tr[selected] > td:hover {
439
+ background-color: rgb(171, 217, 202); /* semi-light turquoise */
440
+ }
441
+
442
+ table > colgroup > col[selected] {
443
+ background-color: #e6e6e6; /* grey */
444
+ }
445
+
446
+ table > tbody > tr.empty-row > td {
447
+ color: #666;
448
+ font-style: italic;
449
+ text-align: center;
450
+ }
451
+
452
+ table > tbody.has-footer > tr:last-child > td {
453
+ border-bottom: 1px solid #aaa;
454
+ }
455
+
456
+ table > tfoot > tr:first-child > td {
457
+ border-top: 1px solid #ffffff;
458
+ }
459
+
460
+ :host([zebra]) table tbody tr:nth-child(even) {
461
+ background-color: #f4f4f4;
462
+ }
463
+
464
+ expand-button {
465
+ -webkit-user-select: none;
466
+ cursor: pointer;
467
+ margin-right: 3px;
468
+ font-size: smaller;
469
+ height: 1rem;
470
+ }
471
+
472
+ expand-button.button-expanded {
473
+ transform: rotate(90deg);
474
+ }
475
+ </style>
476
+ <table>
477
+ <colgroup id="cols">
478
+ </colgroup>
479
+ <thead id="head">
480
+ </thead>
481
+ <tbody id="body">
482
+ </tbody>
483
+ <tfoot id="foot">
484
+ </tfoot>
485
+ </table>
486
+ </template>
487
+ </dom-module><dom-module id="tr-ui-b-table-header-cell">
488
+ <template>
489
+ <style>
490
+ :host {
491
+ -webkit-user-select: none;
492
+ display: flex;
493
+ }
494
+
495
+ span {
496
+ flex: 0 1 auto;
497
+ }
498
+
499
+ #side {
500
+ -webkit-user-select: none;
501
+ flex: 0 0 auto;
502
+ padding-left: 2px;
503
+ padding-right: 2px;
504
+ vertical-align: top;
505
+ font-size: 15px;
506
+ font-family: sans-serif;
507
+ line-height: 85%;
508
+ margin-left: 5px;
509
+ }
510
+
511
+ #side.disabled {
512
+ color: rgb(140, 140, 140);
513
+ }
514
+
515
+ #title:empty, #side:empty {
516
+ display: none;
517
+ }
518
+ </style>
519
+
520
+ <span id="title"></span>
521
+ <span id="side"></span>
522
+ </template>
523
+ </dom-module><dom-module id="tr-ui-a-alert-sub-view">
524
+ <template>
525
+ <style>
526
+ :host {
527
+ display: flex;
528
+ flex-direction: column;
529
+ }
530
+ #table {
531
+ flex: 1 1 auto;
532
+ align-self: stretch;
533
+ font-size: 12px;
534
+ }
535
+ </style>
536
+ <tr-ui-b-table id="table">
537
+ </tr-ui-b-table>
538
+ </template>
539
+ </dom-module><dom-module id="tr-v-ui-scalar-context-controller">
540
+ <template></template>
541
+ </dom-module><dom-module id="tr-v-ui-scalar-span">
542
+ <template>
543
+ <style>
544
+ :host {
545
+ display: flex;
546
+ flex-direction: row;
547
+ justify-content: flex-end;
548
+ position: relative;
549
+ /* Limit the sparkline's negative z-index to the span only. */
550
+ isolation: isolate;
551
+ }
552
+
553
+ :host(.left-align) {
554
+ justify-content: flex-start;
555
+ }
556
+
557
+ :host(.inline) {
558
+ display: inline-flex;
559
+ }
560
+
561
+ #sparkline {
562
+ width: 0%;
563
+ position: absolute;
564
+ bottom: 0;
565
+ display: none;
566
+ height: 100%;
567
+ background-color: hsla(216, 100%, 94.5%, .75);
568
+ border-color: hsl(216, 100%, 89%);
569
+ box-sizing: border-box;
570
+ z-index: -1;
571
+ }
572
+ #sparkline.positive {
573
+ border-right-style: solid;
574
+ /* The border width must be kept in sync with buildSparklineStyle_(). */
575
+ border-right-width: 1px;
576
+ }
577
+ #sparkline:not(.positive) {
578
+ border-left-style: solid;
579
+ /* The border width must be kept in sync with buildSparklineStyle_(). */
580
+ border-left-width: 1px;
581
+ }
582
+ #sparkline.better {
583
+ background-color: hsla(115, 100%, 93%, .75);
584
+ border-color: hsl(118, 60%, 80%);
585
+ }
586
+ #sparkline.worse {
587
+ background-color: hsla(0, 100%, 88%, .75);
588
+ border-color: hsl(0, 100%, 80%);
589
+ }
590
+
591
+ #content {
592
+ white-space: nowrap;
593
+ }
594
+ #content, #significance, #warning {
595
+ flex-grow: 0;
596
+ }
597
+ #content.better {
598
+ color: green;
599
+ }
600
+ #content.worse {
601
+ color: red;
602
+ }
603
+
604
+ #significance svg {
605
+ margin-left: 4px;
606
+ display: none;
607
+ height: 1em;
608
+ vertical-align: text-top;
609
+ stroke-width: 4;
610
+ fill: rgba(0, 0, 0, 0);
611
+ }
612
+ #significance #insignificant {
613
+ stroke: black;
614
+ }
615
+ #significance #significantly_better {
616
+ stroke: green;
617
+ }
618
+ #significance #significantly_worse {
619
+ stroke: red;
620
+ }
621
+
622
+ #warning {
623
+ display: none;
624
+ margin-left: 4px;
625
+ height: 1em;
626
+ vertical-align: text-top;
627
+ stroke-width: 0;
628
+ }
629
+ #warning path {
630
+ fill: rgb(255, 185, 185);
631
+ }
632
+ #warning rect {
633
+ fill: red;
634
+ }
635
+ </style>
636
+
637
+ <span id="sparkline"></span>
638
+
639
+ <span id="content"></span>
640
+
641
+ <span id="significance">
642
+
643
+ <svg id="insignificant" viewBox="0 0 128 128">
644
+ <circle cx="64" cy="64" r="60"></circle>
645
+ <circle cx="44" cy="44" r="4"></circle>
646
+ <circle cx="84" cy="44" r="4"></circle>
647
+ <line x1="36" x2="92" y1="80" y2="80"></line>
648
+ </svg>
649
+
650
+
651
+ <svg id="significantly_better" viewBox="0 0 128 128">
652
+ <circle cx="64" cy="64" r="60"></circle>
653
+ <circle cx="44" cy="44" r="4"></circle>
654
+ <circle cx="84" cy="44" r="4"></circle>
655
+ <path d="M 28 64 Q 64 128 100 64"></path>
656
+ </svg>
657
+
658
+
659
+ <svg id="significantly_worse" viewBox="0 0 128 128">
660
+ <circle cx="64" cy="64" r="60"></circle>
661
+ <circle cx="44" cy="44" r="4"></circle>
662
+ <circle cx="84" cy="44" r="4"></circle>
663
+ <path d="M 36 96 Q 64 48 92 96"></path>
664
+ </svg>
665
+ </span>
666
+
667
+ <svg id="warning" viewBox="0 0 128 128">
668
+ <path d="M 64 0 L 128 128 L 0 128 L 64 0"></path>
669
+ <rect height="84" width="8" x="60" y="0"></rect>
670
+ <rect height="24" width="8" x="60" y="100"></rect>
671
+ </svg>
672
+ </template>
673
+ </dom-module><dom-module id="tr-ui-b-tab-view">
674
+ <template>
675
+ <style>
676
+ :host {
677
+ display: flex;
678
+ flex-direction: column;
679
+ }
680
+
681
+ #selection_description, #tabs {
682
+ font-size: 12px;
683
+ }
684
+
685
+ #selection_description {
686
+ display: inline-block;
687
+ font-weight: bold;
688
+ margin: 9px 0px 4px 20px;
689
+ }
690
+
691
+ #tabs {
692
+ flex: 0 0 auto;
693
+ border-top: 1px solid #8e8e8e;
694
+ border-bottom: 1px solid #8e8e8e;
695
+ background-color: #ececec;
696
+ overflow: hidden;
697
+ margin: 0;
698
+ }
699
+
700
+ #tabs input[type=radio] {
701
+ display: none;
702
+ }
703
+
704
+ #tabs tab label {
705
+ cursor: pointer;
706
+ display: inline-block;
707
+ border: 1px solid #ececec;
708
+ margin: 5px 0px 0px 15px;
709
+ padding: 3px 10px 3px 10px;
710
+ }
711
+
712
+ #tabs tab label span {
713
+ font-weight: bold;
714
+ }
715
+
716
+ #tabs:focus input[type=radio]:checked ~ label {
717
+ outline: dotted 1px #8e8e8e;
718
+ outline-offset: -2px;
719
+ }
720
+
721
+ #tabs input[type=radio]:checked ~ label {
722
+ background-color: white;
723
+ border: 1px solid #8e8e8e;
724
+ border-bottom: 1px solid white;
725
+ }
726
+
727
+ #subView {
728
+ flex: 1 1 auto;
729
+ min-width: 0;
730
+ display: flex;
731
+ }
732
+
733
+ #subView > * {
734
+ flex: 1 1 auto;
735
+ min-width: 0;
736
+ }
737
+ </style>
738
+ <div hidden="[[tabsHidden]]" id="tabs">
739
+ <label id="selection_description">[[label_]]</label>
740
+ <template is="dom-repeat" items="[[subViews_]]">
741
+ <tab>
742
+ <input checked="[[isChecked_(item)]]" id$="[[computeRadioId_(item)]]" name="tabs" on-change="onTabChanged_" type="radio"/>
743
+ <label for$="[[computeRadioId_(item)]]">
744
+ <template if="[[item.tabIcon]]" is="dom-if">
745
+ <span style$="[[item.tabIcon.style]]">[[item.tabIcon.text]]</span>
746
+ </template>
747
+ [[item.tabLabel]]
748
+ </label>
749
+ </tab>
750
+ </template>
751
+ </div>
752
+ <div id="subView"></div>
753
+ <slot>
754
+ </slot>
755
+ </template>
756
+ </dom-module><dom-module id="tr-ui-a-memory-dump-heap-details-breakdown-view">
757
+ <template>
758
+ <tr-ui-b-tab-view id="tabs"></tr-ui-b-tab-view>
759
+ </template>
760
+ </dom-module><dom-module id="tr-ui-a-memory-dump-heap-details-breakdown-view-tab">
761
+ <template>
762
+ <tr-v-ui-scalar-context-controller></tr-v-ui-scalar-context-controller>
763
+ <tr-ui-b-info-bar hidden="" id="info"></tr-ui-b-info-bar>
764
+ <tr-ui-b-table id="table"></tr-ui-b-table>
765
+ </template>
766
+ </dom-module><dom-module id="tr-ui-a-memory-dump-heap-details-path-view">
767
+ <template>
768
+ <style>
769
+ :host {
770
+ display: flex;
771
+ flex-direction: column;
772
+ }
773
+ </style>
774
+ <tr-v-ui-scalar-context-controller></tr-v-ui-scalar-context-controller>
775
+ <tr-ui-b-table id="table"></tr-ui-b-table>
776
+ </template>
777
+ </dom-module><dom-module id="tr-ui-b-drag-handle">
778
+ <template>
779
+ <style>
780
+ :host {
781
+ -webkit-user-select: none;
782
+ box-sizing: border-box;
783
+ display: block;
784
+ }
785
+
786
+ :host(.horizontal-drag-handle) {
787
+ background-image: -webkit-gradient(linear,
788
+ 0 0, 0 100%,
789
+ from(#E5E5E5),
790
+ to(#D1D1D1));
791
+ border-bottom: 1px solid #8e8e8e;
792
+ border-top: 1px solid white;
793
+ cursor: ns-resize;
794
+ flex: 0 0 auto;
795
+ height: 7px;
796
+ position: relative;
797
+ }
798
+
799
+ :host(.vertical-drag-handle) {
800
+ background-image: -webkit-gradient(linear,
801
+ 0 0, 100% 0,
802
+ from(#E5E5E5),
803
+ to(#D1D1D1));
804
+ border-left: 1px solid white;
805
+ border-right: 1px solid #8e8e8e;
806
+ cursor: ew-resize;
807
+ flex: 0 0 auto;
808
+ position: relative;
809
+ width: 7px;
810
+ }
811
+ </style>
812
+ <div></div>
813
+ </template>
814
+ </dom-module><dom-module id="tr-ui-a-memory-dump-heap-details-pane">
815
+ <template>
816
+ <style>
817
+ :host {
818
+ display: flex;
819
+ flex-direction: column;
820
+ }
821
+
822
+ #header {
823
+ flex: 0 0 auto;
824
+ display: flex;
825
+ flex-direction: row;
826
+ align-items: center;
827
+
828
+ background-color: #eee;
829
+ border-bottom: 1px solid #8e8e8e;
830
+ border-top: 1px solid white;
831
+ }
832
+
833
+ #label {
834
+ flex: 1 1 auto;
835
+ padding: 8px;
836
+ font-size: 15px;
837
+ font-weight: bold;
838
+ }
839
+
840
+ #view_mode_container {
841
+ display: none;
842
+ flex: 0 0 auto;
843
+ padding: 5px;
844
+ font-size: 15px;
845
+ }
846
+
847
+ #contents {
848
+ flex: 1 0 auto;
849
+ align-self: stretch;
850
+ font-size: 12px;
851
+ }
852
+
853
+ #info_text {
854
+ padding: 8px;
855
+ color: #666;
856
+ font-style: italic;
857
+ text-align: center;
858
+ }
859
+
860
+ #split_view {
861
+ display: none; /* Hide until memory allocator dumps are set. */
862
+ flex: 1 0 auto;
863
+ align-self: stretch;
864
+ flex-direction: row;
865
+ }
866
+
867
+ #path_view {
868
+ width: 50%;
869
+ }
870
+
871
+ #breakdown_view {
872
+ flex: 1 1 auto;
873
+ width: 0;
874
+ }
875
+
876
+ #path_view, #breakdown_view {
877
+ overflow-x: auto; /* Show scrollbar if necessary. */
878
+ }
879
+ </style>
880
+ <div id="header">
881
+ <div id="label">Heap details</div>
882
+ <div id="view_mode_container">
883
+ <span>View mode:</span>
884
+
885
+ </div>
886
+ </div>
887
+ <div id="contents">
888
+ <tr-ui-b-info-bar hidden="" id="info_bar">
889
+ </tr-ui-b-info-bar>
890
+
891
+ <div id="info_text">No heap dump selected</div>
892
+
893
+ <div id="split_view">
894
+ <tr-ui-a-memory-dump-heap-details-path-view id="path_view">
895
+ </tr-ui-a-memory-dump-heap-details-path-view>
896
+ <tr-ui-b-drag-handle id="drag_handle"></tr-ui-b-drag-handle>
897
+ <tr-ui-a-memory-dump-heap-details-breakdown-view id="breakdown_view">
898
+ </tr-ui-a-memory-dump-heap-details-breakdown-view>
899
+ </div>
900
+ </div>
901
+ </template>
902
+ </dom-module><dom-module id="tr-ui-a-memory-dump-allocator-details-pane">
903
+ <template>
904
+ <style>
905
+ :host {
906
+ display: flex;
907
+ flex-direction: column;
908
+ }
909
+
910
+ #label {
911
+ flex: 0 0 auto;
912
+ padding: 8px;
913
+
914
+ background-color: #eee;
915
+ border-bottom: 1px solid #8e8e8e;
916
+ border-top: 1px solid white;
917
+
918
+ font-size: 15px;
919
+ font-weight: bold;
920
+ }
921
+
922
+ #contents {
923
+ flex: 1 0 auto;
924
+ align-self: stretch;
925
+ font-size: 12px;
926
+ }
927
+
928
+ #info_text {
929
+ padding: 8px;
930
+ color: #666;
931
+ font-style: italic;
932
+ text-align: center;
933
+ }
934
+
935
+ #table {
936
+ display: none; /* Hide until memory allocator dumps are set. */
937
+ flex: 1 0 auto;
938
+ align-self: stretch;
939
+ font-size: 12px;
940
+ }
941
+ </style>
942
+ <div id="label">Component details</div>
943
+ <div id="contents">
944
+ <div id="info_text">No memory allocator dump selected</div>
945
+ <tr-ui-b-table id="table"></tr-ui-b-table>
946
+ </div>
947
+ </template>
948
+ </dom-module><dom-module id="tr-ui-a-memory-dump-vm-regions-details-pane">
949
+ <template>
950
+ <style>
951
+ :host {
952
+ display: flex;
953
+ flex-direction: column;
954
+ }
955
+
956
+ #label {
957
+ flex: 0 0 auto;
958
+ padding: 8px;
959
+
960
+ background-color: #eee;
961
+ border-bottom: 1px solid #8e8e8e;
962
+ border-top: 1px solid white;
963
+
964
+ font-size: 15px;
965
+ font-weight: bold;
966
+ }
967
+
968
+ #contents {
969
+ flex: 1 0 auto;
970
+ align-self: stretch;
971
+ font-size: 12px;
972
+ }
973
+
974
+ #info_text {
975
+ padding: 8px;
976
+ color: #666;
977
+ font-style: italic;
978
+ text-align: center;
979
+ }
980
+
981
+ #table {
982
+ display: none; /* Hide until memory dumps are set. */
983
+ flex: 1 0 auto;
984
+ align-self: stretch;
985
+ font-size: 12px;
986
+ }
987
+ </style>
988
+ <div id="label">Memory maps</div>
989
+ <div id="contents">
990
+ <div id="info_text">No memory maps selected</div>
991
+ <tr-ui-b-table id="table"></tr-ui-b-table>
992
+ </div>
993
+ </template>
994
+ </dom-module><dom-module id="tr-ui-b-color-legend">
995
+ <template>
996
+ <style>
997
+ :host {
998
+ display: inline-block;
999
+ }
1000
+
1001
+ #square {
1002
+ font-size: 150%; /* Make the square bigger. */
1003
+ line-height: 0%; /* Prevent the square from increasing legend height. */
1004
+ }
1005
+ </style>
1006
+ <span id="square"></span>
1007
+ <span id="label"></span>
1008
+ </template>
1009
+ </dom-module><dom-module id="tr-ui-b-view-specific-brushing-state">
1010
+ <template></template>
1011
+ </dom-module><dom-module id="tr-ui-a-memory-dump-overview-pane">
1012
+ <template>
1013
+ <style>
1014
+ :host {
1015
+ display: flex;
1016
+ flex-direction: column;
1017
+ }
1018
+
1019
+ #label {
1020
+ flex: 0 0 auto;
1021
+ padding: 8px;
1022
+
1023
+ background-color: #eee;
1024
+ border-bottom: 1px solid #8e8e8e;
1025
+ border-top: 1px solid white;
1026
+
1027
+ font-size: 15px;
1028
+ font-weight: bold;
1029
+ }
1030
+
1031
+ #label a {
1032
+ font-weight: normal;
1033
+ float: right;
1034
+ }
1035
+
1036
+ #contents {
1037
+ flex: 1 0 auto;
1038
+ align-self: stretch;
1039
+ font-size: 12px;
1040
+ overflow: auto;
1041
+ }
1042
+
1043
+ #info_text {
1044
+ padding: 8px;
1045
+ color: #666;
1046
+ font-style: italic;
1047
+ text-align: center;
1048
+ }
1049
+
1050
+ #table {
1051
+ display: none; /* Hide until memory dumps are set. */
1052
+ flex: 1 0 auto;
1053
+ align-self: stretch;
1054
+ font-size: 12px;
1055
+ }
1056
+ </style>
1057
+ <tr-ui-b-view-specific-brushing-state id="state" view-id="analysis.memory_dump_overview_pane">
1058
+ </tr-ui-b-view-specific-brushing-state>
1059
+ <div id="label">Overview <a href="https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra">Help</a></div>
1060
+ <div id="contents">
1061
+ <div id="info_text">No memory memory dumps selected</div>
1062
+ <tr-ui-b-table id="table"></tr-ui-b-table>
1063
+ </div>
1064
+ </template>
1065
+ </dom-module><dom-module id="tr-ui-a-memory-dump-header-pane">
1066
+ <template>
1067
+ <style>
1068
+ :host {
1069
+ display: flex;
1070
+ flex-direction: row;
1071
+ align-items: center;
1072
+
1073
+ background-color: #d0d0d0;
1074
+ border-bottom: 1px solid #8e8e8e;
1075
+ border-top: 1px solid white;
1076
+ }
1077
+
1078
+ #label {
1079
+ flex: 1 1 auto;
1080
+ padding: 6px;
1081
+ font-size: 15px;
1082
+ }
1083
+
1084
+ #aggregation_mode_container {
1085
+ display: none;
1086
+ flex: 0 0 auto;
1087
+ padding: 5px;
1088
+ font-size: 15px;
1089
+ }
1090
+ </style>
1091
+
1092
+ <div id="label"></div>
1093
+ <div id="aggregation_mode_container">
1094
+ <span>Metric aggregation:</span>
1095
+
1096
+ </div>
1097
+ </template>
1098
+ </dom-module><dom-module id="tr-ui-a-stacked-pane-view">
1099
+ <template>
1100
+ <style>
1101
+ :host {
1102
+ display: flex;
1103
+ flex-direction: column;
1104
+ }
1105
+
1106
+ #pane_container > * {
1107
+ flex: 0 0 auto;
1108
+ }
1109
+ </style>
1110
+ <div id="pane_container">
1111
+ </div>
1112
+ </template>
1113
+ </dom-module><dom-module id="tr-ui-a-container-memory-dump-sub-view">
1114
+ <template>
1115
+ <style>
1116
+ tr-ui-b-table {
1117
+ font-size: 12px;
1118
+ }
1119
+ </style>
1120
+ <div id="content"></div>
1121
+ </template>
1122
+ </dom-module><dom-module id="tr-ui-a-counter-sample-sub-view">
1123
+ <template>
1124
+ <style>
1125
+ :host {
1126
+ display: flex;
1127
+ flex-direction: column;
1128
+ }
1129
+ tr-ui-b-table {
1130
+ font-size: 12px;
1131
+ }
1132
+ </style>
1133
+ <tr-ui-b-table id="table"></tr-ui-b-table>
1134
+ </template>
1135
+ </dom-module><dom-module id="tr-ui-a-multi-event-summary-table">
1136
+ <template>
1137
+ <style>
1138
+ :host {
1139
+ display: flex;
1140
+ }
1141
+ #table {
1142
+ flex: 1 1 auto;
1143
+ align-self: stretch;
1144
+ font-size: 12px;
1145
+ }
1146
+ </style>
1147
+ <tr-ui-b-table id="table">
1148
+ </tr-ui-b-table>
1149
+
1150
+ </template>
1151
+ </dom-module><dom-module id="tr-ui-a-selection-summary-table">
1152
+ <template>
1153
+ <style>
1154
+ :host {
1155
+ display: flex;
1156
+ }
1157
+ #table {
1158
+ flex: 1 1 auto;
1159
+ align-self: stretch;
1160
+ font-size: 12px;
1161
+ }
1162
+ </style>
1163
+ <tr-ui-b-table id="table">
1164
+ </tr-ui-b-table>
1165
+
1166
+ </template>
1167
+ </dom-module><dom-module id="tr-ui-b-radio-picker">
1168
+ <template>
1169
+ <style>
1170
+ :host([vertical]) #container {
1171
+ flex-direction: column;
1172
+ }
1173
+ :host(:not[vertical]) #container {
1174
+ flex-direction: row;
1175
+ }
1176
+ #container {
1177
+ display: flex;
1178
+ }
1179
+ #container > div {
1180
+ padding-left: 1em;
1181
+ padding-bottom: 0.5em;
1182
+ }
1183
+ </style>
1184
+ <div id="container"></div>
1185
+ </template>
1186
+ </dom-module><dom-module id="tr-ui-b-chart-legend-key">
1187
+ <template>
1188
+ <style>
1189
+ #checkbox {
1190
+ margin: 0;
1191
+ visibility: hidden;
1192
+ vertical-align: text-top;
1193
+ }
1194
+ #label, #link {
1195
+ white-space: nowrap;
1196
+ text-overflow: ellipsis;
1197
+ overflow: hidden;
1198
+ display: inline-block;
1199
+ }
1200
+ </style>
1201
+
1202
+ <input checked="" id="checkbox" type="checkbox"/>
1203
+ <tr-ui-a-analysis-link id="link"></tr-ui-a-analysis-link>
1204
+ <label id="label"></label>
1205
+ </template>
1206
+ </dom-module><template id="chart-base-template">
1207
+ <svg>
1208
+ <g id="chart-area" xmlns="http://www.w3.org/2000/svg">
1209
+ <g class="x axis"></g>
1210
+ <g class="y axis"></g>
1211
+ <text id="title"></text>
1212
+ </g>
1213
+ </svg>
1214
+ </template><dom-module id="tr-v-ui-breakdown-span">
1215
+ <template>
1216
+ <style>
1217
+ :host {
1218
+ display: flex;
1219
+ flex-direction: column;
1220
+ }
1221
+ #table_container {
1222
+ display: flex;
1223
+ flex: 0 0 auto;
1224
+ }
1225
+ #table {
1226
+ max-height: 150px;
1227
+ overflow-y: auto;
1228
+ }
1229
+ </style>
1230
+
1231
+ <div id="empty">(empty)</div>
1232
+ <div id="table_container">
1233
+ <div id="container"></div>
1234
+ <span>
1235
+ <tr-ui-b-table id="table"></tr-ui-b-table>
1236
+ </span>
1237
+ </div>
1238
+ </template>
1239
+ </dom-module><dom-module id="tr-v-ui-collected-related-event-set-span">
1240
+ </dom-module><dom-module id="tr-v-ui-date-range-span">
1241
+ <template>
1242
+ <content></content>
1243
+ </template>
1244
+ </dom-module><dom-module id="tr-ui-a-generic-object-view">
1245
+ <template>
1246
+ <style>
1247
+ :host {
1248
+ display: block;
1249
+ font-family: monospace;
1250
+ }
1251
+ </style>
1252
+ <div id="content">
1253
+ </div>
1254
+ </template>
1255
+ </dom-module><dom-module id="tr-ui-a-generic-object-view-with-label">
1256
+ <template>
1257
+ <style>
1258
+ :host {
1259
+ display: block;
1260
+ }
1261
+ </style>
1262
+ </template>
1263
+ </dom-module><dom-module id="tr-v-ui-generic-set-span">
1264
+ <template>
1265
+ <style>
1266
+ a {
1267
+ display: block;
1268
+ }
1269
+ </style>
1270
+
1271
+ <tr-ui-a-generic-object-view id="generic"></tr-ui-a-generic-object-view>
1272
+
1273
+ <div id="links"></div>
1274
+ </template>
1275
+ </dom-module><dom-module id="tr-v-ui-related-event-set-span">
1276
+ </dom-module><dom-module id="tr-v-ui-scalar-diagnostic-span">
1277
+ <template>
1278
+ <tr-v-ui-scalar-span id="scalar"></tr-v-ui-scalar-span>
1279
+ </template>
1280
+ </dom-module><dom-module id="tr-v-ui-unmergeable-diagnostic-set-span">
1281
+ </dom-module><dom-module id="tr-v-ui-diagnostic-map-table">
1282
+ <template>
1283
+ <tr-ui-b-table id="table"></tr-ui-b-table>
1284
+ </template>
1285
+ </dom-module><dom-module id="tr-v-ui-scalar-map-table">
1286
+ <template>
1287
+ <tr-ui-b-table id="table"></tr-ui-b-table>
1288
+ </template>
1289
+ </dom-module><dom-module id="tr-v-ui-histogram-span">
1290
+ <template>
1291
+ <style>
1292
+ #container {
1293
+ display: flex;
1294
+ flex-direction: row;
1295
+ justify-content: space-between;
1296
+ }
1297
+ #chart {
1298
+ flex-grow: 1;
1299
+ display: none;
1300
+ }
1301
+ #drag_handle, #diagnostics_tab_templates {
1302
+ display: none;
1303
+ }
1304
+ #chart svg {
1305
+ display: block;
1306
+ }
1307
+ #stats_container {
1308
+ overflow-y: auto;
1309
+ }
1310
+ </style>
1311
+
1312
+ <div id="container">
1313
+ <div id="chart"></div>
1314
+ <div id="stats_container">
1315
+ <tr-v-ui-scalar-map-table id="stats"></tr-v-ui-scalar-map-table>
1316
+ </div>
1317
+ </div>
1318
+ <tr-ui-b-drag-handle id="drag_handle"></tr-ui-b-drag-handle>
1319
+
1320
+ <tr-ui-b-tab-view id="diagnostics"></tr-ui-b-tab-view>
1321
+
1322
+ <div id="diagnostics_tab_templates">
1323
+ <tr-v-ui-diagnostic-map-table id="metric_diagnostics"></tr-v-ui-diagnostic-map-table>
1324
+
1325
+ <tr-v-ui-diagnostic-map-table id="metadata_diagnostics"></tr-v-ui-diagnostic-map-table>
1326
+
1327
+ <div id="sample_diagnostics_container">
1328
+ <div id="merge_sample_diagnostics_container">
1329
+ <input checked="" id="merge_sample_diagnostics" on-change="updateDiagnostics_" type="checkbox"/>
1330
+ <label for="merge_sample_diagnostics">Merge Sample Diagnostics</label>
1331
+ </div>
1332
+ <tr-v-ui-diagnostic-map-table id="sample_diagnostics"></tr-v-ui-diagnostic-map-table>
1333
+ </div>
1334
+ </div>
1335
+ </template>
1336
+ </dom-module><dom-module id="tr-ui-a-multi-event-sub-view">
1337
+ <template>
1338
+ <style>
1339
+ :host {
1340
+ display: flex;
1341
+ overflow: auto;
1342
+ }
1343
+ #content {
1344
+ display: flex;
1345
+ flex-direction: column;
1346
+ flex: 0 1 auto;
1347
+ align-self: stretch;
1348
+ }
1349
+ #content > * {
1350
+ flex: 0 0 auto;
1351
+ align-self: stretch;
1352
+ }
1353
+ #histogramContainer {
1354
+ display: flex;
1355
+ }
1356
+
1357
+ tr-ui-a-multi-event-summary-table {
1358
+ border-bottom: 1px solid #aaa;
1359
+ }
1360
+
1361
+ tr-ui-a-selection-summary-table {
1362
+ margin-top: 1.25em;
1363
+ border-top: 1px solid #aaa;
1364
+ background-color: #eee;
1365
+ font-weight: bold;
1366
+ margin-bottom: 1.25em;
1367
+ border-bottom: 1px solid #aaa;
1368
+ }
1369
+ </style>
1370
+ <div id="content">
1371
+ <tr-ui-a-multi-event-summary-table id="eventSummaryTable">
1372
+ </tr-ui-a-multi-event-summary-table>
1373
+ <tr-ui-a-selection-summary-table id="selectionSummaryTable">
1374
+ </tr-ui-a-selection-summary-table>
1375
+ <tr-ui-b-radio-picker id="radioPicker">
1376
+ </tr-ui-b-radio-picker>
1377
+ <div id="histogramContainer">
1378
+ <tr-v-ui-histogram-span id="histogramSpan">
1379
+ </tr-v-ui-histogram-span>
1380
+ </div>
1381
+ </div>
1382
+ </template>
1383
+ </dom-module><dom-module id="tr-ui-a-related-events">
1384
+ <template>
1385
+ <style>
1386
+ :host {
1387
+ display: flex;
1388
+ flex-direction: column;
1389
+ }
1390
+ #table {
1391
+ flex: 1 1 auto;
1392
+ align-self: stretch;
1393
+ font-size: 12px;
1394
+ }
1395
+ </style>
1396
+ <tr-ui-b-table id="table"></tr-ui-b-table>
1397
+ </template>
1398
+ </dom-module><dom-module id="tr-ui-a-multi-async-slice-sub-view">
1399
+ <template>
1400
+ <style>
1401
+ :host {
1402
+ display: flex;
1403
+ }
1404
+ #container {
1405
+ display: flex;
1406
+ flex: 1 1 auto;
1407
+ }
1408
+ #events {
1409
+ margin-left: 8px;
1410
+ flex: 0 1 200px;
1411
+ }
1412
+ </style>
1413
+ <div id="container">
1414
+ <tr-ui-a-multi-event-sub-view id="content"></tr-ui-a-multi-event-sub-view>
1415
+ <div id="events">
1416
+ <tr-ui-a-related-events id="relatedEvents"></tr-ui-a-related-events>
1417
+ </div>
1418
+ </div>
1419
+ </template>
1420
+ </dom-module><dom-module id="tr-ui-a-multi-cpu-slice-sub-view">
1421
+ <template>
1422
+ <style>
1423
+ :host {
1424
+ display: flex;
1425
+ }
1426
+ #content {
1427
+ flex: 1 1 auto;
1428
+ }
1429
+ </style>
1430
+ <tr-ui-a-multi-event-sub-view id="content"></tr-ui-a-multi-event-sub-view>
1431
+ </template>
1432
+ </dom-module><dom-module id="tr-ui-a-multi-flow-event-sub-view">
1433
+ <template>
1434
+ <style>
1435
+ :host {
1436
+ display: flex;
1437
+ }
1438
+ </style>
1439
+ <tr-ui-a-multi-event-sub-view id="content"></tr-ui-a-multi-event-sub-view>
1440
+ </template>
1441
+ </dom-module><dom-module id="tr-ui-a-multi-instant-event-sub-view">
1442
+ <template>
1443
+ <style>
1444
+ :host {
1445
+ display: block;
1446
+ }
1447
+ </style>
1448
+ <div id="content"></div>
1449
+ </template>
1450
+ </dom-module><dom-module id="tr-ui-a-multi-object-sub-view">
1451
+ <template>
1452
+ <style>
1453
+ :host {
1454
+ display: flex;
1455
+ font-size: 12px;
1456
+ }
1457
+ </style>
1458
+ <tr-ui-b-table id="content"></tr-ui-b-table>
1459
+ </template>
1460
+ </dom-module><dom-module id="tr-ui-a-frame-power-usage-chart">
1461
+ <template>
1462
+ <div id="content"></div>
1463
+ </template>
1464
+ </dom-module><dom-module id="tr-ui-a-power-sample-summary-table">
1465
+ <template>
1466
+ <style>
1467
+ tr-ui-b-table {
1468
+ font-size: 12px;
1469
+ }
1470
+ </style>
1471
+ <tr-ui-b-table id="table"></tr-ui-b-table>
1472
+ </template>
1473
+ </dom-module><dom-module id="tr-ui-a-multi-power-sample-sub-view">
1474
+ <template>
1475
+ <style>
1476
+ :host {
1477
+ display: flex;
1478
+ flex-direction: row;
1479
+ }
1480
+ #tables {
1481
+ display: flex;
1482
+ flex-direction: column;
1483
+ width: 50%;
1484
+ }
1485
+ #chart {
1486
+ width: 50%;
1487
+ }
1488
+ </style>
1489
+ <div id="tables">
1490
+ <tr-ui-a-power-sample-summary-table id="summaryTable">
1491
+ </tr-ui-a-power-sample-summary-table>
1492
+ </div>
1493
+ <tr-ui-a-frame-power-usage-chart id="chart">
1494
+ </tr-ui-a-frame-power-usage-chart>
1495
+ </template>
1496
+ </dom-module><dom-module id="tr-ui-a-multi-sample-sub-view">
1497
+ <template>
1498
+ <style>
1499
+ :host { display: block; }
1500
+ #control {
1501
+ background-color: #e6e6e6;
1502
+ background-image: -webkit-gradient(linear, 0 0, 0 100%,
1503
+ from(#E5E5E5), to(#D1D1D1));
1504
+ flex: 0 0 auto;
1505
+ overflow-x: auto;
1506
+ }
1507
+ #control::-webkit-scrollbar { height: 0px; }
1508
+ #control {
1509
+ font-size: 12px;
1510
+ display: flex;
1511
+ flex-direction: row;
1512
+ align-items: stretch;
1513
+ margin: 1px;
1514
+ margin-right: 2px;
1515
+ }
1516
+ tr-ui-b-table {
1517
+ font-size: 12px;
1518
+ }
1519
+ </style>
1520
+ <div id="control">
1521
+ Sample View Option
1522
+ </div>
1523
+ <tr-ui-b-table id="table">
1524
+ </tr-ui-b-table>
1525
+ </template>
1526
+ </dom-module><dom-module id="tr-ui-a-multi-thread-slice-sub-view">
1527
+ <template>
1528
+ <style>
1529
+ :host {
1530
+ display: flex;
1531
+ }
1532
+ #content {
1533
+ display: flex;
1534
+ flex: 1 1 auto;
1535
+ min-width: 0;
1536
+ }
1537
+ #content > tr-ui-a-related-events {
1538
+ margin-left: 8px;
1539
+ flex: 0 1 200px;
1540
+ }
1541
+ </style>
1542
+ <div id="content"></div>
1543
+ </template>
1544
+ </dom-module><dom-module id="tr-ui-a-multi-thread-time-slice-sub-view">
1545
+ <template>
1546
+ <style>
1547
+ :host {
1548
+ display: flex;
1549
+ }
1550
+ #content {
1551
+ flex: 1 1 auto;
1552
+ min-width: 0;
1553
+ }
1554
+ </style>
1555
+ <tr-ui-a-multi-event-sub-view id="content"></tr-ui-a-multi-event-sub-view>
1556
+ </template>
1557
+ </dom-module><dom-module id="tr-ui-a-user-expectation-related-samples-table">
1558
+ <template>
1559
+ <style>
1560
+ #table {
1561
+ flex: 1 1 auto;
1562
+ align-self: stretch;
1563
+ font-size: 12px;
1564
+ }
1565
+ </style>
1566
+ <tr-ui-b-table id="table"></tr-ui-b-table>
1567
+ </template>
1568
+ </dom-module><dom-module id="tr-ui-a-multi-user-expectation-sub-view">
1569
+ <template>
1570
+ <style>
1571
+ :host {
1572
+ display: flex;
1573
+ flex: 1 1 auto;
1574
+ }
1575
+ #events {
1576
+ margin-left: 8px;
1577
+ flex: 0 1 200px;
1578
+ }
1579
+ </style>
1580
+ <tr-ui-a-multi-event-sub-view id="realView"></tr-ui-a-multi-event-sub-view>
1581
+ <div id="events">
1582
+ <tr-ui-a-user-expectation-related-samples-table id="relatedSamples"></tr-ui-a-user-expectation-related-samples-table>
1583
+ </div>
1584
+ </template>
1585
+ </dom-module><dom-module id="tr-ui-a-stack-frame">
1586
+ <template>
1587
+ <style>
1588
+ :host {
1589
+ display: flex;
1590
+ flex-direction: row;
1591
+ align-items: center;
1592
+ font-size: 12px;
1593
+ }
1594
+ </style>
1595
+ <tr-ui-b-table id="table"></tr-ui-b-table>
1596
+ </template>
1597
+ </dom-module><dom-module id="tr-ui-a-single-event-sub-view">
1598
+ <template>
1599
+ <style>
1600
+ :host {
1601
+ display: flex;
1602
+ flex: 0 1;
1603
+ flex-direction: column;
1604
+ }
1605
+ #table {
1606
+ flex: 0 1 auto;
1607
+ align-self: stretch;
1608
+ font-size: 12px;
1609
+ }
1610
+ </style>
1611
+ <tr-ui-b-table id="table">
1612
+ </tr-ui-b-table>
1613
+ </template>
1614
+ </dom-module><dom-module id="tr-ui-a-single-async-slice-sub-view">
1615
+ <template>
1616
+ <style>
1617
+ :host {
1618
+ display: flex;
1619
+ flex-direction: row;
1620
+ }
1621
+ #events {
1622
+ display:flex;
1623
+ flex-direction: column;
1624
+ }
1625
+ </style>
1626
+ <tr-ui-a-single-event-sub-view id="content"></tr-ui-a-single-event-sub-view>
1627
+ <div id="events">
1628
+ <tr-ui-a-related-events id="relatedEvents"></tr-ui-a-related-events>
1629
+ </div>
1630
+ </template>
1631
+ </dom-module><dom-module id="tr-ui-a-single-cpu-slice-sub-view">
1632
+ <template>
1633
+ <style>
1634
+ table {
1635
+ border-collapse: collapse;
1636
+ border-width: 0;
1637
+ margin-bottom: 25px;
1638
+ width: 100%;
1639
+ }
1640
+
1641
+ table tr > td:first-child {
1642
+ padding-left: 2px;
1643
+ }
1644
+
1645
+ table tr > td {
1646
+ padding: 2px 4px 2px 4px;
1647
+ vertical-align: text-top;
1648
+ width: 150px;
1649
+ }
1650
+
1651
+ table td td {
1652
+ padding: 0 0 0 0;
1653
+ width: auto;
1654
+ }
1655
+ tr {
1656
+ vertical-align: top;
1657
+ }
1658
+
1659
+ tr:nth-child(2n+0) {
1660
+ background-color: #e2e2e2;
1661
+ }
1662
+ </style>
1663
+ <table>
1664
+ <tbody><tr>
1665
+ <td>Running process:</td><td id="process-name"></td>
1666
+ </tr>
1667
+ <tr>
1668
+ <td>Running thread:</td><td id="thread-name"></td>
1669
+ </tr>
1670
+ <tr>
1671
+ <td>Start:</td>
1672
+ <td>
1673
+ <tr-v-ui-scalar-span id="start">
1674
+ </tr-v-ui-scalar-span>
1675
+ </td>
1676
+ </tr>
1677
+ <tr>
1678
+ <td>Duration:</td>
1679
+ <td>
1680
+ <tr-v-ui-scalar-span id="duration">
1681
+ </tr-v-ui-scalar-span>
1682
+ </td>
1683
+ </tr>
1684
+ <tr>
1685
+ <td>Active slices:</td><td id="running-thread"></td>
1686
+ </tr>
1687
+ <tr>
1688
+ <td>Args:</td>
1689
+ <td>
1690
+ <tr-ui-a-generic-object-view id="args">
1691
+ </tr-ui-a-generic-object-view>
1692
+ </td>
1693
+ </tr>
1694
+ </tbody></table>
1695
+ </template>
1696
+ </dom-module><dom-module id="tr-ui-a-single-flow-event-sub-view">
1697
+ <template>
1698
+ <style>
1699
+ :host {
1700
+ display: block;
1701
+ }
1702
+ </style>
1703
+ <tr-ui-a-single-event-sub-view id="singleEventSubView">
1704
+ </tr-ui-a-single-event-sub-view>
1705
+ </template>
1706
+ </dom-module><dom-module id="tr-ui-a-single-frame-sub-view">
1707
+ <template>
1708
+ <style>
1709
+ :host {
1710
+ display: flex;
1711
+ flex-direction: column;
1712
+ }
1713
+ #asv {
1714
+ flex: 0 0 auto;
1715
+ align-self: stretch;
1716
+ }
1717
+ </style>
1718
+ <tr-ui-a-alert-sub-view id="asv">
1719
+ </tr-ui-a-alert-sub-view>
1720
+ </template>
1721
+ </dom-module><dom-module id="tr-ui-a-single-instant-event-sub-view">
1722
+ <template>
1723
+ <style>
1724
+ :host {
1725
+ display: block;
1726
+ }
1727
+ </style>
1728
+ <div id="content"></div>
1729
+ </template>
1730
+ </dom-module><dom-module id="tr-ui-a-single-object-instance-sub-view">
1731
+ <template>
1732
+ <style>
1733
+ :host {
1734
+ display: block;
1735
+ }
1736
+
1737
+ #snapshots > * {
1738
+ display: block;
1739
+ }
1740
+
1741
+ :host {
1742
+ overflow: auto;
1743
+ display: block;
1744
+ }
1745
+
1746
+ * {
1747
+ -webkit-user-select: text;
1748
+ }
1749
+
1750
+ .title {
1751
+ border-bottom: 1px solid rgb(128, 128, 128);
1752
+ font-size: 110%;
1753
+ font-weight: bold;
1754
+ }
1755
+
1756
+ td, th {
1757
+ font-family: monospace;
1758
+ vertical-align: top;
1759
+ }
1760
+ </style>
1761
+ <div id="content"></div>
1762
+ </template>
1763
+ </dom-module><dom-module id="tr-ui-a-single-object-snapshot-sub-view">
1764
+ <template>
1765
+ <style>
1766
+ #args {
1767
+ white-space: pre;
1768
+ }
1769
+
1770
+ :host {
1771
+ overflow: auto;
1772
+ display: flex;
1773
+ }
1774
+
1775
+ ::content * {
1776
+ -webkit-user-select: text;
1777
+ }
1778
+
1779
+ ::content .title {
1780
+ border-bottom: 1px solid rgb(128, 128, 128);
1781
+ font-size: 110%;
1782
+ font-weight: bold;
1783
+ }
1784
+
1785
+ ::content td, th {
1786
+ font-family: monospace;
1787
+ vertical-align: top;
1788
+ }
1789
+ </style>
1790
+ <slot></slot>
1791
+ </template>
1792
+ </dom-module><dom-module id="tr-ui-a-power-sample-table">
1793
+ <template>
1794
+ <style>
1795
+ :host {
1796
+ display: flex;
1797
+ font-size: 12px;
1798
+ }
1799
+ </style>
1800
+ <tr-ui-b-table id="table"></tr-ui-b-table>
1801
+ </template>
1802
+ </dom-module><dom-module id="tr-ui-a-single-power-sample-sub-view">
1803
+ <template>
1804
+ <style>
1805
+ :host { display: block; }
1806
+ </style>
1807
+ <tr-ui-a-power-sample-table id="samplesTable">
1808
+ </tr-ui-a-power-sample-table>
1809
+ </template>
1810
+ </dom-module><dom-module id="tr-ui-a-single-sample-sub-view">
1811
+ <template>
1812
+ <style>
1813
+ :host {
1814
+ display: flex;
1815
+ font-size: 12px;
1816
+ }
1817
+ </style>
1818
+ <tr-ui-b-table id="content"></tr-ui-b-table>
1819
+ </template>
1820
+ </dom-module><dom-module id="tr-ui-a-single-thread-slice-sub-view">
1821
+ <template>
1822
+ <style>
1823
+ :host {
1824
+ display: flex;
1825
+ flex-direction: row;
1826
+ }
1827
+ #events {
1828
+ display: flex;
1829
+ flex-direction: column;
1830
+ }
1831
+
1832
+ </style>
1833
+ <tr-ui-a-single-event-sub-view id="content"></tr-ui-a-single-event-sub-view>
1834
+ <div id="events">
1835
+ <tr-ui-a-related-events id="relatedEvents">
1836
+ </tr-ui-a-related-events>
1837
+ </div>
1838
+ </template>
1839
+ </dom-module><dom-module id="tr-ui-a-single-thread-time-slice-sub-view">
1840
+ <template>
1841
+ <style>
1842
+ table {
1843
+ border-collapse: collapse;
1844
+ border-width: 0;
1845
+ margin-bottom: 25px;
1846
+ width: 100%;
1847
+ }
1848
+
1849
+ table tr > td:first-child {
1850
+ padding-left: 2px;
1851
+ }
1852
+
1853
+ table tr > td {
1854
+ padding: 2px 4px 2px 4px;
1855
+ vertical-align: text-top;
1856
+ width: 150px;
1857
+ }
1858
+
1859
+ table td td {
1860
+ padding: 0 0 0 0;
1861
+ width: auto;
1862
+ }
1863
+ tr {
1864
+ vertical-align: top;
1865
+ }
1866
+
1867
+ tr:nth-child(2n+0) {
1868
+ background-color: #e2e2e2;
1869
+ }
1870
+ </style>
1871
+ <table>
1872
+ <tbody><tr>
1873
+ <td>Running process:</td><td id="process-name"></td>
1874
+ </tr>
1875
+ <tr>
1876
+ <td>Running thread:</td><td id="thread-name"></td>
1877
+ </tr>
1878
+ <tr>
1879
+ <td>State:</td>
1880
+ <td><b><span id="state"></span></b></td>
1881
+ </tr>
1882
+ <tr>
1883
+ <td>Start:</td>
1884
+ <td>
1885
+ <tr-v-ui-scalar-span id="start">
1886
+ </tr-v-ui-scalar-span>
1887
+ </td>
1888
+ </tr>
1889
+ <tr>
1890
+ <td>Duration:</td>
1891
+ <td>
1892
+ <tr-v-ui-scalar-span id="duration">
1893
+ </tr-v-ui-scalar-span>
1894
+ </td>
1895
+ </tr>
1896
+
1897
+ <tr>
1898
+ <td>On CPU:</td><td id="on-cpu"></td>
1899
+ </tr>
1900
+
1901
+ <tr>
1902
+ <td>Running instead:</td><td id="running-instead"></td>
1903
+ </tr>
1904
+
1905
+ <tr>
1906
+ <td>Args:</td><td id="args"></td>
1907
+ </tr>
1908
+ </tbody></table>
1909
+ </template>
1910
+ </dom-module><dom-module id="tr-ui-a-single-user-expectation-sub-view">
1911
+ <template>
1912
+ <style>
1913
+ :host {
1914
+ display: flex;
1915
+ flex-direction: row;
1916
+ }
1917
+ #events {
1918
+ display: flex;
1919
+ flex-direction: column;
1920
+ }
1921
+ </style>
1922
+ <tr-ui-a-single-event-sub-view id="realView"></tr-ui-a-single-event-sub-view>
1923
+ <div id="events">
1924
+ <tr-ui-a-user-expectation-related-samples-table id="relatedSamples"></tr-ui-a-user-expectation-related-samples-table>
1925
+ </div>
1926
+ </template>
1927
+ </dom-module><dom-module id="tr-ui-a-analysis-view">
1928
+ <template>
1929
+ <style>
1930
+ :host {
1931
+ background-color: white;
1932
+ display: flex;
1933
+ flex-direction: column;
1934
+ height: 275px;
1935
+ overflow: auto;
1936
+ }
1937
+
1938
+ :host(.tall-mode) {
1939
+ height: 525px;
1940
+ }
1941
+ </style>
1942
+ <slot></slot>
1943
+ </template>
1944
+ </dom-module><dom-module id="tr-ui-b-dropdown">
1945
+ <template>
1946
+ <style>
1947
+ button {
1948
+ @apply --dropdown-button;
1949
+ }
1950
+ button.open {
1951
+ @apply --dropdown-button-open;
1952
+ }
1953
+ dialog {
1954
+ position: absolute;
1955
+ margin: 0;
1956
+ padding: 1em;
1957
+ border: 1px solid darkgrey;
1958
+ @apply --dropdown-dialog;
1959
+ }
1960
+ </style>
1961
+
1962
+ <button id="button" on-tap="open">[[label]]</button>
1963
+
1964
+ <dialog id="dialog" on-cancel="close" on-tap="onDialogTap_">
1965
+ <slot></slot>
1966
+ </dialog>
1967
+ </template>
1968
+ </dom-module><dom-module id="tr-ui-b-toolbar-button">
1969
+ <template>
1970
+ <style>
1971
+ :host {
1972
+ display: flex;
1973
+ background-color: #f8f8f8;
1974
+ border: 1px solid rgba(0, 0, 0, 0.5);
1975
+ color: rgba(0,0,0,0.8);
1976
+ justify-content: center;
1977
+ align-self: stretch;
1978
+ min-width: 23px;
1979
+ }
1980
+
1981
+ :host(:hover) {
1982
+ background-color: rgba(255, 255, 255, 1.0);
1983
+ border-color: rgba(0, 0, 0, 0.8);
1984
+ box-shadow: 0 0 .05em rgba(0, 0, 0, 0.4);
1985
+ color: rgba(0, 0, 0, 1);
1986
+ }
1987
+
1988
+ #aligner {
1989
+ display: flex;
1990
+ flex: 0 0 auto;
1991
+ align-self: center;
1992
+ }
1993
+ </style>
1994
+ <div id="aligner">
1995
+ <slot></slot>
1996
+ </div>
1997
+ </template>
1998
+ </dom-module><dom-module id="tr-ui-b-mouse-mode-icon">
1999
+ <template>
2000
+ <style>
2001
+ :host {
2002
+ display: block;
2003
+ background-image: url(data:image/png;base64,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);
2004
+ width: 27px;
2005
+ height: 30px;
2006
+ }
2007
+ :host.active {
2008
+ cursor: auto;
2009
+ }
2010
+ </style>
2011
+ </template>
2012
+ </dom-module><dom-module id="tr-ui-b-mouse-mode-selector">
2013
+ <template>
2014
+ <style>
2015
+ :host {
2016
+
2017
+ -webkit-user-drag: element;
2018
+ -webkit-user-select: none;
2019
+
2020
+ background: #DDD;
2021
+ border: 1px solid #BBB;
2022
+ border-radius: 4px;
2023
+ box-shadow: 0 1px 2px rgba(0,0,0,0.2);
2024
+ left: calc(100% - 120px);
2025
+ position: absolute;
2026
+ top: 100px;
2027
+ user-select: none;
2028
+ width: 29px;
2029
+ z-index: 20;
2030
+ }
2031
+
2032
+ .drag-handle {
2033
+ background: url(data:image/png;base64,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) 2px 3px no-repeat;
2034
+ background-repeat: no-repeat;
2035
+ border-bottom: 1px solid #BCBCBC;
2036
+ cursor: move;
2037
+ display: block;
2038
+ height: 13px;
2039
+ width: 27px;
2040
+ }
2041
+
2042
+ .tool-button {
2043
+ background-position: center center;
2044
+ background-repeat: no-repeat;
2045
+ border-bottom: 1px solid #BCBCBC;
2046
+ border-top: 1px solid #F1F1F1;
2047
+ cursor: pointer;
2048
+ }
2049
+
2050
+ .buttons > .tool-button:last-child {
2051
+ border-bottom: none;
2052
+ }
2053
+
2054
+ </style>
2055
+ <div class="drag-handle"></div>
2056
+ <div class="buttons">
2057
+ </div>
2058
+ </template>
2059
+ </dom-module><style>
2060
+ .track-button{background-color:rgba(255,255,255,0.5);border:1px solid rgba(0,0,0,0.1);color:rgba(0,0,0,0.2);font-size:10px;height:12px;text-align:center;width:12px}.track-button:hover{background-color:rgba(255,255,255,1.0);border:1px solid rgba(0,0,0,0.5);box-shadow:0 0 .05em rgba(0,0,0,0.4);color:rgba(0,0,0,1)}.track-close-button{left:2px;position:absolute;top:2px}.track-collapse-button{left:3px;position:absolute;top:2px}
2061
+ </style><style>
2062
+ .drawing-container{display:inline;overflow:auto;overflow-x:hidden;position:relative}.drawing-container-canvas{display:block;pointer-events:none;position:absolute;top:0}
2063
+ </style><dom-module id="tr-ui-b-heading">
2064
+ <template>
2065
+ <style>
2066
+ :host {
2067
+ background-color: rgb(243, 245, 247);
2068
+ border-right: 1px solid #8e8e8e;
2069
+ display: block;
2070
+ height: 100%;
2071
+ margin: 0;
2072
+ padding: 0 5px 0 0;
2073
+ }
2074
+
2075
+ heading {
2076
+ display: block;
2077
+ overflow-x: hidden;
2078
+ text-align: left;
2079
+ white-space: nowrap;
2080
+ }
2081
+
2082
+ #arrow {
2083
+ flex: 0 0 auto;
2084
+ font-family: sans-serif;
2085
+ margin-left: 5px;
2086
+ margin-right: 5px;
2087
+ width: 8px;
2088
+ }
2089
+
2090
+ #link, #heading_content {
2091
+ display: none;
2092
+ }
2093
+ </style>
2094
+ <heading id="heading" on-click="onHeadingDivClicked_">
2095
+ <!-- WebComponents V0 origin trial token for https://*.ui.perfetto.dev
2096
+ Expires 1 Feb 2021. https://crbug.com/1021137. -->
2097
+ <meta http-equiv="origin-trial" content="AjGFDFU57Af4e5OJJQd7kmYR0nEiObDCHkev6BBWzhGohACl1ri+pMhaVe9V8dDBaXDkWy4g7WYj3c5GiPwatgIAAABreyJvcmlnaW4iOiJodHRwczovL3VpLnBlcmZldHRvLmRldjo0NDMiLCJmZWF0dXJlIjoiV2ViQ29tcG9uZW50c1YwIiwiZXhwaXJ5IjoxNjEyMjIzOTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZX0=">
2098
+
2099
+ <!-- WebComponents V0 origin trial token for http://localhost:10000
2100
+ Expires 28 Jan 2021. https://crbug.com/1021137. -->
2101
+ <meta http-equiv="origin-trial" content="AicMEv5glMGL1lq6ZRsxFJj8xlhn3XDYZrHK0/2KreAD/r62vTFjUBOueeMTxWuU1IlRXqCugRFDD7rY45YEgwkAAABTeyJvcmlnaW4iOiJodHRwOi8vbG9jYWxob3N0OjEwMDAwIiwiZmVhdHVyZSI6IldlYkNvbXBvbmVudHNWMCIsImV4cGlyeSI6MTYxMTg0MDczNH0=">
2102
+
2103
+ <!-- WebComponents V0 origin trial token for https://staging-dot-perfetto-ui.appspot.com
2104
+ Expires 1 Feb 2021. https://crbug.com/1021137. -->
2105
+ <meta http-equiv="origin-trial" content="Au1cwnWfBB/GCD22HnNZE93/KamhGDsz8BZbEewICJB2PRtW+E1bobrtZbTZs8q5748uRiKXPvgaut5JOZ8jSw4AAABseyJvcmlnaW4iOiJodHRwczovL3N0YWdpbmctZG90LXBlcmZldHRvLXVpLmFwcHNwb3QuY29tOjQ0MyIsImZlYXR1cmUiOiJXZWJDb21wb25lbnRzVjAiLCJleHBpcnkiOjE2MTIyMjM5OTl9">
2106
+
2107
+ <!-- WebComponents V0 origin trial token for https://storage.googleapis.com/
2108
+ Expires 1 Feb 2021. https://crbug.com/1021137. -->
2109
+ <meta http-equiv="origin-trial" content="AtobKUpdVFIb6cx2Ev0EbAFX4SzLuXPnsnADRA8JV5w4B64q65gz42shquyLLNd2QP9rY22oNGxbatpTO0kd2AIAAABfeyJvcmlnaW4iOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb206NDQzIiwiZmVhdHVyZSI6IldlYkNvbXBvbmVudHNWMCIsImV4cGlyeSI6MTYxMjIyMzk5OX0=">
2110
+ <span id="arrow"></span>
2111
+ <span id="heading_content"></span>
2112
+ <tr-ui-a-analysis-link id="link"></tr-ui-a-analysis-link>
2113
+ </heading>
2114
+ </template>
2115
+ </dom-module><style>
2116
+ .letter-dot-track {
2117
+ height: 18px;
2118
+ }
2119
+ </style><style>
2120
+ .chart-track {
2121
+ height: 30px;
2122
+ position: relative;
2123
+ }
2124
+ </style><style>
2125
+ .cpu-usage-track {
2126
+ height: 90px;
2127
+ }
2128
+ </style><style>
2129
+ .power-series-track {
2130
+ height: 90px;
2131
+ }
2132
+ </style><style>
2133
+ .spacing-track{height:4px}
2134
+ </style><style>
2135
+ .rect-track{height:18px}
2136
+ </style><style>
2137
+ .object-instance-track{height:18px}
2138
+ </style><style>
2139
+ .thread-track{flex-direction:column;display:flex;position:relative}
2140
+ </style><style>
2141
+ .process-track-header{display:flex;flex:0 0 auto;background-image:-webkit-gradient(linear,0 0,100% 0,from(#E5E5E5),to(#D1D1D1));border-bottom:1px solid #8e8e8e;border-top:1px solid white;font-size:75%}.process-track-name{flex-grow:1}.process-track-name:before{content:'\25B8';padding:0 5px}.process-track-base.expanded .process-track-name:before{content:'\25BE'}.process-track-close{color:black;border:1px solid transparent;padding:0px 2px}.process-track-close:hover{border:1px solid grey}
2142
+ </style><style>
2143
+ .model-track {
2144
+ flex-grow: 1;
2145
+ }
2146
+ </style><style>
2147
+ .x-axis-track {
2148
+ height: 12px;
2149
+ }
2150
+
2151
+ .x-axis-track.tall-mode {
2152
+ height: 30px;
2153
+ }
2154
+ </style><dom-module id="tr-ui-timeline-track-view">
2155
+ <template>
2156
+ <style>
2157
+ :host {
2158
+ flex-direction: column;
2159
+ display: flex;
2160
+ position: relative;
2161
+ }
2162
+
2163
+ :host ::content * {
2164
+ -webkit-user-select: none;
2165
+ cursor: default;
2166
+ }
2167
+
2168
+ #drag_box {
2169
+ background-color: rgba(0, 0, 255, 0.25);
2170
+ border: 1px solid rgb(0, 0, 96);
2171
+ font-size: 75%;
2172
+ position: fixed;
2173
+ }
2174
+
2175
+ #hint_text {
2176
+ position: absolute;
2177
+ bottom: 6px;
2178
+ right: 6px;
2179
+ font-size: 8pt;
2180
+ }
2181
+ </style>
2182
+ <slot></slot>
2183
+
2184
+ <div id="drag_box"></div>
2185
+ <div id="hint_text"></div>
2186
+
2187
+ <tv-ui-b-hotkey-controller id="hotkey_controller">
2188
+ </tv-ui-b-hotkey-controller>
2189
+ </template>
2190
+ </dom-module><dom-module id="tr-ui-find-control">
2191
+ <template>
2192
+ <style>
2193
+ :host {
2194
+ -webkit-user-select: none;
2195
+ display: flex;
2196
+ position: relative;
2197
+ }
2198
+ input {
2199
+ -webkit-user-select: auto;
2200
+ background-color: #f8f8f8;
2201
+ border: 1px solid rgba(0, 0, 0, 0.5);
2202
+ box-sizing: border-box;
2203
+ margin: 0;
2204
+ padding: 0;
2205
+ width: 170px;
2206
+ }
2207
+ input:focus {
2208
+ background-color: white;
2209
+ }
2210
+ tr-ui-b-toolbar-button {
2211
+ border-left: none;
2212
+ margin: 0;
2213
+ }
2214
+ #hitCount {
2215
+ left: 0;
2216
+ opacity: 0.25;
2217
+ pointer-events: none;
2218
+ position: absolute;
2219
+ text-align: right;
2220
+ top: 2px;
2221
+ width: 167px;
2222
+ z-index: 1;
2223
+ }
2224
+ #spinner {
2225
+ visibility: hidden;
2226
+ width: 8px;
2227
+ height: 8px;
2228
+ left: 154px;
2229
+ pointer-events: none;
2230
+ position: absolute;
2231
+ top: 4px;
2232
+ z-index: 1;
2233
+
2234
+ border: 2px solid transparent;
2235
+ border-bottom: 2px solid rgba(0, 0, 0, 0.5);
2236
+ border-right: 2px solid rgba(0, 0, 0, 0.5);
2237
+ border-radius: 50%;
2238
+ }
2239
+ @keyframes spin { 100% { transform: rotate(360deg); } }
2240
+ </style>
2241
+
2242
+ <input id="filter" on-blur="filterBlur" on-focus="filterFocus" on-input="filterTextChanged" on-keydown="filterKeyDown" on-mouseup="filterMouseUp" type="text"/>
2243
+ <div id="spinner"></div>
2244
+ <tr-ui-b-toolbar-button on-click="findPrevious">
2245
+
2246
+ </tr-ui-b-toolbar-button>
2247
+ <tr-ui-b-toolbar-button on-click="findNext">
2248
+
2249
+ </tr-ui-b-toolbar-button>
2250
+ <div id="hitCount">0 of 0</div>
2251
+ </template>
2252
+ </dom-module><dom-module id="tr-ui-scripting-control">
2253
+ <template>
2254
+ <style>
2255
+ :host {
2256
+ flex: 1 1 auto;
2257
+ }
2258
+ .root {
2259
+ font-family: monospace;
2260
+ cursor: text;
2261
+
2262
+ padding: 2px;
2263
+ margin: 2px;
2264
+ border: 1px solid rgba(0, 0, 0, 0.5);
2265
+ background: white;
2266
+
2267
+ height: 100px;
2268
+ overflow-y: auto;
2269
+
2270
+ transition-property: opacity, height, padding, margin;
2271
+ transition-duration: .2s;
2272
+ transition-timing-function: ease-out;
2273
+ }
2274
+ .hidden {
2275
+ margin-top: 0px;
2276
+ margin-bottom: 0px;
2277
+ padding-top: 0px;
2278
+ padding-bottom: 0px;
2279
+ height: 0px;
2280
+ opacity: 0;
2281
+ }
2282
+ .focused {
2283
+ outline: auto 5px -webkit-focus-ring-color;
2284
+ }
2285
+ #history {
2286
+ -webkit-user-select: text;
2287
+ color: #777;
2288
+ }
2289
+ #promptContainer {
2290
+ display: flex;
2291
+ }
2292
+ #promptMark {
2293
+ width: 1em;
2294
+ color: #468;
2295
+ }
2296
+ #prompt {
2297
+ flex: 1;
2298
+ width: 100%;
2299
+ border: none !important;
2300
+ background-color: inherit !important;
2301
+ font: inherit !important;
2302
+ text-overflow: clip !important;
2303
+ text-decoration: none !important;
2304
+ }
2305
+ #prompt:focus {
2306
+ outline: none;
2307
+ }
2308
+ </style>
2309
+
2310
+ <div class="root hidden" id="root" on-focus="onConsoleFocus" tabindex="0">
2311
+ <div id="history"></div>
2312
+ <div id="promptContainer">
2313
+ <span id="promptMark">&gt;</span>
2314
+ <input id="prompt" on-blur="onConsoleBlur" on-keydown="promptKeyDown" on-keypress="promptKeyPress" type="text"/>
2315
+ </div>
2316
+ </div>
2317
+ </template>
2318
+ </dom-module><dom-module id="tr-ui-side-panel-container">
2319
+ <template>
2320
+ <style>
2321
+ :host {
2322
+ align-items: stretch;
2323
+ display: flex;
2324
+ background-color: white;
2325
+ }
2326
+
2327
+ :host([expanded]) > #side_panel_drag_handle,
2328
+ :host([expanded]) > active-panel-container {
2329
+ flex: 1 1 auto;
2330
+ border-left: 1px solid black;
2331
+ display: flex;
2332
+ }
2333
+
2334
+ :host(:not([expanded])) > #side_panel_drag_handle,
2335
+ :host(:not([expanded])) > active-panel-container {
2336
+ display: none;
2337
+ }
2338
+
2339
+ active-panel-container {
2340
+ display: flex;
2341
+ }
2342
+
2343
+ tab-strip {
2344
+ flex: 0 0 auto;
2345
+ flex-direction: column;
2346
+ -webkit-user-select: none;
2347
+ background-color: rgb(236, 236, 236);
2348
+ border-left: 1px solid black;
2349
+ cursor: default;
2350
+ display: flex;
2351
+ min-width: 18px; /* workaround for flexbox and writing-mode mixing bug */
2352
+ padding: 10px 0 10px 0;
2353
+ font-size: 12px;
2354
+ }
2355
+
2356
+ tab-strip > tab-strip-label {
2357
+ flex-shrink: 0;
2358
+ -webkit-writing-mode: vertical-rl;
2359
+ white-space: nowrap;
2360
+ display: inline;
2361
+ margin-right: 1px;
2362
+ min-height: 20px;
2363
+ padding: 15px 3px 15px 1px;
2364
+ }
2365
+
2366
+ tab-strip >
2367
+ tab-strip-label:not([enabled]) {
2368
+ color: rgb(128, 128, 128);
2369
+ }
2370
+
2371
+ tab-strip > tab-strip-label[selected] {
2372
+ background-color: white;
2373
+ border: 1px solid rgb(163, 163, 163);
2374
+ border-left: none;
2375
+ padding: 14px 2px 14px 1px;
2376
+ }
2377
+
2378
+ #active_panel_container {
2379
+ overflow: auto;
2380
+ }
2381
+ </style>
2382
+
2383
+ <tr-ui-b-drag-handle id="side_panel_drag_handle"></tr-ui-b-drag-handle>
2384
+ <active-panel-container id="active_panel_container">
2385
+ </active-panel-container>
2386
+ <tab-strip id="tab_strip"></tab-strip>
2387
+ </template>
2388
+ </dom-module><dom-module id="tr-ui-timeline-view-help-overlay">
2389
+ <template>
2390
+ <style>
2391
+ :host {
2392
+ flex: 1 1 auto;
2393
+ flex-direction: row;
2394
+ display: flex;
2395
+ width: 700px;
2396
+ }
2397
+ .column {
2398
+ width: 50%;
2399
+ }
2400
+ h2 {
2401
+ font-size: 1.2em;
2402
+ margin: 0;
2403
+ margin-top: 5px;
2404
+ text-align: center;
2405
+ }
2406
+ h3 {
2407
+ margin: 0;
2408
+ margin-left: 126px;
2409
+ margin-top: 10px;
2410
+ }
2411
+ .pair {
2412
+ flex: 1 1 auto;
2413
+ flex-direction: row;
2414
+ display: flex;
2415
+ }
2416
+ .command {
2417
+ font-family: monospace;
2418
+ margin-right: 5px;
2419
+ text-align: right;
2420
+ width: 150px;
2421
+ }
2422
+ .action {
2423
+ font-size: 0.9em;
2424
+ text-align: left;
2425
+ width: 200px;
2426
+ }
2427
+ tr-ui-b-mouse-mode-icon {
2428
+ border: 1px solid #888;
2429
+ border-radius: 3px;
2430
+ box-shadow: inset 0 0 2px rgba(0,0,0,0.3);
2431
+ display: inline-block;
2432
+ margin-right: 1px;
2433
+ position: relative;
2434
+ top: 4px;
2435
+ }
2436
+ .mouse-mode-icon.pan-mode {
2437
+ background-position: -1px -11px;
2438
+ }
2439
+ .mouse-mode-icon.select-mode {
2440
+ background-position: -1px -41px;
2441
+ }
2442
+ .mouse-mode-icon.zoom-mode {
2443
+ background-position: -1px -71px;
2444
+ }
2445
+ .mouse-mode-icon.timing-mode {
2446
+ background-position: -1px -101px;
2447
+ }
2448
+ </style>
2449
+ <div class="column left">
2450
+ <h2>Navigation</h2>
2451
+ <div class="pair">
2452
+ <div class="command">w/s</div>
2453
+ <div class="action">Zoom in/out (+shift: faster)</div>
2454
+ </div>
2455
+
2456
+ <div class="pair">
2457
+ <div class="command">a/d</div>
2458
+ <div class="action">Pan left/right (+shift: faster)</div>
2459
+ </div>
2460
+
2461
+ <div class="pair">
2462
+ <div class="command">→/shift-TAB</div>
2463
+ <div class="action">Select previous event</div>
2464
+ </div>
2465
+
2466
+ <div class="pair">
2467
+ <div class="command">←/TAB</div>
2468
+ <div class="action">Select next event</div>
2469
+ </div>
2470
+
2471
+ <h2>Mouse Controls</h2>
2472
+ <div class="pair">
2473
+ <div class="command">click</div>
2474
+ <div class="action">Select event</div>
2475
+ </div>
2476
+ <div class="pair">
2477
+ <div class="command">alt-mousewheel</div>
2478
+ <div class="action">Zoom in/out</div>
2479
+ </div>
2480
+
2481
+ <h3>
2482
+ <tr-ui-b-mouse-mode-icon mode-name="SELECTION"></tr-ui-b-mouse-mode-icon>
2483
+ Select mode
2484
+ </h3>
2485
+ <div class="pair">
2486
+ <div class="command">drag</div>
2487
+ <div class="action">Box select</div>
2488
+ </div>
2489
+
2490
+ <div class="pair">
2491
+ <div class="command"><span class="mod"></span>-click/drag</div>
2492
+ <div class="action">Add events to the current selection</div>
2493
+ </div>
2494
+
2495
+ <div class="pair">
2496
+ <div class="command">double click</div>
2497
+ <div class="action">Select all events with same title</div>
2498
+ </div>
2499
+
2500
+ <h3>
2501
+ <tr-ui-b-mouse-mode-icon mode-name="PANSCAN"></tr-ui-b-mouse-mode-icon>
2502
+ Pan mode
2503
+ </h3>
2504
+ <div class="pair">
2505
+ <div class="command">drag</div>
2506
+ <div class="action">Pan the view</div>
2507
+ </div>
2508
+
2509
+ <h3>
2510
+ <tr-ui-b-mouse-mode-icon mode-name="ZOOM"></tr-ui-b-mouse-mode-icon>
2511
+ Zoom mode
2512
+ </h3>
2513
+ <div class="pair">
2514
+ <div class="command">drag</div>
2515
+ <div class="action">Zoom in/out by dragging up/down</div>
2516
+ </div>
2517
+
2518
+ <h3>
2519
+ <tr-ui-b-mouse-mode-icon mode-name="TIMING"></tr-ui-b-mouse-mode-icon>
2520
+ Timing mode
2521
+ </h3>
2522
+ <div class="pair">
2523
+ <div class="command">drag</div>
2524
+ <div class="action">Create or move markers</div>
2525
+ </div>
2526
+
2527
+ <div class="pair">
2528
+ <div class="command">double click</div>
2529
+ <div class="action">Set marker range to slice</div>
2530
+ </div>
2531
+ </div>
2532
+
2533
+ <div class="column right">
2534
+ <h2>General</h2>
2535
+ <div class="pair">
2536
+ <div class="command">1-4</div>
2537
+ <div class="action">Switch mouse mode</div>
2538
+ </div>
2539
+
2540
+ <div class="pair">
2541
+ <div class="command">shift</div>
2542
+ <div class="action">Hold for temporary select</div>
2543
+ </div>
2544
+
2545
+ <div class="pair">
2546
+ <div class="command">space</div>
2547
+ <div class="action">Hold for temporary pan</div>
2548
+ </div>
2549
+
2550
+ <div class="pair">
2551
+ <div class="command">/</div>
2552
+ <div class="action">Search</div>
2553
+ </div>
2554
+
2555
+ <div class="pair">
2556
+ <div class="command">enter</div>
2557
+ <div class="action">Step through search results</div>
2558
+ </div>
2559
+
2560
+ <div class="pair">
2561
+ <div class="command">f</div>
2562
+ <div class="action">Zoom into selection</div>
2563
+ </div>
2564
+
2565
+ <div class="pair">
2566
+ <div class="command">z/0</div>
2567
+ <div class="action">Reset zoom and pan</div>
2568
+ </div>
2569
+
2570
+ <div class="pair">
2571
+ <div class="command">g/G</div>
2572
+ <div class="action">Toggle 60hz grid</div>
2573
+ </div>
2574
+
2575
+ <div class="pair">
2576
+ <div class="command">v</div>
2577
+ <div class="action">Highlight VSync</div>
2578
+ </div>
2579
+
2580
+ <div class="pair">
2581
+ <div class="command">h</div>
2582
+ <div class="action">Toggle low/high details</div>
2583
+ </div>
2584
+
2585
+ <div class="pair">
2586
+ <div class="command">m</div>
2587
+ <div class="action">Mark current selection</div>
2588
+ </div>
2589
+
2590
+ <div class="pair">
2591
+ <div class="command">p</div>
2592
+ <div class="action">Select power samples over current selection interval</div>
2593
+ </div>
2594
+
2595
+ <div class="pair">
2596
+ <div class="command">`</div>
2597
+ <div class="action">Show or hide the scripting console</div>
2598
+ </div>
2599
+
2600
+ <div class="pair">
2601
+ <div class="command">?</div>
2602
+ <div class="action">Show help</div>
2603
+ </div>
2604
+ </div>
2605
+ </template>
2606
+ </dom-module><dom-module id="tr-ui-timeline-view-metadata-overlay">
2607
+ <template>
2608
+ <style>
2609
+ :host {
2610
+ width: 700px;
2611
+
2612
+ overflow: auto;
2613
+ }
2614
+ </style>
2615
+ <tr-ui-b-table id="table"></tr-ui-b-table>
2616
+ </template>
2617
+ </dom-module><dom-module id="tr-ui-timeline-view">
2618
+ <template>
2619
+ <style>
2620
+ :host {
2621
+ flex-direction: column;
2622
+ cursor: default;
2623
+ display: flex;
2624
+ font-family: sans-serif;
2625
+ padding: 0;
2626
+ }
2627
+
2628
+ #control {
2629
+ background-color: #e6e6e6;
2630
+ background-image: -webkit-gradient(linear, 0 0, 0 100%,
2631
+ from(#E5E5E5), to(#D1D1D1));
2632
+ flex: 0 0 auto;
2633
+ overflow-x: auto;
2634
+ }
2635
+
2636
+ #control::-webkit-scrollbar { height: 0px; }
2637
+
2638
+ #control > #bar {
2639
+ font-size: 12px;
2640
+ display: flex;
2641
+ flex-direction: row;
2642
+ margin: 1px;
2643
+ }
2644
+
2645
+ #control > #bar > #title {
2646
+ display: flex;
2647
+ align-items: center;
2648
+ padding-left: 8px;
2649
+ padding-right: 8px;
2650
+ flex: 1 1 auto;
2651
+ overflow: hidden;
2652
+ white-space: nowrap;
2653
+ }
2654
+
2655
+ #control > #bar > #left_controls,
2656
+ #control > #bar > #right_controls {
2657
+ display: flex;
2658
+ flex-direction: row;
2659
+ align-items: stretch;
2660
+ flex-shrink: 0;
2661
+ }
2662
+
2663
+ #control > #bar > #left_controls > * { margin-right: 2px; }
2664
+ #control > #bar > #right_controls > * { margin-left: 2px; }
2665
+ #control > #collapsing_controls { display: flex; }
2666
+
2667
+ middle-container {
2668
+ flex: 1 1 auto;
2669
+ flex-direction: row;
2670
+ border-bottom: 1px solid #8e8e8e;
2671
+ display: flex;
2672
+ min-height: 0;
2673
+ }
2674
+
2675
+ middle-container ::content track-view-container {
2676
+ flex: 1 1 auto;
2677
+ display: flex;
2678
+ min-height: 0;
2679
+ min-width: 0;
2680
+ overflow-x: hidden;
2681
+ }
2682
+
2683
+ middle-container ::content track-view-container > * { flex: 1 1 auto; }
2684
+ middle-container > x-timeline-view-side-panel-container { flex: 0 0 auto; }
2685
+ tr-ui-b-drag-handle { flex: 0 0 auto; }
2686
+ tr-ui-a-analysis-view { flex: 0 0 auto; }
2687
+
2688
+ tr-ui-b-dropdown {
2689
+ --dropdown-button: {
2690
+ -webkit-appearance: none;
2691
+ align-items: normal;
2692
+ background-color: rgb(248, 248, 248);
2693
+ border: 1px solid rgba(0, 0, 0, 0.5);
2694
+ box-sizing: content-box;
2695
+ color: rgba(0, 0, 0, 0.8);
2696
+ font-family: sans-serif;
2697
+ font-size: 12px;
2698
+ padding: 2px 5px;
2699
+ }
2700
+ }
2701
+ </style>
2702
+
2703
+ <tv-ui-b-hotkey-controller id="hkc"></tv-ui-b-hotkey-controller>
2704
+ <div id="control">
2705
+ <div id="bar">
2706
+ <div id="left_controls"></div>
2707
+ <div id="title">^_^</div>
2708
+ <div id="right_controls">
2709
+ <tr-ui-b-dropdown id="flow_event_filter_dropdown" label="Flow events"></tr-ui-b-dropdown>
2710
+ <tr-ui-b-dropdown id="process_filter_dropdown" label="Processes"></tr-ui-b-dropdown>
2711
+ <tr-ui-b-toolbar-button id="view_metadata_button">
2712
+ M
2713
+ </tr-ui-b-toolbar-button>
2714
+ <tr-ui-b-dropdown id="view_options_dropdown" label="View Options"></tr-ui-b-dropdown>
2715
+ <tr-ui-find-control id="view_find_control"></tr-ui-find-control>
2716
+ <tr-ui-b-toolbar-button id="view_console_button">
2717
+ »
2718
+ </tr-ui-b-toolbar-button>
2719
+ <tr-ui-b-toolbar-button id="view_help_button">
2720
+ ?
2721
+ </tr-ui-b-toolbar-button>
2722
+ </div>
2723
+ </div>
2724
+ <div id="collapsing_controls"></div>
2725
+ <tr-ui-b-info-bar-group id="import-warnings">
2726
+ </tr-ui-b-info-bar-group>
2727
+ <tr-ui-b-info-bar-group id="polyfill-warning">
2728
+ </tr-ui-b-info-bar-group>
2729
+ </div>
2730
+ <middle-container>
2731
+ <slot></slot>
2732
+
2733
+ <tr-ui-side-panel-container id="side_panel_container">
2734
+ </tr-ui-side-panel-container>
2735
+ </middle-container>
2736
+ <tr-ui-b-drag-handle id="drag_handle"></tr-ui-b-drag-handle>
2737
+ <tr-ui-a-analysis-view id="analysis"></tr-ui-a-analysis-view>
2738
+
2739
+ <tr-v-ui-preferred-display-unit id="display_unit">
2740
+ </tr-v-ui-preferred-display-unit>
2741
+ </template>
2742
+ </dom-module><style>
2743
+ x-profiling-view {
2744
+ flex-direction: column;
2745
+ display: flex;
2746
+ padding: 0;
2747
+ }
2748
+
2749
+ x-profiling-view .controls #save-button {
2750
+ margin-left: 64px !important;
2751
+ }
2752
+
2753
+ x-profiling-view > tr-ui-timeline-view {
2754
+ flex: 1 1 auto;
2755
+ min-height: 0;
2756
+ }
2757
+
2758
+ .report-id-message {
2759
+ -webkit-user-select: text;
2760
+ }
2761
+
2762
+ x-timeline-view-buttons {
2763
+ display: flex;
2764
+ align-items: center;
2765
+ }
2766
+ </style><template id="profiling-view-template">
2767
+ <tr-ui-b-info-bar-group></tr-ui-b-info-bar-group>
2768
+ <x-timeline-view-buttons>
2769
+ <button id="record-button">Record</button>
2770
+ <button id="save-button">Save</button>
2771
+ <button id="load-button">Load</button>
2772
+ </x-timeline-view-buttons>
2773
+ <tr-ui-timeline-view>
2774
+ <track-view-container id="track_view_container"></track-view-container>
2775
+ </tr-ui-timeline-view>
2776
+ </template><dom-module id="tr-ui-e-chrome-cc-display-item-list-item">
2777
+ <template>
2778
+ <style>
2779
+ :host {
2780
+ border-bottom: 1px solid #555;
2781
+ display: block;
2782
+ font-size: 12px;
2783
+ padding: 3px 5px;
2784
+ }
2785
+
2786
+ :host(:hover) {
2787
+ background-color: #f0f0f0;
2788
+ cursor: pointer;
2789
+ }
2790
+
2791
+ .header {
2792
+ font-weight: bold;
2793
+ margin: 2px 0;
2794
+ }
2795
+
2796
+ .header > .extra {
2797
+ background-color: #777;
2798
+ border-radius: 4px;
2799
+ color: white;
2800
+ margin: 0 6px;
2801
+ text-decoration: none;
2802
+ padding: 2px 4px;
2803
+ }
2804
+
2805
+ .raw-details {
2806
+ white-space: pre-wrap;
2807
+ }
2808
+
2809
+ .details > dl {
2810
+ margin: 0;
2811
+ }
2812
+
2813
+ :host(:not([selected])) .details {
2814
+ display: none;
2815
+ }
2816
+ </style>
2817
+ <div class="header">
2818
+ {{name}}
2819
+ <template if="{{_computeIfSKP(richDetails)}}" is="dom-if">
2820
+ <a class="extra" download="drawing.skp" href$="{{_computeHref(richDetails)}}" on-click="{{stopPropagation}}">SKP</a>
2821
+ </template>
2822
+ </div>
2823
+ <div class="details">
2824
+ <template if="{{rawDetails}}" is="dom-if">
2825
+ <div class="raw-details">{{rawDetails}}</div>
2826
+ </template>
2827
+ <template if="{{richDetails}}" is="dom-if">
2828
+ <dl>
2829
+ <template if="{{richDetails.visualRect}}" is="dom-if">
2830
+ <dt>Visual rect</dt>
2831
+ <dd>{{richDetails.visualRect.x}},{{richDetails.visualRect.y}}
2832
+ {{richDetails.visualRect.width}}×{{richDetails.visualRect.height}}
2833
+ </dd>
2834
+ </template>
2835
+ </dl>
2836
+ </template>
2837
+ </div>
2838
+ </template>
2839
+
2840
+ </dom-module><template id="tr-ui-e-chrome-cc-display-item-debugger-template">
2841
+ <left-panel>
2842
+ <display-item-info>
2843
+ <header>
2844
+ <!-- WebComponents V0 origin trial token for https://*.ui.perfetto.dev
2845
+ Expires 1 Feb 2021. https://crbug.com/1021137. -->
2846
+ <meta http-equiv="origin-trial" content="AjGFDFU57Af4e5OJJQd7kmYR0nEiObDCHkev6BBWzhGohACl1ri+pMhaVe9V8dDBaXDkWy4g7WYj3c5GiPwatgIAAABreyJvcmlnaW4iOiJodHRwczovL3VpLnBlcmZldHRvLmRldjo0NDMiLCJmZWF0dXJlIjoiV2ViQ29tcG9uZW50c1YwIiwiZXhwaXJ5IjoxNjEyMjIzOTk5LCJpc1N1YmRvbWFpbiI6dHJ1ZX0=">
2847
+
2848
+ <!-- WebComponents V0 origin trial token for http://localhost:10000
2849
+ Expires 28 Jan 2021. https://crbug.com/1021137. -->
2850
+ <meta http-equiv="origin-trial" content="AicMEv5glMGL1lq6ZRsxFJj8xlhn3XDYZrHK0/2KreAD/r62vTFjUBOueeMTxWuU1IlRXqCugRFDD7rY45YEgwkAAABTeyJvcmlnaW4iOiJodHRwOi8vbG9jYWxob3N0OjEwMDAwIiwiZmVhdHVyZSI6IldlYkNvbXBvbmVudHNWMCIsImV4cGlyeSI6MTYxMTg0MDczNH0=">
2851
+
2852
+ <!-- WebComponents V0 origin trial token for https://staging-dot-perfetto-ui.appspot.com
2853
+ Expires 1 Feb 2021. https://crbug.com/1021137. -->
2854
+ <meta http-equiv="origin-trial" content="Au1cwnWfBB/GCD22HnNZE93/KamhGDsz8BZbEewICJB2PRtW+E1bobrtZbTZs8q5748uRiKXPvgaut5JOZ8jSw4AAABseyJvcmlnaW4iOiJodHRwczovL3N0YWdpbmctZG90LXBlcmZldHRvLXVpLmFwcHNwb3QuY29tOjQ0MyIsImZlYXR1cmUiOiJXZWJDb21wb25lbnRzVjAiLCJleHBpcnkiOjE2MTIyMjM5OTl9">
2855
+
2856
+ <!-- WebComponents V0 origin trial token for https://storage.googleapis.com/
2857
+ Expires 1 Feb 2021. https://crbug.com/1021137. -->
2858
+ <meta http-equiv="origin-trial" content="AtobKUpdVFIb6cx2Ev0EbAFX4SzLuXPnsnADRA8JV5w4B64q65gz42shquyLLNd2QP9rY22oNGxbatpTO0kd2AIAAABfeyJvcmlnaW4iOiJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb206NDQzIiwiZmVhdHVyZSI6IldlYkNvbXBvbmVudHNWMCIsImV4cGlyeSI6MTYxMjIyMzk5OX0=">
2859
+ <span class="title">Display Item List</span>
2860
+ <span class="size"></span>
2861
+ <div class="export">
2862
+ <input class="dlfilename" type="text" value="displayitemlist.json"/>
2863
+ <button class="dlexport">Export display item list</button>
2864
+ </div>
2865
+ <div class="export">
2866
+ <input class="skpfilename" type="text" value="skpicture.skp"/>
2867
+ <button class="skpexport">Export list as SkPicture</button>
2868
+ </div>
2869
+ </header>
2870
+ </display-item-info>
2871
+ </left-panel>
2872
+ <right-panel>
2873
+ <raster-area>
2874
+ <canvas-scroller>
2875
+ <canvas></canvas>
2876
+ </canvas-scroller>
2877
+ </raster-area>
2878
+ </right-panel>
2879
+ </template><template id="quad-stack-view-template">
2880
+ <style>
2881
+ #chrome-left {
2882
+ background-image: url(data:image/png;base64,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);
2883
+ display: none;
2884
+ }
2885
+ #chrome-mid {
2886
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAABICAYAAADRa1RpAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAB3RJTUUH3QcNFycE5v9iFQAAAQtJREFUOMvtkjGSWzEMQx/0eYrM3v8k3vgqycalSwlI8Ufyl3OBFMtGIgUCIEd6PB6RBEASqvfONSrJXrDNbNkQ8ywA2y/SmayW+ZIESTsiyQsxo40xmMS2aUmYbheHpCVd0+UqJGGMsey3mUyldoUvlY3D9rIN0K7Wbe/WbZ+y1yWtaVtrp3VJzAEX6ZVjc2p7b2mtnYhNdl6m05rwtfV/ltx7XypJTpXeO7Y5juOlchzHaWxyrJmuhLapqgIJONv05+srThBgiQpBTSRwGOr3rwccgWHUhJ7P5/YNlbd/2XiL78L/WajP240AQUihfnx84EDJjCHKHjTAbkimQDgBjAJ1/3kHAgEk/gL71AHEWVXPGQAAAABJRU5ErkJggg==);
2887
+ display: none;
2888
+ }
2889
+ #chrome-right {
2890
+ background-image: url(data:image/png;base64,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);
2891
+ display: none;
2892
+ }
2893
+ </style>
2894
+
2895
+ <div id="header"></div>
2896
+ <input id="stacking-distance-slider" max="400" min="1" step="1" type="range"/>
2897
+
2898
+ <div id="canvas-scroller">
2899
+ <canvas id="canvas"></canvas>
2900
+ </div>
2901
+ <img id="chrome-left"/>
2902
+ <img id="chrome-mid"/>
2903
+ <img id="chrome-right"/>
2904
+ </template><template id="tr-ui-e-chrome-cc-layer-tree-quad-stack-view-template">
2905
+ <style>
2906
+ #input-event {
2907
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAMnwAADJ8BPja39wAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAyNSURBVHic7Z1PTCPXHcc/4wWWVbJN2cJSLVqiQJuGpoIGEVWReoBNIlIF5RCRSysOK9EbksUeOHLIIQcULbLEEYk7oqduD6gSRoqUEyK7dCOabOHghCiAE/JntQtesHt4fuM3z2+MZzy2x8ZfaTTjN+Px4/fh9/7Pb6xMJkND4VGk2hloyKkGkJCpASRkagAJmRpAQqYGkJCpASRkaqp2BvzKsizf3w1z38sKc+ZUaQCuAFeB57P7q4AF/Kxsj4GnLrfL+6PDYofQAskCaAJ6gJeB6+QAFOvZpwgwPwOHwCNgN5uu/+H252raJHRALMu6ggDwCtALNAf8E88QUL5AAHqSTVcNUTU4oQBiWVYzMIiA0E3lGhtp4CsEnPtACgFDGqXiYKoKxLKsCPAaMIwojlzV1tZGV1cXHR0ddHR00N7ebh93dHQAcHh4aG/JZNI+3tvb4+jo6LzsPAY+QYA5Ix9KBsoPpmpALMt6BXgTaHe7pre3l5GREUZGRujv7/fdsspkMmxtbRGPx4nH4+zs7BS6/HtgHfgvOW9xeE05bVZxIJZldQNvATf1c5FIhMHBQYaHh7l16xbd3d1lyUMikWBtbY319XU2NzdJp9Omy74B1oAEAoa8yIZTDttVDIhlWZeB94Dfm86Pjo4SjUbLBsFNiUSCWCzG6uqq2yVfAv9CNKHTlNlbKgLEsqxrwF+BX+nnhoaGuHPnDv39/WXPRyFtbW1x9+5dNjY2TKePgBXgOwQUFUyg3lJ2IJZl9QAfAK1qek9PD9PT04yMjJT1970qHo8zPz/P7u6ufuoE+CewQw6Kw2OCsGVZgViW9SdgFNGLBqC1tZWZmRnGx8eJRMI5lJZOp1lZWWFubo7j42P1VAZR4W8gWmJn5KBAAEVYWYBkm7PvIvoWtjo7O1lYWKCvry/w3yyHtre3mZqaYn9/Xz/1EPg3ot+iQslQIpTAgWRh/A0x5GFrYGCAWCxGe7trKzeUSiaTRKNRHjx4oJ/6CvgHoigLDEo5yox30WCMjY2xtLRUczAA2tvbWVpaYmxsTD91E3gbMbTTBFxCFM0WYPntMwXqIdk64x3lM9FolMnJycB+o5paXFwkFovplfcniDrlNLvJXr4vTwnMQ7KtqVE1rZ5gAExOThKNRvXkPyMGQaWXlOQpgQDJ9jM+QGlNjY2N1RUMqcnJSb34shClwnVE8aVCAY9QSi6ysj3wv6N0+gYGBlhaWqKlpaWke4dVqVSK27dv6xX9j8AyYpDyGaL4svsqxdo5CA95DwVGZ2cnsVisbmEAtLS0EIvF6OzsVJNfQIzRlVTJlwQkO1Boj021traysLBQk60pr2pvb2dhYYHWVscAxEuI1pcKJYIHKKV6yFvqh5mZmZrp9AWhvr4+ZmZm9OQ3MAMpSr6BZOcz7CH0np4exsfH/d6uZjU+Pk5Pj6PbdR34LT69xBeQbG/8TTVteno6tGNT5VQkEmF6elpPfh24TK7VFaFIKH4t+BrKTN/Q0FDoRm0rqZGREYaGhtSkXyDqVs9Fl2cg2QUJw2ranTt3vN6m7mSwwR8R68dULzm31eXHQwZRFiSMjo5WfXIpDOrv72d01DFQcQXoQ3hI0V7iB8gr9pcjEdNQwoVVNBrV69EXcanccfEST0Cyi9jsSe/BwcGKz4GHWd3d3QwOOqaAOoDnMFfuRnn1kJfV7wwPD3v8ev1Ls4mF+Ac2FVsW5C8aLxpI9ou/U9Nu3brlOcP1LoNNbuJej+R5ihcPaQJ+Iz/09vY2iiuDuru76e3tVZN+jeiTyFHggsWWFyA9KAufL3K/4zxptrkE3MClYkcDUxQQU3HVAOIug226yHlIXvNXrUe8eEiHPGhra2v0PQqov7+ftrY2NekFzEVWSXWI3Rns6uoq6ZGyepdlWXR1dalJrRTwEFVegFyVB3L5f0Pu0mzUirC1CsPoJcUCuYLyGFkDyPnSbBQhB8VUZNm99nOBZC+8qqZdhBnBUmWw0RXMQHx5iOPpprB5yMbGBp999lm1s+GQwUZXKFBUSRULxOEhYQNy//59Hj58WO1sOOQCpGAfBOoESBhVwENMm61in/cOXRt3f3+f09NTAH766SdaWlrY29sDoLm5mevXr1cze25y9QypYoH8rH44PDwsIU/B6KOPPrLzcXBwQCQS4dNPPwXgxo0bfPzxx9XMnslGJ7h7hkX2GZOaBRKLxezjxcVFLl++zMTERBVz5JTBRseGy3zXIaEDEna5eAgENIX7WP2QTCaL/NrFlcFG0kMKLvIttsh6ilg83ATh85D3338/dGNrmo3SiAXYuvLgeImX9Rj4peHHqq5r165VOwt50mx0gjkqhJT92cvgol2P7O3thSa+VBiVyWTsJnhWsv4wBrZR5QWIjfzo6IitrS0vebxQ2tra0oPdPCbfQ4ze4gXII/VDPB73k9cLIYNtDnACUJ9td8gLkF2UiqkBxF2abc6AJOboD3lQzgWi1BWnCCgA7OzskEgk/Oa5bpVIJPTwT9+RCymoe4jvIkt+8Qs1cW1tzVem61kGm8jiKk1+gIE8eV25+Ihc3CjW19c9fr3+pdkkgwCiwsiL+oDyUKhXIE8QISUA2NzcbBRbihKJBJubm2rSD4h4KLLuOMMQRUiVn9XvdrGVTqcdg3wXXbFYTI9Op3qHuqlQHCoKSNadJNH7KGNbq6urjT4Jou+hRaVLIUoTE4zA6hD5Q5+oCXfv3vVxm/qSwQY7iG6C9BAZByWv6auOevgBIr3ke5mwsbFxofsl8XhcDw34BPgaYXg1KI0p6JlDRQPRiq0zRGQ1W/Pz827RPeta6XSa+fl5Pfl/5LxC3QrCAP9P4WYQcW2/kQm7u7usrKz4vF3tamVlRY/P+CPwLTlvcANiDN/kCYjiJXLv6AXNzc2xvb3t5ZY1re3tbebm5vRk2Vc7JReExgTDqFI8JIMIMvylTDw+PmZqaupCzCgmk0mmpqb0IJkHiLpV9Ypn5MA4oJimMDwD0eqSDCLIsD3WvL+/TzQaJZVKeb11zSiVShGNRvXgmE+Az8kVU8+UrSjvgNKCz8jxmaeIIMNyEoYHDx4wOztbwq3DrdnZWT1W1imi5XmCE0YKlyLLbYLPFxDlZhLKd4ggw/aJe/fusbi46Of2odbi4iL37t1TkzLAfxAzqmc4PcPkIQVVqofIfRrREVpXL4jFYnUFRQbB1PQIMZsqYaSUraiWlaqSQvxlV3rIFd2XEIsm/gL8Qb1ubGyMDz/8sGajzKVSKWZnZ3XPANHs/xxh+BSiyDrObifkirCiiisIDogK5TIwjvY6ijoMpHwEbCJAPCMHQIWhxl4sKmxsEEEwwQmlCQHlbeBV9do6CjX+DbBNDobqHSYYRQfCLDnimKEZfJbN0CpiENLOxf7+PhMTEywvL4d6mCWdTrO8vMzExIQOI4Pod31OPowTzHWHpz80kMjWyqpB6SXSU5oRQYbfARwVSA2+ruIU0ZrSK/ATnEBky8oxqlusnQMLNa4VXRa5Sr4JEYdwDPG8tkM18kKXJ+TmgWQ/Q3qDDsNTJa4r6NjvkA/lEsJTnkdEMX3J9N0Qv/LoAFFEyRaTbFFJGPK4ZBhQntdVgDuUZkTr6w2E1zgUspeC/YjoY3yPczgkZdhk568kGFC+F7qAE4qsU2S90owIpfo6ImCkUVV6bd4TxHzGtzgnmNThEN0rHK0pSngFUtleeeQCRa1XmhHN41eBAcRDka6qwIslU4jRhq/Jn8tQh0HUitttWtb3YvRyv4MKck8MyUeCZRGmeosMGPkiIshNpR72yCCW6hwgFiTI1pE0tDS6abDQ87BIMarEW9rAGUFNNot1MHL/HCIs3k1E8K9LAWfpDDEYepDd5Lopdc5b9Qx9r14nx/EgABhQASCQ109RizAdjApH9vhvIOJNvYCIFyJjhhSjNLlm6WMEgCS5tbbqAjbTlKsKwwTCHmCtmfcY2j/khCL3auwPNXyRGqOwifzQRq2IYk7dwDl8cYwwpjoqrRrSDYYKpdCaqpLrC5Oq8S5c+xCzx+hwTJtbEBdT3aMbUBpVXWvrtsnz+op1CNArVFXlbdEu3mICowJS9+cBsR/Exx2IaQG0af1tHggI1itUVft96vahsi/kOabPxQCRe93IaW3TAVQMhFRVgdiZMIORexOgQiDkXv3DdAObPMYIgAqBkAoFECmtJ+4Gp9Ax2rEORe51w+sQ7OOK17FhAqLKBY567AbBTSY4rsfVsktogagqACfvUpd0tz/SkR4GW9QEEFVBhtAI499ec0DqXf8H8f4X10jf2YAAAAAASUVORK5CYII=);
2908
+ display: none;
2909
+ }
2910
+ </style>
2911
+ <img id="input-event"/>
2912
+ </template><template id="tr-ui-e-chrome-cc-picture-debugger-template">
2913
+ <left-panel>
2914
+ <picture-info>
2915
+ <div>
2916
+ <span class="title">Skia Picture</span>
2917
+ <span class="size"></span>
2918
+ </div>
2919
+ <div>
2920
+ <input class="filename" type="text" value="skpicture.skp"/>
2921
+ <button class="export">Export</button>
2922
+ </div>
2923
+ </picture-info>
2924
+ </left-panel>
2925
+ <right-panel>
2926
+ <tr-ui-e-chrome-cc-picture-ops-chart-view>
2927
+ </tr-ui-e-chrome-cc-picture-ops-chart-view>
2928
+ <raster-area><canvas></canvas></raster-area>
2929
+ </right-panel>
2930
+ </template><dom-module id="tr-ui-e-chrome-cc-raster-task-view">
2931
+ <template>
2932
+ <style>
2933
+ :host {
2934
+ display: flex;
2935
+ flex-direction: column;
2936
+ }
2937
+ #heading {
2938
+ flex: 0 0 auto;
2939
+ }
2940
+ tr-ui-b-table {
2941
+ font-size: 12px;
2942
+ }
2943
+ </style>
2944
+
2945
+ <div id="heading">
2946
+ Rasterization costs in
2947
+ <tr-ui-a-analysis-link id="link"></tr-ui-a-analysis-link>
2948
+ </div>
2949
+ <tr-ui-b-table id="content"></tr-ui-b-table>
2950
+ </template>
2951
+ </dom-module><dom-module id="tr-ui-e-chrome-codesearch">
2952
+ <template>
2953
+ <style>
2954
+ :host {
2955
+ white-space: nowrap;
2956
+ }
2957
+ #codesearchLink {
2958
+ font-size: x-small;
2959
+ margin-left: 20px;
2960
+ text-decoration: none;
2961
+ }
2962
+ </style>
2963
+ <a id="codesearchLink" on-click="onClick" target="_blank">🔍</a>
2964
+ </template>
2965
+ </dom-module><style>
2966
+ .tr-ui-e-chrome-gpu-state-snapshot-view{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAEwATABMYqp3KAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB90JCQsBMCH7ZqYAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAUElEQVRYw+3WwQkAIAiF4Vc0hTO5/wiuURvYIcQOv1cRPhDlDXffSsrMsrYiQi/zU80FAACAVX3nt3lWAABA/x+ovnPyAAAA5AHyAAAA3wMOd34Xd+lsglgAAAAASUVORK5CYII=);display:flex;overflow:auto}.tr-ui-e-chrome-gpu-state-snapshot-view img{display:block;margin:16px auto 16px auto}
2967
+ </style><dom-module id="tr-ui-a-layout-tree-sub-view">
2968
+ <template>
2969
+ <style>
2970
+ tr-ui-b-table {
2971
+ font-size: 12px;
2972
+ }
2973
+ </style>
2974
+ <div id="content"></div>
2975
+ </template>
2976
+ </dom-module><template id="tr-ui-e-img-image-snapshot-view-template">
2977
+ <style>
2978
+ .image-info {
2979
+ margin-bottom: 5px;
2980
+ }
2981
+
2982
+ .image-info .title {
2983
+ font-weight: bold;
2984
+ margin-left: 5px;
2985
+ margin-right: 5px;
2986
+ }
2987
+
2988
+ .image-info .size {
2989
+ margin-right: 5px;
2990
+ }
2991
+
2992
+ .image-container {
2993
+ min-height: 100px;
2994
+ min-width: 200px;
2995
+ overflow: auto;
2996
+ }
2997
+ </style>
2998
+
2999
+ <div class="image-info">
3000
+ <span class="title">Image</span>
3001
+ <span class="size">(unknown)</span>
3002
+ <span class="instructions">
3003
+ [ Drag with mouse to zoom in and out ]
3004
+ </span>
3005
+ </div>
3006
+ <div class="image-container">
3007
+ <img alt="Image snapshot"/>
3008
+ </div>
3009
+ </template><dom-module id="tr-ui-e-s-frame-data-side-panel">
3010
+ <template>
3011
+ <style>
3012
+ :host {
3013
+ display: flex;
3014
+ width: 600px;
3015
+ flex-direction: column;
3016
+ }
3017
+ table-container {
3018
+ display: flex;
3019
+ overflow: auto;
3020
+ font-size: 12px;
3021
+ }
3022
+ </style>
3023
+ <div>
3024
+ Organize by:
3025
+ <select id="select">
3026
+ <option value="none">None</option>
3027
+ <option value="tree">Frame Tree</option>
3028
+ </select>
3029
+ </div>
3030
+ <table-container>
3031
+ <tr-ui-b-table id="table"></tr-ui-b-table>
3032
+ </table-container>
3033
+ </template>
3034
+ </dom-module><dom-module id="tr-ui-e-s-input-latency-side-panel">
3035
+ <template>
3036
+ <style>
3037
+ :host {
3038
+ flex-direction: column;
3039
+ display: flex;
3040
+ }
3041
+ toolbar {
3042
+ flex: 0 0 auto;
3043
+ border-bottom: 1px solid black;
3044
+ display: flex;
3045
+ }
3046
+ result-area {
3047
+ flex: 1 1 auto;
3048
+ display: block;
3049
+ min-height: 0;
3050
+ overflow-y: auto;
3051
+ }
3052
+ </style>
3053
+
3054
+ <toolbar id="toolbar"></toolbar>
3055
+ <result-area id="result_area"></result-area>
3056
+ </template>
3057
+ </dom-module><style>
3058
+ .tr-ui-e-system-stats-instance-track{height:500px}.tr-ui-e-system-stats-instance-track ul{list-style:none;list-style-position:outside;margin:0;overflow:hidden}
3059
+ </style><style>
3060
+ .tr-ui-e-system-stats-snapshot-view .subhead{font-size:small;padding-bottom:10px}.tr-ui-e-system-stats-snapshot-view ul{background-position:0 5px;background-repeat:no-repeat;cursor:pointer;font-family:monospace;list-style:none;margin:0;padding-left:15px}.tr-ui-e-system-stats-snapshot-view li{background-position:0 5px;background-repeat:no-repeat;cursor:pointer;list-style:none;margin:0;padding-left:15px}
3061
+ </style><dom-module id="tr-ui-e-v8-gc-objects-stats-table">
3062
+ <template>
3063
+ <style>
3064
+ tr-ui-b-table {
3065
+ flex: 0 0 auto;
3066
+ align-self: stretch;
3067
+ margin-top: 1em;
3068
+ font-size: 12px;
3069
+ }
3070
+ .diff {
3071
+ display: inline-block;
3072
+ margin-top: 1em;
3073
+ margin-left: 0.8em;
3074
+ }
3075
+ </style>
3076
+ <div class="diff" id="diffOption">
3077
+ Diff
3078
+ </div>
3079
+ <tr-ui-b-table id="diffTable"></tr-ui-b-table>
3080
+ <tr-ui-b-table id="table"></tr-ui-b-table>
3081
+ </template>
3082
+ </dom-module><dom-module id="tr-ui-e-multi-v8-gc-stats-thread-slice-sub-view">
3083
+ <template>
3084
+ <style>
3085
+ </style>
3086
+ <tr-ui-e-v8-gc-objects-stats-table id="gcObjectsStats">
3087
+ </tr-ui-e-v8-gc-objects-stats-table>
3088
+ </template>
3089
+ </dom-module><dom-module id="tr-ui-e-v8-ic-stats-table">
3090
+ <template>
3091
+ <style>
3092
+ tr-ui-b-table {
3093
+ flex: 0 0 auto;
3094
+ align-self: stretch;
3095
+ margin-top: 1em;
3096
+ font-size: 12px;
3097
+ }
3098
+ #total {
3099
+ margin-top: 1em;
3100
+ margin-left: 0.8em;
3101
+ }
3102
+ #groupOption {
3103
+ display: inline-block;
3104
+ margin-top: 1em;
3105
+ margin-left: 0.8em;
3106
+ }
3107
+ </style>
3108
+ <div style="padding-right: 200px">
3109
+ <div style="float:right; border-style: solid; border-width: 1px; padding:20px">
3110
+ X no feedback<br/>
3111
+ 0 uninitialized<br/>
3112
+ . premonomorphic<br/>
3113
+ 1 monomorphic<br/>
3114
+ ^ recompute handler<br/>
3115
+ P polymorphic<br/>
3116
+ N megamorphic<br/>
3117
+ G generic
3118
+ </div>
3119
+ </div>
3120
+ <div id="total">
3121
+ </div>
3122
+ <div id="groupOption">
3123
+ Group Key
3124
+ </div>
3125
+ <tr-ui-b-table id="table"></tr-ui-b-table>
3126
+ </template>
3127
+ </dom-module><dom-module id="tr-ui-e-multi-v8-ic-stats-thread-slice-sub-view">
3128
+ <template>
3129
+ <tr-ui-e-v8-ic-stats-table id="table">
3130
+ </tr-ui-e-v8-ic-stats-table>
3131
+ </template>
3132
+ </dom-module><dom-module id="tr-ui-e-v8-runtime-call-stats-table">
3133
+ <template>
3134
+ <style>
3135
+ #table, #blink_rcs_table {
3136
+ flex: 0 0 auto;
3137
+ align-self: stretch;
3138
+ margin-top: 1em;
3139
+ font-size: 12px;
3140
+ }
3141
+
3142
+ #v8_rcs_heading, #blink_rcs_heading {
3143
+ padding-top: 1em;
3144
+ font-size: 18px;
3145
+ }
3146
+ </style>
3147
+ <h1 id="v8_rcs_heading"></h1>
3148
+ <tr-ui-b-table id="table"></tr-ui-b-table>
3149
+ <h1 id="blink_rcs_heading"></h1>
3150
+ <tr-ui-b-table id="blink_rcs_table"></tr-ui-b-table>
3151
+ </template>
3152
+ </dom-module><dom-module id="tr-ui-e-multi-v8-thread-slice-sub-view">
3153
+ <template>
3154
+ <tr-ui-a-multi-thread-slice-sub-view id="content"></tr-ui-a-multi-thread-slice-sub-view>
3155
+ <tr-ui-e-v8-runtime-call-stats-table id="runtimeCallStats"></tr-ui-e-v8-runtime-call-stats-table>
3156
+ </template>
3157
+ </dom-module><dom-module id="tr-ui-e-single-v8-gc-stats-thread-slice-sub-view">
3158
+ <template>
3159
+ <tr-ui-a-single-event-sub-view id="content"></tr-ui-a-single-event-sub-view>
3160
+ <tr-ui-e-v8-gc-objects-stats-table id="gcObjectsStats"></tr-ui-e-v8-gc-objects-stats-table>
3161
+ </template>
3162
+ </dom-module><dom-module id="tr-ui-e-single-v8-ic-stats-thread-slice-sub-view">
3163
+ <template>
3164
+ <tr-ui-e-v8-ic-stats-table id="table">
3165
+ </tr-ui-e-v8-ic-stats-table>
3166
+ </template>
3167
+ </dom-module><dom-module id="tr-ui-e-single-v8-thread-slice-sub-view">
3168
+ <template>
3169
+ <tr-ui-a-single-thread-slice-sub-view id="content"></tr-ui-a-single-thread-slice-sub-view>
3170
+ <tr-ui-e-v8-runtime-call-stats-table id="runtimeCallStats"></tr-ui-e-v8-runtime-call-stats-table>
3171
+ </template>
3172
+ </dom-module><dom-module id="tr-ui-b-grouping-table">
3173
+ <template>
3174
+ <style>
3175
+ :host {
3176
+ display: flex;
3177
+ }
3178
+ #table {
3179
+ flex: 1 1 auto;
3180
+ font-size: 12px;
3181
+ }
3182
+ </style>
3183
+ <tr-ui-b-table id="table"></tr-ui-b-table>
3184
+ </template>
3185
+ </dom-module><dom-module id="tr-ui-b-grouping-table-groupby-picker">
3186
+ <template>
3187
+ <style>
3188
+ #container {
3189
+ display: flex;
3190
+ }
3191
+ #container *:not(:first-child) {
3192
+ padding-left: 3px;
3193
+ border-left: 1px solid black;
3194
+ margin-left: 3px;
3195
+ }
3196
+ </style>
3197
+
3198
+ <div id="container"></div>
3199
+ </template>
3200
+ </dom-module><dom-module id="tr-ui-b-grouping-table-groupby-picker-group">
3201
+ <template>
3202
+ <style>
3203
+ :host {
3204
+ white-space: nowrap;
3205
+ }
3206
+ #left, #right {
3207
+ user-select: none;
3208
+ cursor: pointer;
3209
+ }
3210
+ </style>
3211
+
3212
+ <span id="left" on-click="moveLeft_">◀</span>
3213
+ <input id="enabled" on-change="onEnableChanged_" type="checkbox"/>
3214
+ <label for="enabled" id="label"></label>
3215
+ <span id="right" on-click="moveRight_">▶</span>
3216
+ </template>
3217
+ </dom-module><dom-module id="tr-ui-sp-file-size-stats-side-panel">
3218
+ <template>
3219
+ <style>
3220
+ :host {
3221
+ display: flex;
3222
+ flex-direction: column;
3223
+ }
3224
+ toolbar {
3225
+ align-items: center;
3226
+ background-color: rgb(236, 236, 236);
3227
+ border-bottom: 1px solid #8e8e8e;
3228
+ display: flex;
3229
+ flex-direction: row;
3230
+ flex-direction: row;
3231
+ flex: 0 0 auto;
3232
+ font-size: 12px;
3233
+ padding: 0 10px 0 10px;
3234
+ }
3235
+ table-container {
3236
+ display: flex;
3237
+ min-height: 0px;
3238
+ overflow-y: auto;
3239
+ }
3240
+ </style>
3241
+
3242
+ <toolbar>
3243
+ <span><b>Group by:</b></span>
3244
+ <tr-ui-b-grouping-table-groupby-picker id="picker">
3245
+ </tr-ui-b-grouping-table-groupby-picker>
3246
+ </toolbar>
3247
+ <table-container>
3248
+ <tr-ui-b-grouping-table id="table"></tr-ui-b-grouping-table>
3249
+ </table-container>
3250
+ </template>
3251
+ </dom-module><dom-module id="tr-v-ui-histogram-set-controls-export">
3252
+ <template>
3253
+ <style>
3254
+ :host {
3255
+ display: grid;
3256
+ grid-gap: 1em;
3257
+ grid-template-rows: auto auto;
3258
+ grid-template-columns: auto auto;
3259
+ }
3260
+ button {
3261
+ -webkit-appearance: none;
3262
+ border: 0;
3263
+ font-size: initial;
3264
+ padding: 5px;
3265
+ }
3266
+ </style>
3267
+
3268
+ <button on-tap="exportRawCsv_">raw CSV</button>
3269
+ <button on-tap="exportRawJson_">raw JSON</button>
3270
+ <button on-tap="exportMergedCsv_">merged CSV</button>
3271
+ <button on-tap="exportMergedJson_">merged JSON</button>
3272
+ </template>
3273
+ </dom-module><dom-module id="tr-v-ui-histogram-set-controls">
3274
+ <template>
3275
+ <style>
3276
+ :host {
3277
+ display: block;
3278
+ }
3279
+
3280
+ #help, #feedback {
3281
+ display: none;
3282
+ margin-left: 20px;
3283
+ }
3284
+
3285
+ #search_container {
3286
+ display: inline-flex;
3287
+ margin-right: 20px;
3288
+ padding-bottom: 1px;
3289
+ border-bottom: 1px solid darkgrey;
3290
+ }
3291
+
3292
+ #search {
3293
+ border: 0;
3294
+ max-width: 20em;
3295
+ outline: none;
3296
+ }
3297
+
3298
+ #clear_search {
3299
+ visibility: hidden;
3300
+ height: 1em;
3301
+ stroke: black;
3302
+ stroke-width: 16;
3303
+ }
3304
+
3305
+ #controls {
3306
+ white-space: nowrap;
3307
+ }
3308
+
3309
+ #show_overview, #hide_overview {
3310
+ height: 1em;
3311
+ margin-right: 20px;
3312
+ }
3313
+
3314
+ #show_overview {
3315
+ stroke: blue;
3316
+ stroke-width: 16;
3317
+ }
3318
+
3319
+ #show_overview:hover {
3320
+ background: blue;
3321
+ stroke: white;
3322
+ }
3323
+
3324
+ #hide_overview {
3325
+ display: none;
3326
+ stroke-width: 18;
3327
+ stroke: black;
3328
+ }
3329
+
3330
+ #hide_overview:hover {
3331
+ background: black;
3332
+ stroke: white;
3333
+ }
3334
+
3335
+ #reference_display_label {
3336
+ display: none;
3337
+ margin-right: 20px;
3338
+ }
3339
+
3340
+ #alpha, #alpha_slider_container {
3341
+ display: none;
3342
+ }
3343
+
3344
+ #alpha {
3345
+ margin-right: 20px;
3346
+ }
3347
+
3348
+ #alpha_slider_container {
3349
+ background: white;
3350
+ border: 1px solid black;
3351
+ flex-direction: column;
3352
+ padding: 0.5em;
3353
+ position: absolute;
3354
+ z-index: 10; /* scalar-span uses z-index :-( */
3355
+ }
3356
+
3357
+ #alpha_slider {
3358
+ -webkit-appearance: slider-vertical;
3359
+ align-self: center;
3360
+ height: 200px;
3361
+ width: 30px;
3362
+ }
3363
+
3364
+ #statistic {
3365
+ display: none;
3366
+ margin-right: 20px;
3367
+ }
3368
+
3369
+ #show_visualization {
3370
+ margin-right: 20px;
3371
+ }
3372
+
3373
+ #export {
3374
+ margin-right: 20px;
3375
+ }
3376
+ </style>
3377
+
3378
+ <div id="controls">
3379
+ <span id="search_container">
3380
+ <input id="search" placeholder="Find Histogram name" value="{{searchQuery::keyup}}"/>
3381
+ <svg id="clear_search" on-tap="clearSearch_" viewBox="0 0 128 128">
3382
+ <g>
3383
+ <title>Clear search</title>
3384
+ <line x1="28" x2="100" y1="28" y2="100"></line>
3385
+ <line x1="28" x2="100" y1="100" y2="28"></line>
3386
+ </g>
3387
+ </svg>
3388
+ </span>
3389
+
3390
+ <svg id="show_overview" on-tap="toggleOverviewLineCharts_" viewBox="0 0 128 128">
3391
+ <g>
3392
+ <title>Show overview charts</title>
3393
+ <line x1="19" x2="49" y1="109" y2="49"></line>
3394
+ <line x1="49" x2="79" y1="49" y2="79"></line>
3395
+ <line x1="79" x2="109" y1="79" y2="19"></line>
3396
+ </g>
3397
+ </svg>
3398
+ <svg id="hide_overview" on-tap="toggleOverviewLineCharts_" viewBox="0 0 128 128">
3399
+ <g>
3400
+ <title>Hide overview charts</title>
3401
+ <line x1="28" x2="100" y1="28" y2="100"></line>
3402
+ <line x1="28" x2="100" y1="100" y2="28"></line>
3403
+ </g>
3404
+ </svg>
3405
+
3406
+ <select id="reference_display_label" value="{{referenceDisplayLabel::change}}">
3407
+ <option value="">Select a reference column</option>
3408
+ </select>
3409
+
3410
+ <button id="alpha" on-tap="openAlphaSlider_">α=[[alphaString]]</button>
3411
+ <div id="alpha_slider_container">
3412
+ <input id="alpha_slider" max="18" min="0" on-blur="closeAlphaSlider_" on-input="updateAlpha_" type="range" value="{{alphaIndex::change}}"/>
3413
+ </div>
3414
+
3415
+ <select id="statistic" value="{{displayStatisticName::change}}">
3416
+ </select>
3417
+
3418
+ <button id="show_visualization" on-tap="loadVisualization_">Visualize</button>
3419
+
3420
+ <tr-ui-b-dropdown label="Export">
3421
+ <tr-v-ui-histogram-set-controls-export>
3422
+ </tr-v-ui-histogram-set-controls-export>
3423
+ </tr-ui-b-dropdown>
3424
+
3425
+ <input checked="{{showAll::change}}" id="show_all" title="When unchecked, less important histograms are hidden." type="checkbox"/>
3426
+ <label for="show_all" title="When unchecked, less important histograms are hidden.">Show all</label>
3427
+
3428
+ <a id="help">Help</a>
3429
+ <a id="feedback">Feedback</a>
3430
+ </div>
3431
+
3432
+ <tr-ui-b-grouping-table-groupby-picker id="picker">
3433
+ </tr-ui-b-grouping-table-groupby-picker>
3434
+ </template>
3435
+ </dom-module><dom-module id="tr-v-ui-histogram-set-table-cell">
3436
+ <template>
3437
+ <style>
3438
+ #histogram_container {
3439
+ display: flex;
3440
+ flex-direction: row;
3441
+ }
3442
+
3443
+ #missing, #empty, #unmergeable, #scalar {
3444
+ flex-grow: 1;
3445
+ }
3446
+
3447
+ #open_histogram, #close_histogram, #open_histogram svg, #close_histogram svg {
3448
+ height: 1em;
3449
+ }
3450
+
3451
+ #open_histogram svg {
3452
+ margin-left: 4px;
3453
+ stroke-width: 0;
3454
+ stroke: blue;
3455
+ fill: blue;
3456
+ }
3457
+ :host(:hover) #open_histogram svg {
3458
+ background: blue;
3459
+ stroke: white;
3460
+ fill: white;
3461
+ }
3462
+
3463
+ #scalar {
3464
+ flex-grow: 1;
3465
+ white-space: nowrap;
3466
+ }
3467
+
3468
+ #histogram {
3469
+ flex-grow: 1;
3470
+ }
3471
+
3472
+ #close_histogram svg line {
3473
+ stroke-width: 18;
3474
+ stroke: black;
3475
+ }
3476
+ #close_histogram:hover svg {
3477
+ background: black;
3478
+ }
3479
+ #close_histogram:hover svg line {
3480
+ stroke: white;
3481
+ }
3482
+
3483
+ #overview_container {
3484
+ display: none;
3485
+ }
3486
+ </style>
3487
+
3488
+ <div id="histogram_container">
3489
+ <span id="missing">(missing)</span>
3490
+ <span id="empty">(empty)</span>
3491
+ <span id="unmergeable">(unmergeable)</span>
3492
+
3493
+ <tr-v-ui-scalar-span id="scalar" on-click="openHistogram_"></tr-v-ui-scalar-span>
3494
+
3495
+ <span id="open_histogram" on-click="openHistogram_">
3496
+ <svg viewBox="0 0 128 128">
3497
+ <rect height="16" width="32" x="16" y="24"></rect>
3498
+ <rect height="16" width="96" x="16" y="56"></rect>
3499
+ <rect height="16" width="64" x="16" y="88"></rect>
3500
+ </svg>
3501
+ </span>
3502
+
3503
+ <span id="histogram"></span>
3504
+
3505
+ <span id="close_histogram" on-click="closeHistogram_">
3506
+ <svg viewBox="0 0 128 128">
3507
+ <line x1="28" x2="100" y1="28" y2="100"></line>
3508
+ <line x1="28" x2="100" y1="100" y2="28"></line>
3509
+ </svg>
3510
+ </span>
3511
+ </div>
3512
+
3513
+ <div id="overview_container">
3514
+ </div>
3515
+ </template>
3516
+ </dom-module><dom-module id="tr-v-ui-histogram-set-table-name-cell">
3517
+ <template>
3518
+ <style>
3519
+ #name_container {
3520
+ display: flex;
3521
+ }
3522
+
3523
+ #name {
3524
+ overflow: hidden;
3525
+ white-space: nowrap;
3526
+ text-overflow: ellipsis;
3527
+ }
3528
+
3529
+ #show_overview, #hide_overview, #show_overview svg, #hide_overview svg {
3530
+ height: 1em;
3531
+ margin-left: 5px;
3532
+ }
3533
+
3534
+ #show_overview svg {
3535
+ stroke: blue;
3536
+ stroke-width: 16;
3537
+ }
3538
+
3539
+ #show_overview:hover svg {
3540
+ background: blue;
3541
+ stroke: white;
3542
+ }
3543
+
3544
+ #hide_overview {
3545
+ display: none;
3546
+ }
3547
+
3548
+ #hide_overview svg {
3549
+ stroke-width: 18;
3550
+ stroke: black;
3551
+ }
3552
+
3553
+ #hide_overview:hover svg {
3554
+ background: black;
3555
+ stroke: white;
3556
+ }
3557
+
3558
+ #open_histograms, #close_histograms, #open_histograms svg, #close_histograms svg {
3559
+ height: 1em;
3560
+ }
3561
+
3562
+ #close_histograms {
3563
+ display: none;
3564
+ }
3565
+
3566
+ #open_histograms svg {
3567
+ margin-left: 4px;
3568
+ stroke-width: 0;
3569
+ stroke: blue;
3570
+ fill: blue;
3571
+ }
3572
+ #open_histograms:hover svg {
3573
+ background: blue;
3574
+ stroke: white;
3575
+ fill: white;
3576
+ }
3577
+
3578
+ #close_histograms line {
3579
+ stroke-width: 18;
3580
+ stroke: black;
3581
+ }
3582
+ #close_histograms:hover {
3583
+ background: black;
3584
+ }
3585
+ #close_histograms:hover line {
3586
+ stroke: white;
3587
+ }
3588
+
3589
+ #overview_container {
3590
+ display: none;
3591
+ }
3592
+ </style>
3593
+
3594
+ <div id="name_container">
3595
+ <span id="name"></span>
3596
+
3597
+ <span id="show_overview" on-click="showOverview_">
3598
+ <svg viewBox="0 0 128 128">
3599
+ <line x1="19" x2="49" y1="109" y2="49"></line>
3600
+ <line x1="49" x2="79" y1="49" y2="79"></line>
3601
+ <line x1="79" x2="109" y1="79" y2="19"></line>
3602
+ </svg>
3603
+ </span>
3604
+
3605
+ <span id="hide_overview" on-click="hideOverview_">
3606
+ <svg viewBox="0 0 128 128">
3607
+ <line x1="28" x2="100" y1="28" y2="100"></line>
3608
+ <line x1="28" x2="100" y1="100" y2="28"></line>
3609
+ </svg>
3610
+ </span>
3611
+
3612
+ <span id="open_histograms" on-click="openHistograms_">
3613
+ <svg viewBox="0 0 128 128">
3614
+ <rect height="16" width="32" x="16" y="24"></rect>
3615
+ <rect height="16" width="96" x="16" y="56"></rect>
3616
+ <rect height="16" width="64" x="16" y="88"></rect>
3617
+ </svg>
3618
+ </span>
3619
+
3620
+ <span id="close_histograms" on-click="closeHistograms_">
3621
+ <svg viewBox="0 0 128 128">
3622
+ <line x1="28" x2="100" y1="28" y2="100"></line>
3623
+ <line x1="28" x2="100" y1="100" y2="28"></line>
3624
+ </svg>
3625
+ </span>
3626
+ </div>
3627
+
3628
+ <div id="overview_container">
3629
+ </div>
3630
+ </template>
3631
+ </dom-module><dom-module id="tr-v-ui-histogram-set-table">
3632
+ <template>
3633
+ <style>
3634
+ :host {
3635
+ min-height: 0px;
3636
+ overflow: auto;
3637
+ }
3638
+ #table {
3639
+ margin-top: 5px;
3640
+ }
3641
+ </style>
3642
+
3643
+ <tr-ui-b-table id="table">
3644
+ </tr-ui-b-table></template>
3645
+ </dom-module><dom-module id="tr-v-ui-metrics-visualization">
3646
+ <template>
3647
+ <style>
3648
+ button {
3649
+ padding: 5px;
3650
+ font-size: 14px;
3651
+ }
3652
+
3653
+ .text_input {
3654
+ width: 50px;
3655
+ padding: 4px;
3656
+ font-size: 14px;
3657
+ }
3658
+
3659
+ .error {
3660
+ color: red;
3661
+ display: none;
3662
+ }
3663
+
3664
+ .container {
3665
+ position: relative;
3666
+ display: inline-block;
3667
+ margin-left: 15px;
3668
+ }
3669
+
3670
+ #title {
3671
+ font-size: 20px;
3672
+ font-weight: bold;
3673
+ padding-bottom: 5px;
3674
+ }
3675
+
3676
+ #selectors {
3677
+ display: block;
3678
+ padding-bottom: 10px;
3679
+ }
3680
+
3681
+ #search_page {
3682
+ width: 200px;
3683
+ margin-left: 30px;
3684
+ }
3685
+
3686
+ #close {
3687
+ display: none;
3688
+ vertical-align: top;
3689
+ }
3690
+
3691
+ #close svg{
3692
+ height: 1em;
3693
+ }
3694
+
3695
+ #close svg line {
3696
+ stroke-width: 18;
3697
+ stroke: black;
3698
+ }
3699
+
3700
+ #close:hover svg {
3701
+ background: black;
3702
+ }
3703
+
3704
+ #close:hover svg line {
3705
+ stroke: white;
3706
+ }
3707
+ </style>
3708
+ <span class="container" id="aggregateContainer">
3709
+ </span>
3710
+ <span class="container" id="pageByPageContainer">
3711
+ <span id="selectors">
3712
+ <span id="percentile_label">Percentile Range:</span>
3713
+ <input class="text_input" id="start" placeholder="0"/>
3714
+ <input class="text_input" id="end" placeholder="100"/>
3715
+ <button id="filter" on-tap="filterByPercentile_">Filter</button>
3716
+ <input class="text_input" id="search_page" placeholder="Page Name"/>
3717
+ <button id="search" on-tap="searchByPage_">Search</button>
3718
+ <span class="error" id="search_error">Sorry, could not find that page!</span>
3719
+ </span>
3720
+ </span>
3721
+ <div display="block" id="submetricsContainer">
3722
+ <span id="close">
3723
+ <svg viewBox="0 0 128 128">
3724
+ <line x1="28" x2="100" y1="28" y2="100"></line>
3725
+ <line x1="28" x2="100" y1="100" y2="28"></line>
3726
+ </svg>
3727
+ </span>
3728
+ </div>
3729
+ </template>
3730
+ </dom-module><dom-module id="tr-v-ui-raster-visualization">
3731
+ <template>
3732
+ <style>
3733
+ button {
3734
+ padding: 5px;
3735
+ font-size: 14px;
3736
+ }
3737
+ .error {
3738
+ color: red;
3739
+ display: none;
3740
+ }
3741
+
3742
+ .text_input {
3743
+ width: 200px;
3744
+ padding: 4px;
3745
+ font-size: 14px;
3746
+ }
3747
+
3748
+ .selector_container{
3749
+ padding: 5px;
3750
+ }
3751
+
3752
+ #search {
3753
+ display: inline-block;
3754
+ padding-bottom: 10px;
3755
+ }
3756
+
3757
+ #search_page {
3758
+ width: 200px;
3759
+ }
3760
+
3761
+ #pageSelector {
3762
+ display: inline-block;
3763
+ font-size: 12pt;
3764
+ }
3765
+
3766
+ #close {
3767
+ display: none;
3768
+ vertical-align: top;
3769
+ }
3770
+
3771
+ #close svg{
3772
+ height: 1em;
3773
+ }
3774
+
3775
+ #close svg line {
3776
+ stroke-width: 18;
3777
+ stroke: black;
3778
+ }
3779
+
3780
+ #close:hover svg {
3781
+ background: black;
3782
+ }
3783
+
3784
+ #close:hover svg line {
3785
+ stroke: white;
3786
+ }
3787
+ </style>
3788
+ <span id="aggregateContainer">
3789
+ <div>
3790
+ <div class="selector_container">
3791
+ <span id="select_page_label">Individual Page Results:</span>
3792
+ <select id="pageSelector">
3793
+ <option id="select_page" value="">Select a page</option>
3794
+ </select>
3795
+ </div>
3796
+ <div class="selector_container">
3797
+ <div id="search_page_label">Search for a page:</div>
3798
+ <input class="text_input" id="search_page" placeholder="Page Name"/>
3799
+ <button id="search_button">Search</button>
3800
+ <div class="error" id="search_error">Sorry, could not find that page!</div>
3801
+ </div>
3802
+ </div>
3803
+ </span>
3804
+ <span id="pageContainer">
3805
+ <span id="close">
3806
+ <svg viewBox="0 0 128 128">
3807
+ <line x1="28" x2="100" y1="28" y2="100"></line>
3808
+ <line x1="28" x2="100" y1="100" y2="28"></line>
3809
+ </svg>
3810
+ </span>
3811
+ </span>
3812
+ </template>
3813
+ </dom-module><meta charset="utf-8"/><dom-module id="tr-v-ui-visualizations-data-container">
3814
+ <template>
3815
+ <style>
3816
+ .error {
3817
+ color: red;
3818
+ display: none;
3819
+ }
3820
+
3821
+ .sample{
3822
+ display: none;
3823
+ }
3824
+
3825
+ .subtitle{
3826
+ font-size: 20px;
3827
+ font-weight: bold;
3828
+ padding-bottom: 5px;
3829
+ }
3830
+
3831
+ .description{
3832
+ font-size: 15px;
3833
+ padding-bottom: 5px;
3834
+ }
3835
+
3836
+ #title {
3837
+ font-size: 30px;
3838
+ font-weight: bold;
3839
+ padding-bottom: 5px;
3840
+ }
3841
+ </style>
3842
+ <div id="title">Visualizations</div>
3843
+ <div class="error" id="data_error">Invalid data provided.</div>
3844
+ <div id="pipeline_per_frame_container">
3845
+ <div class="subtitle">Graphics Pipeline and Raster Tasks</div>
3846
+ <div class="description">
3847
+ When raster tasks are completed in comparison to the rest of the graphics pipeline.<br/>
3848
+ Only pages where raster tasks are completed after beginFrame is issued are included.
3849
+ </div>
3850
+ <tr-v-ui-raster-visualization id="rasterVisualization">
3851
+ </tr-v-ui-raster-visualization>
3852
+ </div>
3853
+ <div id="metrics_container">
3854
+ <div class="subtitle">Metrics</div>
3855
+ <div class="description">Total amount of time taken for the indicated metrics.</div>
3856
+ <tr-v-ui-metrics-visualization class="sample" id="metricsVisualization">
3857
+ </tr-v-ui-metrics-visualization>
3858
+ </div>
3859
+ </template>
3860
+ </dom-module><dom-module id="tr-v-ui-histogram-set-view">
3861
+ <template>
3862
+ <style>
3863
+ :host {
3864
+ font-family: sans-serif;
3865
+ }
3866
+
3867
+ #zero {
3868
+ color: red;
3869
+ /* histogram-set-table is used by both metrics-side-panel and results.html.
3870
+ * This font-size rule has no effect in results.html, but improves
3871
+ * legibility in the metrics-side-panel, which sets font-size in order to
3872
+ * make this table denser.
3873
+ */
3874
+ font-size: initial;
3875
+ }
3876
+
3877
+ #container {
3878
+ display: none;
3879
+ }
3880
+
3881
+ #visualizations{
3882
+ display: none;
3883
+ }
3884
+ </style>
3885
+
3886
+ <div id="zero">zero Histograms</div>
3887
+
3888
+ <div id="container">
3889
+ <tr-v-ui-histogram-set-controls id="controls">
3890
+ </tr-v-ui-histogram-set-controls>
3891
+
3892
+ <tr-v-ui-visualizations-data-container id="visualizations">
3893
+ </tr-v-ui-visualizations-data-container>
3894
+
3895
+ <tr-v-ui-histogram-set-table id="table"></tr-v-ui-histogram-set-table>
3896
+ </div>
3897
+ </template>
3898
+ </dom-module><dom-module id="tr-ui-sp-metrics-side-panel">
3899
+ <template>
3900
+ <style>
3901
+ :host {
3902
+ display: flex;
3903
+ flex-direction: column;
3904
+ }
3905
+ div#error {
3906
+ color: red;
3907
+ }
3908
+ #results {
3909
+ font-size: 12px;
3910
+ }
3911
+ </style>
3912
+
3913
+ <top-left-controls id="top_left_controls"></top-left-controls>
3914
+
3915
+ <tr-v-ui-histogram-set-view id="results"></tr-v-ui-histogram-set-view>
3916
+
3917
+ <div id="error"></div>
3918
+ </template>
3919
+ </dom-module><dom-module id="tr-ui-e-s-alerts-side-panel">
3920
+ <template>
3921
+ <style>
3922
+ :host {
3923
+ display: block;
3924
+ width: 250px;
3925
+ }
3926
+ #content {
3927
+ flex-direction: column;
3928
+ display: flex;
3929
+ }
3930
+ tr-ui-b-table {
3931
+ font-size: 12px;
3932
+ }
3933
+ </style>
3934
+
3935
+ <div id="content">
3936
+ <toolbar id="toolbar"></toolbar>
3937
+ <result-area id="result_area"></result-area>
3938
+ </div>
3939
+ </template>
3940
+ </dom-module><style>
3941
+ html,body{height:100%}body{flex-direction:column;display:flex;margin:0;padding:0}body>x-profiling-view{flex:1 1 auto;min-height:0}body>x-profiling-view>x-timeline-view:focus{outline:0}
3942
+ </style><script src="catapult_trace_viewer.js"></script>
3943
+ </head>
3944
+ <body>
3945
+ </body>
3946
+ </html>