Chromium Code Reviews| Index: runtime/bin/vmstats/isolate_list.dart |
| =================================================================== |
| --- runtime/bin/vmstats/isolate_list.dart (revision 0) |
| +++ runtime/bin/vmstats/isolate_list.dart (revision 0) |
| @@ -0,0 +1,60 @@ |
| +part of vmstats; |
|
siva
2013/03/05 23:12:44
Copyright and ditto comment about adding a qualifi
srdjan
2013/03/05 23:17:30
Add Copyright
Tom Ball
2013/03/06 00:34:43
Done.
Tom Ball
2013/03/06 00:34:43
Done.
|
| + |
| +class IsolateList { |
| + UListElement _listArea; |
| + |
| + final String CSS_VISIBLE = 'isolate_details'; |
| + final String CSS_HIDDEN = 'isolate_details_hidden'; |
|
srdjan
2013/03/05 23:17:30
static const
Tom Ball
2013/03/06 00:34:43
Done.
|
| + |
| + IsolateList(UListElement area) { |
|
srdjan
2013/03/05 23:17:30
this._area
Tom Ball
2013/03/06 00:34:43
Done.
|
| + _listArea = area; |
| + } |
|
siva
2013/03/05 23:12:44
IsolateList(this._listArea);
Tom Ball
2013/03/06 00:34:43
Done.
|
| + |
| + void updateList(IsolateListModel model) { |
| + var detailsClass = CSS_HIDDEN; |
| + if (_listArea.children.length > 0) { |
| + // Preserve visibility state. |
| + LIElement listItem = _listArea.children.first; |
| + DivElement item = listItem.children.first; |
| + if (item.classes.length > 0 && item.classes.first == CSS_VISIBLE) { |
| + detailsClass = CSS_VISIBLE; |
| + } |
| + _listArea.children.clear(); |
| + } |
| + Iterator<Isolate> iterator = model.iterator; |
|
siva
2013/03/05 23:12:44
type not needed for local vars.
Tom Ball
2013/03/06 00:34:43
Done.
|
| + while (iterator.moveNext()) { |
| + Isolate isolate = iterator.current; |
| + LIElement listItem = new LIElement(); |
| + listItem.classes.add('isolate_list'); |
| + listItem.text = isolate.name |
| + .replaceAll('\$', ': ') // Split script from isolate, and ... |
| + .replaceAll('-', ' '); // ... split name from port number. |
| + |
| + // Add isolate details as hidden children. |
| + DivElement details = new DivElement(); |
| + isolateDetails(isolate, details); |
| + details.classes.add(detailsClass); |
| + listItem.children.add(details); |
| + listItem.onClick.listen((e) => toggle(details)); |
| + |
| + _listArea.children.add(listItem); |
| + } |
| + } |
| + |
| + void isolateDetails(Isolate isolate, DivElement parent) { |
| + DivElement newSpace = new DivElement(); |
| + newSpace.text = 'New space: ${isolate.newSpace.used}K'; |
| + parent.children.add(newSpace); |
| + DivElement oldSpace = new DivElement(); |
| + oldSpace.text = 'Old space: ${isolate.oldSpace.used}K'; |
| + parent.children.add(oldSpace); |
| + DivElement stack = new DivElement(); |
| + stack.text = 'Stack limit: ${(isolate.stackLimit / 1000000).round()}M'; |
| + parent.children.add(stack); |
|
siva
2013/03/05 23:12:44
Ditto comment about using types for local variable
Tom Ball
2013/03/06 00:34:43
Done.
|
| + } |
| + |
| + void toggle(DivElement e) { |
| + e.classes.toggle(CSS_VISIBLE); |
| + e.classes.toggle(CSS_HIDDEN); |
| + } |
| +} |