Remove -enterFrame: and -leaveFrame from WebScriptDebugger
authoraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Mar 2008 16:13:56 +0000 (16:13 +0000)
committeraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Mar 2008 16:13:56 +0000 (16:13 +0000)
        Reviewed by Kevin M.

        * WebView/WebCoreScriptDebuggerImp.h: Changed to store m_topCallFrame
        in a RetainPtr, now that WebCoreScriptDebuggerImp is in charge of its
        lifetime.
        * WebView/WebCoreScriptDebuggerImp.mm:
          - Added declaration of -[WebScriptCallFrame
            _initWithGlobalObject:caller:state:].
          - Changed most uses of m_topCallFrame to m_topCallFrame.get()
        (WebCoreScriptDebuggerImp::WebCoreScriptDebuggerImp): Removed
        now-unnecessary initialization of m_topCallFrame.
        (WebCoreScriptDebuggerImp::callEvent): Replaced call to enterFrame:
        with its implementation. The one difference between this
        implementation and the old enterFrame: method is that we don't hand
        our reference to m_topCallFrame to _initWithGlobalObject: -- that
        method must now retain the passed-in WebScriptCallFrame manually.
        (WebCoreScriptDebuggerImp::atStatement):
        (WebCoreScriptDebuggerImp::returnEvent): Replaced call to leaveFrame
        with its implementation.
        (WebCoreScriptDebuggerImp::exception):
        * WebView/WebScriptDebugDelegate.mm: Removed declaration of
        -[WebScriptCallFrame _initWithGlobalObject:caller:state:].
        (-[WebScriptCallFrame _initWithGlobalObject:caller:state:]): Changed
        to retain the passed-in caller.
        * WebView/WebScriptDebugDelegatePrivate.h:
          - Removed _current ivar
          - Removed enterFrame:/leaveFrame declarations.

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

WebKit/mac/ChangeLog
WebKit/mac/WebView/WebCoreScriptDebuggerImp.h
WebKit/mac/WebView/WebCoreScriptDebuggerImp.mm
WebKit/mac/WebView/WebScriptDebugDelegate.mm
WebKit/mac/WebView/WebScriptDebugDelegatePrivate.h

index 4b3b35a2bf1a3b667e4616c12862eb979bcfdc00..69c614df3e3dc7047e1e017bcde392c128514ad0 100644 (file)
@@ -1,3 +1,35 @@
+2008-03-05  Adam Roben  <aroben@apple.com>
+
+        Remove -enterFrame: and -leaveFrame from WebScriptDebugger
+
+        Reviewed by Kevin M.
+
+        * WebView/WebCoreScriptDebuggerImp.h: Changed to store m_topCallFrame
+        in a RetainPtr, now that WebCoreScriptDebuggerImp is in charge of its
+        lifetime.
+        * WebView/WebCoreScriptDebuggerImp.mm:
+          - Added declaration of -[WebScriptCallFrame
+            _initWithGlobalObject:caller:state:].
+          - Changed most uses of m_topCallFrame to m_topCallFrame.get()
+        (WebCoreScriptDebuggerImp::WebCoreScriptDebuggerImp): Removed
+        now-unnecessary initialization of m_topCallFrame.
+        (WebCoreScriptDebuggerImp::callEvent): Replaced call to enterFrame:
+        with its implementation. The one difference between this
+        implementation and the old enterFrame: method is that we don't hand
+        our reference to m_topCallFrame to _initWithGlobalObject: -- that
+        method must now retain the passed-in WebScriptCallFrame manually.
+        (WebCoreScriptDebuggerImp::atStatement):
+        (WebCoreScriptDebuggerImp::returnEvent): Replaced call to leaveFrame
+        with its implementation.
+        (WebCoreScriptDebuggerImp::exception):
+        * WebView/WebScriptDebugDelegate.mm: Removed declaration of
+        -[WebScriptCallFrame _initWithGlobalObject:caller:state:].
+        (-[WebScriptCallFrame _initWithGlobalObject:caller:state:]): Changed
+        to retain the passed-in caller.
+        * WebView/WebScriptDebugDelegatePrivate.h:
+          - Removed _current ivar
+          - Removed enterFrame:/leaveFrame declarations.
+
 2008-03-05  Adam Roben  <aroben@apple.com>
 
         Remove -parsedSource: from WebScriptDebugger
index 0cbf411b153f0bf75fa68064310032b5cbec87ff..fd40756da0c1af166ca28340d7994822962cbafc 100644 (file)
@@ -33,6 +33,8 @@
 
 #include <JavaScriptCore/debugger.h>
 
+#include <wtf/RetainPtr.h>
+
 namespace KJS {
     class ExecState;
     class JSGlobalObject;
@@ -60,7 +62,7 @@ public:
 private:
     WebScriptDebugger *m_debugger;
     bool m_callingDelegate;
-    WebScriptCallFrame *m_topCallFrame;
+    RetainPtr<WebScriptCallFrame> m_topCallFrame;
 };
 
 #endif // WebCoreScriptDebuggerImp_h
