Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(747)

Unified Diff: runtime/vm/debugger_api_impl.cc

Issue 14298002: Deprecate old debugger breakpoint handler (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/debugger.cc ('k') | runtime/vm/debugger_api_impl_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/debugger_api_impl.cc
===================================================================
--- runtime/vm/debugger_api_impl.cc (revision 21556)
+++ runtime/vm/debugger_api_impl.cc (working copy)
@@ -99,25 +99,37 @@
return Api::True(isolate);
}
-
-DART_EXPORT void Dart_SetBreakpointHandler(Dart_BreakpointHandler bp_handler) {
- BreakpointHandler* handler =
- reinterpret_cast<BreakpointHandler*>(bp_handler);
- Debugger::SetBreakpointHandler(handler);
-}
-
-
+static Dart_PausedEventHandler* paused_event_handler = NULL;
static Dart_BreakpointResolvedHandler* bp_resolved_handler = NULL;
static Dart_ExceptionThrownHandler* exc_thrown_handler = NULL;
static Dart_IsolateEventHandler* isolate_event_handler = NULL;
+static Dart_BreakpointHandler* legacy_bp_handler = NULL;
+
static void DebuggerEventHandler(Debugger::DebuggerEvent* event) {
Isolate* isolate = Isolate::Current();
ASSERT(isolate != NULL);
ASSERT(isolate->debugger() != NULL);
Dart_IsolateId isolate_id = isolate->debugger()->GetIsolateId();
- if (event->type == Debugger::kBreakpointResolved) {
+ if (event->type == Debugger::kBreakpointReached) {
+ if (legacy_bp_handler != NULL) {
+ Dart_StackTrace stack_trace =
+ reinterpret_cast<Dart_StackTrace>(isolate->debugger()->StackTrace());
+ (*legacy_bp_handler)(isolate_id, NULL, stack_trace);
+ return;
+ }
+ if (paused_event_handler == NULL) {
+ return;
+ }
+ Dart_CodeLocation location;
+ ActivationFrame* top_frame = event->top_frame;
+ location.script_url = Api::NewHandle(isolate, top_frame->SourceUrl());
+ const Library& lib = Library::Handle(top_frame->Library());
+ location.library_id = lib.index();
+ location.token_pos = top_frame->TokenPos();
+ (*paused_event_handler)(isolate_id, location);
+ } else if (event->type == Debugger::kBreakpointResolved) {
if (bp_resolved_handler == NULL) {
return;
}
@@ -151,6 +163,18 @@
}
+DART_EXPORT void Dart_SetBreakpointHandler(Dart_BreakpointHandler bp_handler) {
+ legacy_bp_handler = bp_handler;
+ Debugger::SetEventHandler(DebuggerEventHandler);
+}
+
+
+DART_EXPORT void Dart_SetPausedEventHandler(Dart_PausedEventHandler handler) {
+ paused_event_handler = handler;
+ Debugger::SetEventHandler(DebuggerEventHandler);
+}
+
+
DART_EXPORT void Dart_SetBreakpointResolvedHandler(
Dart_BreakpointResolvedHandler handler) {
bp_resolved_handler = handler;
« no previous file with comments | « runtime/vm/debugger.cc ('k') | runtime/vm/debugger_api_impl_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698