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

Side by Side Diff: runtime/bin/vmservice/client/out/web/index.html

Issue 50243002: Extend Observatory to display libraries, classes, fields, functions and code. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 1 month 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> 1 <!DOCTYPE html><html><head>
2 <title>Dart VM Observatory</title> 2
3 <meta charset="utf-8"> 3 <title>Dart VM Observatory</title>
4 4 <meta charset="utf-8">
5 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min .css"> 5 <link type="text/css" rel="stylesheet" href="bootstrap_css/css/bootstrap.min.c ss">
6 6
7 </head> 7 <script src="index.html_bootstrap.dart.js"></script>
8 <body> 8
9 <!-- 9 </head>
10 <script src="packages/shadow_dom/shadow_dom.debug.js"></script> 10 <body><polymer-element name="observatory-element">
11 <script src="packages/browser/interop.js"></script> 11
12 --> 12 </polymer-element><polymer-element name="class-view" extends="observatory-elemen t">
13 <polymer-element name="observatory-element"> 13 <template>
14 <div class="row">
15 <div class="col-md-8 col-md-offset-2">
16 <div class="panel panel-warning">
17 <div class="panel-heading">
18 {{ cls['user_name'] }} ({{ cls['name'] }})
19 <template if="{{ cls['super']['type'] != 'Null' }}">
20 extends
21 <a href="{{ app.locationManager.currentIsolateClassLink(cls['super'] ['id'])}}">
22 {{ cls['super']['user_name'] }}
23 </a>
24 </template>
25 <a class="pull-right" href="{{ app.locationManager.currentIsolateObjec tLink(cls['library']['id'])}}">
26 {{ cls['library']['name'] }}
27 </a>
28 </div>
29 <div class="panel-body">
30 <table class="table table-hover">
31 <tbody>
32 <tr>
33 <td>Abstract</td><td>{{ cls['abstract'] }}</td>
34 </tr>
35 <tr>
36 <td>Const</td><td>{{ cls['const'] }}</td>
37 </tr>
38 <tr>
39 <td>Finalized</td><td>{{ cls['const'] }}</td>
40 </tr>
41 <tr>
42 <td>Implemented</td><td>{{ cls['implemented'] }}</td>
43 </tr>
44 <tr>
45 <td>Patch</td><td>{{ cls['patch'] }}</td>
46 </tr>
47 </tbody>
48 </table>
49 <blockquote><strong>Fields</strong></blockquote>
50 <table class="table table-hover">
51 <thead>
52 <tr>
53 <th>User Name</th>
54 <th>VM Name</th>
55 </tr>
56 </thead>
57 <tbody>
58 <tr template="" repeat="{{ field in cls['fields'] }}">
59 <td><a href="{{ app.locationManager.currentIsolateObjectLink(fie ld['id'])}}">{{ field['user_name'] }}</a></td>
60 <td><a href="{{ app.locationManager.currentIsolateObjectLink(fie ld['id'])}}">{{ field['name'] }}</a></td>
61 </tr>
62 </tbody>
63 </table>
64 <blockquote><strong>Functions</strong></blockquote>
65 <table class="table table-hover">
66 <thead>
67 <tr>
68 <th>User Name</th>
69 <th>VM Name</th>
70 </tr>
71 </thead>
72 <tbody>
73 <tr template="" repeat="{{ function in cls['functions'] }}">
74 <td><a href="{{ app.locationManager.currentIsolateObjectLink(fun ction['id'])}}">{{ function['user_name'] }}</a></td>
75 <td><a href="{{ app.locationManager.currentIsolateObjectLink(fun ction['id'])}}">{{ function['name'] }}</a></td>
76 </tr>
77 </tbody>
78 </table>
79 </div>
80 </div>
81 </div>
82 </div>
83 </template>
84
85 </polymer-element><polymer-element name="disassembly-entry" extends="observatory -element">
86 <template>
87 <div class="row">
88 <template if="{{ instruction['type'] == 'DisassembledInstructionComment' }}" >
89 <div class="col-md-2"></div>
90 <div class="col-md-2"></div>
91 <div class="col-md-4"><code>{{ instruction['comment'] }}</code></div>
92 </template>
93 <template if="{{ instruction['type'] == 'DisassembledInstruction' }}">
94 <div class="col-md-2"></div>
95 <div class="col-md-2">{{ instruction['pc'] }}</div>
96 <div class="col-md-4">
97 <code>{{ instruction['hex'] }} {{ instruction['human'] }}</code>
98 </div>
99 </template>
100 </div>
101 </template>
102
103 </polymer-element><polymer-element name="code-view" extends="observatory-element ">
104 <template>
105 <div class="row">
106 <div class="col-md-8 col-md-offset-2">
107 <div class="{{ cssPanelClass }}">
108 <div class="panel-heading">
109 <a href="{{ app.locationManager.currentIsolateObjectLink(code['functio n']['id'])}}">
110 {{ code['function']['user_name'] }} ({{ code['function']['name'] }})
111 </a>
112 </div>
113 <div class="panel-body">
114 <div class="row">
115 <div class="col-md-2"><strong>Samples</strong></div>
116 <div class="col-md-2"><strong>Address</strong></div>
117 <div><strong>Instruction</strong></div>
118 </div>
119 <template repeat="{{ instruction in code['disassembly'] }}">
120 <disassembly-entry instruction="{{ instruction }}">
121 </disassembly-entry>
122 </template>
123 </div>
124 </div>
125 </div>
126 </div>
127 </template>
14 128
15 </polymer-element><polymer-element name="collapsible-content" extends="observato ry-element"> 129 </polymer-element><polymer-element name="collapsible-content" extends="observato ry-element">
16 <template> 130 <template>
17 <div class="well row"> 131 <div class="well row">
18 <a on-click="toggleDisplay" class="btn muted unselectable"> 132 <a on-click="toggleDisplay" class="btn muted unselectable">
19 Raw message... <i class="{{ iconClass }}"></i> 133 Raw message... <i class="{{ iconClass }}"></i>
20 </a> 134 </a>
21 <div style="display: {{ displayValue }}" class="well"> 135 <div style="display: {{ displayValue }}" class="well">
22 <content></content> 136 <content></content>
23 </div> 137 </div>
24 </div> 138 </div>
25 </template> 139 </template>
26 140
27 </polymer-element><polymer-element name="error-view" extends="observatory-elemen t"> 141 </polymer-element><polymer-element name="error-view" extends="observatory-elemen t">
28 <template> 142 <template>
29 <div class="alert alert-danger">Error!</div> 143 <div class="row">
30 <div class="alert alert-info"> 144 <div class="col-md-8 col-md-offset-2">
31 <p>Error message:</p> 145 <div class="panel panel-danger">
32 <p>{{ error }}</p> 146 <div class="panel-heading">Error</div>
147 <div class="panel-body">
148 <p>{{ error }}</p>
149 </div>
150 </div>
151 </div>
33 </div> 152 </div>
34 </template> 153 </template>
35 154
155 </polymer-element><polymer-element name="field-view" extends="observatory-elemen t">
156 <template>
157 <div class="row">
158 <div class="col-md-8 col-md-offset-2">
159 <div class="panel panel-warning">
160 <div class="panel-heading">
161 <template if="{{ field['static'] }}">static</template>
162 <template if="{{ field['final'] }}">final</template>
163 <template if="{{ field['const'] }}">const</template>
164 {{ field['user_name'] }} ({{ field['name'] }})
165 <a class="pull-right" href="{{ app.locationManager.currentIsolateClass Link(field['class']['id'])}}">
166 {{ field['class']['user_name'] }}
167 </a>
168 </div>
169 <div class="panel-body">
170 <template if="{{ field['guard_class'] == 'dynamic'}}">
171 <div class="alert alert-danger">
172 Field has been assigned multiple types. If a field is only ever
173 assigned a single type, performance may improve.
174 </div>
175 </template>
176 <template if="{{ field['guard_class'] != 'dynamic'}}">
177 <div class="alert alert-success">Field has monomorphic type</div>
178 <template if="{{ (field['guard_class'] != 'dynamic') &amp;&amp;
179 field['guard_nullable'] }}">
180 <div class="alert alert-info">
181 Field has been assigned null. If a field is never assigned null,
182 performance may improve.
183 </div>
184 </template>
185 <blockquote>
186 <a href="{{ app.locationManager.currentIsolateClassLink(field['guard _class']['id'])}}">
187 {{ field['guard_class']['user_name'] }}
188 </a>
189 </blockquote>
190 </template>
191 </div>
192 </div>
193 </div>
194 </div>
195 </template>
196
197 </polymer-element><polymer-element name="function-view" extends="observatory-ele ment">
198 <template>
199 <div class="row">
200 <div class="col-md-8 col-md-offset-2">
201 <div class="panel panel-warning">
202 <div class="panel-heading">
203 {{ function['user_name'] }} ({{ function['name'] }})
204 <a class="pull-right" href="{{ app.locationManager.currentIsolateClass Link(function['class']['id'])}}">
205 {{ function['class']['name'] }}
206 </a>
207 </div>
208 <div class="panel-body">
209 <div>
210 <a class="btn btn-primary" href="{{ app.locationManager.currentIsolate ObjectLink(function['code']['id'])}}">Current Code</a>
211 <a class="btn btn-info" href="{{ app.locationManager.currentIsolateObj ectLink(function['unoptimized_code']['id'])}}">Unoptimized Code</a>
212 </div>
213 <table class="table table-hover">
214 <tbody>
215 <tr>
216 <td>static</td><td>{{ function['is_static'] }}</td>
217 </tr>
218 <tr>
219 <td>Const</td><td>{{ function['is_const'] }}</td>
220 </tr>
221 <tr>
222 <td>Optimizable</td><td>{{ function['is_optimizable'] }}</td>
223 </tr>
224 <tr>
225 <td>Inlinable</td><td>{{ function['is_inlinable'] }}</td>
226 </tr>
227 <tr>
228 <td>Kind</td><td>{{ function['kind'] }}</td>
229 </tr>
230 <tr>
231 <td>Usage Count</td><td>{{ function['usage_counter'] }}</td>
232 </tr>
233 <tr>
234 <td>Optimized Call Site Count</td><td>{{ function['optimized_cal l_site_count'] }}</td>
235 </tr>
236 <tr>
237 <td>Deoptimizations</td><td>{{ function['deoptimizations'] }}</t d>
238 </tr>
239 </tbody>
240 </table>
241 </div>
242 </div>
243 </div>
244 </div>
245 </template>
246
36 </polymer-element><polymer-element name="isolate-summary" extends="observatory-e lement"> 247 </polymer-element><polymer-element name="isolate-summary" extends="observatory-e lement">
37 <template> 248 <template>
38 <div class="row"> 249 <div class="row">
39 <div class="col-md-1"> 250 <div class="col-md-1">
40 <img src="img/isolate_icon.png" class="img-polaroid"> 251 <img src="img/isolate_icon.png" class="img-polaroid">
41 </div> 252 </div>
42 <div class="col-md-1">{{ isolate }}</div> 253 <div class="col-md-1">{{ isolate }}</div>
43 <div class="col-md-10">{{ name }}</div> 254 <div class="col-md-10">{{ name }}</div>
44 </div> 255 </div>
45 <div class="row"> 256 <div class="row">
46 <div class="col-md-2"></div> 257 <div class="col-md-2"></div>
47 <div class="col-md-1"> 258 <div class="col-md-1">
48 <a href="{{ app.locationManager.relativeLink(isolate, 'stacktrac e') }}">Stacktrace</a> 259 <a href="{{ app.locationManager.relativeLink(isolate, 'stacktrac e') }}">Stacktrace</a>
49 </div> 260 </div>
50 » <div class="col-md-9"></div> 261 <div class="col-md-1">
262 <a href="{{ app.locationManager.relativeLink(isolate, 'library') }}">Lib rary</a>
263 </div>
264 » <div class="col-md-8"></div>
51 </div> 265 </div>
52 </template> 266 </template>
53 267
54 </polymer-element><polymer-element name="isolate-list" extends="observatory-elem ent"> 268 </polymer-element><polymer-element name="isolate-list" extends="observatory-elem ent">
55 <template> 269 <template>
56 <ul class="list-group"> 270 <ul class="list-group">
57 <template repeat="{{ isolate in app.isolateManager.isolates.values }}"> 271 <template repeat="{{ isolate in app.isolateManager.isolates.values }}">
58 <li class="list-group-item"> 272 <li class="list-group-item">
59 <isolate-summary app="{{ app }}" isolate="{{ isolate.id }}" name="{{ iso late.name }}"></isolate-summary> 273 <isolate-summary app="{{ app }}" isolate="{{ isolate.id }}" name="{{ iso late.name }}"></isolate-summary>
60 </li> 274 </li>
(...skipping 23 matching lines...) Expand all
84 <tbody> 298 <tbody>
85 <tr template="" repeat="{{key in keys}}"> 299 <tr template="" repeat="{{key in keys}}">
86 <th>{{key}}</th> 300 <th>{{key}}</th>
87 <td><json-view json="{{value(key)}}"></json-view></td> 301 <td><json-view json="{{value(key)}}"></json-view></td>
88 </tr> 302 </tr>
89 </tbody> 303 </tbody>
90 </table> 304 </table>
91 </template> 305 </template>
92 </template> 306 </template>
93 307
308 </polymer-element><polymer-element name="library-view" extends="observatory-elem ent">
309 <template>
310 <div class="alert alert-success">Library {{ library['name'] }}</div>
311 <div class="alert alert-info">Imported Libraries</div>
312 <table class="table table-hover">
313 <tbody>
314 <tr template="" repeat="{{ lib in library['libraries'] }}">
315 <td>
316 <a href="{{ app.locationManager.currentIsolateObjectLink(lib['id'])}}" >
317 {{ lib['name'] }}
318 </a>
319 </td>
320 </tr>
321 </tbody>
322 </table>
323 <div class="alert alert-info">Classes</div>
324 <table class="table table-hover">
325 <thead>
326 <tr>
327 <th>Name</th>
328 <th>Internal Name</th>
329 </tr>
330 </thead>
331 <tbody>
332 <tr template="" repeat="{{ cls in library['classes'] }}">
333 <td>
334 <a href="{{ app.locationManager.currentIsolateClassLink(cls['id']) }}" >
335 {{ cls['user_name'] }}
336 </a>
337 </td>
338 <td>
339 <a href="{{ app.locationManager.currentIsolateClassLink(cls['id']) }}" >
340 {{ cls['name'] }}
341 </a>
342 </td>
343 </tr>
344 </tbody>
345 </table>
346 </template>
347
94 </polymer-element><polymer-element name="stack-trace" extends="observatory-eleme nt"> 348 </polymer-element><polymer-element name="stack-trace" extends="observatory-eleme nt">
95 <template> 349 <template>
96 <div class="alert alert-info">Stack Trace</div> 350 <div class="alert alert-info">Stack Trace</div>
97 <table class="table table-hover"> 351 <table class="table table-hover">
98 <thead> 352 <thead>
99 <tr> 353 <tr>
100 <th>Depth</th> 354 <th>Depth</th>
101 <th>Function</th> 355 <th>Function</th>
102 <th>Url</th> 356 <th>Url</th>
103 <th>Line</th> 357 <th>Line</th>
104 </tr> 358 </tr>
105 </thead> 359 </thead>
106 <tbody> 360 <tbody>
107 <tr template="" repeat="{{ frame in trace['members'] }}"> 361 <tr template="" repeat="{{ frame in trace['members'] }}">
108 <td>{{$index}}</td> 362 <td>{{$index}}</td>
109 <td>{{ frame['name'] }}</td> 363 <td><a href="{{app.locationManager.currentIsolateObjectLink(frame['funct ion']['id'])}}">{{ frame['name'] }}</a></td>
110 <td>{{ frame['url'] }}</td> 364 <td>{{ frame['url'] }}</td>
111 <td>{{ frame['line'] }}</td> 365 <td>{{ frame['line'] }}</td>
112 </tr> 366 </tr>
113 </tbody> 367 </tbody>
114 </table> 368 </table>
115 </template> 369 </template>
116 370
117 </polymer-element><polymer-element name="message-viewer" extends="observatory-el ement"> 371 </polymer-element><polymer-element name="message-viewer" extends="observatory-el ement">
118 <!-- 372 <!--
119 This is a big switch statement which instantiates the custom element 373 This is a big switch statement which instantiates the custom element
120 designated to display the message type. 374 designated to display the message type.
121 --> 375 -->
122 <template> 376 <template>
123 <!-- If the message type is an IsolateList --> 377 <!-- If the message type is an IsolateList -->
124 <template if="{{ messageType == 'IsolateList' }}"> 378 <template if="{{ messageType == 'IsolateList' }}">
125 <isolate-list app="{{ app }}"></isolate-list> 379 <isolate-list app="{{ app }}"></isolate-list>
126 </template> 380 </template>
127 <!-- If the message type is a StackTrace --> 381 <!-- If the message type is a StackTrace -->
128 <template if="{{ messageType == 'StackTrace' }}"> 382 <template if="{{ messageType == 'StackTrace' }}">
129 <stack-trace app="{{ app }}" trace="{{ message }}"></stack-trace> 383 <stack-trace app="{{ app }}" trace="{{ message }}"></stack-trace>
130 </template> 384 </template>
131 <!-- If the message type is a RequestError --> 385 <!-- If the message type is a RequestError -->
132 <template if="{{ messageType == 'RequestError' }}"> 386 <template if="{{ messageType == 'RequestError' }}">
133 <error-view app="{{ app }}" error="{{ message['error'] }}"></error-view> 387 <error-view app="{{ app }}" error="{{ message['error'] }}"></error-view>
134 </template> 388 </template>
389 <template if="{{ messageType == 'Library' }}">
390 <library-view app="{{ app }}" library="{{ message }}"></library-view>
391 </template>
392 <template if="{{ messageType == 'Class' }}">
393 <class-view app="{{ app }}" cls="{{ message }}"></class-view>
394 </template>
395 <template if="{{ messageType == 'Field' }}">
396 <field-view app="{{ app }}" field="{{ message }}"></field-view>
397 </template>
398 <template if="{{ messageType == 'Function' }}">
399 <function-view app="{{ app }}" function="{{ message }}"></function-view>
400 </template>
401 <template if="{{ messageType == 'Code' }}">
402 <code-view app="{{ app }}" code="{{ message }}"></code-view>
403 </template>
135 <!-- Add new views and message types in the future here. --> 404 <!-- Add new views and message types in the future here. -->
136 </template> 405 </template>
137 406
138 </polymer-element><polymer-element name="navigation-bar" extends="observatory-el ement"> 407 </polymer-element><polymer-element name="navigation-bar" extends="observatory-el ement">
139 <template> 408 <template>
140 <nav class="navbar navbar-default" role="navigation"> 409 <nav class="navbar navbar-default" role="navigation">
141 <div class="navbar-header"> 410 <div class="navbar-header">
142 <a class="navbar-brand" href="">Observatory</a> 411 <a class="navbar-brand" href="">Observatory</a>
143 </div> 412 </div>
144 <div class="collapse navbar-collapse navbar-ex1-collapse"> 413 <div class="collapse navbar-collapse navbar-ex1-collapse">
145 <input class="span2 pull-right navbar-form" placeholder="VM Address" typ e="text" value="{{ app.requestManager.prefix }}"> 414 <input class="span2 pull-right navbar-form" placeholder="VM Address" typ e="text" value="{{ app.requestManager.prefix }}">
146 </div> 415 </div>
147 </nav> 416 </nav>
148 </template> 417 </template>
149 418
150 </polymer-element><polymer-element name="response-viewer" extends="observatory-e lement"> 419 </polymer-element><polymer-element name="response-viewer" extends="observatory-e lement">
151 <template> 420 <template>
152 <template repeat="{{ message in app.requestManager.responses }}"> 421 <template repeat="{{ message in app.requestManager.responses }}">
153 <message-viewer app="{{ app }}" message="{{ message }}"></message-viewer> 422 <message-viewer app="{{ app }}" message="{{ message }}"></message-viewer>
154 <collapsible-content> 423 <collapsible-content>
155 <json-view json="{{ message }}"></json-view> 424 <!-- <json-view json="{{ message }}"></json-view> -->
156 </collapsible-content> 425 </collapsible-content>
157 </template> 426 </template>
158 </template> 427 </template>
159 428
160 </polymer-element><polymer-element name="observatory-application" extends="obser vatory-element"> 429 </polymer-element><polymer-element name="observatory-application" extends="obser vatory-element">
161 <template> 430 <template>
162 <navigation-bar app="{{ app }}"></navigation-bar> 431 <navigation-bar app="{{ app }}"></navigation-bar>
163 <response-viewer app="{{ app }}"></response-viewer> 432 <response-viewer app="{{ app }}"></response-viewer>
164 </template> 433 </template>
165 434
166 </polymer-element> 435 </polymer-element>
167 <observatory-application></observatory-application> 436 <observatory-application></observatory-application>
168
169
170 437
171 <script type="application/javascript" src="index.html_bootstrap.dart.js"></scrip t></body></html> 438 </body></html>
OLDNEW
« no previous file with comments | « runtime/bin/vmservice/client/out/web/.gitignore ('k') | runtime/bin/vmservice/client/out/web/index.html_bootstrap.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698