1/*
2 * Copyright (C) 2006, 2007, 2008 Apple Inc.  All rights reserved.
3 * Copyright (C) 2009 Anthony Ricaud <rik@webkit.org>
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * 1.  Redistributions of source code must retain the above copyright
10 *     notice, this list of conditions and the following disclaimer.
11 * 2.  Redistributions in binary form must reproduce the above copyright
12 *     notice, this list of conditions and the following disclaimer in the
13 *     documentation and/or other materials provided with the distribution.
14 * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
15 *     its contributors may be used to endorse or promote products derived
16 *     from this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
19 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30#timeline-overview-panel {
31    flex: none;
32    position: relative;
33    border-bottom: 1px solid rgb(140, 140, 140);
34}
35
36#timeline-overview-panel .timeline-graph-bar {
37    pointer-events: none;
38}
39
40.timeline-records-title, .timeline-records-list {
41    background-color: rgb(236, 236, 236);
42}
43
44.timeline-records-title {
45    padding: 3px 3px 3px 5px;
46    flex: 0 0 19px;
47    color: rgb(92, 110, 129); text-shadow: rgba(255, 255, 255, 0.75) 0 1px 0;
48}
49
50.timeline-records-list {
51    flex: auto;
52}
53
54#timeline-overview-grid {
55    background-color: rgb(255, 255, 255);
56}
57
58.timeline-overview-frames-mode #timeline-overview-grid {
59    display: none;
60}
61
62#timeline-overview-grid .resources-dividers-label-bar {
63    pointer-events: auto;
64}
65
66.timeline-overview-frames-mode .overview-grid-window,
67.timeline-overview-frames-mode .overview-grid-dividers-background {
68    height: 100%;
69}
70
71#timeline-overview-grid #resources-graphs {
72    position: absolute;
73    top: 0;
74    left: 0;
75    right: 0;
76    height: 80px;
77}
78
79#timeline-container {
80    border-right: 0 none transparent;
81    overflow-y: scroll;
82    overflow-x: hidden;
83}
84
85.timeline-details-split {
86    flex: auto;
87}
88
89.timeline-view {
90    flex: auto;
91    overflow: hidden;
92}
93
94.timeline-view-stack {
95    flex: auto;
96    display: flex;
97}
98
99#timeline-container .webkit-html-external-link,
100#timeline-container .webkit-html-resource-link {
101    color: inherit;
102}
103
104.timeline-tree-item {
105    height: 18px;
106    line-height: 15px;
107    padding-right: 5px;
108    padding-left: 5px;
109    padding-top: 2px;
110    white-space: nowrap;
111    text-overflow: ellipsis;
112    overflow: hidden;
113}
114
115.timeline-tree-item.selected {
116    background-color: rgb(56, 121, 217) !important;
117    color: white;
118}
119
120.timeline-tree-item.hovered:not(.selected),
121.timeline-graph-side.hovered {
122    background-color: rgba(0, 0, 0, 0.05) !important;
123}
124
125.timeline-expandable {
126    position: absolute;
127    border-left: 1px solid rgb(163, 163, 163);
128    pointer-events: none;
129}
130
131.timeline-expandable-left {
132    position: absolute;
133    top: 0;
134    bottom: 0;
135    left: 0;
136    width: 3px;
137    border-top: 1px solid rgb(163, 163, 163);
138    border-bottom: 1px solid rgb(163, 163, 163);
139}
140
141.timeline-tree-item-expand-arrow {
142    display: inline-block;
143    -webkit-user-select: none;
144    -webkit-mask-image: url(Images/statusbarButtonGlyphs.png);
145    -webkit-mask-size: 320px 144px;
146    width: 10px;
147    height: 10px;
148    content: "";
149    background-color: rgb(110, 110, 110);
150    position: relative;
151    top: -1px;
152    left: -1px;
153}
154
155@media (-webkit-min-device-pixel-ratio: 1.5) {
156.timeline-tree-item-expand-arrow {
157    -webkit-mask-image: url(Images/statusbarButtonGlyphs_2x.png);
158}
159} /* media */
160
161.timeline-tree-item-expand-arrow.parent {
162    -webkit-mask-position: -4px -96px;
163}
164
165.timeline-tree-item-expand-arrow.parent.expanded {
166    -webkit-mask-position: -20px -96px;
167}
168
169.timeline-expandable-arrow {
170    background-image: url(Images/statusbarButtonGlyphs.png);
171    background-size: 320px 144px;
172    opacity: 0.5;
173    width: 10px;
174    height: 10px;
175    position: relative;
176    top: 3px;
177    left: 2px;
178}
179
180@media (-webkit-min-device-pixel-ratio: 1.5) {
181.timeline-expandable-arrow {
182    background-image: url(Images/statusbarButtonGlyphs_2x.png);
183}
184} /* media */
185
186.timeline-expandable-collapsed .timeline-expandable-arrow {
187    background-position: -4px -96px;
188}
189
190.timeline-expandable-expanded .timeline-expandable-arrow {
191    background-position: -20px -96px;
192}
193
194.timeline-tree-item .type {
195    padding-left: 5px;
196}
197
198.timeline-tree-item .count {
199    font-weight: bold;
200}
201
202.timeline-tree-item .timeline-tree-icon {
203    position: relative;
204    top: -1px;
205    left: 1px;
206    width: 7px;
207    height: 7px;
208    border-radius: 1px;
209    border: solid 1px;
210    display: inline-block;
211}
212
213.timeline-tree-item.background .timeline-tree-icon {
214    background: none !important;
215}
216
217.timeline-tree-item-warning {
218    display: block;
219    background-image: url(Images/statusbarButtonGlyphs.png);
220    background-size: 320px 144px;
221    width: 10px;
222    height: 10px;
223    float: right;
224    background-position: -202px -107px;
225    position: relative;
226    top: 2px;
227}
228
229.timeline-tree-item-child-warning {
230    opacity: 0.6;
231}
232
233@media (-webkit-min-device-pixel-ratio: 1.5) {
234.timeline-tree-item-warning {
235    background-image: url(Images/statusbarButtonGlyphs_2x.png);
236}
237} /* media */
238
239.timeline-tree-item .data.dimmed {
240    color: rgba(0, 0, 0, 0.7);
241    pointer-events: none;
242    padding-left: 4px;
243}
244
245.timeline-tree-item.selected .data.dimmed {
246    color: rgba(255, 255, 255, 0.8);
247    pointer-events: auto;
248}
249
250.timeline-tree-item.selected .timeline-tree-item-expand-arrow {
251    background-color: white;
252}
253
254#timeline-overview-events,
255#timeline-overview-memory,
256#timeline-overview-power {
257    flex: 0 0 60px;
258    z-index: 160;
259    width: 100%;
260}
261
262#timeline-overview-memory {
263    flex-basis: 20px;
264}
265
266#timeline-overview-frames {
267    flex-basis: 79px;
268}
269
270#timeline-overview-pane {
271    flex: auto;
272    position: relative;
273    overflow: hidden;
274}
275
276#timeline-overview-container {
277    display: flex;
278    flex-direction: column;
279    flex: none;
280    position: relative;
281    overflow: hidden;
282}
283
284#timeline-overview-container canvas {
285    width: 100%;
286    height: 100%;
287}
288
289#timeline-overview-frames canvas {
290    z-index: 200;
291    background-color: rgba(255, 255, 255, 0.8);
292}
293
294#timeline-graphs {
295    position: absolute;
296    left: 0;
297    right: 0;
298    max-height: 100%;
299    top: 20px;
300}
301
302.timeline-graph-side {
303    position: relative;
304    height: 18px;
305    padding: 0 5px;
306    white-space: nowrap;
307    margin-top: 0;
308    border-top: 1px solid transparent;
309    overflow: hidden;
310}
311
312.timeline-graph-side.selected {
313    background-color: rgba(56, 121, 217, 0.1) !important;
314}
315
316.timeline-graph-bar-area {
317    position: absolute;
318    top: 0;
319    bottom: 0;
320    right: 0;
321    left: 3px;
322    pointer-events: none;
323}
324
325.timeline-graph-bar {
326    position: absolute;
327    top: -1px;
328    bottom: 0;
329    margin: auto -2px;
330    height: 10px;
331    min-width: 5px;
332    z-index: 180;
333    pointer-events: visibleFill;
334    border-radius: 1px;
335    border: 1px solid;
336}
337
338.timeline-graph-bar.cpu {
339    opacity: 0.7;
340}
341
342.timeline-graph-side.background .timeline-graph-bar {
343    background: transparent !important;
344    border-width: 2px;
345}
346
347.timeline-aggregated-category {
348    display: inline-block;
349    height: 11px;
350    margin-right: 2px;
351    margin-left: 6px;
352    position: relative;
353    top: 2px;
354    width: 10px;
355    border: solid 1px;
356}
357
358.popover ul {
359    margin: 0;
360    padding: 0;
361    list-style-type: none;
362}
363
364.timeline-garbage-collect-status-bar-item .glyph {
365    -webkit-mask-position: -128px -24px;
366}
367
368.timeline-frames-status-bar-item .glyph {
369    -webkit-mask-position: -160px -48px;
370}
371
372.timeline-flame-chart-status-bar-item .glyph {
373    -webkit-mask-position: -192px -48px;
374}
375
376#resources-container-content {
377    overflow: hidden;
378    min-height: 100%;
379}
380
381#resources-graphs {
382    position: absolute;
383    left: 0;
384    right: 0;
385    max-height: 100%;
386    top: 112px;
387}
388
389.memory-graph-label {
390    position: absolute;
391    left: 5px;
392    font-size: 9px;
393    color: rgb(50%, 50%, 50%);
394    white-space: nowrap;
395}
396
397#memory-graphs-canvas-container {
398    overflow: hidden;
399    flex: auto;
400    position: relative;
401}
402
403#memory-counters-graph {
404    flex: auto;
405}
406
407#memory-graphs-canvas-container .memory-counter-marker {
408    position: absolute;
409    border-radius: 3px;
410    width: 5px;
411    height: 5px;
412    margin-left: -3px;
413    margin-top: -2px;
414}
415
416#memory-graphs-container .split-view-contents-first {
417    background-color: rgb(236, 236, 236);
418    overflow-y: hidden;
419}
420
421#memory-graphs-container .sidebar-tree-section {
422    flex: 0 0 24px;
423    padding: 5px 0 0 5px;
424}
425
426.memory-counter-sidebar-info {
427    flex: 0 0 18px;
428    margin-left: 5px;
429    white-space: nowrap;
430}
431
432.memory-counter-sidebar-info .swatch {
433    background-image: none;
434    border: 1px solid rgba(0,0,0,0.3);
435    opacity: 0.5;
436}
437
438.memory-counter-sidebar-info .title {
439    margin: 4px;
440}
441
442.memory-counter-value {
443    margin: 4px;
444}
445
446#counter-values-bar {
447    flex: 0 0 18px;
448    border-bottom: solid 1px lightgray;
449    width: 100%;
450    overflow: hidden;
451    line-height: 18px;
452}
453
454.timeline .resources-event-divider {
455    height: 19px;
456    width: 6px;
457    pointer-events: auto;
458    margin-left: -2px;
459}
460
461.timeline .resources-event-divider::before {
462    height: 19px;
463    width: 2px;
464    margin: 0 2px;
465    background-color: rgb(163, 109, 0);
466    bottom: auto;
467    content: "";
468    display: block;
469}
470
471.timeline .resources-event-divider:hover::before {
472    width: 4px;
473    margin: 0 1px;
474}
475
476.timeline .resources-event-divider.resources-red-divider::before {
477    background-color: rgb(255, 0, 0);
478}
479
480.timeline .resources-event-divider.resources-blue-divider::before {
481    background-color: rgb(0, 0, 255);
482}
483
484.timeline .resources-event-divider.resources-orange-divider::before {
485    background-color: rgb(255, 178, 23);
486}
487
488.timeline .resources-event-divider.resources-green-divider::before {
489    background-color: rgb(0, 130, 0);
490}
491
492.resources-divider:last-child {
493    border-color: transparent;
494}
495
496.timeline .resources-event-divider.timeline-frame-divider {
497    background-color: rgba(180, 180, 180, 0.8);
498    border-style: none;
499    width: 1px;
500    height: 100%;
501    pointer-events: none;
502}
503
504.timeline-frame-container {
505    height: 19px;
506    overflow: hidden;
507    background-color: rgb(220, 220, 220);
508    opacity: 0.8;
509    color: black;
510    text-align: center;
511    z-index: 220;
512    pointer-events: auto;
513}
514
515.timeline-frame-strip {
516    position: absolute;
517    height: 19px;
518    padding-top: 3px;
519}
520
521.timeline-frame-strip.selected {
522    background-color: rgb(56, 121, 217);
523    color: white;
524}
525
526#timeline-grid-header {
527    pointer-events: none;
528    height: 19px;
529}
530
531#timeline-graph-records-header {
532    pointer-events: none;
533    height: 19px;
534    padding: 1px 0;
535    justify-content: center;
536}
537
538.timeline-utilization-strip {
539    z-index: 250;
540    overflow: hidden;
541    flex: 0 1 12px;
542    position: relative;
543    height: 9px;
544}
545
546.timeline-utilization-strip .timeline-graph-bar {
547    border-color: rgb(192, 192, 192);
548    background-color: rgba(0, 0, 0, 0.1);
549    margin: 1.5px auto;
550    height: auto;
551}
552
553.timeline-utilization-strip.gpu .timeline-graph-bar {
554    background-color: #00a;
555    border: none;
556    opacity: 0.3;
557    min-width: 0;
558}
559
560.timeline-utilization-strip.gpu .timeline-graph-bar.gpu-task-foreign {
561    background-color: #aaa;
562}
563
564.timeline-cpu-curtain-left, .timeline-cpu-curtain-right {
565    background-color: rgba(210, 210, 210, 0.5);
566    position: absolute;
567    top: 0;
568    height: 100%;
569    z-index: 300;
570}
571
572.timeline-cpu-curtain-left {
573    left: 0;
574}
575
576.timeline-cpu-curtain-right {
577    right: 0;
578}
579
580.image-preview-container {
581    background: transparent;
582    text-align: left;
583    border-spacing: 0;
584}
585
586.image-preview-container img {
587    max-width: 100px;
588    max-height: 100px;
589    background-image: url(Images/checker.png);
590    -webkit-user-select: text;
591    -webkit-user-drag: auto;
592}
593
594.image-container {
595    padding: 0;
596}
597
598.timeline-filters-header {
599    flex: 0 0 23px;
600    overflow: hidden;
601}
602
603.timeline-details {
604    -webkit-user-select: text;
605    vertical-align: top;
606}
607
608.timeline-details .record-title {
609    float: left;
610    padding: 5px 10px 5px 10px;
611    font-weight: bold;
612}
613
614.timeline-details-title {
615    border-bottom: 1px solid #B8B8B8;
616    font-weight: bold;
617    padding-bottom: 5px;
618    padding-top: 0;
619    white-space: nowrap;
620}
621
622.timeline-details-row-title {
623    font-weight: bold;
624    text-align: right;
625    white-space: nowrap;
626}
627
628.timeline-details-row-data {
629    white-space: nowrap;
630}
631
632.timeline-details-view {
633    color: #333;
634    overflow: hidden;
635}
636
637.timeline-details-view-body {
638    padding-top: 2px;
639    flex: auto;
640    overflow: auto;
641    position: relative;
642}
643
644.timeline-details-view-block {
645    flex: none;
646}
647
648.timeline-details-view-row {
649    padding: 2px 0 2px 6px;
650    white-space: nowrap;
651}
652
653.timeline-details-view-row-title {
654    font-weight: bold;
655    color: rgb(48, 57, 66);
656}
657
658.timeline-details-view-row-value {
659    padding-left: 10px;
660}
661
662.timeline-details-view-row-details {
663    padding-left: 10px;
664}
665
666.timeline-details-view-row-details .image-preview-container {
667    padding: 10px;
668}
669
670.timeline-details-view-row-details table {
671    padding-left: 10px;
672}
673
674.timeline-details-view-row-details table td {
675    text-align: left;
676    vertical-align: top;
677}
678
679.timeline-details-view-row-details table td .section {
680    margin-top: -1px;
681}
682
683.timeline-details-view-row-details table td .section  > .header .title {
684    white-space: nowrap;
685}
686
687.timeline-details-view-row-stack-trace {
688    padding: 4px 0 4px 20px;
689}
690
691.timeline-details-view-row-stack-trace div {
692    white-space: nowrap;
693    text-overflow: ellipsis;
694}
695
696.timeline-details-view-row-stack-trace .webkit-html-external-link,
697.timeline-details-view-row-stack-trace .webkit-html-resource-link {
698    color: #333 !important;
699}
700
701.timeline-aggregated-info {
702    flex: none;
703    position: relative;
704    margin: 8px;
705}
706
707.timeline-range-summary {
708    align-items: center;
709    margin: 6px;
710}
711
712.timeline-range-summary > div {
713    flex-shrink: 0;
714}
715
716.timeline-aggregated-info-legend > div {
717    overflow: hidden;
718    white-space: nowrap;
719    text-overflow: ellipsis;
720}
721
722.timeline-aggregated-info .pie-chart {
723    margin-left: 20px;
724    margin-bottom: 10px;
725}
726
727.timeline-flamechart {
728    overflow: hidden;
729}
730
731.timeline-progress-pane {
732    position: absolute;
733    top: 0px;
734    right: 0px;
735    bottom: 0px;
736    left: 0px;
737    color: #777;
738    background-color: rgba(255, 255, 255, 0.8);
739    font-size: 30px;
740    z-index: 500;
741    display: flex;
742    justify-content: center;
743    align-items: center;
744}
745
746.timeline-paint-profiler-view .outline-disclosure li {
747    margin-top: 0;
748    margin-bottom: 0;
749    padding: 1px 1px 1px 14px;
750    white-space: nowrap;
751    overflow: hidden;
752    text-overflow: ellipsis;
753}
754
755.timeline-paint-profiler-view .outline-disclosure ol.children {
756    padding-left: 12px;
757}
758
759.paint-profiler-image-view {
760    overflow: hidden;
761}
762
763.paint-profiler-image-view img {
764    border: solid 1px black;
765    -webkit-transform-origin: 0px 0px;
766}
767