Remove -enterFrame: and -leaveFrame from WebScriptDebugger
[WebKit-https.git] / WebKit / mac / WebView / WebCoreScriptDebuggerImp.mm
index d3ec36354bbf06bd2dd974cb2063d2f06a68070d..5a86bd2bd689abfe2b23ca049d69fb2489f8d9c1 100644 (file)
 
 #include "WebCoreScriptDebuggerImp.h"
 
+#include "WebFrameInternal.h"
+#include "WebViewInternal.h"
 #include "WebScriptDebugDelegatePrivate.h"
+#include "WebScriptDebugServerPrivate.h"
 #include <JavaScriptCore/JSGlobalObject.h>
 #include <WebCore/KURL.h>
 
 using namespace KJS;
 using namespace WebCore;
 
+@interface WebScriptCallFrame (WebScriptDebugDelegateInternal)
+
+- (WebScriptCallFrame *)_initWithGlobalObject:(WebScriptObject *)globalObj caller:(WebScriptCallFrame *)caller state:(ExecState *)state;
+
+@end
+
 // convert UString to NSString
 NSString *toNSString(const UString& s)
 {
@@ -55,12 +64,11 @@ static NSURL *toNSURL(const UString& s)
 
 WebCoreScriptDebuggerImp::WebCoreScriptDebuggerImp(WebScriptDebugger *debugger, JSGlobalObject* globalObject)
     : m_debugger(debugger)
+    , m_callingDelegate(false)
 {
-    m_callingDelegate = true;
-    m_topCallFrame = [m_debugger enterFrame:globalObject->globalExec()];
     attach(globalObject);
-    [m_debugger enteredFrame:m_topCallFrame sourceId:-1 line:-1];
-    m_callingDelegate = false;
+    List emptyList;
+    callEvent(globalObject->globalExec(), -1, -1, 0, emptyList);
 }
 
 // callbacks - relay to delegate
@@ -70,7 +78,28 @@ bool WebCoreScriptDebuggerImp::sourceParsed(ExecState* state, int sourceID, cons
         return true;
 
     m_callingDelegate = true;
-    [m_debugger parsedSource:toNSString(source) fromURL:toNSURL(url) sourceId:sourceID startLine:lineNumber errorLine:errorLine errorMessage:toNSString(errorMsg)];
+
+    NSString *nsSource = toNSString(source);
+    NSURL *nsURL = toNSURL(url);
+
+    WebFrame *webFrame = [m_debugger webFrame];
+    WebView *webView = [webFrame webView];
+    if (errorLine == -1) {
+        [[webView _scriptDebugDelegateForwarder] webView:webView didParseSource:nsSource baseLineNumber:lineNumber fromURL:nsURL sourceId:sourceID forWebFrame:webFrame];
+        [[webView _scriptDebugDelegateForwarder] webView:webView didParseSource:nsSource fromURL:[nsURL absoluteString] sourceId:sourceID forWebFrame:webFrame]; // deprecated delegate method
+        if ([WebScriptDebugServer listenerCount])
+            [[WebScriptDebugServer sharedScriptDebugServer] webView:webView didParseSource:nsSource baseLineNumber:lineNumber fromURL:nsURL sourceId:sourceID forWebFrame:webFrame];
+    } else {
+        NSString* nsErrorMessage = toNSString(errorMsg);
+        NSDictionary *info = [[NSDictionary alloc] initWithObjectsAndKeys:nsErrorMessage, WebScriptErrorDescriptionKey, [NSNumber numberWithUnsignedInt:errorLine], WebScriptErrorLineNumberKey, nil];
+        NSError *error = [[NSError alloc] initWithDomain:WebScriptErrorDomain code:WebScriptGeneralErrorCode userInfo:info];
+        [[webView _scriptDebugDelegateForwarder] webView:webView failedToParseSource:nsSource baseLineNumber:lineNumber fromURL:nsURL withError:error forWebFrame:webFrame];
+        if ([WebScriptDebugServer listenerCount])
+            [[WebScriptDebugServer sharedScriptDebugServer] webView:webView failedToParseSource:nsSource baseLineNumber:lineNumber fromURL:nsURL withError:error forWebFrame:webFrame];
+        [error release];
+        [info release];
+    }
+
     m_callingDelegate = false;
 
     return true;
@@ -82,8 +111,15 @@ bool WebCoreScriptDebuggerImp::callEvent(ExecState* state, int sourceID, int lin
         return true;
 
     m_callingDelegate = true;
-    m_topCallFrame = [m_debugger enterFrame:state];
-    [m_debugger enteredFrame:m_topCallFrame sourceId:sourceID line:lineNumber];
+
+    m_topCallFrame.adoptNS([[WebScriptCallFrame alloc] _initWithGlobalObject:[m_debugger globalObject] caller:m_topCallFrame.get() state:state]);
+
+    WebFrame *webFrame = [m_debugger webFrame];
+    WebView *webView = [webFrame webView];
+    [[webView _scriptDebugDelegateForwarder] webView:webView didEnterCallFrame:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+    if ([WebScriptDebugServer listenerCount])
+        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView didEnterCallFrame:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+
     m_callingDelegate = false;
 
     return true;
@@ -95,7 +131,13 @@ bool WebCoreScriptDebuggerImp::atStatement(ExecState* state, int sourceID, int l
         return true;
 
     m_callingDelegate = true;
-    [m_debugger hitStatement:m_topCallFrame sourceId:sourceID line:lineNumber];
+
+    WebFrame *webFrame = [m_debugger webFrame];
+    WebView *webView = [webFrame webView];
+    [[webView _scriptDebugDelegateForwarder] webView:webView willExecuteStatement:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+    if ([WebScriptDebugServer listenerCount])
+        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView willExecuteStatement:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+
     m_callingDelegate = false;
 
     return true;
@@ -107,8 +149,15 @@ bool WebCoreScriptDebuggerImp::returnEvent(ExecState* state, int sourceID, int l
         return true;
 
     m_callingDelegate = true;
-    [m_debugger leavingFrame:m_topCallFrame sourceId:sourceID line:lineNumber];
-    m_topCallFrame = [m_debugger leaveFrame];
+
+    WebFrame *webFrame = [m_debugger webFrame];
+    WebView *webView = [webFrame webView];
+    [[webView _scriptDebugDelegateForwarder] webView:webView willLeaveCallFrame:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+    if ([WebScriptDebugServer listenerCount])
+        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView willLeaveCallFrame:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+
+    m_topCallFrame = [m_topCallFrame.get() caller];
+
     m_callingDelegate = false;
 
     return true;
@@ -120,7 +169,13 @@ bool WebCoreScriptDebuggerImp::exception(ExecState* state, int sourceID, int lin
         return true;
 
     m_callingDelegate = true;
-    [m_debugger exceptionRaised:m_topCallFrame sourceId:sourceID line:lineNumber];
+
+    WebFrame *webFrame = [m_debugger webFrame];
+    WebView *webView = [webFrame webView];
+    [[webView _scriptDebugDelegateForwarder] webView:webView exceptionWasRaised:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+    if ([WebScriptDebugServer listenerCount])
+        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView exceptionWasRaised:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+
     m_callingDelegate = false;
 
     return true;