| OLD | NEW |
| 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"> </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"> </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> |
| OLD | NEW |