Index: runtime/observatory/lib/src/app/application.dart |
diff --git a/runtime/observatory/lib/src/app/application.dart b/runtime/observatory/lib/src/app/application.dart |
index f2096252ec2ba359dd825096b315cbc485303990..af7d0694e4d78d4ea78d346eb61713bf4cf04904 100644 |
--- a/runtime/observatory/lib/src/app/application.dart |
+++ b/runtime/observatory/lib/src/app/application.dart |
@@ -4,20 +4,12 @@ |
part of app; |
-class Notification { |
- Notification.fromEvent(this.event); |
- Notification.fromException(this.exception, this.stacktrace); |
- |
- ServiceEvent event; |
- var exception; |
- var stacktrace; |
-} |
- |
/// The observatory application. Instances of this are created and owned |
/// by the observatory_application custom element. |
class ObservatoryApplication extends Observable { |
static ObservatoryApplication app; |
final RenderingQueue queue = new RenderingQueue(); |
+ final NotificationRepository notifications = new NotificationRepository(); |
final _pageRegistry = new List<Page>(); |
LocationManager _locationManager; |
LocationManager get locationManager => _locationManager; |
@@ -32,7 +24,7 @@ class ObservatoryApplication extends Observable { |
} |
if (_vm != null) { |
// Disconnect from current VM. |
- notifications.clear(); |
+ notifications.deleteAll(); |
_vm.disconnect(); |
} |
if (vm != null) { |
@@ -51,8 +43,8 @@ class ObservatoryApplication extends Observable { |
return; |
} |
notifications.add( |
- new Notification.fromEvent( |
- new ServiceEvent.connectionClosed(reason))); |
+ new EventNotification.fromServiceEvent( |
+ new ServiceEvent.connectionClosed(reason))); |
}); |
vm.listenEventStream(VM.kIsolateStream, _onEvent); |
@@ -66,8 +58,6 @@ class ObservatoryApplication extends Observable { |
TraceViewElement _traceView = null; |
@reflectable ServiceObject lastErrorOrException; |
- @observable ObservableList<Notification> notifications = |
- new ObservableList<Notification>(); |
void _initOnce() { |
assert(app == null); |
@@ -79,12 +69,16 @@ class ObservatoryApplication extends Observable { |
} |
void removePauseEvents(Isolate isolate) { |
Cutch
2016/07/22 13:58:43
Should this method be on the NotificationRepositor
cbernaschina
2016/07/22 18:27:24
Done.
|
- notifications.removeWhere((notification) { |
- var event = notification.event; |
- return (event != null && |
- event.isolate == isolate && |
- event.isPauseEvent); |
- }); |
+ var remove = notifications.list().where((notification) { |
+ var event = notification.event; |
+ return notification is M.EventNotification && |
+ notification.event is M.IsolateEvent && |
+ notification.event.isolate == isolate && |
+ M.Event.isPauseEvent(notification.event); |
+ }).toList(growable: false); |
+ remove.forEach((notification) { |
+ notifications.delete(notification); |
+ }); |
} |
void _onEvent(ServiceEvent event) { |
@@ -103,7 +97,7 @@ class ObservatoryApplication extends Observable { |
break; |
case ServiceEvent.kIsolateReload: |
- notifications.add(new Notification.fromEvent(event)); |
+ notifications.add(new EventNotification.fromServiceEvent(event)); |
break; |
case ServiceEvent.kIsolateExit: |
@@ -117,11 +111,11 @@ class ObservatoryApplication extends Observable { |
case ServiceEvent.kPauseInterrupted: |
case ServiceEvent.kPauseException: |
removePauseEvents(event.isolate); |
- notifications.add(new Notification.fromEvent(event)); |
+ notifications.add(new EventNotification.fromServiceEvent(event)); |
break; |
case ServiceEvent.kInspect: |
- notifications.add(new Notification.fromEvent(event)); |
+ notifications.add(new EventNotification.fromServiceEvent(event)); |
break; |
default: |
@@ -221,11 +215,13 @@ class ObservatoryApplication extends Observable { |
} |
void _removeDisconnectEvents() { |
- notifications.removeWhere((notification) { |
- var event = notification.event; |
- return (event != null && |
- event.kind == ServiceEvent.kConnectionClosed); |
- }); |
+ var remove = notifications.list().where((notification) { |
Cutch
2016/07/22 13:58:43
same question.
cbernaschina
2016/07/22 18:27:24
Done.
|
+ return notification is EventNotification && |
+ notification.event is M.ConnectionClosedEvent; |
+ }).toList(growable: false); |
+ remove.forEach((notification){ |
+ notifications.delete(notification); |
+ }); |
} |
loadCrashDump(Map crashDump) { |
@@ -243,7 +239,7 @@ class ObservatoryApplication extends Observable { |
// TODO(turnidge): Report this failure via analytics. |
Logger.root.warning('Caught exception: ${e}\n${st}'); |
- notifications.add(new Notification.fromException(e, st)); |
+ notifications.add(new ExceptionNotification(e, stacktrace: st)); |
} |
// This map keeps track of which curly-blocks have been expanded by the user. |