index c9139b2e395bcae41999223b662384bf42b5f679..5a86bd2bd689abfe2b23ca049d69fb2489f8d9c1 100644 (file)
 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)
 {
@@ -59,7 +65,6 @@ static NSURL *toNSURL(const UString& s)
 WebCoreScriptDebuggerImp::WebCoreScriptDebuggerImp(WebScriptDebugger *debugger, JSGlobalObject* globalObject)
     : m_debugger(debugger)
     , m_callingDelegate(false)
-    , m_topCallFrame(nil)
 {
     attach(globalObject);
     List emptyList;
@@ -106,13 +111,14 @@ bool WebCoreScriptDebuggerImp::callEvent(ExecState* state, int sourceID, int lin
         return true;
 
     m_callingDelegate = true;
-    m_topCallFrame = [m_debugger enterFrame:state];
+
+    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 sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+    [[webView _scriptDebugDelegateForwarder] webView:webView didEnterCallFrame:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
     if ([WebScriptDebugServer listenerCount])
-        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView didEnterCallFrame:m_topCallFrame sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView didEnterCallFrame:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
 
     m_callingDelegate = false;
 
@@ -128,9 +134,9 @@ bool WebCoreScriptDebuggerImp::atStatement(ExecState* state, int sourceID, int l
 
     WebFrame *webFrame = [m_debugger webFrame];
     WebView *webView = [webFrame webView];
-    [[webView _scriptDebugDelegateForwarder] webView:webView willExecuteStatement:m_topCallFrame sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+    [[webView _scriptDebugDelegateForwarder] webView:webView willExecuteStatement:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
     if ([WebScriptDebugServer listenerCount])
-        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView willExecuteStatement:m_topCallFrame sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView willExecuteStatement:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
 
     m_callingDelegate = false;
 
@@ -146,11 +152,12 @@ bool WebCoreScriptDebuggerImp::returnEvent(ExecState* state, int sourceID, int l
 
     WebFrame *webFrame = [m_debugger webFrame];
     WebView *webView = [webFrame webView];
-    [[webView _scriptDebugDelegateForwarder] webView:webView willLeaveCallFrame:m_topCallFrame sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+    [[webView _scriptDebugDelegateForwarder] webView:webView willLeaveCallFrame:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
     if ([WebScriptDebugServer listenerCount])
-        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView willLeaveCallFrame:m_topCallFrame sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView willLeaveCallFrame:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+
+    m_topCallFrame = [m_topCallFrame.get() caller];
 
-    m_topCallFrame = [m_debugger leaveFrame];
     m_callingDelegate = false;
 
     return true;
@@ -165,9 +172,9 @@ bool WebCoreScriptDebuggerImp::exception(ExecState* state, int sourceID, int lin
 
     WebFrame *webFrame = [m_debugger webFrame];
     WebView *webView = [webFrame webView];
-    [[webView _scriptDebugDelegateForwarder] webView:webView exceptionWasRaised:m_topCallFrame sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+    [[webView _scriptDebugDelegateForwarder] webView:webView exceptionWasRaised:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
     if ([WebScriptDebugServer listenerCount])
-        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView exceptionWasRaised:m_topCallFrame sourceId:sourceID line:lineNumber forWebFrame:webFrame];
+        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView exceptionWasRaised:m_topCallFrame.get() sourceId:sourceID line:lineNumber forWebFrame:webFrame];
 
     m_callingDelegate = false;
 
index d361c2d8821ebe79191afb983f16f369cbf38f17..9bebcdacd58402f2f1acc0883d09261b3d489e72 100644 (file)
@@ -53,7 +53,6 @@ NSString * const WebScriptErrorLineNumberKey = @"WebScriptErrorLineNumber";
 
 @interface WebScriptCallFrame (WebScriptDebugDelegateInternal)
 
-- (WebScriptCallFrame *)_initWithGlobalObject:(WebScriptObject *)globalObj caller:(WebScriptCallFrame *)caller state:(ExecState *)state;
 - (id)_convertValueToObjcValue:(JSValue *)value;
 
 @end
@@ -72,7 +71,6 @@ NSString * const WebScriptErrorLineNumberKey = @"WebScriptErrorLineNumber";
 - (void)dealloc
 {
     delete _debugger;
-    [_current release];
     [super dealloc];
 }
 
@@ -86,19 +84,6 @@ NSString * const WebScriptErrorLineNumberKey = @"WebScriptErrorLineNumber";
     return core(_webFrame)->windowScriptObject();
 }
 
-- (WebScriptCallFrame *)enterFrame:(ExecState*)state;
-{
-    _current = [[WebScriptCallFrame alloc] _initWithGlobalObject:[self globalObject] caller:_current state:state];
-    return _current;
-}
-
-- (WebScriptCallFrame *)leaveFrame;
-{
-    WebScriptCallFrame *caller = [[_current caller] retain];
-    [_current release];
-    return _current = caller;
-}
-
 @end
 
 @interface WebScriptCallFramePrivate : NSObject {
@@ -133,7 +118,7 @@ NSString * const WebScriptErrorLineNumberKey = @"WebScriptErrorLineNumber";
     if ((self = [super init])) {
         _private = [[WebScriptCallFramePrivate alloc] init];
         _private->globalObject = globalObj;
-        _private->caller = caller; // (already retained)
+        _private->caller = [caller retain];
         _private->state = state;
     }
     return self;
index c8448622f879f673382592bbde8043eaa99ae899..bfa16c444652a52c2f2b8c0cdca10e72dcebbf45 100644 (file)
@@ -38,14 +38,11 @@ class WebCoreScriptDebuggerImp;
 @private
     WebFrame                  *_webFrame;
     WebCoreScriptDebuggerImp  *_debugger;
-    WebScriptCallFrame        *_current;       // top of stack
 }
 
 - (WebScriptDebugger *)initWithWebFrame:(WebFrame *)webFrame;
 - (WebFrame *)webFrame;
 
 - (WebScriptObject *)globalObject;                          // return the WebView's windowScriptObject
-- (WebScriptCallFrame *)enterFrame:(KJS::ExecState*)state;
-- (WebScriptCallFrame *)leaveFrame;
 
 @end