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

Side by Side Diff: runtime/bin/vmservice/client/deployed/web/index_devtools.html

Issue 237683004: Disable applyAuthorStyles (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 <!DOCTYPE html><html><head><script src="packages/shadow_dom/shadow_dom.debug.js" ></script> 1 <!DOCTYPE html><html><head><script src="packages/shadow_dom/shadow_dom.debug.js" ></script>
2 <script src="packages/custom_element/custom-elements.debug.js"></script> 2 <script src="packages/custom_element/custom-elements.debug.js"></script>
3 3
4 <title>Dart VM Observatory</title> 4 <title>Dart VM Observatory</title>
5 <meta charset="utf-8"> 5 <meta charset="utf-8">
6 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c ss"> 6 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.css" >
7 <script type="text/javascript" src="https://www.google.com/jsapi"></script> 7 <script type="text/javascript" src="https://www.google.com/jsapi"></script>
8 <script src="packages/browser/interop.js"></script> 8 <script src="packages/browser/interop.js"></script>
9 9
10 <script src="index_devtools.html_bootstrap.dart.js"></script> 10 <script src="index_devtools.html_bootstrap.dart.js"></script>
11 11
12 </head> 12 </head>
13 <body><polymer-element name="observatory-element"> 13 <body><polymer-element name="observatory-element">
14 14
15 </polymer-element> 15 </polymer-element>
16 <polymer-element name="nav-bar" extends="observatory-element"> 16 <polymer-element name="nav-bar" extends="observatory-element">
17 <template> 17 <template>
18 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
18 <style> 19 <style>
19 nav ul { 20 nav ul {
20 display: inline-table; 21 display: inline-table;
21 position: relative; 22 position: relative;
22 list-style: none; 23 list-style: none;
23 padding-left: 0; 24 padding-left: 0;
24 margin-left: 0; 25 margin-left: 0;
25 width: 100%; 26 width: 100%;
26 z-index: 10; 27 z-index: 10;
27 font: 400 16px 'Montserrat', sans-serif; 28 font: 400 16px 'Montserrat', sans-serif;
(...skipping 23 matching lines...) Expand all
51 padding: 12px 8px; 52 padding: 12px 8px;
52 color: White; 53 color: White;
53 text-decoration: none; 54 text-decoration: none;
54 } 55 }
55 .menu:hover { 56 .menu:hover {
56 background: #455; 57 background: #455;
57 } 58 }
58 .menu ul { 59 .menu ul {
59 display: none; 60 display: none;
60 position: absolute; 61 position: absolute;
61 top: 100%; 62 top: 98%;
62 list-style: none; 63 list-style: none;
64 margin: 0;
63 padding: 0; 65 padding: 0;
64 margin-left: 0;
65 width: auto; 66 width: auto;
66 z-index: 10; 67 z-index: 10;
67 font: 400 16px 'Montserrat', sans-serif; 68 font: 400 16px 'Montserrat', sans-serif;
68 color: white; 69 color: white;
69 background: #567; 70 background: #567;
70 } 71 }
71 .menu ul:after { 72 .menu ul:after {
72 content: ""; clear: both; display: block; 73 content: ""; clear: both; display: block;
73 } 74 }
74 .menu:hover > ul { 75 .menu:hover > ul {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 </nav-menu> 168 </nav-menu>
168 </template> 169 </template>
169 </polymer-element> 170 </polymer-element>
170 171
171 <polymer-element name="isolate-nav-menu" extends="observatory-element"> 172 <polymer-element name="isolate-nav-menu" extends="observatory-element">
172 <template> 173 <template>
173 <nav-menu link="{{ isolate.hashLink }}" anchor="{{ isolate.name }}" last="{{ last }}"> 174 <nav-menu link="{{ isolate.hashLink }}" anchor="{{ isolate.name }}" last="{{ last }}">
174 <nav-menu-item link="{{ isolate.relativeHashLink('stacktrace') }}" anchor= "stack trace"></nav-menu-item> 175 <nav-menu-item link="{{ isolate.relativeHashLink('stacktrace') }}" anchor= "stack trace"></nav-menu-item>
175 <nav-menu-item link="{{ isolate.relativeHashLink('profile') }}" anchor="cp u profile"></nav-menu-item> 176 <nav-menu-item link="{{ isolate.relativeHashLink('profile') }}" anchor="cp u profile"></nav-menu-item>
176 <nav-menu-item link="{{ isolate.relativeHashLink('allocationprofile') }}" anchor="heap profile"></nav-menu-item> 177 <nav-menu-item link="{{ isolate.relativeHashLink('allocationprofile') }}" anchor="heap profile"></nav-menu-item>
177 <nav-menu-item link="{{ isolate.relativeHashLink('heapmap') }}" anchor="he ap map"></nav-menu-item> 178 <nav-menu-item link="{{ isolate.relativeHashLink('heapmap') }}" anchor="he ap map"></nav-menu-item>
178 <nav-menu-item link="{{ isolate.relativeHashLink('debug/breakpoints') }}" anchor="breakpoints"></nav-menu-item> 179 <nav-menu-item link="{{ isolate.relativeHashLink('debug/breakpoints') }}" anchor="breakpoints"></nav-menu-item>
179 <content></content> 180 <content></content>
180 </nav-menu> 181 </nav-menu>
181 </template> 182 </template>
182 </polymer-element> 183 </polymer-element>
183 184
184 <polymer-element name="library-nav-menu" extends="observatory-element"> 185 <polymer-element name="library-nav-menu" extends="observatory-element">
185 <template> 186 <template>
186 <nav-menu link="{{ library.hashLink }}" anchor="{{ library.name }}" last="{{ last }}"> 187 <nav-menu link="{{ library.hashLink }}" anchor="{{ library.name }}" last="{{ last }}">
187 <content></content> 188 <content></content>
188 </nav-menu> 189 </nav-menu>
189 </template> 190 </template>
190 </polymer-element> 191 </polymer-element>
191 192
192 <polymer-element name="class-nav-menu" extends="observatory-element"> 193 <polymer-element name="class-nav-menu" extends="observatory-element">
193 <template> 194 <template>
194 <nav-menu link="{{ cls.hashLink }}" anchor="{{ cls.name }}" last="{{ last }} "> 195 <nav-menu link="{{ cls.hashLink }}" anchor="{{ cls.name }}" last="{{ last }} ">
195 <content></content> 196 <content></content>
196 </nav-menu> 197 </nav-menu>
197 </template> 198 </template>
198 </polymer-element> 199 </polymer-element>
199 200
200 201
201 <polymer-element name="breakpoint-list" extends="observatory-element"> 202 <polymer-element name="breakpoint-list" extends="observatory-element">
202 <template> 203 <template>
204 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
203 <nav-bar> 205 <nav-bar>
204 <top-nav-menu></top-nav-menu> 206 <top-nav-menu></top-nav-menu>
205 <isolate-nav-menu isolate="{{ msg.isolate }}"></isolate-nav-menu> 207 <isolate-nav-menu isolate="{{ msg.isolate }}"></isolate-nav-menu>
206 <nav-menu link="." anchor="breakpoints" last="{{ true }}"></nav-menu> 208 <nav-menu link="." anchor="breakpoints" last="{{ true }}"></nav-menu>
207 <nav-refresh callback="{{ refresh }}"></nav-refresh> 209 <nav-refresh callback="{{ refresh }}"></nav-refresh>
208 </nav-bar> 210 </nav-bar>
209
210 <template if="{{ msg['breakpoints'].isEmpty }}"> 211 <template if="{{ msg['breakpoints'].isEmpty }}">
211 <div class="panel panel-warning"> 212 <div>
212 <div class="panel-body">No breakpoints</div> 213 <div>No breakpoints</div>
213 </div> 214 </div>
214 </template> 215 </template>
215 <template if="{{ msg['breakpoints'].isNotEmpty }}"> 216 <template if="{{ msg['breakpoints'].isNotEmpty }}">
216 <ul class="list-group"> 217 <ul class="list-group">
217 <template repeat="{{ bpt in msg['breakpoints'] }}"> 218 <template repeat="{{ bpt in msg['breakpoints'] }}">
218 <li class="list-group-item"> 219 <li class="list-group-item">
219 {{ bpt }} 220 {{ bpt }}
220 </li> 221 </li>
221 </template> 222 </template>
222 </ul> 223 </ul>
223 </template> 224 </template>
224 </template> 225 </template>
225 226
226 </polymer-element> 227 </polymer-element>
227 <polymer-element name="service-ref" extends="observatory-element"> 228 <polymer-element name="service-ref" extends="observatory-element">
228 229
229 </polymer-element><polymer-element name="class-ref" extends="service-ref"> 230 </polymer-element><polymer-element name="class-ref" extends="service-ref">
230 231
231 <template><a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a></template> 232 <template><link rel="stylesheet" href="packages/observatory/src/elements/css/sha red.css"><a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a></template>
232 233
233 234
234 </polymer-element> 235 </polymer-element>
235 <polymer-element name="curly-block"> 236 <polymer-element name="curly-block">
236 <template> 237 <template>
237 <style> 238 <style>
238 .idle { 239 .idle {
239 display: inline-block; 240 display: inline-block;
240 color: #0489c3; 241 color: #0489c3;
241 cursor: pointer; 242 cursor: pointer;
(...skipping 25 matching lines...) Expand all
267 </template> 268 </template>
268 <template if="{{ !busy }}"> 269 <template if="{{ !busy }}">
269 {<a on-click="{{ toggleExpand }}"><div class="idle">&nbsp;&nbsp;⊞&nbsp;& nbsp;</div></a>} 270 {<a on-click="{{ toggleExpand }}"><div class="idle">&nbsp;&nbsp;⊞&nbsp;& nbsp;</div></a>}
270 </template> 271 </template>
271 </template> 272 </template>
272 </template> 273 </template>
273 274
274 </polymer-element> 275 </polymer-element>
275 <polymer-element name="instance-ref" extends="service-ref"> 276 <polymer-element name="instance-ref" extends="service-ref">
276 <template> 277 <template>
277 <style> 278 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
278 .memberList {
279 display: table;
280 }
281 .memberItem {
282 display: table-row;
283 }
284 .memberName, .memberValue {
285 display: table-cell;
286 vertical-align: top;
287 padding: 3px 0 3px 1em;
288 font: 400 14px 'Montserrat', sans-serif;
289 }
290 </style>
291 <span> 279 <span>
292 <template if="{{ isUnexpected(ref.serviceType) }}"> 280 <template if="{{ isUnexpected(ref.serviceType) }}">
293 unexpected reference type &lt;{{ ref.serviceType }}&gt; 281 unexpected reference type &lt;{{ ref.serviceType }}&gt;
294 </template> 282 </template>
295 283
296 <template if="{{ isError(ref.serviceType) }}"> 284 <template if="{{ isError(ref.serviceType) }}">
297 <pre>{{ ref.message }}</pre> 285 <pre>{{ ref.message }}</pre>
298 </template> 286 </template>
299 287
300 <template if="{{ isNull(ref.serviceType) }}"> 288 <template if="{{ isNull(ref.serviceType) }}">
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 </td> 421 </td>
434 </tr> 422 </tr>
435 </tbody></table> 423 </tbody></table>
436 </template> 424 </template>
437 </template> 425 </template>
438 </polymer-element> 426 </polymer-element>
439 427
440 428
441 <polymer-element name="field-ref" extends="service-ref"> 429 <polymer-element name="field-ref" extends="service-ref">
442 <template> 430 <template>
431 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.css" >
443 <div> 432 <div>
444 <template if="{{ ref['static'] }}">static</template> 433 <template if="{{ ref['static'] }}">static</template>
445 <template if="{{ ref['final'] }}">final</template> 434 <template if="{{ ref['final'] }}">final</template>
446 <template if="{{ ref['const'] }}">const</template> 435 <template if="{{ ref['const'] }}">const</template>
447 <template if="{{ (ref['declared_type']['name'] == 'dynamic' &amp;&amp; 436 <template if="{{ (ref['declared_type']['name'] == 'dynamic' &amp;&amp;
448 !ref['final'] &amp;&amp; !ref['const']) }}"> 437 !ref['final'] &amp;&amp; !ref['const']) }}">
449 var 438 var
450 </template> 439 </template>
451 <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}"> 440 <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}">
452 <instance-ref ref="{{ ref['declared_type'] }}"></instance-ref> 441 <instance-ref ref="{{ ref['declared_type'] }}"></instance-ref>
453 </template> 442 </template>
454 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a> 443 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a>
455 </div> 444 </div>
456 </template> 445 </template>
457 446
458 </polymer-element> 447 </polymer-element>
459 <polymer-element name="function-ref" extends="service-ref"> 448 <polymer-element name="function-ref" extends="service-ref">
460 <template><!-- These comments are here to allow newlines. 449 <template><link rel="stylesheet" href="packages/observatory/src/elements/css/s hared.css"><!-- These comments are here to allow newlines.
461 --><template if="{{ qualified &amp;&amp; !hasParent &amp;&amp; hasClass }}" ><!-- 450 --><template if="{{ isDart }}"><!--
451 --><template if="{{ qualified &amp;&amp; !hasParent &amp;&amp; hasClass } }"><!--
462 --><class-ref ref="{{ ref['owner'] }}"></class-ref>.</template><!-- 452 --><class-ref ref="{{ ref['owner'] }}"></class-ref>.</template><!--
463 --><template if="{{ qualified &amp;&amp; hasParent }}"><!-- 453 --><template if="{{ qualified &amp;&amp; hasParent }}"><!--
464 --><function-ref ref="{{ ref['parent'] }}" qualified="{{ true }}"> 454 --><function-ref ref="{{ ref['parent'] }}" qualified="{{ true }}">
465 </function-ref>.<!-- 455 </function-ref>.<!--
466 --></template><a href="{{ url }}">{{ name }}</a><!-- 456 --></template><a href="{{ url }}">{{ name }}</a><!--
467 --></template> 457 --></template><template if="{{ !isDart }}"><span> {{ name }}</span></template> </template>
468 458
469 </polymer-element> 459 </polymer-element>
470 <polymer-element name="library-ref" extends="service-ref"> 460 <polymer-element name="library-ref" extends="service-ref">
471 <template> 461 <template><link rel="stylesheet" href="packages/observatory/src/elements/css/sha red.css">
472 <a href="{{ url }}">{{ name }}</a> 462 <a href="{{ url }}">{{ name }}</a>
473 </template> 463 </template>
474 464
475 </polymer-element><polymer-element name="script-ref" extends="service-ref"> 465 </polymer-element><polymer-element name="script-ref" extends="service-ref">
476 <template> 466 <template>
467 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.css" >
477 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a> 468 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a>
478 </template> 469 </template>
479 470
480 </polymer-element> 471 </polymer-element>
481 <polymer-element name="class-view" extends="observatory-element"> 472 <polymer-element name="class-view" extends="observatory-element">
482 <template> 473 <template>
483 <style> 474 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
484 .content {
485 padding-left: 10%;
486 font: 400 14px 'Montserrat', sans-serif;
487 }
488 h1 {
489 font: 400 18px 'Montserrat', sans-serif;
490 }
491 .memberList {
492 display: table;
493 }
494 .memberItem {
495 display: table-row;
496 }
497 .memberName, .memberValue {
498 display: table-cell;
499 vertical-align: top;
500 padding: 3px 0 3px 1em;
501 font: 400 14px 'Montserrat', sans-serif;
502 }
503 </style>
504
505 <nav-bar> 475 <nav-bar>
506 <top-nav-menu></top-nav-menu> 476 <top-nav-menu></top-nav-menu>
507 <isolate-nav-menu isolate="{{ cls.isolate }}"></isolate-nav-menu> 477 <isolate-nav-menu isolate="{{ cls.isolate }}"></isolate-nav-menu>
508 <library-nav-menu library="{{ cls['library'] }}"></library-nav-menu> 478 <library-nav-menu library="{{ cls['library'] }}"></library-nav-menu>
509 <class-nav-menu cls="{{ cls }}" last="{{ true }}"></class-nav-menu> 479 <class-nav-menu cls="{{ cls }}" last="{{ true }}"></class-nav-menu>
510 <nav-refresh callback="{{ refresh }}"></nav-refresh> 480 <nav-refresh callback="{{ refresh }}"></nav-refresh>
511 </nav-bar> 481 </nav-bar>
512 482
513 <div class="content"> 483 <div class="content">
514 <h1> 484 <h1>
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 <div class="content"> 597 <div class="content">
628 <eval-box callback="{{ eval }}"></eval-box> 598 <eval-box callback="{{ eval }}"></eval-box>
629 </div> 599 </div>
630 <br><br><br><br> 600 <br><br><br><br>
631 <br><br><br><br> 601 <br><br><br><br>
632 </template> 602 </template>
633 603
634 </polymer-element> 604 </polymer-element>
635 <polymer-element name="code-ref" extends="service-ref"> 605 <polymer-element name="code-ref" extends="service-ref">
636 <template> 606 <template>
607 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
637 <template if="{{ code.isDartCode }}"> 608 <template if="{{ code.isDartCode }}">
638 <a href="{{ url }}">{{ name }}</a> 609 <a href="{{ url }}">{{ name }}</a>
639 </template> 610 </template>
640 <template if="{{ !code.isDartCode }}"> 611 <template if="{{ !code.isDartCode }}">
641 <span>{{ name }}</span> 612 <span>{{ name }}</span>
642 </template> 613 </template>
643 </template> 614 </template>
644 615
645 </polymer-element><polymer-element name="code-view" extends="observatory-element "> 616 </polymer-element><polymer-element name="code-view" extends="observatory-element ">
646 <template> 617 <template>
618 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
647 <nav-bar> 619 <nav-bar>
648 <top-nav-menu></top-nav-menu> 620 <top-nav-menu></top-nav-menu>
649 <isolate-nav-menu isolate="{{ code.isolate }}"></isolate-nav-menu> 621 <isolate-nav-menu isolate="{{ code.isolate }}"></isolate-nav-menu>
650 <nav-menu link="." anchor="{{ code.name }}" last="{{ true }}"></nav-menu> 622 <nav-menu link="." anchor="{{ code.name }}" last="{{ true }}"></nav-menu>
651 <nav-refresh callback="{{ refresh }}"></nav-refresh> 623 <nav-refresh callback="{{ refresh }}"></nav-refresh>
652 </nav-bar> 624 </nav-bar>
653 <style>
654 .content {
655 padding-left: 10%;
656 font: 400 14px 'Montserrat', sans-serif;
657 }
658 h1 {
659 font: 400 18px 'Montserrat', sans-serif;
660 }
661 .memberList {
662 display: table;
663 }
664 .memberItem {
665 display: table-row;
666 }
667 .memberName, .memberValue {
668 display: table-cell;
669 vertical-align: top;
670 padding: 3px 0 3px 1em;
671 font: 400 14px 'Montserrat', sans-serif;
672 }
673 .monospace {
674 font-family: consolas, courier, monospace;
675 font-size: 1em;
676 line-height: 1.2em;
677 white-space: nowrap;
678 }
679 </style>
680 <div class="content"> 625 <div class="content">
681 <h1>Code for {{ code.name }}</h1> 626 <h1>Code for {{ code.name }}</h1>
682 <div class="memberList"> 627 <div class="memberList">
683 <div class="memberItem"> 628 <div class="memberItem">
684 <div class="memberName">kind</div> 629 <div class="memberName">kind</div>
685 <div class="memberValue">{{code.kind}}</div> 630 <div class="memberValue">{{code.kind}}</div>
686 </div> 631 </div>
687 <div class="memberItem"> 632 <div class="memberItem">
688 <div class="memberName">function</div> 633 <div class="memberName">function</div>
689 <div class="memberValue"> 634 <div class="memberValue">
(...skipping 13 matching lines...) Expand all
703 <div class="memberName">Constant object pool</div> 648 <div class="memberName">Constant object pool</div>
704 <div class="memberValue"> 649 <div class="memberValue">
705 <instance-ref ref="{{ code.objectPool }}"></instance-ref> 650 <instance-ref ref="{{ code.objectPool }}"></instance-ref>
706 </div> 651 </div>
707 </div> 652 </div>
708 </div> 653 </div>
709 </div> 654 </div>
710 <hr> 655 <hr>
711 <div class="content"> 656 <div class="content">
712 <template if="{{ code.hasDisassembly }}"> 657 <template if="{{ code.hasDisassembly }}">
713 <div class="row"> 658 <div class="flex-row">
714 <div class="col-md-2 memberHeader">Inclusive</div> 659 <div class="flex-item-fixed-2-12 memberHeader">Inclusive</div>
715 <div class="col-md-2 memberHeader">Exclusive</div> 660 <div class="flex-item-fixed-2-12 memberHeader">Exclusive</div>
716 <div class="col-md-2 memberHeader">Address</div> 661 <div class="flex-item-fixed-2-12 memberHeader">Address</div>
717 <div class="col-md-6 memberHeader">Disassembly</div> 662 <div class="flex-item-fixed-6-12 memberHeader">Disassembly</div>
718 </div> 663 </div>
719 </template> 664 </template>
720 <template repeat="{{ instruction in code.instructions }}"> 665 <template repeat="{{ instruction in code.instructions }}">
721 <div class="row"> 666 <div class="flex-row">
722 <div class="col-md-2 monospace">{{ instruction.formattedInclusive(code ) }}</div> 667 <div class="flex-item-fixed-2-12 monospace">{{ instruction.formattedIn clusive(code) }}</div>
723 <div class="col-md-2 monospace">{{ instruction.formattedExclusive(code ) }}</div> 668 <div class="flex-item-fixed-2-12 monospace">{{ instruction.formattedEx clusive(code) }}</div>
724 <div class="col-md-2 monospace">{{ instruction.formattedAddress() }}</ div> 669 <div class="flex-item-fixed-2-12 monospace">{{ instruction.formattedAd dress() }}</div>
725 <div class="col-md-6 monospace">{{ instruction.human }}</div> 670 <div class="flex-item-fixed-6-12 monospace">{{ instruction.human }}</d iv>
726 </div> 671 </div>
727 </template> 672 </template>
728 </div> 673 </div>
729 </template> 674 </template>
730 675
731 </polymer-element> 676 </polymer-element>
732 <polymer-element name="collapsible-content" extends="observatory-element"> 677 <polymer-element name="collapsible-content" extends="observatory-element">
733 <template> 678 <template>
734 <div class="well row"> 679 <div class="well row">
735 <a on-click="toggleDisplay" class="btn muted unselectable"> 680 <a on-click="toggleDisplay" class="btn muted unselectable">
736 Raw message... <i class="{{ iconClass }}"></i> 681 Raw message... <i class="{{ iconClass }}"></i>
737 </a> 682 </a>
738 <div style="display: {{ displayValue }}" class="well"> 683 <div style="display: {{ displayValue }}" class="well">
739 <content></content> 684 <content></content>
740 </div> 685 </div>
741 </div> 686 </div>
742 </template> 687 </template>
743 688
744 </polymer-element><polymer-element name="error-view" extends="observatory-elemen t"> 689 </polymer-element><polymer-element name="error-view" extends="observatory-elemen t">
745 <template> 690 <template>
691 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
746 <nav-bar> 692 <nav-bar>
747 <top-nav-menu last="{{ true }}"></top-nav-menu> 693 <top-nav-menu last="{{ true }}"></top-nav-menu>
748 </nav-bar> 694 </nav-bar>
749 695 <div class="content">
750 <div class="row"> 696 <h1>{{ error.kind }}</h1>
751 <div class="col-md-8 col-md-offset-2"> 697 <div class="well">{{ error.message }}</div>
752 <div class="panel panel-danger">
753 <div class="panel-heading">{{ error.kind }}</div>
754 <div class="panel-body">
755 <p>{{ error.message }}</p>
756 </div>
757 </div>
758 </div>
759 </div> 698 </div>
760 </template> 699 </template>
761 700
762 </polymer-element> 701 </polymer-element>
763 <polymer-element name="eval-link"> 702 <polymer-element name="eval-link">
764 <template> 703 <template>
765 <style> 704 <style>
766 .idle { 705 .idle {
767 color: #0489c3; 706 color: #0489c3;
768 cursor: pointer; 707 cursor: pointer;
(...skipping 12 matching lines...) Expand all
781 </template> 720 </template>
782 <template if="{{ result != null }}"> 721 <template if="{{ result != null }}">
783 = <instance-ref ref="{{ result }}"></instance-ref> 722 = <instance-ref ref="{{ result }}"></instance-ref>
784 </template> 723 </template>
785 724
786 </template> 725 </template>
787 726
788 </polymer-element> 727 </polymer-element>
789 <polymer-element name="field-view" extends="observatory-element"> 728 <polymer-element name="field-view" extends="observatory-element">
790 <template> 729 <template>
791 <style> 730 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
792 .content {
793 padding-left: 10%;
794 font: 400 14px 'Montserrat', sans-serif;
795 }
796 h1 {
797 font: 400 18px 'Montserrat', sans-serif;
798 }
799 .memberList {
800 display: table;
801 }
802 .memberItem {
803 display: table-row;
804 }
805 .memberName, .memberValue {
806 display: table-cell;
807 vertical-align: top;
808 padding: 3px 0 3px 1em;
809 font: 400 14px 'Montserrat', sans-serif;
810 }
811 </style>
812 731
813 <nav-bar> 732 <nav-bar>
814 <top-nav-menu></top-nav-menu> 733 <top-nav-menu></top-nav-menu>
815 <isolate-nav-menu isolate="{{ field.isolate }}"></isolate-nav-menu> 734 <isolate-nav-menu isolate="{{ field.isolate }}"></isolate-nav-menu>
816 <template if="{{ field['owner'].serviceType == 'Class' }}"> 735 <template if="{{ field['owner'].serviceType == 'Class' }}">
817 <!-- TODO(turnidge): Add library nav menu here. --> 736 <!-- TODO(turnidge): Add library nav menu here. -->
818 <class-nav-menu cls="{{ field['owner'] }}"></class-nav-menu> 737 <class-nav-menu cls="{{ field['owner'] }}"></class-nav-menu>
819 </template> 738 </template>
820 <template if="{{ field['owner'].serviceType == 'Library' }}"> 739 <template if="{{ field['owner'].serviceType == 'Library' }}">
821 <library-nav-menu library="{{ field['owner'] }}"></library-nav-menu> 740 <library-nav-menu library="{{ field['owner'] }}"></library-nav-menu>
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
932 </tbody> 851 </tbody>
933 </table> 852 </table>
934 </template> 853 </template>
935 </div> 854 </div>
936 </div> 855 </div>
937 </template> 856 </template>
938 857
939 </polymer-element> 858 </polymer-element>
940 <polymer-element name="function-view" extends="observatory-element"> 859 <polymer-element name="function-view" extends="observatory-element">
941 <template> 860 <template>
942 <style> 861 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
943 .content {
944 padding-left: 10%;
945 font: 400 14px 'Montserrat', sans-serif;
946 }
947 h1 {
948 font: 400 18px 'Montserrat', sans-serif;
949 }
950 .memberList {
951 display: table;
952 }
953 .memberItem {
954 display: table-row;
955 }
956 .memberName, .memberValue {
957 display: table-cell;
958 vertical-align: top;
959 padding: 3px 0 3px 1em;
960 font: 400 14px 'Montserrat', sans-serif;
961 }
962 </style>
963
964 <nav-bar> 862 <nav-bar>
965 <top-nav-menu></top-nav-menu> 863 <top-nav-menu></top-nav-menu>
966 <isolate-nav-menu isolate="{{ function.isolate }}"></isolate-nav-menu> 864 <isolate-nav-menu isolate="{{ function.isolate }}"></isolate-nav-menu>
967 <template if="{{ function['owner'].serviceType == 'Class' }}"> 865 <template if="{{ function['owner'].serviceType == 'Class' }}">
968 <!-- TODO(turnidge): Add library nav menu here. --> 866 <!-- TODO(turnidge): Add library nav menu here. -->
969 <class-nav-menu cls="{{ function['owner'] }}"></class-nav-menu> 867 <class-nav-menu cls="{{ function['owner'] }}"></class-nav-menu>
970 </template> 868 </template>
971 <template if="{{ function['owner'].serviceType == 'Library' }}"> 869 <template if="{{ function['owner'].serviceType == 'Library' }}">
972 <library-nav-menu library="{{ function['owner'] }}"></library-nav-menu> 870 <library-nav-menu library="{{ function['owner'] }}"></library-nav-menu>
973 </template> 871 </template>
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
1061 <hr> 959 <hr>
1062 <script-inset script="{{ function['script'] }}" pos="{{ function['tokenPos'] }}" endpos="{{ function['endTokenPos'] }}"> 960 <script-inset script="{{ function['script'] }}" pos="{{ function['tokenPos'] }}" endpos="{{ function['endTokenPos'] }}">
1063 </script-inset> 961 </script-inset>
1064 962
1065 <br> 963 <br>
1066 </template> 964 </template>
1067 965
1068 </polymer-element> 966 </polymer-element>
1069 <polymer-element name="heap-map" extends="observatory-element"> 967 <polymer-element name="heap-map" extends="observatory-element">
1070 <template> 968 <template>
969 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.css" >
970 <style>
971 .hover {
972 position: fixed;
973 z-index: 999;
974 width: 100%;
975 background: #ffffff;
976 }
977 </style>
1071 <nav-bar> 978 <nav-bar>
1072 <top-nav-menu></top-nav-menu> 979 <top-nav-menu></top-nav-menu>
1073 <isolate-nav-menu isolate="{{ fragmentation.isolate }}"></isolate-nav-menu> 980 <isolate-nav-menu isolate="{{ fragmentation.isolate }}"></isolate-nav-menu>
1074 <nav-menu link="." anchor="heap map" last="{{ true }}"></nav-menu> 981 <nav-menu link="." anchor="heap map" last="{{ true }}"></nav-menu>
1075 <nav-refresh callback="{{ refresh }}"></nav-refresh> 982 <nav-refresh callback="{{ refresh }}"></nav-refresh>
1076 </nav-bar> 983 </nav-bar>
1077 <div class="row"> 984 <div class="hover">
1078 <p style="text-align:center">{{ status }}</p> 985 <p style="text-align:center">{{ status }}</p>
1079 </div> 986 </div>
1080 <div class="row"> 987 <div class="flex-row">
1081 <canvas id="fragmentation" width="1px" height="1px"></canvas> 988 <canvas id="fragmentation" width="1px" height="1px"></canvas>
1082 </div> 989 </div>
1083 </template> 990 </template>
1084 991
1085 </polymer-element> 992 </polymer-element>
1086 <polymer-element name="isolate-ref" extends="service-ref"> 993 <polymer-element name="isolate-ref" extends="service-ref">
1087 <template> 994 <template><link rel="stylesheet" href="packages/observatory/src/elements/css/sha red.css">
1088 <a href="{{ url }}">{{ ref.name }}</a> 995 <a href="{{ url }}">{{ ref.name }}</a>
1089 </template> 996 </template>
1090 997
1091 </polymer-element> 998 </polymer-element>
1092 <polymer-element name="isolate-summary" extends="observatory-element"> 999 <polymer-element name="isolate-summary" extends="observatory-element">
1093 <template> 1000 <template>
1094 <div class="row"> 1001 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
1095 <div class="col-md-1"> 1002 <style>
1096 <img src="packages/observatory/src/elements/img/isolate_icon.png" class= "img-polaroid"> 1003 .counters {
1097 </div> 1004 display: flex;
1098 1005 flex-direction: row;
1099 <div class="col-md-1">{{ isolate.mainPort }}</div> 1006 justify-content: center;
1100 1007 }
1101 <div class="col-md-4"> 1008 .counter {
1102 <div class="row"> 1009 margin: 10px;
1010 }
1011 </style>
1012 <div class="flex-row">
1013 <div class="flex-item-fixed-1-12"><img src="packages/observatory/src/eleme nts/img/isolate_icon.png"></div>
1014 <div class="flex-item-fixed-1-12">{{ isolate.mainPort }}</div>
1015 <div class="flex-item-fixed-4-12">
1016 <div class="flex-row">
1103 <isolate-ref ref="{{ isolate }}"></isolate-ref> 1017 <isolate-ref ref="{{ isolate }}"></isolate-ref>
1104 </div> 1018 </div>
1105 1019 <div class="flex-row">
1106 <div class="row">
1107 <small> 1020 <small>
1108 (<a href="{{ isolate.rootLib.hashLink }}">library</a>) 1021 (<a href="{{ isolate.rootLib.hashLink }}">library</a>)
1109 (<a href="{{ isolate.relativeHashLink('debug/breakpoints') }}">break points</a>) 1022 (<a href="{{ isolate.relativeHashLink('debug/breakpoints') }}">break points</a>)
1110 (<a href="{{ isolate.relativeHashLink('profile') }}">profile</a>) 1023 (<a href="{{ isolate.relativeHashLink('profile') }}">profile</a>)
1111 </small> 1024 </small>
1112 </div> 1025 </div>
1113 </div> 1026 </div>
1114 1027
1115 <div class="col-md-2"> 1028 <div class="flex-item-fixed-2-12">
1116 <a href="{{ isolate.relativeHashLink('allocationprofile') }}"> 1029 <a href="{{ isolate.relativeHashLink('allocationprofile') }}">
1117 {{ isolate.newHeapUsed | formatSize }}/{{ isolate.oldHeapUsed | format Size }} 1030 {{ isolate.newHeapUsed | formatSize }}/{{ isolate.oldHeapUsed | format Size }}
1118 </a> 1031 </a>
1119 ( <a href="{{ isolate.relativeHashLink('heapmap') }}">map</a> ) 1032 ( <a href="{{ isolate.relativeHashLink('heapmap') }}">map</a> )
1120 </div> 1033 </div>
1121 <div class="col-md-2"> 1034 <div class="flex-item-fixed-2-12">
1122 <template if="{{ isolate.topFrame == null }}"> 1035 <template if="{{ isolate.topFrame == null }}">
1123 idle 1036 idle
1124 </template> 1037 </template>
1125 <template if="{{ isolate.topFrame != null }}"> 1038 <template if="{{ isolate.topFrame != null }}">
1126 run 1039 run
1127 </template> 1040 </template>
1128 ( <a href="{{ isolate.relativeHashLink('stacktrace') }}">stack trace</a> ) 1041 ( <a href="{{ isolate.relativeHashLink('stacktrace') }}">stack trace</a> )
1129 </div> 1042 </div>
1130 </div> 1043 </div>
1131 1044
1132 <div class="content"> 1045 <div class="counters">
1133 <template repeat="{{ key in isolate.counters.keys }}"> 1046 <template repeat="{{ key in isolate.counters.keys }}">
1134 <div class="memberValue">{{ key }} ({{ isolate.counters[key] }})</div> 1047 <div class="counter">{{ key }} ({{ isolate.counters[key] }})</div>
1135 </template> 1048 </template>
1136 </div> 1049 </div>
1137 1050
1138 <template if="{{ isolate.topFrame != null }}"> 1051 <template if="{{ isolate.topFrame != null }}">
1139 <script-inset script="{{ isolate.topFrame['script'] }}" pos="{{ isolate.to pFrame['tokenPos'] }}"> 1052 <script-inset script="{{ isolate.topFrame['script'] }}" pos="{{ isolate.to pFrame['tokenPos'] }}">
1140 <function-ref ref="{{ isolate.topFrame['function'] }}"></function-ref> 1053 <function-ref ref="{{ isolate.topFrame['function'] }}"></function-ref>
1141 (<script-ref ref="{{ isolate.topFrame['script'] }}" pos="{{ isolate.topF rame['tokenPos'] }}"></script-ref>) 1054 (<script-ref ref="{{ isolate.topFrame['script'] }}" pos="{{ isolate.topF rame['tokenPos'] }}"></script-ref>)
1142 </script-inset> 1055 </script-inset>
1143 </template> 1056 </template>
1144 </template> 1057 </template>
1145 1058
1146 </polymer-element> 1059 </polymer-element>
1147 <polymer-element name="isolate-view" extends="observatory-element"> 1060 <polymer-element name="isolate-view" extends="observatory-element">
1148 <template> 1061 <template>
1062 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
1149 <style> 1063 <style>
1150 .content {
1151 padding-left: 10%;
1152 font: 400 14px 'Montserrat', sans-serif;
1153 }
1154 h1 {
1155 font: 400 18px 'Montserrat', sans-serif;
1156 }
1157 .memberList {
1158 display: table;
1159 }
1160 .memberItem {
1161 display: table-row;
1162 }
1163 .memberName, .memberValue {
1164 display: table-cell;
1165 vertical-align: top;
1166 padding: 3px 0 3px 1em;
1167 font: 400 14px 'Montserrat', sans-serif;
1168 }
1169 .sourceInset { 1064 .sourceInset {
1170 padding-left: 15%; 1065 padding-left: 15%;
1171 padding-right: 15%; 1066 padding-right: 15%;
1172 } 1067 }
1173 .miniProfileChart { 1068 .miniProfileChart {
1174 width: 80%; 1069 width: 80%;
1175 } 1070 }
1176 </style> 1071 </style>
1177 1072
1178 <nav-bar> 1073 <nav-bar>
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
1355 <div class="content"> 1250 <div class="content">
1356 <eval-box callback="{{ eval }}"></eval-box> 1251 <eval-box callback="{{ eval }}"></eval-box>
1357 </div> 1252 </div>
1358 <br><br><br><br> 1253 <br><br><br><br>
1359 <br><br><br><br> 1254 <br><br><br><br>
1360 </template> 1255 </template>
1361 1256
1362 </polymer-element> 1257 </polymer-element>
1363 <polymer-element name="instance-view" extends="observatory-element"> 1258 <polymer-element name="instance-view" extends="observatory-element">
1364 <template> 1259 <template>
1260 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
1365 <nav-bar> 1261 <nav-bar>
1366 <top-nav-menu></top-nav-menu> 1262 <top-nav-menu></top-nav-menu>
1367 <isolate-nav-menu isolate="{{ instance.isolate }}"></isolate-nav-menu> 1263 <isolate-nav-menu isolate="{{ instance.isolate }}"></isolate-nav-menu>
1368 <!-- TODO(turnidge): Add library nav menu here. --> 1264 <!-- TODO(turnidge): Add library nav menu here. -->
1369 <class-nav-menu cls="{{ instance['class'] }}"></class-nav-menu> 1265 <class-nav-menu cls="{{ instance['class'] }}"></class-nav-menu>
1370 <nav-menu link="." anchor="instance" last="{{ true }}"></nav-menu> 1266 <nav-menu link="." anchor="instance" last="{{ true }}"></nav-menu>
1371 <nav-refresh callback="{{ refresh }}"></nav-refresh> 1267 <nav-refresh callback="{{ refresh }}"></nav-refresh>
1372 </nav-bar> 1268 </nav-bar>
1373 1269
1374 <style>
1375 .content {
1376 padding-left: 10%;
1377 font: 400 14px 'Montserrat', sans-serif;
1378 }
1379 h1 {
1380 font: 400 18px 'Montserrat', sans-serif;
1381 }
1382 .memberList {
1383 display: table;
1384 }
1385 .memberItem {
1386 display: table-row;
1387 }
1388 .memberName, .memberValue {
1389 display: table-cell;
1390 vertical-align: top;
1391 padding: 3px 0 3px 1em;
1392 font: 400 14px 'Montserrat', sans-serif;
1393 }
1394 </style>
1395
1396 <template if="{{ instance['error'] != null }}"> 1270 <template if="{{ instance['error'] != null }}">
1397 <error-view error_obj="{{ instance['error'] }}"></error-view> 1271 <error-view error_obj="{{ instance['error'] }}"></error-view>
1398 </template> 1272 </template>
1399 1273
1400 <template if="{{ instance['error'] == null }}"> 1274 <template if="{{ instance['error'] == null }}">
1401 <div class="content"> 1275 <div class="content">
1402 <!-- TODO(turnidge): Handle null instances. --> 1276 <!-- TODO(turnidge): Handle null instances. -->
1403 <template if="{{ isType(instance.serviceType) }}"> 1277 <template if="{{ isType(instance.serviceType) }}">
1404 <h1>type {{ instance['user_name'] }}</h1> 1278 <h1>type {{ instance['user_name'] }}</h1>
1405 </template> 1279 </template>
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1522 <template> 1396 <template>
1523 <nav-bar> 1397 <nav-bar>
1524 <top-nav-menu last="{{ true }}"></top-nav-menu> 1398 <top-nav-menu last="{{ true }}"></top-nav-menu>
1525 </nav-bar> 1399 </nav-bar>
1526 <pre>{{ mapAsString }}</pre> 1400 <pre>{{ mapAsString }}</pre>
1527 </template> 1401 </template>
1528 1402
1529 </polymer-element> 1403 </polymer-element>
1530 <polymer-element name="library-view" extends="observatory-element"> 1404 <polymer-element name="library-view" extends="observatory-element">
1531 <template> 1405 <template>
1532 <style> 1406 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
1533 .content {
1534 padding-left: 10%;
1535 font: 400 14px 'Montserrat', sans-serif;
1536 }
1537 h1 {
1538 font: 400 18px 'Montserrat', sans-serif;
1539 }
1540 .memberList {
1541 display: table;
1542 }
1543 .memberItem {
1544 display: table-row;
1545 }
1546 .memberName, .memberValue {
1547 display: table-cell;
1548 vertical-align: top;
1549 padding: 3px 0 3px 1em;
1550 font: 400 14px 'Montserrat', sans-serif;
1551 }
1552 </style>
1553 1407
1554 <nav-bar> 1408 <nav-bar>
1555 <top-nav-menu></top-nav-menu> 1409 <top-nav-menu></top-nav-menu>
1556 <isolate-nav-menu isolate="{{ library.isolate }}"></isolate-nav-menu> 1410 <isolate-nav-menu isolate="{{ library.isolate }}"></isolate-nav-menu>
1557 <library-nav-menu library="{{ library }}" last="{{ true }}"></library-nav- menu> 1411 <library-nav-menu library="{{ library }}" last="{{ true }}"></library-nav- menu>
1558 <nav-refresh callback="{{ refresh }}"></nav-refresh> 1412 <nav-refresh callback="{{ refresh }}"></nav-refresh>
1559 </nav-bar> 1413 </nav-bar>
1560 1414
1561 <div class="content"> 1415 <div class="content">
1562 <h1> 1416 <h1>
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
1745 <label class="label" for="slide-switch"> 1599 <label class="label" for="slide-switch">
1746 <div class="content"></div> 1600 <div class="content"></div>
1747 <div class="dot"></div> 1601 <div class="dot"></div>
1748 </label> 1602 </label>
1749 </div> 1603 </div>
1750 </template> 1604 </template>
1751 1605
1752 </polymer-element> 1606 </polymer-element>
1753 <polymer-element name="isolate-profile" extends="observatory-element"> 1607 <polymer-element name="isolate-profile" extends="observatory-element">
1754 <template> 1608 <template>
1609 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
1755 <nav-bar> 1610 <nav-bar>
1756 <top-nav-menu></top-nav-menu> 1611 <top-nav-menu></top-nav-menu>
1757 <isolate-nav-menu isolate="{{ profile.isolate }}"></isolate-nav-menu> 1612 <isolate-nav-menu isolate="{{ profile.isolate }}"></isolate-nav-menu>
1758 <nav-menu link="." anchor="cpu profile" last="{{ true }}"></nav-menu> 1613 <nav-menu link="." anchor="cpu profile" last="{{ true }}"></nav-menu>
1759 <nav-refresh callback="{{ refresh }}"></nav-refresh> 1614 <nav-refresh callback="{{ refresh }}"></nav-refresh>
1760 </nav-bar> 1615 </nav-bar>
1761 <style> 1616 <style>
1762 .content { 1617 .table {
1763 padding-left: 10%; 1618 border-collapse: collapse!important;
1764 font: 400 14px 'Montserrat', sans-serif; 1619 width: 100%;
1620 margin-bottom: 20px
1765 } 1621 }
1766 h1 { 1622 .table thead > tr > th,
1767 font: 400 18px 'Montserrat', sans-serif; 1623 .table tbody > tr > th,
1624 .table tfoot > tr > th,
1625 .table thead > tr > td,
1626 .table tbody > tr > td,
1627 .table tfoot > tr > td {
1628 padding: 8px;
1629 vertical-align: top;
1768 } 1630 }
1769 .member, .memberHeader { 1631 .table thead > tr > th {
1770 vertical-align: top; 1632 vertical-align: bottom;
1771 padding: 3px 0 3px 1em; 1633 text-align: left;
1772 font: 400 14px 'Montserrat', sans-serif; 1634 border-bottom:2px solid #ddd;
1773 } 1635 }
1774 .monospace { 1636
1775 font-family: consolas, courier, monospace; 1637 tr:hover > td {
1776 font-size: 1em; 1638 background-color: #FFF3E3;
1777 line-height: 1.2em;
1778 white-space: nowrap;
1779 } 1639 }
1640 .rowColor0 {
1641 background-color: #FFE9CC;
1642 }
1643 .rowColor1 {
1644 background-color: #FFDEB2;
1645 }
1646 .rowColor2 {
1647 background-color: #FFD399;
1648 }
1649 .rowColor3 {
1650 background-color: #FFC87F;
1651 }
1652 .rowColor4 {
1653 background-color: #FFBD66;
1654 }
1655 .rowColor5 {
1656 background-color: #FFB24C;
1657 }
1658 .rowColor6 {
1659 background-color: #FFA733;
1660 }
1661 .rowColor7 {
1662 background-color: #FF9C19;
1663 }
1664 .rowColor8 {
1665 background-color: #FF9100;
1666 }
1667
1668 .tooltip {
1669 display: block;
1670 position: absolute;
1671 visibility: hidden;
1672 opacity: 0;
1673 transition: visibility 0s linear 0.5s;
1674 transition: opacity .4s ease-in-out;
1675 }
1676
1677 tr:hover .tooltip {
1678 display: block;
1679 position: absolute;
1680 top: 100%;
1681 right: 100%;
1682 visibility: visible;
1683 z-index: 999;
1684 width: 400px;
1685 color: #ffffff;
1686 background-color: #0489c3;
1687 border-top-right-radius: 8px;
1688 border-top-left-radius: 8px;
1689 border-bottom-right-radius: 8px;
1690 border-bottom-left-radius: 8px;
1691 transition: visibility 0s linear 0.5s;
1692 transition: opacity .4s ease-in-out;
1693 opacity: 1;
1694 }
1695
1696 .white {
1697 color: #ffffff;
1698 }
1699
1780 </style> 1700 </style>
1781 <div class="content"> 1701 <div class="content">
1782 <h1>Sampled CPU profile</h1> 1702 <h1>Sampled CPU profile</h1>
1783 <table> 1703 <div class="memberList">
1784 <tbody><tr> 1704 <div class="memberItem">
1785 <td class="memberHeader">Timestamp</td> 1705 <div class="memberName">Timestamp</div>
1786 <td class="member">{{ refreshTime }}</td> 1706 <div class="memberValue">{{ refreshTime }}</div>
1787 </tr> 1707 </div>
1788 <tr> 1708 <div class="memberItem">
1789 <td class="memberHeader">Sample count</td> 1709 <div class="memberName">Time span</div>
1790 <td class="member">{{ sampleCount }}</td> 1710 <div class="memberValue">{{ timeSpan }}</div>
1791 </tr> 1711 </div>
1792 <tr> 1712 <div class="memberItem">
1793 <td class="memberHeader">Sample rate</td> 1713 <div class="memberName">Sample count</div>
1794 <td class="member">{{ sampleRate }} Hz</td> 1714 <div class="memberValue">{{ sampleCount }}</div>
1795 </tr> 1715 </div>
1796 <tr> 1716 <div class="memberItem">
1797 <td class="memberHeader">Sample depth</td> 1717 <div class="memberName">Sample rate</div>
1798 <td class="member">{{ sampleDepth }} stack frames</td> 1718 <div class="memberValue">{{ sampleRate }} Hz</div>
1799 </tr> 1719 </div>
1800 <tr> 1720 <div class="memberItem">
1801 <td class="memberHeader">Call graph tree</td> 1721 <div class="memberName">Sample depth</div>
1802 <td class="member"> 1722 <div class="memberValue">{{ sampleDepth }} stack frames</div>
1803 <input type="checkbox" checked="{{ callGraphChecked }}"> 1723 </div>
1804 </td> 1724 <div class="memberItem">
1805 </tr><tr> 1725 <div class="memberName">Display cutoff</div>
1806 <td class="memberHeader">Display cutoff</td> 1726 <div class="memberValue">{{ displayCutoff }}</div>
1807 <td class="member">{{ displayCutoff }}</td> 1727 </div>
1808 </tr> 1728 <div class="memberItem">
1809 <tr> 1729 <div class="memberName">Tags</div>
1810 <td class="memberHeader">Hide tags</td> 1730 <div class="memberValue">
1811 <td class="member"> 1731 <select value="{{tagSelector}}">
1812 <input type="checkbox" checked="{{ hideTagsChecked }}"> 1732 <option value="uv">User &gt; VM</option>
1813 </td> 1733 <option value="u">User</option>
1814 </tr> 1734 <option value="vu">VM &gt; User</option>
1815 </tbody></table> 1735 <option value="v">VM</option>
1736 <option value="hide">None</option>
1737 </select>
1738 </div>
1739 </div>
1740 </div>
1816 <hr> 1741 <hr>
1817 <table id="tableTree" class="table table-hover"> 1742 <table id="tableTree" class="table">
1818 <thead> 1743 <thead>
1819 <tr> 1744 <tr>
1820 <th>Method</th> 1745 <th>Method</th>
1821 <th>Caller</th> 1746 <th>Self</th>
1822 <th>Exclusive</th>
1823 </tr> 1747 </tr>
1824 </thead> 1748 </thead>
1825 <tbody> 1749 <tbody>
1826 <tr template="" repeat="{{row in tree.rows }}" style="{{}}"> 1750 <tr template="" repeat="{{row in tree.rows }}" style="{{}}">
1827 <td on-click="{{toggleExpanded}}" class="{{ coloring(row) }}" style= "{{ padding(row) }}"> 1751 <td on-click="{{toggleExpanded}}" class="{{ coloring(row) }}" style= "{{ padding(row) }}">
1828 <span id="expand" style="cursor: pointer;">{{ row.expander }}</spa n> 1752 <span id="expand" style="cursor: pointer;">{{ row.expander }}</spa n>
1829 <code-ref ref="{{ row.code }}"></code-ref> 1753 <div style="position: relative;display: inline">
1754 {{row.columns[0]}}
1755 </div>
1756 <function-ref ref="{{ row.code.function }}"></function-ref>
1830 </td> 1757 </td>
1831 <td class="{{ coloring(row) }}">{{row.columns[0]}}</td> 1758 <td class="{{ coloring(row) }}" style="position: relative">
1832 <td class="{{ coloring(row) }}">{{row.columns[1]}}</td> 1759 {{row.columns[1]}}
1760 <div class="tooltip">
1761 <div class="memberList">
1762 <div class="memberItem">
1763 <div class="memberName white">Kind</div>
1764 <div class="memberValue white">{{ row.tipKind }}</div>
1765 </div>
1766 <div class="memberItem">
1767 <div class="memberName white">Percent of Parent</div>
1768 <div class="memberValue white">{{ row.tipParent }}</div>
1769 </div>
1770 <div class="memberItem">
1771 <div class="memberName white">Sample Count</div>
1772 <div class="memberValue white">{{ row.tipTicks }} ({{ row.tip Exclusive }})</div>
1773 </div>
1774 <div class="memberItem">
1775 <div class="memberName white">Approximate Execution Time</div >
1776 <div class="memberValue white">{{ row.tipTime }}</div>
1777 </div>
1778 </div>
1779 </div>
1780 </td>
1833 </tr> 1781 </tr>
1834 </tbody> 1782 </tbody>
1835 </table> 1783 </table>
1836 </div> 1784 </div>
1837 </template> 1785 </template>
1838 1786
1839 </polymer-element> 1787 </polymer-element>
1840 <polymer-element name="heap-profile" extends="observatory-element"> 1788 <polymer-element name="heap-profile" extends="observatory-element">
1841 <template> 1789 <template>
1790 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.css" >
1791 <style>
1792 .table {
1793 border-collapse: collapse!important;
1794 width: 100%;
1795 margin-bottom: 20px
1796 table-layout: fixed;
1797 }
1798 .table td:nth-of-type(1) {
1799 width: 30%;
1800 }
1801 .th, .td {
1802 padding: 8px;
1803 vertical-align: top;
1804 }
1805 .table thead > tr > th {
1806 vertical-align: bottom;
1807 text-align: left;
1808 border-bottom:2px solid #ddd;
1809 }
1810 .clickable {
1811 color: #0489c3;
1812 text-decoration: none;
1813 cursor: pointer;
1814 }
1815 .clickable:hover {
1816 text-decoration: underline;
1817 cursor: pointer;
1818 }
1819 #classtable tr:hover > td {
1820 background-color: #F4C7C3;
1821 }
1822 </style>
1842 <nav-bar> 1823 <nav-bar>
1843 <top-nav-menu></top-nav-menu> 1824 <top-nav-menu></top-nav-menu>
1844 <isolate-nav-menu isolate="{{ profile.isolate }}"></isolate-nav-menu> 1825 <isolate-nav-menu isolate="{{ profile.isolate }}"></isolate-nav-menu>
1845 <nav-menu link="." anchor="heap profile" last="{{ true }}"></nav-menu> 1826 <nav-menu link="." anchor="heap profile" last="{{ true }}"></nav-menu>
1827 <nav-refresh callback="{{ resetAccumulator }}" label="Reset Accumulator"></n av-refresh>
1828 <nav-refresh callback="{{ refreshGC }}" label="GC"></nav-refresh>
1846 <nav-refresh callback="{{ refresh }}"></nav-refresh> 1829 <nav-refresh callback="{{ refresh }}"></nav-refresh>
1847 </nav-bar> 1830 </nav-bar>
1848 1831
1849 <button type="button" on-click="{{resetAccumulator}}">Reset Accumulator</butto n> 1832 <div class="flex-row">
1850 <div class="row"> 1833 <div id="newPieChart" class="flex-item-fixed-4-12" style="height: 400px">
1851 <div id="newPieChart" class="col-md-4" style="height: 400px">
1852 </div> 1834 </div>
1853 <div id="newStatus" class="col-md-2"> 1835 <div id="newStatus" class="flex-item-fixed-2-12">
1854 <table class="table"> 1836 <div class="memberList">
1855 <tbody> 1837 <div class="memberItem">
1856 <tr> 1838 <div class="memberName">Collections</div>
1857 <td>Collections</td> 1839 <div class="memberValue">{{ formattedCollections(true) }}</div>
1858 <td>{{ formattedCollections(true) }}</td> 1840 </div>
1859 </tr> 1841 <div class="memberItem">
1860 <tr> 1842 <div class="memberName">Average Collection Time</div>
1861 <td>Average Collection Time</td> 1843 <div class="memberValue">{{ formattedAverage(true) }}</div>
1862 <td>{{ formattedAverage(true) }}</td> 1844 </div>
1863 </tr> 1845 <div class="memberItem">
1864 <tr> 1846 <div class="memberName">Cumulative Collection Time</div>
1865 <td>Cumulative Collection Time</td> 1847 <div class="memberValue">{{ formattedTotalCollectionTime(true) }}</d iv>
1866 <td>{{ formattedTotalCollectionTime(true) }}</td> 1848 </div>
1867 </tr> 1849 </div>
1868 </tbody>
1869 </table>
1870 </div> 1850 </div>
1871 <div id="oldPieChart" class="col-md-4" style="height: 400px"> 1851 <div id="oldPieChart" class="flex-item-fixed-4-12" style="height: 400px">
1872 </div> 1852 </div>
1873 <div id="oldStatus" class="col-md-2"> 1853 <div id="oldStatus" class="flex-item-fixed-2-12">
1874 <table class="table"> 1854 <div class="memberList">
1875 <tbody> 1855 <div class="memberItem">
1876 <tr> 1856 <div class="memberName">Collections</div>
1877 <td>Collections</td> 1857 <div class="memberValue">{{ formattedCollections(false) }}</div>
1878 <td>{{ formattedCollections(false) }}</td> 1858 </div>
1879 </tr> 1859 <div class="memberItem">
1880 <tr> 1860 <div class="memberName">Average Collection Time</div>
1881 <td>Average Collection Time</td> 1861 <div class="memberValue">{{ formattedAverage(false) }}</div>
1882 <td>{{ formattedAverage(false) }}</td> 1862 </div>
1883 </tr> 1863 <div class="memberItem">
1884 <tr> 1864 <div class="memberName">Cumulative Collection Time</div>
1885 <td>Cumulative Collection Time</td> 1865 <div class="memberValue">{{ formattedTotalCollectionTime(false) }}</ div>
1886 <td>{{ formattedTotalCollectionTime(false) }}</td> 1866 </div>
1887 </tr> 1867 </div>
1888 </tbody>
1889 </table>
1890 </div> 1868 </div>
1891 </div> 1869 </div>
1892 <div class="row"> 1870 <div class="flex-row">
1893 <p class="col-md-2">Aggregate heap table</p> 1871 <table id="classtable" class="flex-item-fixed-12-12 table">
1894 </div> 1872 <thead>
1895 <div class="row"> 1873 <tr>
1896 <div id="simpleTable" class="col-md-12" style="height: 800px"></div> 1874 <th on-click="{{changeSort}}" class="clickable" title="Class">{{ class Table.getColumnLabel(0) }}</th>
1897 </div> 1875 <th on-click="{{changeSort}}" class="clickable" title="Total Accumulat ed Size">{{ classTable.getColumnLabel(1) }}</th>
1898 <div class="row"> 1876 <th on-click="{{changeSort}}" class="clickable" title="Total Accumulat ed Instances">{{ classTable.getColumnLabel(2) }}</th>
1899 <p class="col-md-2">Individual heap table</p> 1877 <th on-click="{{changeSort}}" class="clickable" title="Old Space Accum ulated Size">{{ classTable.getColumnLabel(3) }}</th>
1900 </div> 1878 <th on-click="{{changeSort}}" class="clickable" title="Old Space Accum ulated Instances">{{ classTable.getColumnLabel(4) }}</th>
1901 <div class="row"> 1879 <th on-click="{{changeSort}}" class="clickable" title="Total Current S ize">{{ classTable.getColumnLabel(5) }}</th>
1902 <div id="table" class="col-md-12" style="height: 800px"></div> 1880 <th on-click="{{changeSort}}" class="clickable" title="Total Current I nstances">{{ classTable.getColumnLabel(6) }}</th>
1881 </tr>
1882 </thead>
1883 <tbody>
1884 <tr template="" repeat="{{row in classTable.sortedRows }}">
1885 <td><class-ref ref="{{ classTable.getValue(row, 0) }}"></class-ref></t d>
1886 <td title="{{ classTable.getValue(row, 1) }}">{{ classTable.getFormatt edValue(row, 1) }}</td>
1887 <td title="{{ classTable.getValue(row, 2) }}">{{ classTable.getFormatt edValue(row, 2) }}</td>
1888 <td title="{{ classTable.getValue(row, 3) }}">{{ classTable.getFormatt edValue(row, 3) }}</td>
1889 <td title="{{ classTable.getValue(row, 4) }}">{{ classTable.getFormatt edValue(row, 4) }}</td>
1890 <td title="{{ classTable.getValue(row, 5) }}">{{ classTable.getFormatt edValue(row, 5) }}</td>
1891 <td title="{{ classTable.getValue(row, 6) }}">{{ classTable.getFormatt edValue(row, 6) }}</td>
1892 </tr>
1893 </tbody>
1894 </table>
1903 </div> 1895 </div>
1904 </template> 1896 </template>
1905 1897
1906 </polymer-element> 1898 </polymer-element>
1907 <polymer-element name="script-view" extends="observatory-element"> 1899 <polymer-element name="script-view" extends="observatory-element">
1908 <template> 1900 <template>
1909 <nav-bar> 1901 <nav-bar>
1910 <top-nav-menu></top-nav-menu> 1902 <top-nav-menu></top-nav-menu>
1911 <isolate-nav-menu isolate="{{ script.isolate }}"> 1903 <isolate-nav-menu isolate="{{ script.isolate }}">
1912 </isolate-nav-menu> 1904 </isolate-nav-menu>
(...skipping 10 matching lines...) Expand all
1923 </nav-bar> 1915 </nav-bar>
1924 1916
1925 <script-inset id="scriptInset" script="{{ script }}" pos="{{ script.firstToken Pos }}" endpos="{{ script.lastTokenPos }}"> 1917 <script-inset id="scriptInset" script="{{ script }}" pos="{{ script.firstToken Pos }}" endpos="{{ script.lastTokenPos }}">
1926 <h1>script {{ script.name }}</h1> 1918 <h1>script {{ script.name }}</h1>
1927 </script-inset> 1919 </script-inset>
1928 </template> 1920 </template>
1929 1921
1930 </polymer-element> 1922 </polymer-element>
1931 <polymer-element name="stack-frame" extends="observatory-element"> 1923 <polymer-element name="stack-frame" extends="observatory-element">
1932 <template> 1924 <template>
1933 <style> 1925 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
1934 .memberList { 1926 <div class="flex-row">
1935 display: table; 1927 <div class="flex-item-fixed-1-12">
1936 } 1928 </div>
1937 .memberItem { 1929 <div class="flex-item-fixed-1-12">
1938 display: table-row;
1939 }
1940 .memberName, .memberValue {
1941 display: table-cell;
1942 vertical-align: top;
1943 padding: 3px 0 3px 1em;
1944 font: 400 14px 'Montserrat', sans-serif;
1945 }
1946 </style>
1947 <div class="row">
1948 <div class="col-md-1"></div>
1949 <div class="col-md-1">
1950 #{{ frame['depth'] }} 1930 #{{ frame['depth'] }}
1951 </div> 1931 </div>
1952 <div class="col-md-9"> 1932 <div class="flex-item-fixed-9-12">
1953 <function-ref ref="{{ frame['function'] }}"></function-ref> 1933 <function-ref ref="{{ frame['function'] }}"></function-ref>
1954 ( <script-ref ref="{{ frame['script'] }}" pos="{{ frame['tokenPos'] }}"> 1934 ( <script-ref ref="{{ frame['script'] }}" pos="{{ frame['tokenPos'] }} ">
1955 </script-ref> ) 1935 </script-ref> )
1956 1936
1957 <curly-block> 1937 <curly-block>
1958 <div class="memberList"> 1938 <div class="memberList">
1959 <template repeat="{{ v in frame['vars'] }}"> 1939 <template repeat="{{ v in frame['vars'] }}">
1960 <div class="memberItem"> 1940 <div class="memberItem">
1961 <div class="memberName">{{ v['name']}}</div> 1941 <div class="memberName">{{ v['name']}}</div>
1962 <div class="memberValue"> 1942 <div class="memberValue">
1963 <instance-ref ref="{{ v['value'] }}"></instance-ref> 1943 <instance-ref ref="{{ v['value'] }}"></instance-ref>
1944 </div>
1964 </div> 1945 </div>
1965 </div> 1946 </template>
1966 </template> 1947 </div>
1967 </div> 1948 </curly-block>
1968 </curly-block>
1969
1970 </div> 1949 </div>
1971 <div class="col-md-1"></div> 1950 <div class="flex-item-fixed-1-12">
1951 </div>
1972 </div> 1952 </div>
1973
1974
1975 </template> 1953 </template>
1976 1954
1977 </polymer-element> 1955 </polymer-element>
1978 <polymer-element name="stack-trace" extends="observatory-element"> 1956 <polymer-element name="stack-trace" extends="observatory-element">
1979 <template> 1957 <template>
1958 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
1980 <nav-bar> 1959 <nav-bar>
1981 <top-nav-menu></top-nav-menu> 1960 <top-nav-menu></top-nav-menu>
1982 <isolate-nav-menu isolate="{{ trace.isolate }}"></isolate-nav-menu> 1961 <isolate-nav-menu isolate="{{ trace.isolate }}"></isolate-nav-menu>
1983 <nav-menu link="." anchor="stack trace" last="{{ true }}"></nav-menu> 1962 <nav-menu link="." anchor="stack trace" last="{{ true }}"></nav-menu>
1984 <nav-refresh callback="{{ refresh }}"></nav-refresh> 1963 <nav-refresh callback="{{ refresh }}"></nav-refresh>
1985 </nav-bar> 1964 </nav-bar>
1986
1987 <template if="{{ trace['members'].isEmpty }}"> 1965 <template if="{{ trace['members'].isEmpty }}">
1988 <div class="col-md-1"></div> 1966 <div class="content">
1989 <div class="col-md-11">
1990 <em>No stack</em> 1967 <em>No stack</em>
1991 </div> 1968 </div>
1992 </template> 1969 </template>
1993 <template if="{{ trace['members'].isNotEmpty }}"> 1970 <template if="{{ trace['members'].isNotEmpty }}">
1994 <ul class="list-group"> 1971 <ul class="list-group">
1995 <template repeat="{{ frame in trace['members'] }}"> 1972 <template repeat="{{ frame in trace['members'] }}">
1996 <li class="list-group-item"> 1973 <li class="list-group-item">
1997 <stack-frame frame="{{ frame }}"></stack-frame> 1974 <stack-frame frame="{{ frame }}"></stack-frame>
1998 </li> 1975 </li>
1999 </template> 1976 </template>
2000 </ul> 1977 </ul>
2001 </template> 1978 </template>
2002 </template> 1979 </template>
2003 1980
2004 </polymer-element> 1981 </polymer-element>
2005 <polymer-element name="vm-view" extends="observatory-element"> 1982 <polymer-element name="vm-view" extends="observatory-element">
2006 <template> 1983 <template>
2007 <style> 1984 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
2008 .content {
2009 padding-left: 10%;
2010 font: 400 14px 'Montserrat', sans-serif;
2011 }
2012 h1 {
2013 font: 400 18px 'Montserrat', sans-serif;
2014 }
2015 .memberList {
2016 display: table;
2017 }
2018 .memberItem {
2019 display: table-row;
2020 }
2021 .memberName, .memberValue {
2022 display: table-cell;
2023 vertical-align: top;
2024 padding: 3px 0 3px 1em;
2025 font: 400 14px 'Montserrat', sans-serif;
2026 }
2027 .sourceInset {
2028 padding-left: 15%;
2029 padding-right: 15%;
2030 }
2031 </style>
2032 1985
2033 <nav-bar> 1986 <nav-bar>
2034 <top-nav-menu last="{{ true }}"></top-nav-menu> 1987 <top-nav-menu last="{{ true }}"></top-nav-menu>
2035 <nav-refresh callback="{{ refresh }}"></nav-refresh> 1988 <nav-refresh callback="{{ refresh }}"></nav-refresh>
2036 </nav-bar> 1989 </nav-bar>
2037 1990
2038 <div class="content"> 1991 <div class="content">
2039 <h1>VM</h1> 1992 <h1>VM</h1>
2040 <div class="memberList"> 1993 <div class="memberList">
2041 <div class="memberItem"> 1994 <div class="memberItem">
2042 <div class="memberName">version</div> 1995 <div class="memberName">version</div>
2043 <div class="memberValue">{{ vm.version }}</div> 1996 <div class="memberValue">{{ vm.version }}</div>
2044 </div> 1997 </div>
2045 <div class="memberItem"> 1998 <div class="memberItem">
2046 <div class="memberName">uptime</div> 1999 <div class="memberName">uptime</div>
2047 <div class="memberValue">{{ vm.uptime | formatTime }}</div> 2000 <div class="memberValue">{{ vm.uptime | formatTime }}</div>
2048 </div> 2001 </div>
2002 <div class="memberItem">
2003 <div class="memberName">type checks enabled</div>
2004 <div class="memberValue">{{ vm.typeChecksEnabled }}</div>
2005 </div>
2006 <div class="memberItem">
2007 <div class="memberName">asserts enabled</div>
2008 <div class="memberValue">{{ vm.assertsEnabled }}</div>
2009 </div>
2049 </div> 2010 </div>
2050 </div> 2011 </div>
2051 2012
2052 <br> 2013 <br>
2014 <hr>
2053 2015
2054 <ul class="list-group"> 2016 <ul class="list-group">
2055 <template repeat="{{ isolate in vm.isolates }}"> 2017 <template repeat="{{ isolate in vm.isolates }}">
2056 <li class="list-group-item"> 2018 <li class="list-group-item">
2057 <isolate-summary isolate="{{ isolate }}"></isolate-summary> 2019 <isolate-summary isolate="{{ isolate }}"></isolate-summary>
2058 </li> 2020 </li>
2021 <hr>
2059 </template> 2022 </template>
2060 </ul> 2023 </ul>
2061 </template> 2024 </template>
2062 2025
2063 </polymer-element> 2026 </polymer-element>
2064 <polymer-element name="service-view" extends="observatory-element"> 2027 <polymer-element name="service-view" extends="observatory-element">
2065 <!-- This element explicitly manages the child elements to avoid setting 2028 <!-- This element explicitly manages the child elements to avoid setting
2066 an observable property on the old element to an invalid type. --> 2029 an observable property on the old element to an invalid type. -->
2067 2030
2068 </polymer-element> 2031 </polymer-element>
2069 <polymer-element name="response-viewer" extends="observatory-element"> 2032 <polymer-element name="response-viewer" extends="observatory-element">
2070 <template> 2033 <template>
2071 <service-view object="{{ app.response }}"></service-view> 2034 <service-view object="{{ app.response }}"></service-view>
2072 </template> 2035 </template>
2073 2036
2074 </polymer-element><polymer-element name="observatory-application" extends="obser vatory-element"> 2037 </polymer-element><polymer-element name="observatory-application" extends="obser vatory-element">
2075 <template> 2038 <template>
2076 <response-viewer app="{{ app }}"></response-viewer> 2039 <response-viewer app="{{ app }}"></response-viewer>
2077 </template> 2040 </template>
2078 2041
2079 </polymer-element> 2042 </polymer-element>
2080 <polymer-element name="service-exception-view" extends="observatory-element"> 2043 <polymer-element name="service-exception-view" extends="observatory-element">
2081 <template> 2044 <template>
2045 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
2082 <nav-bar> 2046 <nav-bar>
2083 <top-nav-menu last="{{ true }}"></top-nav-menu> 2047 <top-nav-menu last="{{ true }}"></top-nav-menu>
2084 </nav-bar> 2048 </nav-bar>
2085 2049 <div class="content">
2086 <div class="row"> 2050 <h1>{{ exception.kind }}</h1>
2087 <div class="col-md-8 col-md-offset-2"> 2051 <div class="well">{{ exception.message }}</div>
2088 <div class="panel panel-danger"> 2052 <div class="well">{{ exception.response }}</div>
2089 <div class="panel-heading">{{ exception.kind }}</div>
2090 <div class="panel-body">
2091 <p>{{ exception.message }}</p>
2092 </div>
2093 <div class="well">
2094 <p>{{ exception.response }}</p>
2095 </div>
2096 </div>
2097 </div>
2098 </div> 2053 </div>
2099 </template> 2054 </template>
2100 2055
2101 </polymer-element> 2056 </polymer-element>
2102 <polymer-element name="service-error-view" extends="observatory-element"> 2057 <polymer-element name="service-error-view" extends="observatory-element">
2103 <template> 2058 <template>
2059 <link rel="stylesheet" href="packages/observatory/src/elements/css/shared.cs s">
2104 <nav-bar> 2060 <nav-bar>
2105 <top-nav-menu last="{{ true }}"></top-nav-menu> 2061 <top-nav-menu last="{{ true }}"></top-nav-menu>
2106 </nav-bar> 2062 </nav-bar>
2107 2063 <div class="content">
2108 <div class="row"> 2064 <h1>{{ error.kind }}</h1>
2109 <div class="col-md-8 col-md-offset-2"> 2065 <div class="well">{{ error.message }}</div>
2110 <div class="panel panel-danger">
2111 <div class="panel-heading">{{ error.kind }}</div>
2112 <div class="panel-body">
2113 <p>{{ error.message }}</p>
2114 </div>
2115 </div>
2116 </div>
2117 </div> 2066 </div>
2118 </template> 2067 </template>
2119 2068
2120 </polymer-element> 2069 </polymer-element>
2121 <polymer-element name="vm-ref" extends="service-ref"> 2070 <polymer-element name="vm-ref" extends="service-ref">
2122 <template> 2071 <template><link rel="stylesheet" href="packages/observatory/src/elements/css/sha red.css">
2123 <a href="{{ url }}">{{ ref.name }}</a> 2072 <a href="{{ url }}">{{ ref.name }}</a>
2124 </template> 2073 </template>
2125 2074
2126 </polymer-element> 2075 </polymer-element>
2127 2076
2128 2077
2129 <observatory-application devtools="true"></observatory-application> 2078 <observatory-application devtools="true"></observatory-application>
2130 2079
2131 </body></html> 2080 </body></html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698