| Index: dart/runtime/bin/vmservice/client/deployed/web/index.html
|
| ===================================================================
|
| --- dart/runtime/bin/vmservice/client/deployed/web/index.html (revision 31530)
|
| +++ dart/runtime/bin/vmservice/client/deployed/web/index.html (working copy)
|
| @@ -29,7 +29,15 @@
|
| </template>
|
| </template>
|
|
|
| -</polymer-element><polymer-element name="error-view" extends="observatory-element">
|
| +</polymer-element><polymer-element name="service-ref" extends="observatory-element">
|
| +
|
| +</polymer-element><polymer-element name="class-ref" extends="service-ref">
|
| +<template>
|
| + <a href="{{ url }}">{{ name }}</a>
|
| +</template>
|
| +
|
| +</polymer-element>
|
| +<polymer-element name="error-view" extends="observatory-element">
|
| <template>
|
| <div class="row">
|
| <div class="col-md-8 col-md-offset-2">
|
| @@ -48,34 +56,42 @@
|
| </div>
|
| </template>
|
|
|
| -</polymer-element><polymer-element name="field-ref" extends="observatory-element">
|
| +</polymer-element><polymer-element name="field-ref" extends="service-ref">
|
| <template>
|
| <div>
|
| - <template if="{{ field['final'] }}"> final </template>
|
| - <template if="{{ field['const'] }}"> const </template>
|
| - <template if="{{ (field['declared_type']['name'] == 'dynamic' && !field['final'] && !field['const']) }}">
|
| + <template if="{{ ref['final'] }}"> final </template>
|
| + <template if="{{ ref['const'] }}"> const </template>
|
| + <template if="{{ (ref['declared_type']['name'] == 'dynamic' && !ref['final'] && !ref['const']) }}">
|
| var
|
| </template>
|
| - <template if="{{ (field['declared_type']['name'] != 'dynamic') }}">
|
| - <a href="{{ app.locationManager.currentIsolateClassLink(field['declared_type']['id']) }}">
|
| - {{ field['declared_type']['user_name'] }} </a>
|
| + <template if="{{ (ref['declared_type']['name'] != 'dynamic') }}">
|
| + <class-ref app="{{ app }}" ref="{{ ref['declared_type'] }}"></class-ref>
|
| </template>
|
| - <a href="{{ app.locationManager.currentIsolateObjectLink(field['id'])}}">
|
| - {{ field['user_name'] }} </a>
|
| + <a href="{{ url }}">{{ name }}</a>
|
| </div>
|
| -</template> </polymer-element><polymer-element name="instance-ref" extends="observatory-element">
|
| +</template> </polymer-element><polymer-element name="function-ref" extends="service-ref">
|
| <template>
|
| + <a href="{{ url }}">{{ name }}</a>
|
| +</template>
|
| +
|
| +</polymer-element><polymer-element name="instance-ref" extends="service-ref">
|
| +<template>
|
| <div>
|
| - <template if="{{ (instance['type'] == 'null') }}">
|
| + <template if="{{ (ref['type'] == 'null') }}">
|
| {{ "null" }}
|
| </template>
|
| - <template if="{{ (instance['type'] != 'null') }}">
|
| - <a href="{{ app.locationManager.currentIsolateObjectLink(instance['id'])}}">
|
| - {{ instance['preview'] }}
|
| - </a>
|
| + <template if="{{ (ref['type'] != 'null') }}">
|
| + <a href="{{ url }}">{{ name }} </a>
|
| </template>
|
| </div>
|
| -</template> </polymer-element><polymer-element name="class-view" extends="observatory-element">
|
| +</template>
|
| +
|
| +</polymer-element><polymer-element name="library-ref" extends="service-ref">
|
| +<template>
|
| + <a href="{{ url }}">{{ name }}</a>
|
| +</template>
|
| +
|
| +</polymer-element><polymer-element name="class-view" extends="observatory-element">
|
| <template>
|
| <div class="row">
|
| <div class="col-md-8 col-md-offset-2">
|
| @@ -84,13 +100,9 @@
|
| class <strong>{{ cls['user_name'] }}</strong>
|
| <template if="{{ cls['super']['type'] != 'Null' }}">
|
| extends
|
| - <a href="{{ app.locationManager.currentIsolateClassLink(cls['super']['id'])}}">
|
| - {{ cls['super']['user_name'] }}
|
| - </a>
|
| + <class-ref app="{{ app }}" ref="{{ cls['super'] }}"></class-ref>
|
| </template>
|
| - <a class="pull-right" href="{{ app.locationManager.currentIsolateObjectLink(cls['library']['id'])}}">
|
| - {{ cls['library']['name'] }}
|
| - </a>
|
| + <library-ref app="{{ app }}" ref="{{ cls['library'] }}"></library-ref>
|
| </div>
|
| <div class="panel-body">
|
| <table class="table table-hover">
|
| @@ -120,8 +132,8 @@
|
| <table class="table table-hover">
|
| <tbody>
|
| <tr template="" repeat="{{ field in cls['fields'] }}">
|
| - <td><field-ref app="{{ app }}" field="{{ field }}"></field-ref></td>
|
| - <td><instance-ref app="{{ app }}" instance="{{ field['value'] }}"></instance-ref></td>
|
| + <td><field-ref app="{{ app }}" ref="{{ field }}"></field-ref></td>
|
| + <td><instance-ref app="{{ app }}" ref="{{ field['value'] }}"></instance-ref></td>
|
| </tr>
|
| </tbody>
|
| </table>
|
| @@ -135,8 +147,8 @@
|
| </thead>
|
| <tbody>
|
| <tr template="" repeat="{{ function in cls['functions'] }}">
|
| - <td><a href="{{ app.locationManager.currentIsolateObjectLink(function['id'])}}">{{ function['user_name'] }}</a></td>
|
| - <td><a href="{{ app.locationManager.currentIsolateObjectLink(function['id'])}}">{{ function['name'] }}</a></td>
|
| + <td><function-ref app="{{ app }}" ref="{{ function }}"></function-ref></td>
|
| + <td><function-ref app="{{ app }}" ref="{{ function }}" internal=""></function-ref></td>
|
| </tr>
|
| </tbody>
|
| </table>
|
| @@ -150,6 +162,12 @@
|
| </div>
|
| </template>
|
|
|
| +</polymer-element>
|
| +<polymer-element name="code-ref" extends="service-ref">
|
| +<template>
|
| + <a href="{{ url }}">{{ name }}</a>
|
| +</template>
|
| +
|
| </polymer-element><polymer-element name="disassembly-entry" extends="observatory-element">
|
| <template>
|
| <div class="row">
|
| @@ -174,9 +192,7 @@
|
| <div class="col-md-8 col-md-offset-2">
|
| <div class="{{ cssPanelClass }}">
|
| <div class="panel-heading">
|
| - <a href="{{ app.locationManager.currentIsolateObjectLink(code['function']['id'])}}">
|
| - {{ code['function']['user_name'] }} ({{ code['function']['name'] }})
|
| - </a>
|
| + <function-ref app="{{ app }}" ref="{{ code['function'] }}"></function-ref>
|
| </div>
|
| <div class="panel-body">
|
| <div class="row">
|
| @@ -215,10 +231,8 @@
|
| <template if="{{ field['static'] }}">static</template>
|
| <template if="{{ field['final'] }}">final</template>
|
| <template if="{{ field['const'] }}">const</template>
|
| - {{ field['user_name'] }} ({{ field['name'] }})
|
| - <a class="pull-right" href="{{ app.locationManager.currentIsolateClassLink(field['class']['id'])}}">
|
| - {{ field['class']['user_name'] }}
|
| - </a>
|
| + {{ field['user_name'] }} ({{ field['name'] }})
|
| + <class-ref app="{{ app }}" ref="{{ field['class'] }}"></class-ref>
|
| </div>
|
| <div class="panel-body">
|
| <template if="{{ field['guard_class'] == 'dynamic'}}">
|
| @@ -227,9 +241,9 @@
|
| assigned a single type, performance may improve.
|
| </div>
|
| </template>
|
| - <template if="{{ field['guard_class'] != 'dynamic'}}">
|
| + <template if="{{ (field['guard_class'] != 'dynamic') && (field['guard_class'] != 'unknown') }}">
|
| <div class="alert alert-success">Field has monomorphic type</div>
|
| - <template if="{{ (field['guard_class'] != 'dynamic') &&
|
| + <template if="{{ (field['guard_class'] != 'dynamic') &&
|
| field['guard_nullable'] }}">
|
| <div class="alert alert-info">
|
| Field has been assigned null. If a field is never assigned null,
|
| @@ -237,9 +251,7 @@
|
| </div>
|
| </template>
|
| <blockquote>
|
| - <a href="{{ app.locationManager.currentIsolateClassLink(field['guard_class']['id'])}}">
|
| - {{ field['guard_class']['user_name'] }}
|
| - </a>
|
| + <class-ref app="{{ app }}" ref="{{ field['guard_class'] }}"></class-ref>
|
| </blockquote>
|
| </template>
|
| </div>
|
| @@ -254,15 +266,13 @@
|
| <div class="col-md-8 col-md-offset-2">
|
| <div class="panel panel-warning">
|
| <div class="panel-heading">
|
| - {{ function['user_name'] }} ({{ function['name'] }})
|
| - <a class="pull-right" href="{{ app.locationManager.currentIsolateClassLink(function['class']['id'])}}">
|
| - {{ function['class']['name'] }}
|
| - </a>
|
| + {{ function['user_name'] }} ({{ function['name'] }})
|
| + <class-ref app="{{ app }}" ref="{{ function['class'] }}"></class-ref>
|
| </div>
|
| <div class="panel-body">
|
| <div>
|
| - <a class="btn btn-primary" href="{{ app.locationManager.currentIsolateObjectLink(function['code']['id'])}}">Current Code</a>
|
| - <a class="btn btn-info" href="{{ app.locationManager.currentIsolateObjectLink(function['unoptimized_code']['id'])}}">Unoptimized Code</a>
|
| + <code-ref app="{{ app }}" ref="{{ function['code'] }}"></code-ref>
|
| + <code-ref app="{{ app }}" ref="{{ function['unoptimized_code'] }}"></code-ref>
|
| </div>
|
| <table class="table table-hover">
|
| <tbody>
|
| @@ -302,7 +312,7 @@
|
| <template>
|
| <div class="row">
|
| <div class="col-md-1">
|
| - <img src="packages/observatory/src/observatory_elements/img/isolate_icon.png" class="img-polaroid">
|
| + <img src="img/isolate_icon.png" class="img-polaroid">
|
| </div>
|
| <div class="col-md-1">{{ isolate }}</div>
|
| <div class="col-md-10">{{ name }}</div>
|
| @@ -318,11 +328,15 @@
|
| <div class="col-md-1">
|
| <a href="{{ app.locationManager.relativeLink(isolate, 'debug/breakpoints') }}">Breakpoints</a>
|
| </div>
|
| + <div class="col-md-1">
|
| + <a href="{{ app.locationManager.relativeLink(isolate, 'profile') }}">Profile</a>
|
| + </div>
|
| <div class="col-md-8"></div>
|
| </div>
|
| </template>
|
|
|
| -</polymer-element><polymer-element name="isolate-list" extends="observatory-element">
|
| +</polymer-element>
|
| +<polymer-element name="isolate-list" extends="observatory-element">
|
| <template>
|
| <ul class="list-group">
|
| <template repeat="{{ isolate in app.isolateManager.isolates.values }}">
|
| @@ -337,12 +351,10 @@
|
| <template>
|
| <div class="row">
|
| <div class="col-md-8 col-md-offset-2">
|
| - <div class="panel panel-warning">
|
| + <div class="panel panel-warning">
|
| <div class="panel-heading">
|
| Instance of
|
| - <a href="{{ app.locationManager.currentIsolateClassLink(instance['class']['id'])}}">
|
| - {{ instance['class']['user_name'] }}
|
| - </a>
|
| + <class-ref app="{{ app }}" ref="{{ instance['class'] }}"></class-ref>
|
| </div>
|
| <div class="panel-body">
|
| <template if="{{ instance['error'] == null }}">
|
| @@ -357,8 +369,8 @@
|
| <table class="table table-hover">
|
| <tbody>
|
| <tr template="" repeat="{{ field in instance['fields'] }}">
|
| - <td><field-ref app="{{ app }}" field="{{ field }}"></field-ref></td>
|
| - <td><instance-ref app="{{ app }}" instance="{{ field['value'] }}"></instance-ref></td>
|
| + <td><field-ref app="{{ app }}" ref="{{ field }}"></field-ref></td>
|
| + <td><instance-ref app="{{ app }}" ref="{{ field['value'] }}"></instance-ref></td>
|
| </tr>
|
| </tbody>
|
| </table>
|
| @@ -372,7 +384,8 @@
|
| </div>
|
| </template>
|
|
|
| -</polymer-element><polymer-element name="json-view" extends="observatory-element">
|
| +</polymer-element>
|
| +<polymer-element name="json-view" extends="observatory-element">
|
| <template>
|
| <template bind="" if="{{ valueType == 'Primitive' }}">
|
| <span>{{primitiveString}}</span>
|
| @@ -401,6 +414,12 @@
|
| </template>
|
| </template>
|
|
|
| +</polymer-element>
|
| +<polymer-element name="script-ref" extends="service-ref">
|
| +<template>
|
| + <a href="{{ url }}">{{ name }}</a>
|
| +</template>
|
| +
|
| </polymer-element><polymer-element name="library-view" extends="observatory-element">
|
| <template>
|
| <div class="alert alert-success">Library {{ library['name'] }}</div>
|
| @@ -412,7 +431,7 @@
|
| {{ script['kind'] }}
|
| </td>
|
| <td>
|
| - <a href="{{ app.locationManager.currentIsolateScriptLink(script['id'], script['name']) }}">{{ script['name'] }}</a>
|
| + <script-ref app="{{ app }}" ref="{{ script }}"></script-ref>
|
| </td>
|
| </tr>
|
| </tbody>
|
| @@ -422,9 +441,7 @@
|
| <tbody>
|
| <tr template="" repeat="{{ lib in library['libraries'] }}">
|
| <td>
|
| - <a href="{{ app.locationManager.currentIsolateObjectLink(lib['id'])}}">
|
| - {{ lib['url'] }}
|
| - </a>
|
| + <library-ref app="{{ app }}" ref="{{ lib }}"></library-ref>
|
| </td>
|
| </tr>
|
| </tbody>
|
| @@ -433,8 +450,8 @@
|
| <table class="table table-hover">
|
| <tbody>
|
| <tr template="" repeat="{{ variable in library['variables'] }}">
|
| - <td><field-ref app="{{ app }}" field="{{ variable }}"></field-ref></td>
|
| - <td><instance-ref app="{{ app }}" instance="{{ variable['value'] }}"></instance-ref></td>
|
| + <td><field-ref app="{{ app }}" ref="{{ variable }}"></field-ref></td>
|
| + <td><instance-ref app="{{ app }}" ref="{{ variable['value'] }}"></instance-ref></td>
|
| </tr>
|
| </tbody>
|
| </table>
|
| @@ -443,9 +460,7 @@
|
| <tbody>
|
| <tr template="" repeat="{{ func in library['functions'] }}">
|
| <td>
|
| - <a href="{{ app.locationManager.currentIsolateObjectLink(func['id'])}}">
|
| - {{ func['user_name'] }}
|
| - </a>
|
| + <function-ref app="{{ app }}" ref="{{ func }}"></function-ref>
|
| </td>
|
| </tr>
|
| </tbody>
|
| @@ -461,14 +476,10 @@
|
| <tbody>
|
| <tr template="" repeat="{{ cls in library['classes'] }}">
|
| <td>
|
| - <a href="{{ app.locationManager.currentIsolateClassLink(cls['id']) }}">
|
| - {{ cls['user_name'] }}
|
| - </a>
|
| + <class-ref app="{{ app }}" ref="{{ cls }}"></class-ref>
|
| </td>
|
| <td>
|
| - <a href="{{ app.locationManager.currentIsolateClassLink(cls['id']) }}">
|
| - {{ cls['name'] }}
|
| - </a>
|
| + <class-ref app="{{ app }}" ref="{{ cls }}" internal=""></class-ref>
|
| </td>
|
| </tr>
|
| </tbody>
|
| @@ -506,15 +517,15 @@
|
| <tr>
|
| <th>Depth</th>
|
| <th>Function</th>
|
| - <th>Url</th>
|
| + <th>Script</th>
|
| <th>Line</th>
|
| </tr>
|
| </thead>
|
| <tbody>
|
| <tr template="" repeat="{{ frame in trace['members'] }}">
|
| <td>{{$index}}</td>
|
| - <td><a href="{{app.locationManager.currentIsolateObjectLink(frame['function']['id'])}}">{{ frame['name'] }}</a></td>
|
| - <td>{{ frame['url'] }}</td>
|
| + <td><function-ref app="{{ app }}" ref="{{ frame['function'] }}"></function-ref></td>
|
| + <td><script-ref app="{{ app }}" ref="{{ frame['script'] }}"></script-ref></td>
|
| <td>{{ frame['line'] }}</td>
|
| </tr>
|
| </tbody>
|
| @@ -588,13 +599,58 @@
|
| <a class="navbar-brand" href="">Observatory</a>
|
| </div>
|
| <div class="collapse navbar-collapse navbar-ex1-collapse">
|
| - <input class="span2 pull-right navbar-form" placeholder="VM Address" type="text" value="{{ app.requestManager.prefix }}">
|
| </div>
|
| </nav>
|
| </template>
|
|
|
| -</polymer-element><polymer-element name="response-viewer" extends="observatory-element">
|
| +</polymer-element><polymer-element name="isolate-profile" extends="observatory-element">
|
| <template>
|
| + <p> P R O F I L E </p>
|
| + <div>
|
| + <button type="button" on-click="{{refreshData}}">Refresh profile data</button>
|
| + <span>Top</span>
|
| + <select selectedindex="{{methodCountSelected}}" value="{{methodCounts[methodCountSelected]}}">
|
| + <option template="" repeat="{{count in methodCounts}}">{{count}}</option>
|
| + </select>
|
| + <span>methods</span>
|
| + </div>
|
| + <blockquote><strong>Top Inclusive</strong></blockquote>
|
| + <table class="table table-hover">
|
| + <thead>
|
| + <tr>
|
| + <th>Ticks</th>
|
| + <th>Percent</th>
|
| + <th>Method</th>
|
| + </tr>
|
| + </thead>
|
| + <tbody>
|
| + <tr template="" repeat="{{ code in topInclusiveCodes }}">
|
| + <td>{{ codeTicks(code, true) }}</td>
|
| + <td>{{ codePercent(code, true) }}</td>
|
| + <td>{{ codeName(code) }}</td>
|
| + </tr>
|
| + </tbody></table>
|
| + <blockquote><strong>Top Exclusive</strong></blockquote>
|
| + <table class="table table-hover">
|
| + <thead>
|
| + <tr>
|
| + <th>Ticks</th>
|
| + <th>Percent</th>
|
| + <th>Method</th>
|
| + </tr>
|
| + </thead>
|
| + <tbody>
|
| + <tr template="" repeat="{{ code in topExclusiveCodes }}">
|
| + <td>{{ codeTicks(code, false) }}</td>
|
| + <td>{{ codePercent(code, false) }}</td>
|
| + <td>{{ codeName(code) }}</td>
|
| + </tr>
|
| + </tbody></table>
|
| + </template>
|
| +
|
| +</polymer-element>
|
| +<polymer-element name="response-viewer" extends="observatory-element">
|
| + <template>
|
| <template repeat="{{ message in app.requestManager.responses }}">
|
| <message-viewer app="{{ app }}" message="{{ message }}"></message-viewer>
|
| <collapsible-content>
|
| @@ -606,10 +662,15 @@
|
| </polymer-element><polymer-element name="observatory-application" extends="observatory-element">
|
| <template>
|
| <navigation-bar app="{{ app }}"></navigation-bar>
|
| - <response-viewer app="{{ app }}"></response-viewer>
|
| + <template if="{{ app.locationManager.profile }}">
|
| + <isolate-profile app="{{ app }}"></isolate-profile>
|
| + </template>
|
| + <template if="{{ app.locationManager.profile == false }}">
|
| + <response-viewer app="{{ app }}"></response-viewer>
|
| + </template>
|
| </template>
|
|
|
| </polymer-element>
|
| <observatory-application></observatory-application>
|
|
|
| -</body></html>
|
| +</body></html>
|
|
|