From 61e34b244bd76a8a13fb3dbbe21ec491461bc548 Mon Sep 17 00:00:00 2001 From: Carlo Bernaschina Date: Sun, 24 Jul 2016 12:54:04 -0700 Subject: [PATCH] Converted Observatory nav-notify element Still writing tests. R=johnmccutchan@google.com, rmacnak@google.com Review URL: https://codereview.chromium.org/2167053002 . --- runtime/observatory/lib/app.dart | 4 + runtime/observatory/lib/elements.dart | 21 +- runtime/observatory/lib/elements.html | 1 - runtime/observatory/lib/mocks.dart | 10 + runtime/observatory/lib/models.dart | 18 +- runtime/observatory/lib/repositories.dart | 10 + .../observatory/lib/src/app/application.dart | 49 +--- .../lib/src/app/location_manager.dart | 10 +- .../observatory/lib/src/app/notification.dart | 115 ++++++++ .../lib/src/elements/action_link.html | 4 +- .../lib/src/elements/class_ref.html | 4 +- .../lib/src/elements/class_tree.html | 4 +- .../lib/src/elements/class_view.html | 4 +- .../lib/src/elements/code_ref.html | 2 +- .../lib/src/elements/code_view.html | 4 +- .../lib/src/elements/context_ref.html | 4 +- .../lib/src/elements/context_view.html | 4 +- .../lib/src/elements/cpu_profile.html | 14 +- .../lib/src/elements/css/shared.css | 75 ++++++ .../lib/src/elements/debugger.html | 14 +- .../lib/src/elements/error_ref.html | 4 +- .../lib/src/elements/error_view.html | 4 +- .../lib/src/elements/eval_box.html | 4 +- .../lib/src/elements/eval_link.html | 4 +- .../lib/src/elements/field_ref.html | 4 +- .../lib/src/elements/field_view.html | 4 +- .../lib/src/elements/flag_list.html | 6 +- .../lib/src/elements/function_ref.html | 2 +- .../lib/src/elements/function_view.html | 4 +- .../lib/src/elements/general_error.html | 4 +- .../lib/src/elements/heap_map.html | 4 +- .../lib/src/elements/heap_profile.html | 4 +- .../lib/src/elements/heap_snapshot.html | 4 +- .../lib/src/elements/icdata_view.html | 4 +- .../lib/src/elements/inbound_reference.html | 4 +- .../lib/src/elements/instance_ref.html | 4 +- .../lib/src/elements/instance_view.html | 4 +- .../lib/src/elements/instructions_view.html | 4 +- .../observatory/lib/src/elements/io_view.html | 40 +-- .../lib/src/elements/isolate_reconnect.html | 4 +- .../lib/src/elements/isolate_ref.html | 2 +- .../lib/src/elements/isolate_summary.html | 12 +- .../lib/src/elements/isolate_view.html | 4 +- .../lib/src/elements/json_view.html | 4 +- .../lib/src/elements/library_ref.html | 4 +- .../lib/src/elements/library_view.html | 4 +- .../observatory/lib/src/elements/logging.html | 4 +- .../src/elements/megamorphiccache_view.html | 4 +- .../observatory/lib/src/elements/metrics.html | 8 +- .../lib/src/elements/nav/notify.dart | 90 +++++++ .../lib/src/elements/nav/notify_event.dart | 232 ++++++++++++++++ .../src/elements/nav/notify_exception.dart | 128 +++++++++ .../lib/src/elements/nav/notify_wrapper.dart | 123 +++++++++ .../observatory/lib/src/elements/nav_bar.dart | 51 ---- .../observatory/lib/src/elements/nav_bar.html | 251 +----------------- .../lib/src/elements/object_common.html | 4 +- .../lib/src/elements/object_view.html | 4 +- .../lib/src/elements/objectpool_view.html | 4 +- .../lib/src/elements/objectstore_view.html | 4 +- .../src/elements/observatory_application.html | 4 +- .../lib/src/elements/observatory_element.dart | 1 - .../lib/src/elements/observatory_element.html | 6 - .../lib/src/elements/persistent_handles.html | 4 +- .../observatory/lib/src/elements/ports.html | 4 +- .../lib/src/elements/script_inset.html | 4 +- .../lib/src/elements/script_ref.html | 4 +- .../lib/src/elements/script_view.html | 4 +- .../lib/src/elements/service_ref.dart | 1 - .../lib/src/elements/service_ref.html | 8 +- .../lib/src/elements/service_view.html | 10 +- .../lib/src/elements/timeline_page.html | 4 +- .../lib/src/elements/vm_connect.html | 4 +- .../observatory/lib/src/elements/vm_ref.html | 2 +- .../observatory/lib/src/elements/vm_view.html | 4 +- .../exceptions/connection_exception.dart | 10 + .../lib/src/mocks/objects/error.dart | 20 ++ .../lib/src/mocks/objects/event.dart | 130 ++++++++- .../lib/src/mocks/objects/notification.dart | 16 ++ .../lib/src/mocks/objects/script.dart | 31 +++ .../src/mocks/objects/source_location.dart | 12 + .../src/mocks/repositories/notification.dart | 58 ++++ .../lib/src/models/exceptions.dart | 49 ++++ .../lib/src/models/objects/breakpoint.dart | 13 + .../lib/src/models/objects/class.dart | 12 +- .../lib/src/models/objects/error.dart | 27 ++ .../lib/src/models/objects/event.dart | 68 ++++- .../src/models/objects/extension_data.dart | 7 + .../lib/src/models/objects/frame.dart | 7 + .../lib/src/models/objects/instance.dart | 7 + .../lib/src/models/objects/library.dart | 33 +++ .../lib/src/models/objects/notification.dart | 17 ++ .../lib/src/models/objects/script.dart | 22 ++ .../src/models/objects/source_location.dart | 14 + .../src/models/objects/timeline_event.dart | 7 + .../src/models/repositories/notification.dart | 16 ++ .../lib/src/repositories/notification.dart | 72 +++++ .../observatory/lib/src/service/object.dart | 23 +- runtime/observatory/observatory_sources.gypi | 38 ++- .../nav/notify/element_test.dart | 121 +++++++++ .../nav/notify/element_test.html | 20 ++ .../nav/notify_event/element_test.dart | 65 +++++ .../nav/notify_event/element_test.html | 20 ++ .../connection_exception_test.dart | 67 +++++ .../connection_exception_test.html | 20 ++ .../nav/notify_exception/exception_test.dart | 96 +++++++ .../nav/notify_exception/exception_test.html | 20 ++ 106 files changed, 2093 insertions(+), 533 deletions(-) create mode 100644 runtime/observatory/lib/repositories.dart create mode 100644 runtime/observatory/lib/src/app/notification.dart create mode 100644 runtime/observatory/lib/src/elements/nav/notify.dart create mode 100644 runtime/observatory/lib/src/elements/nav/notify_event.dart create mode 100644 runtime/observatory/lib/src/elements/nav/notify_exception.dart create mode 100644 runtime/observatory/lib/src/elements/nav/notify_wrapper.dart delete mode 100644 runtime/observatory/lib/src/elements/observatory_element.html create mode 100644 runtime/observatory/lib/src/mocks/exceptions/connection_exception.dart create mode 100644 runtime/observatory/lib/src/mocks/objects/error.dart create mode 100644 runtime/observatory/lib/src/mocks/objects/notification.dart create mode 100644 runtime/observatory/lib/src/mocks/objects/script.dart create mode 100644 runtime/observatory/lib/src/mocks/objects/source_location.dart create mode 100644 runtime/observatory/lib/src/mocks/repositories/notification.dart create mode 100644 runtime/observatory/lib/src/models/exceptions.dart create mode 100644 runtime/observatory/lib/src/models/objects/breakpoint.dart create mode 100644 runtime/observatory/lib/src/models/objects/error.dart create mode 100644 runtime/observatory/lib/src/models/objects/extension_data.dart create mode 100644 runtime/observatory/lib/src/models/objects/frame.dart create mode 100644 runtime/observatory/lib/src/models/objects/instance.dart create mode 100644 runtime/observatory/lib/src/models/objects/library.dart create mode 100644 runtime/observatory/lib/src/models/objects/notification.dart create mode 100644 runtime/observatory/lib/src/models/objects/script.dart create mode 100644 runtime/observatory/lib/src/models/objects/source_location.dart create mode 100644 runtime/observatory/lib/src/models/objects/timeline_event.dart create mode 100644 runtime/observatory/lib/src/models/repositories/notification.dart create mode 100644 runtime/observatory/lib/src/repositories/notification.dart create mode 100644 runtime/observatory/tests/observatory_ui/nav/notify/element_test.dart create mode 100644 runtime/observatory/tests/observatory_ui/nav/notify/element_test.html create mode 100644 runtime/observatory/tests/observatory_ui/nav/notify_event/element_test.dart create mode 100644 runtime/observatory/tests/observatory_ui/nav/notify_event/element_test.html create mode 100644 runtime/observatory/tests/observatory_ui/nav/notify_exception/connection_exception_test.dart create mode 100644 runtime/observatory/tests/observatory_ui/nav/notify_exception/connection_exception_test.html create mode 100644 runtime/observatory/tests/observatory_ui/nav/notify_exception/exception_test.dart create mode 100644 runtime/observatory/tests/observatory_ui/nav/notify_exception/exception_test.html diff --git a/runtime/observatory/lib/app.dart b/runtime/observatory/lib/app.dart index 15e802dfa51..6212eb3bce6 100644 --- a/runtime/observatory/lib/app.dart +++ b/runtime/observatory/lib/app.dart @@ -12,6 +12,9 @@ import 'dart:math' as math; import 'package:logging/logging.dart'; import 'package:observatory/service_html.dart'; import 'package:observatory/elements.dart'; +import 'package:observatory/mocks.dart'; +import 'package:observatory/models.dart' as M; +import 'package:observatory/repositories.dart'; import 'package:observatory/tracer.dart'; import 'package:observatory/utils.dart'; import 'package:polymer/polymer.dart'; @@ -21,6 +24,7 @@ export 'package:observatory/utils.dart'; part 'src/app/application.dart'; part 'src/app/location_manager.dart'; +part 'src/app/notification.dart'; part 'src/app/page.dart'; part 'src/app/settings.dart'; part 'src/app/target_manager.dart'; diff --git a/runtime/observatory/lib/elements.dart b/runtime/observatory/lib/elements.dart index 52bef150d27..3cef136aec4 100644 --- a/runtime/observatory/lib/elements.dart +++ b/runtime/observatory/lib/elements.dart @@ -63,14 +63,18 @@ import 'dart:async'; import 'package:observatory/src/elements/curly_block.dart'; import 'package:observatory/src/elements/curly_block_wrapper.dart'; import 'package:observatory/src/elements/nav/bar.dart'; -import 'package:observatory/src/elements/nav/isolate_menu.dart'; -import 'package:observatory/src/elements/nav/isolate_menu_wrapper.dart'; import 'package:observatory/src/elements/nav/class_menu.dart'; import 'package:observatory/src/elements/nav/class_menu_wrapper.dart'; +import 'package:observatory/src/elements/nav/isolate_menu.dart'; +import 'package:observatory/src/elements/nav/isolate_menu_wrapper.dart'; import 'package:observatory/src/elements/nav/menu.dart'; import 'package:observatory/src/elements/nav/menu_wrapper.dart'; import 'package:observatory/src/elements/nav/menu_item.dart'; import 'package:observatory/src/elements/nav/menu_item_wrapper.dart'; +import 'package:observatory/src/elements/nav/notify.dart'; +import 'package:observatory/src/elements/nav/notify_wrapper.dart'; +import 'package:observatory/src/elements/nav/notify_event.dart'; +import 'package:observatory/src/elements/nav/notify_exception.dart'; import 'package:observatory/src/elements/nav/refresh.dart'; import 'package:observatory/src/elements/nav/refresh_wrapper.dart'; import 'package:observatory/src/elements/nav/top_menu.dart'; @@ -85,10 +89,13 @@ export 'package:observatory/src/elements/helpers/rendering_queue.dart'; export 'package:observatory/src/elements/curly_block.dart'; export 'package:observatory/src/elements/nav/bar.dart'; -export 'package:observatory/src/elements/nav/isolate_menu.dart'; export 'package:observatory/src/elements/nav/class_menu.dart'; +export 'package:observatory/src/elements/nav/isolate_menu.dart'; export 'package:observatory/src/elements/nav/menu.dart'; export 'package:observatory/src/elements/nav/menu_item.dart'; +export 'package:observatory/src/elements/nav/notify.dart'; +export 'package:observatory/src/elements/nav/notify_event.dart'; +export 'package:observatory/src/elements/nav/notify_exception.dart'; export 'package:observatory/src/elements/nav/refresh.dart'; export 'package:observatory/src/elements/nav/top_menu.dart'; export 'package:observatory/src/elements/nav/vm_menu.dart'; @@ -101,14 +108,18 @@ Future initElements() async { CurlyBlockElement.tag.ensureRegistration(); CurlyBlockElementWrapper.tag.ensureRegistration(); NavBarElement.tag.ensureRegistration(); - NavIsolateMenuElement.tag.ensureRegistration(); - NavIsolateMenuElementWrapper.tag.ensureRegistration(); NavClassMenuElement.tag.ensureRegistration(); NavClassMenuElementWrapper.tag.ensureRegistration(); + NavIsolateMenuElement.tag.ensureRegistration(); + NavIsolateMenuElementWrapper.tag.ensureRegistration(); NavMenuElement.tag.ensureRegistration(); NavMenuElementWrapper.tag.ensureRegistration(); NavMenuItemElement.tag.ensureRegistration(); NavMenuItemElementWrapper.tag.ensureRegistration(); + NavNotifyElement.tag.ensureRegistration(); + NavNotifyElementWrapper.tag.ensureRegistration(); + NavNotifyEventElement.tag.ensureRegistration(); + NavNotifyExceptionElement.tag.ensureRegistration(); NavRefreshElement.tag.ensureRegistration(); NavRefreshElementWrapper.tag.ensureRegistration(); NavTopMenuElement.tag.ensureRegistration(); diff --git a/runtime/observatory/lib/elements.html b/runtime/observatory/lib/elements.html index 89aa4a10a85..bcf420b0ee2 100644 --- a/runtime/observatory/lib/elements.html +++ b/runtime/observatory/lib/elements.html @@ -37,7 +37,6 @@ - diff --git a/runtime/observatory/lib/mocks.dart b/runtime/observatory/lib/mocks.dart index c157b2dbea2..167fea76598 100644 --- a/runtime/observatory/lib/mocks.dart +++ b/runtime/observatory/lib/mocks.dart @@ -4,10 +4,20 @@ library mocks; +import 'dart:async'; + import 'package:observatory/models.dart' as M; +part 'src/mocks/exceptions/connection_exception.dart'; + +part 'src/mocks/objects/error.dart'; part 'src/mocks/objects/event.dart'; part 'src/mocks/objects/class.dart'; part 'src/mocks/objects/isolate.dart'; +part 'src/mocks/objects/notification.dart'; +part 'src/mocks/objects/script.dart'; +part 'src/mocks/objects/source_location.dart'; part 'src/mocks/objects/target.dart'; part 'src/mocks/objects/vm.dart'; + +part 'src/mocks/repositories/notification.dart'; diff --git a/runtime/observatory/lib/models.dart b/runtime/observatory/lib/models.dart index e535b1e07a8..c047e9c9c6e 100644 --- a/runtime/observatory/lib/models.dart +++ b/runtime/observatory/lib/models.dart @@ -4,9 +4,25 @@ library models; -part 'src/models/objects/event.dart'; +import 'dart:async'; + +part 'src/models/exceptions.dart'; + part 'src/models/objects/class.dart'; +part 'src/models/objects/breakpoint.dart'; +part 'src/models/objects/error.dart'; +part 'src/models/objects/event.dart'; +part 'src/models/objects/extension_data.dart'; +part 'src/models/objects/frame.dart'; +part 'src/models/objects/instance.dart'; part 'src/models/objects/isolate.dart'; +part 'src/models/objects/library.dart'; +part 'src/models/objects/notification.dart'; part 'src/models/objects/object.dart'; +part 'src/models/objects/script.dart'; +part 'src/models/objects/source_location.dart'; part 'src/models/objects/target.dart'; +part 'src/models/objects/timeline_event.dart'; part 'src/models/objects/vm.dart'; + +part 'src/models/repositories/notification.dart'; diff --git a/runtime/observatory/lib/repositories.dart b/runtime/observatory/lib/repositories.dart new file mode 100644 index 00000000000..5e333ad6302 --- /dev/null +++ b/runtime/observatory/lib/repositories.dart @@ -0,0 +1,10 @@ +// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +library repositories; + +import 'dart:async'; +import 'package:observatory/models.dart' as M; + +part 'src/repositories/notification.dart'; diff --git a/runtime/observatory/lib/src/app/application.dart b/runtime/observatory/lib/src/app/application.dart index f2096252ec2..b37eda2750e 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(); 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) { @@ -42,7 +34,7 @@ class ObservatoryApplication extends Observable { if (vm is WebSocketVM) { targets.add(vm.target); } - _removeDisconnectEvents(); + notifications.deleteDisconnectEvents(); }); vm.onDisconnect.then((String reason) { @@ -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 notifications = - new ObservableList(); void _initOnce() { assert(app == null); @@ -78,15 +68,6 @@ class ObservatoryApplication extends Observable { locationManager._visit(); } - void removePauseEvents(Isolate isolate) { - notifications.removeWhere((notification) { - var event = notification.event; - return (event != null && - event.isolate == isolate && - event.isPauseEvent); - }); - } - void _onEvent(ServiceEvent event) { assert(event.kind != ServiceEvent.kNone); @@ -103,12 +84,12 @@ class ObservatoryApplication extends Observable { break; case ServiceEvent.kIsolateReload: - notifications.add(new Notification.fromEvent(event)); + notifications.add(new EventNotification.fromServiceEvent(event)); break; case ServiceEvent.kIsolateExit: case ServiceEvent.kResume: - removePauseEvents(event.isolate); + notifications.deletePauseEvents(isolate: event.isolate); break; case ServiceEvent.kPauseStart: @@ -116,12 +97,12 @@ class ObservatoryApplication extends Observable { case ServiceEvent.kPauseBreakpoint: case ServiceEvent.kPauseInterrupted: case ServiceEvent.kPauseException: - removePauseEvents(event.isolate); - notifications.add(new Notification.fromEvent(event)); + notifications.deletePauseEvents(isolate: event.isolate); + notifications.add(new EventNotification.fromServiceEvent(event)); break; case ServiceEvent.kInspect: - notifications.add(new Notification.fromEvent(event)); + notifications.add(new EventNotification.fromServiceEvent(event)); break; default: @@ -220,14 +201,6 @@ class ObservatoryApplication extends Observable { _initOnce(); } - void _removeDisconnectEvents() { - notifications.removeWhere((notification) { - var event = notification.event; - return (event != null && - event.kind == ServiceEvent.kConnectionClosed); - }); - } - loadCrashDump(Map crashDump) { this.vm = new FakeVM(crashDump['result']); app.locationManager.go('#/vm'); @@ -243,7 +216,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. diff --git a/runtime/observatory/lib/src/app/location_manager.dart b/runtime/observatory/lib/src/app/location_manager.dart index 577cb92101c..64ea764f927 100644 --- a/runtime/observatory/lib/src/app/location_manager.dart +++ b/runtime/observatory/lib/src/app/location_manager.dart @@ -54,6 +54,11 @@ class LocationManager extends Observable { /// Update the application location. After this function returns, /// [uri] and [debugArguments] will be updated. _updateApplicationLocation(String url) { + if (url == makeLink('/vm-connect')) { + // When we go to the vm-connect page, drop all notifications. + _app.notifications.deleteAll(); + } + // Chop off leading '#'. if (url.startsWith('#')) { url = url.substring(1); @@ -115,11 +120,6 @@ class LocationManager extends Observable { url = makeLink('/vm-connect'); } - if (url == makeLink('/vm-connect')) { - // When we go to the vm-connect page, drop all notifications. - _app.notifications.clear(); - } - if (addToBrowserHistory) { _addToBrowserHistory(url); } diff --git a/runtime/observatory/lib/src/app/notification.dart b/runtime/observatory/lib/src/app/notification.dart new file mode 100644 index 00000000000..b95c34e226f --- /dev/null +++ b/runtime/observatory/lib/src/app/notification.dart @@ -0,0 +1,115 @@ +// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +part of app; + +class ExceptionNotification implements M.ExceptionNotification { + final Exception exception; + /// [optional] + final StackTrace stacktrace; + ExceptionNotification(this.exception, {this.stacktrace}); +} + +class EventNotification implements M.EventNotification { + final M.Event event; + EventNotification(this.event); + factory EventNotification.fromServiceEvent(ServiceEvent event) { + M.Event e; + switch(event.kind) { + case ServiceEvent.kVMUpdate: + e = new VMUpdateEventMock(timestamp: event.timestamp, vm: event.vm); + break; + case ServiceEvent.kIsolateStart: + e = new IsolateStartEventMock(timestamp: event.timestamp, + isolate: event.isolate); + break; + case ServiceEvent.kIsolateRunnable: + e = new IsolateRunnableEventMock(timestamp: event.timestamp, + isolate: event.isolate); + break; + case ServiceEvent.kIsolateExit: + e = new IsolateExitEventMock(timestamp: event.timestamp, + isolate: event.isolate); + break; + case ServiceEvent.kIsolateUpdate: + e = new IsolateUpdateEventMock(timestamp: event.timestamp, + isolate: event.isolate); + break; + case ServiceEvent.kIsolateReload: + // TODO(bernaschina) add error: realoadError. + e = new IsolateRealodEventMock(timestamp: event.timestamp, + isolate: event.isolate); + break; + case ServiceEvent.kServiceExtensionAdded: + e = new ServiceExtensionAddedEventMock(timestamp: event.timestamp, + isolate: event.isolate, extensionRPC: event.extensionRPC); + break; + case ServiceEvent.kPauseStart: + e = new PauseStartEventMock(timestamp: event.timestamp, + isolate: event.isolate); + break; + case ServiceEvent.kPauseExit: + e = new PauseExitEventMock(timestamp: event.timestamp, + isolate: event.isolate); + break; + case ServiceEvent.kPauseBreakpoint: + // TODO(cbernaschina) add pauseBreakpoints. + e = new PauseBreakpointEventMock(timestamp: event.timestamp, + isolate: event.isolate, breakpoint: event.breakpoint, + pauseBreakpoints: const [], + topFrame: event.topFrame, + atAsyncSuspension: event.atAsyncSuspension); + break; + case ServiceEvent.kPauseInterrupted: + e = new PauseInterruptedEventMock(timestamp: event.timestamp, + isolate: event.isolate, topFrame: event.topFrame, + atAsyncSuspension: event.atAsyncSuspension); + break; + case ServiceEvent.kPauseException: + // TODO(cbernaschina) add exception. + e = new PauseExceptionEventMock(timestamp: event.timestamp, + isolate: event.isolate, topFrame: event.topFrame); + break; + case ServiceEvent.kNone: + e = new NoneEventMock(timestamp: event.timestamp, + isolate: event.isolate); + break; + case ServiceEvent.kResume: + e = new ResumeEventMock(timestamp: event.timestamp, + isolate: event.isolate); + break; + case ServiceEvent.kBreakpointAdded: + e = new BreakpointAddedEventMock(timestamp: event.timestamp, + isolate: event.isolate, breakpoint: event.breakpoint); + break; + case ServiceEvent.kBreakpointResolved: + e = new BreakpointResolvedEventMock(timestamp: event.timestamp, + isolate: event.isolate, breakpoint: event.breakpoint); + break; + case ServiceEvent.kBreakpointRemoved: + e = new BreakpointRemovedEventMock(timestamp: event.timestamp, + isolate: event.isolate, breakpoint: event.breakpoint); + break; + case ServiceEvent.kGC: + e = new GCEventMock(timestamp: event.timestamp, + isolate: event.isolate); + break; + case ServiceEvent.kInspect: + // TODO(cbernaschina) add inspectee: event.inspectee. + e = new InspectEventMock(timestamp: event.timestamp, + isolate: event.isolate); + break; + case ServiceEvent.kConnectionClosed: + e = new ConnectionClockedEventMock(timestamp: event.timestamp, + reason: event.reason); + break; + case ServiceEvent.kExtension: + e = new ExtensionEventMock(timestamp: event.timestamp, + isolate: event.isolate, extensionKind: event.extensionKind, + extensionData: event.extensionData); + break; + } + return new EventNotification(e); + } +} diff --git a/runtime/observatory/lib/src/elements/action_link.html b/runtime/observatory/lib/src/elements/action_link.html index 46ced3420c9..1b0438b1f2e 100644 --- a/runtime/observatory/lib/src/elements/action_link.html +++ b/runtime/observatory/lib/src/elements/action_link.html @@ -1,8 +1,8 @@ - - + + - - - - - - - - - - - - diff --git a/runtime/observatory/lib/src/elements/object_common.html b/runtime/observatory/lib/src/elements/object_common.html index 14311e072e2..a41b8283e63 100644 --- a/runtime/observatory/lib/src/elements/object_common.html +++ b/runtime/observatory/lib/src/elements/object_common.html @@ -5,11 +5,11 @@ - + - +