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

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

Issue 215213003: Rework the <field-view> page. (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 type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c ss">
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>
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 isBool(ref.serviceType) || 305 isBool(ref.serviceType) ||
306 isInt(ref.serviceType)) || 306 isInt(ref.serviceType)) ||
307 isDouble(ref.serviceType)) }}"> 307 isDouble(ref.serviceType)) }}">
308 <a href="{{ url }}">{{ ref['preview'] }}</a> 308 <a href="{{ url }}">{{ ref['preview'] }}</a>
309 </template> 309 </template>
310 310
311 <template if="{{ (isType(ref.serviceType)) }}"> 311 <template if="{{ (isType(ref.serviceType)) }}">
312 <a href="{{ url }}">{{ ref['user_name'] }}</a> 312 <a href="{{ url }}">{{ ref['user_name'] }}</a>
313 </template> 313 </template>
314 314
315 <template if="{{ isClosure(ref.serviceType) }}"> 315 <template if="{{ isInstance(ref.serviceType) &amp;&amp;
316 ref['closureFunc'] != null}}">
316 <a href="{{ url }}"> 317 <a href="{{ url }}">
317 <!-- TODO(turnidge): Switch this to fully-qualified function --> 318 <!-- TODO(turnidge): Switch this to fully-qualified function -->
318 {{ ref['closureFunc']['user_name'] }} 319 {{ ref['closureFunc']['user_name'] }}
319 </a> 320 </a>
320 </template> 321 </template>
321 322
322 <template if="{{ isInstance(ref.serviceType) }}"> 323 <template if="{{ isInstance(ref.serviceType) &amp;&amp;
324 ref['closureFunc'] == null}}">
323 <a href="{{ url }}"><em>{{ ref['class']['user_name'] }}</em></a> 325 <a href="{{ url }}"><em>{{ ref['class']['user_name'] }}</em></a>
324 <curly-block callback="{{ expander() }}"> 326 <curly-block callback="{{ expander() }}">
325 <div class="memberList"> 327 <div class="memberList">
326 <template repeat="{{ field in ref['fields'] }}"> 328 <template repeat="{{ field in ref['fields'] }}">
327 <div class="memberItem"> 329 <div class="memberItem">
328 <div class="memberName"> 330 <div class="memberName">
329 {{ field['decl']['user_name'] }} 331 {{ field['decl']['user_name'] }}
330 </div> 332 </div>
331 <div class="memberValue"> 333 <div class="memberValue">
332 <instance-ref ref="{{ field['value'] }}"></instance-ref> 334 <instance-ref ref="{{ field['value'] }}"></instance-ref>
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 </template> 432 </template>
431 </td> 433 </td>
432 </tr> 434 </tr>
433 </tbody></table> 435 </tbody></table>
434 </template> 436 </template>
435 </template> 437 </template>
436 </polymer-element> 438 </polymer-element>
437 439
438 440
439 <polymer-element name="field-ref" extends="service-ref"> 441 <polymer-element name="field-ref" extends="service-ref">
440 <template> 442 <template>
441 <div> 443 <div>
442 <template if="{{ ref['final'] }}"> final </template> 444 <template if="{{ ref['static'] }}">static</template>
443 <template if="{{ ref['const'] }}"> const </template> 445 <template if="{{ ref['final'] }}">final</template>
444 <template if="{{ (ref['declared_type']['name'] == 'dynamic' &amp;&amp; !ref['f inal'] &amp;&amp; !ref['const']) }}"> 446 <template if="{{ ref['const'] }}">const</template>
445 var 447 <template if="{{ (ref['declared_type']['name'] == 'dynamic' &amp;&amp;
448 !ref['final'] &amp;&amp; !ref['const']) }}">
449 var
450 </template>
451 <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}">
452 <instance-ref ref="{{ ref['declared_type'] }}"></instance-ref>
453 </template>
454 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a>
455 </div>
446 </template> 456 </template>
447 <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}"> 457
448 <instance-ref ref="{{ ref['declared_type'] }}"></instance-ref> 458 </polymer-element>
449 </template>
450 <a title="{{ hoverText }}" href="{{ url }}">{{ name }}</a>
451 </div>
452 </template> </polymer-element>
453 <polymer-element name="function-ref" extends="service-ref"> 459 <polymer-element name="function-ref" extends="service-ref">
454 <template><!-- These comments are here to allow newlines. 460 <template><!-- These comments are here to allow newlines.
455 --><template if="{{ qualified &amp;&amp; !hasParent &amp;&amp; hasClass }}" ><!-- 461 --><template if="{{ qualified &amp;&amp; !hasParent &amp;&amp; hasClass }}" ><!--
456 --><class-ref ref="{{ ref['class'] }}"></class-ref>.</template><!-- 462 --><class-ref ref="{{ ref['owner'] }}"></class-ref>.</template><!--
457 --><template if="{{ qualified &amp;&amp; hasParent }}"><!-- 463 --><template if="{{ qualified &amp;&amp; hasParent }}"><!--
458 --><function-ref ref="{{ ref['parent'] }}" qualified="{{ true }}"> 464 --><function-ref ref="{{ ref['parent'] }}" qualified="{{ true }}">
459 </function-ref>.<!-- 465 </function-ref>.<!--
460 --></template><a href="{{ url }}">{{ name }}</a><!-- 466 --></template><a href="{{ url }}">{{ name }}</a><!--
461 --></template> 467 --></template>
462 468
463 </polymer-element> 469 </polymer-element>
464 <polymer-element name="library-ref" extends="service-ref"> 470 <polymer-element name="library-ref" extends="service-ref">
465 <template> 471 <template>
466 <a href="{{ url }}">{{ name }}</a> 472 <a href="{{ url }}">{{ name }}</a>
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 <p>{{ error.message }}</p> 750 <p>{{ error.message }}</p>
745 </div> 751 </div>
746 </div> 752 </div>
747 </div> 753 </div>
748 </div> 754 </div>
749 </template> 755 </template>
750 756
751 </polymer-element> 757 </polymer-element>
752 <polymer-element name="field-view" extends="observatory-element"> 758 <polymer-element name="field-view" extends="observatory-element">
753 <template> 759 <template>
760 <style>
761 .content {
762 padding-left: 10%;
763 font: 400 14px 'Montserrat', sans-serif;
764 }
765 h1 {
766 font: 400 18px 'Montserrat', sans-serif;
767 }
768 .memberList {
769 display: table;
770 }
771 .memberItem {
772 display: table-row;
773 }
774 .memberName, .memberValue {
775 display: table-cell;
776 vertical-align: top;
777 padding: 3px 0 3px 1em;
778 font: 400 14px 'Montserrat', sans-serif;
779 }
780 </style>
781
754 <nav-bar> 782 <nav-bar>
755 <top-nav-menu></top-nav-menu> 783 <top-nav-menu></top-nav-menu>
756 <isolate-nav-menu isolate="{{ field.isolate }}"></isolate-nav-menu> 784 <isolate-nav-menu isolate="{{ field.isolate }}"></isolate-nav-menu>
757 <template if="{{ field['owner'].serviceType == 'Class' }}"> 785 <template if="{{ field['owner'].serviceType == 'Class' }}">
758 <!-- TODO(turnidge): Add library nav menu here. --> 786 <!-- TODO(turnidge): Add library nav menu here. -->
759 <class-nav-menu cls="{{ field['owner'] }}"></class-nav-menu> 787 <class-nav-menu cls="{{ field['owner'] }}"></class-nav-menu>
760 </template> 788 </template>
761 <template if="{{ field['owner'].serviceType == 'Library' }}"> 789 <template if="{{ field['owner'].serviceType == 'Library' }}">
762 <library-nav-menu library="{{ field['owner'] }}"></library-nav-menu> 790 <library-nav-menu library="{{ field['owner'] }}"></library-nav-menu>
763 </template> 791 </template>
764 <nav-menu link="." anchor="{{ field['user_name'] }}" last="{{ true }}"></n av-menu> 792 <nav-menu link="." anchor="{{ field['user_name'] }}" last="{{ true }}"></n av-menu>
765 <nav-refresh callback="{{ refresh }}"></nav-refresh> 793 <nav-refresh callback="{{ refresh }}"></nav-refresh>
766 </nav-bar> 794 </nav-bar>
767 795
768 <div class="row"> 796 <div class="content">
769 <div class="col-md-8 col-md-offset-2"> 797 <h1>
770 <div class="panel panel-warning"> 798 <template if="{{ field['static'] }}">static</template>
771 <div class="panel-heading"> 799 <template if="{{ field['final'] }}">final</template>
772 <template if="{{ field['static'] }}">static</template> 800 <template if="{{ field['const'] }}">const</template>
773 <template if="{{ field['final'] }}">final</template> 801 <template if="{{ (field['declared_type']['name'] == 'dynamic' &amp;&amp;
774 <template if="{{ field['const'] }}">const</template> 802 !field['final'] &amp;&amp; !field['const']) }}">
775 {{ field['user_name'] }} ({{ field['name'] }}) 803 var
776 <class-ref ref="{{ field['owner'] }}"></class-ref> 804 </template>
805 <template if="{{ (field['declared_type']['user_name'] != 'dynamic') }}">
806 {{ field['declared_type']['user_name'] }}
807 </template>
808 {{ field['user_name'] }}
809 </h1>
810 <div class="memberList">
811 <div class="memberItem">
812 <div class="memberName">owner</div>
813 <div class="memberValue">
814 <template if="{{ field['owner'].serviceType == 'Class' }}">
815 <class-ref ref="{{ field['owner'] }}"></class-ref>
816 </template>
817 <template if="{{ field['owner'].serviceType != 'Class' }}">
818 <library-ref ref="{{ field['owner'] }}"></library-ref>
819 </template>
820 </div>
777 </div> 821 </div>
778 <div class="panel-body"> 822 <div class="memberItem">
779 <template if="{{ field['guard_class'] == 'dynamic'}}"> 823 <div class="memberName">script</div>
780 <div class="alert alert-danger"> 824 <div class="memberValue">
781 Field has been assigned multiple types. If a field is only ever 825 <script-ref ref="{{ field['script'] }}"></script-ref>
782 assigned a single type, performance may improve. 826 </div>
827 </div>
828 <template if="{{ !field['static'] }}">
829 <div class="memberItem" title="The types observed for this field at ru ntime. Fields that are observed to have a single type at runtime or to never be null may allow for additional optimization.">
830 <div class="memberName">observed types</div>
831 <div class="memberValue">
832 <template if="{{ field['guard_class'] == 'dynamic' }}">
833 various
834 </template>
835 <template if="{{ field['guard_class'] == 'unknown' }}">
836 none
837 </template>
838 <template if="{{ field['guard_class'] != 'unknown' &amp;&amp;
839 field['guard_class'] != 'dynamic' }}">
840 <class-ref ref="{{ field['guard_class'] }}"></class-ref>
841 <template if="{{ field['guard_nullable'] }}">
842 — null observed
843 </template>
844 <template if="{{ !field['guard_nullable'] }}">
845 — null not observed
846 </template>
847 </template>
848 </div>
783 </div> 849 </div>
784 </template> 850 </template>
785 <template if="{{ (field['guard_class'] != 'dynamic') &amp;&amp; (field[' guard_class'] != 'unknown') }}"> 851 <template if="{{ field['value'] != null }}">
786 <div class="alert alert-success">Field has monomorphic type</div> 852 <div class="memberItem">
787 <template if="{{ (field['guard_class'] != 'dynamic') &amp;&amp; 853 <div class="memberName">static value</div>
788 field['guard_nullable'] }}"> 854 <div class="memberValue">
789 <div class="alert alert-info"> 855 <instance-ref ref="{{ field['value'] }}"></instance-ref>
790 Field has been assigned null. If a field is never assigned null,
791 performance may improve.
792 </div> 856 </div>
793 </template> 857 </div>
794 <blockquote>
795 <class-ref ref="{{ field['guard_class'] }}"></class-ref>
796 </blockquote>
797 </template> 858 </template>
798 </div>
799 </div> 859 </div>
800 </div> 860 </div>
801 </div>
802 </template> 861 </template>
803 862
804 </polymer-element> 863 </polymer-element>
805 <polymer-element name="function-view" extends="observatory-element"> 864 <polymer-element name="function-view" extends="observatory-element">
806 <template> 865 <template>
807 <style> 866 <style>
808 .content { 867 .content {
809 padding-left: 10%; 868 padding-left: 10%;
810 font: 400 14px 'Montserrat', sans-serif; 869 font: 400 14px 'Montserrat', sans-serif;
811 } 870 }
(...skipping 10 matching lines...) Expand all
822 display: table-cell; 881 display: table-cell;
823 vertical-align: top; 882 vertical-align: top;
824 padding: 3px 0 3px 1em; 883 padding: 3px 0 3px 1em;
825 font: 400 14px 'Montserrat', sans-serif; 884 font: 400 14px 'Montserrat', sans-serif;
826 } 885 }
827 </style> 886 </style>
828 887
829 <nav-bar> 888 <nav-bar>
830 <top-nav-menu></top-nav-menu> 889 <top-nav-menu></top-nav-menu>
831 <isolate-nav-menu isolate="{{ function.isolate }}"></isolate-nav-menu> 890 <isolate-nav-menu isolate="{{ function.isolate }}"></isolate-nav-menu>
832 <template if="{{ function['owner']['type'] == '@Class' }}"> 891 <template if="{{ function['owner'].serviceType == 'Class' }}">
833 <!-- TODO(turnidge): Add library nav menu here. --> 892 <!-- TODO(turnidge): Add library nav menu here. -->
834 <class-nav-menu cls="{{ function['owner'] }}"></class-nav-menu> 893 <class-nav-menu cls="{{ function['owner'] }}"></class-nav-menu>
835 </template> 894 </template>
836 <template if="{{ function['owner']['type'] == '@Library' }}"> 895 <template if="{{ function['owner'].serviceType == 'Library' }}">
837 <library-nav-menu library="{{ function['owner'] }}"></library-nav-menu> 896 <library-nav-menu library="{{ function['owner'] }}"></library-nav-menu>
838 </template> 897 </template>
839 <nav-menu link="." anchor="{{ function.name }}" last="{{ true }}"></nav-me nu> 898 <nav-menu link="." anchor="{{ function.name }}" last="{{ true }}"></nav-me nu>
840 <nav-refresh callback="{{ refresh }}"></nav-refresh> 899 <nav-refresh callback="{{ refresh }}"></nav-refresh>
841 </nav-bar> 900 </nav-bar>
842 901
843 <div class="content"> 902 <div class="content">
844 <h1>function {{ qualifiedName }}</h1> 903 <h1>function {{ qualifiedName }}</h1>
845 904
846 <div class="memberList"> 905 <div class="memberList">
847 <div class="memberItem"> 906 <div class="memberItem">
848 <div class="memberName">kind</div> 907 <div class="memberName">kind</div>
849 <div class="memberValue"> 908 <div class="memberValue">
850 <template if="{{ function['is_static'] }}">static</template> 909 <template if="{{ function['is_static'] }}">static</template>
851 <template if="{{ function['is_const'] }}">const</template> 910 <template if="{{ function['is_const'] }}">const</template>
852 {{ kind }} 911 {{ kind }}
853 </div> 912 </div>
854 </div> 913 </div>
855 <template if="{{ function['parent'] != null }}"> 914 <template if="{{ function['parent'] != null }}">
856 <div class="memberItem"> 915 <div class="memberItem">
857 <div class="memberName">parent function</div> 916 <div class="memberName">parent function</div>
858 <div class="memberValue"> 917 <div class="memberValue">
859 <function-ref ref="{{ function['parent'] }}"></function-ref> 918 <function-ref ref="{{ function['parent'] }}"></function-ref>
860 </div> 919 </div>
861 </div> 920 </div>
862 </template> 921 </template>
863 <template if="{{ function['parent'] == null &amp;&amp;
864 function['class'] != null }}">
865 <div class="memberItem">
866 <div class="memberName">parent class</div>
867 <div class="memberValue">
868 <class-ref ref="{{ function['class'] }}"></class-ref>
869 </div>
870 </div>
871 </template>
872 <div class="memberItem"> 922 <div class="memberItem">
923 <div class="memberName">owner</div>
924 <div class="memberValue">
925 <template if="{{ function['owner'].serviceType == 'Class' }}">
926 <class-ref ref="{{ function['owner'] }}"></class-ref>
927 </template>
928 <template if="{{ function['owner'].serviceType != 'Class' }}">
929 <library-ref ref="{{ function['owner'] }}"></library-ref>
930 </template>
931 </div>
932 </div>
933 <div class="memberItem">
873 <div class="memberName">script</div> 934 <div class="memberName">script</div>
874 <div class="memberValue"> 935 <div class="memberValue">
875 <script-ref ref="{{ function['script'] }}"> 936 <script-ref ref="{{ function['script'] }}"></script-ref>
876 </script-ref>
877 </div> 937 </div>
878 </div> 938 </div>
879 939
880 <div class="memberItem">&nbsp;</div> 940 <div class="memberItem">&nbsp;</div>
881 941
882 <template if="{{ function['code'] != null }}"> 942 <template if="{{ function['code'] != null }}">
883 <div class="memberItem"> 943 <div class="memberItem">
884 <div class="memberName">optimized code</div> 944 <div class="memberName">optimized code</div>
885 <div class="memberValue"> 945 <div class="memberValue">
886 <code-ref ref="{{ function['code'] }}"></code-ref> 946 <code-ref ref="{{ function['code'] }}"></code-ref>
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
1302 </div> 1362 </div>
1303 <template if="{{ instance['type_class'] != null }}"> 1363 <template if="{{ instance['type_class'] != null }}">
1304 <div class="memberItem"> 1364 <div class="memberItem">
1305 <div class="memberName">type class</div> 1365 <div class="memberName">type class</div>
1306 <div class="memberValue"> 1366 <div class="memberValue">
1307 <class-ref ref="{{ instance['type_class'] }}"> 1367 <class-ref ref="{{ instance['type_class'] }}">
1308 </class-ref> 1368 </class-ref>
1309 </div> 1369 </div>
1310 </div> 1370 </div>
1311 </template> 1371 </template>
1372 <template if="{{ instance['closureFunc'] != null }}">
1373 <div class="memberItem">
1374 <div class="memberName">closure function</div>
1375 <div class="memberValue">
1376 <function-ref ref="{{ instance['closureFunc'] }}">
1377 </function-ref>
1378 </div>
1379 </div>
1380 </template>
1312 </div> 1381 </div>
1313 </div> 1382 </div>
1314 1383
1315 <hr> 1384 <hr>
1316 1385
1317 <div class="content"> 1386 <div class="content">
1318 <template if="{{ instance['fields'].isNotEmpty }}"> 1387 <template if="{{ instance['fields'].isNotEmpty }}">
1319 fields ({{ instance['fields'].length }}) 1388 fields ({{ instance['fields'].length }})
1320 <curly-block> 1389 <curly-block>
1321 <div class="memberList"> 1390 <div class="memberList">
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after
2013 <template> 2082 <template>
2014 <a href="{{ url }}">{{ ref.name }}</a> 2083 <a href="{{ url }}">{{ ref.name }}</a>
2015 </template> 2084 </template>
2016 2085
2017 </polymer-element> 2086 </polymer-element>
2018 2087
2019 2088
2020 <observatory-application devtools="true"></observatory-application> 2089 <observatory-application devtools="true"></observatory-application>
2021 2090
2022 </body></html> 2091 </body></html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698