Reviewed by Maciej.
authorthatcher <thatcher@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 31 Jul 2006 06:15:05 +0000 (06:15 +0000)
committerthatcher <thatcher@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 31 Jul 2006 06:15:05 +0000 (06:15 +0000)
        Bug 9686: [Drosera] Need the ability to break into Drosera on Javascript exceptions
        http://bugzilla.opendarwin.org/show_bug.cgi?id=9686

        * Drosera/DebuggerDocument.m:
        (-[WebScriptObject switchToServerNamed:]): Remove as listener before resuming to
        ensure that the server does not try and notify us of events related to the resumption.
        (-[WebScriptObject webView:exceptionWasRaised:sourceId:line:forWebFrame:]): Delegate
        call through to JavaScript.
        * Drosera/debugger.js: Pause debugger when exception is raised.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@15701 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/Drosera/DebuggerDocument.m
WebKitTools/Drosera/debugger.js

index c7094ab1453893d5858b3e1d3c02e086d0b44c9c..b2f83551589126b2909be3d61cdf68e7d1384185 100644 (file)
@@ -1,3 +1,17 @@
+2006-07-30  Mark Rowe  <opendarwin.org@bdash.net.nz>
+
+        Reviewed by Maciej.
+
+        Bug 9686: [Drosera] Need the ability to break into Drosera on Javascript exceptions
+        http://bugzilla.opendarwin.org/show_bug.cgi?id=9686
+
+        * Drosera/DebuggerDocument.m:
+        (-[WebScriptObject switchToServerNamed:]): Remove as listener before resuming to
+        ensure that the server does not try and notify us of events related to the resumption.
+        (-[WebScriptObject webView:exceptionWasRaised:sourceId:line:forWebFrame:]): Delegate
+        call through to JavaScript.
+        * Drosera/debugger.js: Pause debugger when exception is raised.
+
 2006-07-29  Mike Emmel  <mike.emmel@gmail.com>
 
         Reviewed by Darin.
index 8d5f063f73a9bfa1a622c7e6c54b7839df4ea1af..003f3a67f1e3b03eb3dfc56cf3bcb42f7a621ee9 100644 (file)
@@ -276,8 +276,8 @@ static NSString *DebuggerStepOutToolbarItem = @"DebuggerStepOutToolbarItem";
     if (server) {
         [[NSNotificationCenter defaultCenter] removeObserver:self name:NSConnectionDidDieNotification object:[(NSDistantObject *)server connectionForProxy]];
         if ([[(NSDistantObject *)server connectionForProxy] isValid]) {
-            [self resume];
             [server removeListener:self];
+            [self resume];
         }
     }
 
@@ -641,4 +641,14 @@ static NSString *DebuggerStepOutToolbarItem = @"DebuggerStepOutToolbarItem";
     currentFrame = [[frame caller] retain];
     [old release];
 }
+
+- (void)webView:(WebView *)view exceptionWasRaised:(WebScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno forWebFrame:(WebFrame *)webFrame
+{
+    if (!webViewLoaded)
+        return;
+
+    NSArray *args = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:sid], [NSNumber numberWithInt:lineno], nil];
+    [[webView windowScriptObject] callWebScriptMethod:@"exceptionWasRaised" withArguments:args];
+    [args release];
+}
 @end
index 18f0d91fe2f71cc29bf7bcea493b34f10fe9bdaa..87440fc89be94faf0dc2bbe02f5132ce26ad8db6 100644 (file)
@@ -850,6 +850,12 @@ function willLeaveCallFrame(sourceId, line)
         steppingStack--;
 }
 
+function exceptionWasRaised(sourceId, line)
+{
+    pause();
+    willExecuteStatement(sourceId, line);
+}
+
 function showConsoleWindow()
 {
     if (!consoleWindow)