| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of app; | 5 part of app; |
| 6 | 6 |
| 7 final _allocationProfileRepository = new AllocationProfileRepository(); | 7 final _allocationProfileRepository = new AllocationProfileRepository(); |
| 8 final _breakpointRepository = new BreakpointRepository(); | 8 final _breakpointRepository = new BreakpointRepository(); |
| 9 final _classSampleProfileRepository = new ClassSampleProfileRepository(); | 9 final _classSampleProfileRepository = new ClassSampleProfileRepository(); |
| 10 final _classRepository = new ClassRepository(); | 10 final _classRepository = new ClassRepository(); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 RetainedSizeRepository _retainedSizeRepository = new RetainedSizeRepository(); | 41 RetainedSizeRepository _retainedSizeRepository = new RetainedSizeRepository(); |
| 42 ReachableSizeRepository _reachableSizeRepository | 42 ReachableSizeRepository _reachableSizeRepository |
| 43 = new ReachableSizeRepository(); | 43 = new ReachableSizeRepository(); |
| 44 RetainingPathRepository _retainingPathRepository | 44 RetainingPathRepository _retainingPathRepository |
| 45 = new RetainingPathRepository(); | 45 = new RetainingPathRepository(); |
| 46 | 46 |
| 47 /// A [Page] controls the user interface of Observatory. At any given time | 47 /// A [Page] controls the user interface of Observatory. At any given time |
| 48 /// one page will be the current page. Pages are registered at startup. | 48 /// one page will be the current page. Pages are registered at startup. |
| 49 /// When the user navigates within the application, each page is asked if it | 49 /// When the user navigates within the application, each page is asked if it |
| 50 /// can handle the current location, the first page to say yes, wins. | 50 /// can handle the current location, the first page to say yes, wins. |
| 51 abstract class Page extends Observable { | 51 abstract class Page { |
| 52 final ObservatoryApplication app; | 52 final ObservatoryApplication app; |
| 53 final ObservableMap<String, String> internalArguments = | 53 final Map<String, String> internalArguments = <String, String>{}; |
| 54 new ObservableMap<String, String>(); | 54 HtmlElement element; |
| 55 @observable HtmlElement element; | |
| 56 | 55 |
| 57 Page(this.app); | 56 Page(this.app); |
| 58 | 57 |
| 59 /// Called when the page is installed, this callback must initialize | 58 /// Called when the page is installed, this callback must initialize |
| 60 /// [element]. | 59 /// [element]. |
| 61 void onInstall(); | 60 void onInstall(); |
| 62 | 61 |
| 63 /// Called when the page is uninstalled, this callback must clear | 62 /// Called when the page is uninstalled, this callback must clear |
| 64 /// [element]. | 63 /// [element]. |
| 65 void onUninstall() { | 64 void onUninstall() { |
| (...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 451 | 450 |
| 452 void onInstall() { | 451 void onInstall() { |
| 453 if (element == null) { | 452 if (element == null) { |
| 454 element = container; | 453 element = container; |
| 455 } | 454 } |
| 456 assert(element != null); | 455 assert(element != null); |
| 457 } | 456 } |
| 458 | 457 |
| 459 @override | 458 @override |
| 460 void onUninstall() { | 459 void onUninstall() { |
| 461 assert(element != null); | 460 super.onUninstall(); |
| 462 element.children = const []; | 461 container.children = const []; |
| 463 } | 462 } |
| 464 } | 463 } |
| 465 | 464 |
| 466 class ObjectStorePage extends MatchingPage { | 465 class ObjectStorePage extends MatchingPage { |
| 467 ObjectStorePage(app) : super('object-store', app); | 466 ObjectStorePage(app) : super('object-store', app); |
| 468 | 467 |
| 469 final DivElement container = new DivElement(); | 468 final DivElement container = new DivElement(); |
| 470 | 469 |
| 471 void _visit(Uri uri) { | 470 void _visit(Uri uri) { |
| 472 super._visit(uri); | 471 super._visit(uri); |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 554 }); | 553 }); |
| 555 } | 554 } |
| 556 | 555 |
| 557 void onInstall() { | 556 void onInstall() { |
| 558 if (element == null) { | 557 if (element == null) { |
| 559 element = container; | 558 element = container; |
| 560 } | 559 } |
| 561 app.startGCEventListener(); | 560 app.startGCEventListener(); |
| 562 } | 561 } |
| 563 | 562 |
| 563 @override |
| 564 void onUninstall() { | 564 void onUninstall() { |
| 565 super.onUninstall(); | 565 super.onUninstall(); |
| 566 app.stopGCEventListener(); | 566 app.stopGCEventListener(); |
| 567 container.children = const []; |
| 567 } | 568 } |
| 568 } | 569 } |
| 569 | 570 |
| 570 class PortsPage extends MatchingPage { | 571 class PortsPage extends MatchingPage { |
| 571 PortsPage(app) : super('ports', app); | 572 PortsPage(app) : super('ports', app); |
| 572 | 573 |
| 573 final DivElement container = new DivElement(); | 574 final DivElement container = new DivElement(); |
| 574 | 575 |
| 575 void _visit(Uri uri) { | 576 void _visit(Uri uri) { |
| 576 super._visit(uri); | 577 super._visit(uri); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 666 | 667 |
| 667 @override | 668 @override |
| 668 void onInstall() { | 669 void onInstall() { |
| 669 element = container; | 670 element = container; |
| 670 container.children = const []; | 671 container.children = const []; |
| 671 app.startLoggingEventListener(); | 672 app.startLoggingEventListener(); |
| 672 } | 673 } |
| 673 | 674 |
| 674 @override | 675 @override |
| 675 void onUninstall() { | 676 void onUninstall() { |
| 677 super.onUninstall(); |
| 678 container.children = const []; |
| 676 app.stopLoggingEventListener(); | 679 app.stopLoggingEventListener(); |
| 677 } | 680 } |
| 678 | 681 |
| 679 void _visit(Uri uri) { | 682 void _visit(Uri uri) { |
| 680 assert(element != null); | 683 assert(element != null); |
| 681 assert(canVisit(uri)); | 684 assert(canVisit(uri)); |
| 682 getIsolate(uri).then((isolate) { | 685 getIsolate(uri).then((isolate) { |
| 683 container.children = [ | 686 container.children = [ |
| 684 new LoggingPageElement(app.vm, isolate, app.events, | 687 new LoggingPageElement(app.vm, isolate, app.events, |
| 685 app.notifications, queue: app.queue) | 688 app.notifications, queue: app.queue) |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 773 } | 776 } |
| 774 | 777 |
| 775 void onInstall() { | 778 void onInstall() { |
| 776 if (element == null) { | 779 if (element == null) { |
| 777 element = container; | 780 element = container; |
| 778 } | 781 } |
| 779 } | 782 } |
| 780 | 783 |
| 781 @override | 784 @override |
| 782 void onUninstall() { | 785 void onUninstall() { |
| 786 super.onUninstall(); |
| 783 _metricRepository.stopSampling(lastIsolate); | 787 _metricRepository.stopSampling(lastIsolate); |
| 788 container.children = const []; |
| 784 } | 789 } |
| 785 } | 790 } |
| 786 | 791 |
| 787 class TimelinePage extends Page { | 792 class TimelinePage extends Page { |
| 788 TimelinePage(app) : super(app); | 793 TimelinePage(app) : super(app); |
| 789 | 794 |
| 790 void onInstall() { | 795 void onInstall() { |
| 791 element = new TimelinePageElement(app.vm, app.events, app.notifications, | 796 element = new TimelinePageElement(app.vm, app.events, app.notifications, |
| 792 queue: app.queue); | 797 queue: app.queue); |
| 793 } | 798 } |
| 794 | 799 |
| 795 void _visit(Uri uri) { | 800 void _visit(Uri uri) { |
| 796 assert(canVisit(uri)); | 801 assert(canVisit(uri)); |
| 797 } | 802 } |
| 798 | 803 |
| 799 bool canVisit(Uri uri) => uri.path == 'timeline'; | 804 bool canVisit(Uri uri) => uri.path == 'timeline'; |
| 800 } | 805 } |
| OLD | NEW |