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

Side by Side Diff: runtime/bin/vmservice/observatory/lib/src/elements/instance_view.html

Issue 532063002: Teach the Observatory about Contexts. Factor out object graph information from the instance view. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 3 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 <link rel="import" href="../../../../packages/polymer/polymer.html"> 1 <link rel="import" href="../../../../packages/polymer/polymer.html">
2 <link rel="import" href="class_ref.html"> 2 <link rel="import" href="class_ref.html">
3 <link rel="import" href="error_view.html"> 3 <link rel="import" href="error_view.html">
4 <link rel="import" href="eval_box.html"> 4 <link rel="import" href="eval_box.html">
5 <link rel="import" href="eval_link.html"> 5 <link rel="import" href="eval_link.html">
6 <link rel="import" href="field_ref.html"> 6 <link rel="import" href="field_ref.html">
7 <link rel="import" href="function_ref.html"> 7 <link rel="import" href="function_ref.html">
8 <link rel="import" href="inbound_reference.html"> 8 <link rel="import" href="inbound_reference.html">
9 <link rel="import" href="instance_ref.html"> 9 <link rel="import" href="instance_ref.html">
10 <link rel="import" href="observatory_element.html"> 10 <link rel="import" href="observatory_element.html">
11 <link rel="import" href="nav_bar.html"> 11 <link rel="import" href="nav_bar.html">
12 <link rel="import" href="object_common.html">
13 <link rel="import" href="context_ref.html">
12 14
13 <polymer-element name="instance-view" extends="observatory-element"> 15 <polymer-element name="instance-view" extends="observatory-element">
14 <template> 16 <template>
15 <link rel="stylesheet" href="css/shared.css"> 17 <link rel="stylesheet" href="css/shared.css">
16 <nav-bar> 18 <nav-bar>
17 <top-nav-menu></top-nav-menu> 19 <top-nav-menu></top-nav-menu>
18 <isolate-nav-menu isolate="{{ instance.isolate }}"></isolate-nav-menu> 20 <isolate-nav-menu isolate="{{ instance.isolate }}"></isolate-nav-menu>
19 <!-- TODO(turnidge): Add library nav menu here. --> 21 <!-- TODO(turnidge): Add library nav menu here. -->
20 <class-nav-menu cls="{{ instance.clazz }}"></class-nav-menu> 22 <class-nav-menu cls="{{ instance.clazz }}"></class-nav-menu>
21 <nav-menu link="." anchor="instance" last="{{ true }}"></nav-menu> 23 <nav-menu link="." anchor="instance" last="{{ true }}"></nav-menu>
22 <nav-refresh callback="{{ refresh }}"></nav-refresh> 24 <nav-refresh callback="{{ refresh }}"></nav-refresh>
23 <nav-control></nav-control> 25 <nav-control></nav-control>
24 </nav-bar> 26 </nav-bar>
25 27
26 <template if="{{ instance.isError }}"> 28 <template if="{{ instance.isError }}">
27 <error-view error_obj="{{ instance['error'] }}"></error-view> 29 <error-view error_obj="{{ instance['error'] }}"></error-view>
28 </template> 30 </template>
29 31
30 <template if="{{ !instance.isError }}"> 32 <template if="{{ !instance.isError }}">
31 <div class="content"> 33 <div class="content">
32 <template if="{{ instance.isType }}"> 34 <template if="{{ instance.isType }}">
33 <h1>type {{ instance.name }}</h1> 35 <h1>type {{ instance.name }}</h1>
34 </template> 36 </template>
35 <template if="{{ !instance.isType }}"> 37 <template if="{{ !instance.isType }}">
36 <h1>instance of {{ instance.clazz.name }}</h1> 38 <h1>instance of {{ instance.clazz.name }}</h1>
37 </template> 39 </template>
40
41 <object-common object="{{ instance }}"></object-common>
42
38 <div class="memberList"> 43 <div class="memberList">
39 <div class="memberItem"> 44 <div class="memberItem">&nbsp;</div>
40 <div class="memberName">class</div> 45
41 <div class="memberValue">
42 <class-ref ref="{{ instance.clazz }}">
43 </class-ref>
44 </div>
45 </div>
46 <template if="{{ instance.valueAsString != null }}"> 46 <template if="{{ instance.valueAsString != null }}">
47 <div class="memberItem"> 47 <div class="memberItem">
48 <div class="memberName">value</div> 48 <div class="memberName">value</div>
49 <div class="memberValue">{{ instance.valueAsString }}</div> 49 <div class="memberValue">{{ instance.valueAsString }}</div>
50 </div> 50 </div>
51 </template> 51 </template>
52 <div class="memberItem" title="Space for this object in memory"> 52
53 <div class="memberName">size</div>
54 <div class="memberValue">{{ instance.size | formatSize }}</div>
55 </div>
56 <div class="memberItem" title="Space that would be reclaimed if refere nces to this object were replaced with null">
57 <div class="memberName">retained size</div>
58 <div class="memberValue">
59 <template if="{{ retainedBytes == null }}">
60 <eval-link callback="{{ retainedSize }}"
61 label="[calculate]">
62 </eval-link>
63 </template>
64 <template if="{{ retainedBytes != null }}">
65 {{ retainedBytes | formatSize }}
66 </template>
67 </div>
68 </div>
69 <div class="memberItem">
70 <div class="memberName">retaining path</div>
71 <div class="memberValue">
72 <template if="{{ path == null }}">
73 <eval-link callback="{{ retainingPath }}"
74 label="[find]"
75 expr="10">
76 </eval-link>
77 </template>
78 <template if="{{ path != null }}">
79 <template repeat="{{ element in path['elements'] }}">
80 <div class="memberItem">
81 <div class="memberName">[{{ element['index']}}]</div>
82 <div class="memberValue">
83 <any-service-ref ref="{{ element['value'] }}"></any-service- ref>
84 <template if="{{ element['parentField'] != null }}">
85 in <field-ref ref="{{ element['parentField'] }}"></field-r ef> of
86 </template>
87 <template if="{{ element['parentListIndex'] != null }}">
88 in [{{ element['parentListIndex'] }}] of
89 </template>
90 </div>
91 </div>
92 </template>
93 <template if="{{ path['length'] > path['elements'].length }}">
94 showing {{ path['elements'].length }} of {{ path['length'] }}
95 <eval-link
96 callback="{{ retainingPath }}"
97 label="[find more]"
98 expr="{{ path['elements'].length * 2 }}">
99 </eval-link>
100 </template>
101 </template>
102 </div>
103 </div>
104 <div class="memberItem" title="Objects which directly reference this o bject">
105 <div class="memberName">inbound references</div>
106 <div class="memberValue">
107 <template if="{{ inboundReferences == null }}">
108 <eval-link callback="{{ fetchInboundReferences }}"
109 label="[find]"
110 expr="100">
111 </eval-link>
112 </template>
113 <template if="{{ inboundReferences != null }}">
114 <template repeat="{{ reference in inboundReferences['references' ] }}">
115 <inbound-reference ref="{{ reference }}"></inbound-reference>
116 </template>
117 </template>
118 </div>
119 </div>
120 <template if="{{ instance.typeClass != null }}"> 53 <template if="{{ instance.typeClass != null }}">
121 <div class="memberItem"> 54 <div class="memberItem">
122 <div class="memberName">type class</div> 55 <div class="memberName">type class</div>
123 <div class="memberValue"> 56 <div class="memberValue">
124 <class-ref ref="{{ instance.typeClass }}"> 57 <class-ref ref="{{ instance.typeClass }}">
125 </class-ref> 58 </class-ref>
126 </div> 59 </div>
127 </div> 60 </div>
128 </template> 61 </template>
62
129 <template if="{{ instance.isClosure }}"> 63 <template if="{{ instance.isClosure }}">
130 <div class="memberItem"> 64 <div class="memberItem">
131 <div class="memberName">closure function</div> 65 <div class="memberName">closure function</div>
132 <div class="memberValue"> 66 <div class="memberValue">
133 <function-ref ref="{{ instance.closureFunc }}"> 67 <function-ref ref="{{ instance.closureFunc }}">
134 </function-ref> 68 </function-ref>
135 </div> 69 </div>
136 </div> 70 </div>
137 </template> 71 </template>
72 <template if="{{ instance.isClosure }}">
73 <div class="memberItem">
74 <div class="memberName">closure context</div>
75 <div class="memberValue">
76 <any-service-ref ref="{{ instance.closureCtxt }}">
77 </any-service-ref>
78 </div>
79 </div>
80 </template>
138 81
139 <div class="memberItem">&nbsp;</div>
140
141 <div class="memberItem"> 82 <div class="memberItem">
142 <div class="memberName">toString()</div> 83 <div class="memberName">toString()</div>
143 <div class="memberValue"> 84 <div class="memberValue">
144 <eval-link callback="{{ eval }}" expr="toString()"></eval-link> 85 <eval-link callback="{{ eval }}" expr="toString()"></eval-link>
145 </div> 86 </div>
146 </div> 87 </div>
147 </div> 88 </div>
148 </div> 89 </div>
149 90
150 <hr> 91 <hr>
151 92
152 <div class="content"> 93 <div class="content">
94 <template if="{{ instance.nativeFields.isNotEmpty }}">
95 native fields ({{ instance.nativeFields.length }})
96 <curly-block expand="{{ instance.nativeFields.length <= 8 }}">
97 <div class="memberList">
98 <template repeat="{{ field in instance.nativeFields }}">
99 <div class="memberItem">
100 <div class="memberName">[{{ field['index']}}]</div>
101 <div class="memberValue">[{{ field['value']}}]</div>
102 </div>
103 </template>
104 </div>
105 </curly-block><br><br>
106 </template>
107
153 <template if="{{ instance.fields.isNotEmpty }}"> 108 <template if="{{ instance.fields.isNotEmpty }}">
154 fields ({{ instance.fields.length }}) 109 fields ({{ instance.fields.length }})
155 <curly-block expand="{{ instance.fields.length <= 8 }}"> 110 <curly-block expand="{{ instance.fields.length <= 8 }}">
156 <div class="memberList"> 111 <div class="memberList">
157 <template repeat="{{ field in instance.fields }}"> 112 <template repeat="{{ field in instance.fields }}">
158 <div class="memberItem"> 113 <div class="memberItem">
159 <div class="memberName"> 114 <div class="memberName">
160 <field-ref ref="{{ field['decl'] }}"></field-ref> 115 <field-ref ref="{{ field['decl'] }}"></field-ref>
161 </div> 116 </div>
162 <div class="memberValue"> 117 <div class="memberValue">
163 <any-service-ref ref="{{ field['value'] }}"></any-service-re f> 118 <any-service-ref ref="{{ field['value'] }}"></any-service-re f>
164 </div> 119 </div>
165 </div> 120 </div>
166 </template> 121 </template>
167 </div> 122 </div>
168 </curly-block><br><br> 123 </curly-block><br><br>
169 </template> 124 </template>
170 125
171 <template if="{{ instance.nativeFields.isNotEmpty }}">
172 native fields ({{ instance.nativeFields.length }})
173 <curly-block expand="{{ instance.nativeFields.length <= 8 }}">
174 <div class="memberList">
175 <template repeat="{{ field in instance.nativeFields }}">
176 <div class="memberItem">
177 <div class="memberName">[{{ field['index']}}]</div>
178 <div class="memberValue">[{{ field['value']}}]</div>
179 </div>
180 </template>
181 </div>
182 </curly-block><br><br>
183 </template>
184
185 <template if="{{ instance.elements.isNotEmpty }}"> 126 <template if="{{ instance.elements.isNotEmpty }}">
186 elements ({{ instance.elements.length }}) 127 elements ({{ instance.elements.length }})
187 <curly-block expand="{{ instance.elements.length <= 8 }}"> 128 <curly-block expand="{{ instance.elements.length <= 8 }}">
188 <div class="memberList"> 129 <div class="memberList">
189 <template repeat="{{ element in instance.elements }}"> 130 <template repeat="{{ element in instance.elements }}">
190 <div class="memberItem"> 131 <div class="memberItem">
191 <div class="memberName">[{{ element['index']}}]</div> 132 <div class="memberName">[{{ element['index']}}]</div>
192 <div class="memberValue"> 133 <div class="memberValue">
193 <any-service-ref ref="{{ element['value'] }}"> 134 <any-service-ref ref="{{ element['value'] }}"></any-service- ref>
194 </instance-ref>
195 </div> 135 </div>
196 </div> 136 </div>
197 </template> 137 </template>
198 </div> 138 </div>
199 </curly-block><br><br> 139 </curly-block><br><br>
200 </template> 140 </template>
201 </div> 141 </div>
202 142
203 <hr> 143 <hr>
204 144
205 <div class="content"> 145 <div class="content">
206 <eval-box callback="{{ eval }}"></eval-box> 146 <eval-box callback="{{ eval }}"></eval-box>
207 </div> 147 </div>
148
208 <br><br><br><br> 149 <br><br><br><br>
209 <br><br><br><br> 150 <br><br><br><br>
210 151
211 </template> 152 </template>
212 </template> 153 </template>
213 </polymer-element> 154 </polymer-element>
214 155
215 <script type="application/dart" src="instance_view.dart"></script> 156 <script type="application/dart" src="instance_view.dart"></script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698