Remove WebCoreScriptCallFrame
authoraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 5 Mar 2008 19:35:32 +0000 (19:35 +0000)
committeraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 5 Mar 2008 19:35:32 +0000 (19:35 +0000)
         Reviewed by Tim.

         * WebView/WebCoreScriptDebugger.h:
           - Replaced WebCoreScriptCallFrame with WebScriptCallFrame
           - Replaced -newWrapperForFrame: with
             -newFrameWithGlobalObject:caller:state:
           - Removed WebCoreScriptCallFrame interface.
         * WebView/WebCoreScriptDebugger.mm: Replaced WebCoreScriptCallFrame
         with WebScriptCallFrame.
         (-[WebCoreScriptDebugger _enterFrame:]): Changed to call
         -newFrameWithGlobalObject:caller:state.
         (-[WebCoreScriptDebugger _leaveFrame]):
         * WebView/WebScriptDebugDelegate.h: Changed WebScriptCallFrame's
         _private ivar to be of type WebScriptCallFramePrivate*.
         * WebView/WebScriptDebugDelegate.mm:
           - Replaced WebCoreScriptCallFrame with WebScriptCallFrame
           - Added WebScriptCallFramePrivate
         (-[WebScriptDebugger enteredFrame:sourceId:line:]):
         (-[WebScriptDebugger hitStatement:sourceId:line:]):
         (-[WebScriptDebugger leavingFrame:sourceId:line:]):
         (-[WebScriptDebugger exceptionRaised:sourceId:line:]):
         (-[WebScriptCallFramePrivate dealloc]): Added.
         (-[WebScriptCallFrame _initWithGlobalObject:caller:state:]): Added.
         Code came from WebCoreScriptCallFrame.
         (-[WebScriptCallFrame dealloc]): Added a call to release the _private
         ivar.
         (-[WebScriptCallFrame _convertValueToObjcValue:]): Replaced calls to
         _private with direct access of _private's ivars.
         (-[WebScriptCallFrame caller]): Ditto.
         (-[WebScriptCallFrame scopeChain]): Ditto.
         (-[WebScriptCallFrame evaluateWebScript:]): Ditto.

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

WebKit/mac/ChangeLog
WebKit/mac/WebView/WebCoreScriptDebugger.h
WebKit/mac/WebView/WebCoreScriptDebugger.mm
WebKit/mac/WebView/WebScriptDebugDelegate.h
WebKit/mac/WebView/WebScriptDebugDelegate.mm

index ec0af079fbb929b567384ec82e4dd79c332e9a12..c4fe08a21e022a29db8d0e720fe1cd0d760d5d2f 100644 (file)
@@ -1,3 +1,39 @@
+2008-03-05  Adam Roben  <aroben@apple.com>
+
+        Remove WebCoreScriptCallFrame
+
+        Reviewed by Tim.
+
+        * WebView/WebCoreScriptDebugger.h:
+          - Replaced WebCoreScriptCallFrame with WebScriptCallFrame
+          - Replaced -newWrapperForFrame: with
+            -newFrameWithGlobalObject:caller:state:
+          - Removed WebCoreScriptCallFrame interface.
+        * WebView/WebCoreScriptDebugger.mm: Replaced WebCoreScriptCallFrame
+        with WebScriptCallFrame.
+        (-[WebCoreScriptDebugger _enterFrame:]): Changed to call
+        -newFrameWithGlobalObject:caller:state.
+        (-[WebCoreScriptDebugger _leaveFrame]):
+        * WebView/WebScriptDebugDelegate.h: Changed WebScriptCallFrame's
+        _private ivar to be of type WebScriptCallFramePrivate*.
+        * WebView/WebScriptDebugDelegate.mm:
+          - Replaced WebCoreScriptCallFrame with WebScriptCallFrame
+          - Added WebScriptCallFramePrivate
+        (-[WebScriptDebugger enteredFrame:sourceId:line:]):
+        (-[WebScriptDebugger hitStatement:sourceId:line:]):
+        (-[WebScriptDebugger leavingFrame:sourceId:line:]):
+        (-[WebScriptDebugger exceptionRaised:sourceId:line:]):
+        (-[WebScriptCallFramePrivate dealloc]): Added.
+        (-[WebScriptCallFrame _initWithGlobalObject:caller:state:]): Added.
+        Code came from WebCoreScriptCallFrame.
+        (-[WebScriptCallFrame dealloc]): Added a call to release the _private
+        ivar.
+        (-[WebScriptCallFrame _convertValueToObjcValue:]): Replaced calls to
+        _private with direct access of _private's ivars.
+        (-[WebScriptCallFrame caller]): Ditto.
+        (-[WebScriptCallFrame scopeChain]): Ditto.
+        (-[WebScriptCallFrame evaluateWebScript:]): Ditto.
+
 2008-03-05  Adam Roben  <aroben@apple.com>
 
         Move -_convertValueToObjcValue to WebScriptCallFrame
index ac07523f819ecc7a367a1f32317f0477906b0b7e..818302b149ef287e7f64f8193cea616f2ed17a4d 100644 (file)
@@ -31,7 +31,7 @@
 // with WebScriptCallFrame and WebCoreScriptDebugger with WebScriptDebugger.
 
 @class WebScriptObject;         // from JavaScriptCore
-@class WebCoreScriptCallFrame;  // below
+@class WebScriptCallFrame;
 
 class WebCoreScriptDebuggerImp;
 namespace KJS {
@@ -47,14 +47,14 @@ NSString *toNSString(const KJS::UString&);
 @protocol WebScriptDebugger
 
 - (WebScriptObject *)globalObject;                          // return the WebView's windowScriptObject
-- (id)newWrapperForFrame:(WebCoreScriptCallFrame *)frame;   // return a (retained) stack-frame object
+- (WebScriptCallFrame *)newFrameWithGlobalObject:(WebScriptObject *)globalObj caller:(WebScriptCallFrame *)caller state:(KJS::ExecState*)state;
 
 // debugger callbacks
 - (void)parsedSource:(NSString *)source fromURL:(NSURL *)url sourceId:(int)sid startLine:(int)startLine errorLine:(int)errorLine errorMessage:(NSString *)errorMessage;
-- (void)enteredFrame:(WebCoreScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno;
-- (void)hitStatement:(WebCoreScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno;
-- (void)leavingFrame:(WebCoreScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno;
-- (void)exceptionRaised:(WebCoreScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno;
+- (void)enteredFrame:(WebScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno;
+- (void)hitStatement:(WebScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno;
+- (void)leavingFrame:(WebScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno;
+- (void)exceptionRaised:(WebScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno;
 
 @end
 
@@ -65,7 +65,7 @@ NSString *toNSString(const KJS::UString&);
 @private
     id<WebScriptDebugger>     _delegate;      // interface to WebKit (not retained)
     WebScriptObject          *_globalObj;     // the global object's proxy (not retained)
-    WebCoreScriptCallFrame   *_current;       // top of stack
+    WebScriptCallFrame       *_current;       // top of stack
     WebCoreScriptDebuggerImp *_debugger;      // [KJS::Debugger]
 }
 
@@ -73,21 +73,3 @@ NSString *toNSString(const KJS::UString&);
 - (id<WebScriptDebugger>)delegate;
 
 @end
-
-
-
-@interface WebCoreScriptCallFrame : NSObject
-{
-@private
-    id                        _wrapper;       // WebKit's version of this object
-    WebScriptObject          *_globalObj;     // the global object's proxy (not retained)
-    WebCoreScriptCallFrame   *_caller;        // previous stack frame
-    KJS::ExecState           *_state;
-}
-
-- (id)wrapper;
-- (WebScriptObject *)globalObject;
-- (WebCoreScriptCallFrame *)caller;
-- (KJS::ExecState*)state;
-
-@end
index ed110a4011b899ca6b15a6c26b40077d5f0746c9..f50614f807e1150de52377c37e4b43f3435db1bd 100644 (file)
@@ -32,6 +32,7 @@
 
 #import "WebCoreScriptDebugger.h"
 
+#import "WebScriptDebugDelegate.h"
 #import <JavaScriptCore/ExecState.h>
 #import <JavaScriptCore/JSGlobalObject.h>
 #import <JavaScriptCore/debugger.h>
@@ -48,15 +49,8 @@ using namespace WebCore;
 
 @interface WebCoreScriptDebugger (WebCoreScriptDebuggerInternal)
 
-- (WebCoreScriptCallFrame *)_enterFrame:(ExecState *)state;
-- (WebCoreScriptCallFrame *)_leaveFrame;
-
-@end
-
-@interface WebCoreScriptCallFrame (WebCoreScriptDebuggerInternal)
-
-- (WebCoreScriptCallFrame *)_initWithGlobalObject:(WebScriptObject *)globalObj caller:(WebCoreScriptCallFrame *)caller state:(ExecState *)state;
-- (void)_setWrapper:(id)wrapper;
+- (WebScriptCallFrame *)_enterFrame:(ExecState *)state;
+- (WebScriptCallFrame *)_leaveFrame;
 
 @end
 
@@ -83,7 +77,7 @@ class WebCoreScriptDebuggerImp : public KJS::Debugger {
   private:
     WebCoreScriptDebugger  *_objc;      // our ObjC half
     bool                    _nested;    // true => this is a nested call
-    WebCoreScriptCallFrame *_current;   // top stack frame (copy of same field from ObjC side)
+    WebScriptCallFrame *_current;   // top stack frame (copy of same field from ObjC side)
 
   public:
     // constructor
@@ -190,77 +184,17 @@ class WebCoreScriptDebuggerImp : public KJS::Debugger {
 
 @implementation WebCoreScriptDebugger (WebCoreScriptDebuggerInternal)
 
-- (WebCoreScriptCallFrame *)_enterFrame:(ExecState *)state;
+- (WebScriptCallFrame *)_enterFrame:(ExecState *)state;
 {
-    WebCoreScriptCallFrame *callee = [[WebCoreScriptCallFrame alloc] _initWithGlobalObject:_globalObj caller:_current state:state];
-    [callee _setWrapper:[_delegate newWrapperForFrame:callee]];
-    return _current = callee;
+    _current = [_delegate newFrameWithGlobalObject:_globalObj caller:_current state:state];
+    return _current;
 }
 
-- (WebCoreScriptCallFrame *)_leaveFrame;
+- (WebScriptCallFrame *)_leaveFrame;
 {
-    WebCoreScriptCallFrame *caller = [[_current caller] retain];
+    WebScriptCallFrame *caller = [[_current caller] retain];
     [_current release];
     return _current = caller;
 }
 
 @end
-
-// WebCoreScriptCallFrame
-//
-// One of these is created to represent each stack frame.  Additionally, there is a "global"
-// frame to represent the outermost scope.  This global frame is always the last frame in
-// the chain of callers.
-//
-// The delegate can assign a "wrapper" to each frame object so it can relay calls through its
-// own exported interface.  This class is private to WebCore (and the delegate).
-
-@implementation WebCoreScriptCallFrame (WebCoreScriptDebuggerInternal)
-
-- (WebCoreScriptCallFrame *)_initWithGlobalObject:(WebScriptObject *)globalObj caller:(WebCoreScriptCallFrame *)caller state:(ExecState *)state
-{
-    if ((self = [super init])) {
-        _globalObj = globalObj;
-        _caller    = caller;    // (already retained)
-        _state     = state;
-    }
-    return self;
-}
-
-- (void)_setWrapper:(id)wrapper
-{
-    _wrapper = wrapper;     // (already retained)
-}
-
-@end
-
-@implementation WebCoreScriptCallFrame
-
-- (void)dealloc
-{
-    [_wrapper release];
-    [_caller release];
-    [super dealloc];
-}
-
-- (id)wrapper
-{
-    return _wrapper;
-}
-
-- (WebScriptObject *)globalObject
-{
-    return _globalObj;
-}
-
-- (WebCoreScriptCallFrame *)caller
-{
-    return _caller;
-}
-
-- (ExecState*)state
-{
-    return _state;
-}
-
-@end
index 7a4c3495e09b0eb09e643946eb18e00bfeafe774..fba48f6ac9eff91133c606379785f7c6cd9d4f5d 100644 (file)
@@ -37,7 +37,8 @@
 @class WebView;
 @class WebFrame;
 @class WebScriptCallFrame;
-@class WebCoreScriptCallFrame;
+@class WebScriptCallFramePrivate;
+@class WebScriptObject;
 
 extern NSString * const WebScriptErrorDomain;
 extern NSString * const WebScriptErrorDescriptionKey;
@@ -106,8 +107,8 @@ enum {
 @interface WebScriptCallFrame : NSObject
 {
 @private
-    WebCoreScriptCallFrame *_private;
-    id                      _userInfo;
+    WebScriptCallFramePrivate* _private;
+    id                         _userInfo;
 }
 
 // associate user info with frame
index 1d18cbe514f8c81bf521818e39299398ee1125f5..e8297322e19b629ce27b3de76c221991197cc842 100644 (file)
@@ -52,7 +52,7 @@ NSString * const WebScriptErrorLineNumberKey = @"WebScriptErrorLineNumber";
 
 @interface WebScriptCallFrame (WebScriptDebugDelegateInternal)
 
-- (WebScriptCallFrame *)_initWithFrame:(WebCoreScriptCallFrame *)frame;
+- (WebScriptCallFrame *)_initWithGlobalObject:(WebScriptObject *)globalObj caller:(WebScriptCallFrame *)caller state:(ExecState *)state;
 - (id)_convertValueToObjcValue:(JSValue *)value;
 
 @end
@@ -79,9 +79,9 @@ NSString * const WebScriptErrorLineNumberKey = @"WebScriptErrorLineNumber";
     return core(_webFrame)->windowScriptObject();
 }
 
-- (id)newWrapperForFrame:(WebCoreScriptCallFrame *)frame
+- (WebScriptCallFrame *)newFrameWithGlobalObject:(WebScriptObject *)globalObj caller:(WebScriptCallFrame *)caller state:(ExecState*)state
 {
-    return [[WebScriptCallFrame alloc] _initWithFrame:frame];
+    return [[WebScriptCallFrame alloc] _initWithGlobalObject:globalObj caller:caller state:state];
 }
 
 - (void)parsedSource:(NSString *)source fromURL:(NSURL *)url sourceId:(int)sid startLine:(int)startLine errorLine:(int)errorLine errorMessage:(NSString *)errorMessage
@@ -103,48 +103,74 @@ NSString * const WebScriptErrorLineNumberKey = @"WebScriptErrorLineNumber";
     }
 }
 
-- (void)enteredFrame:(WebCoreScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno
+- (void)enteredFrame:(WebScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno
 {
     WebView *webView = [_webFrame webView];
-    [[webView _scriptDebugDelegateForwarder] webView:webView didEnterCallFrame:[frame wrapper] sourceId:sid line:lineno forWebFrame:_webFrame];
+    [[webView _scriptDebugDelegateForwarder] webView:webView didEnterCallFrame:frame sourceId:sid line:lineno forWebFrame:_webFrame];
     if ([WebScriptDebugServer listenerCount])
-        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView didEnterCallFrame:[frame wrapper] sourceId:sid line:lineno forWebFrame:_webFrame];
+        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView didEnterCallFrame:frame sourceId:sid line:lineno forWebFrame:_webFrame];
 }
 
-- (void)hitStatement:(WebCoreScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno
+- (void)hitStatement:(WebScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno
 {
     WebView *webView = [_webFrame webView];
-    [[webView _scriptDebugDelegateForwarder] webView:webView willExecuteStatement:[frame wrapper] sourceId:sid line:lineno forWebFrame:_webFrame];
+    [[webView _scriptDebugDelegateForwarder] webView:webView willExecuteStatement:frame sourceId:sid line:lineno forWebFrame:_webFrame];
     if ([WebScriptDebugServer listenerCount])
-        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView willExecuteStatement:[frame wrapper] sourceId:sid line:lineno forWebFrame:_webFrame];
+        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView willExecuteStatement:frame sourceId:sid line:lineno forWebFrame:_webFrame];
 }
 
-- (void)leavingFrame:(WebCoreScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno
+- (void)leavingFrame:(WebScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno
 {
     WebView *webView = [_webFrame webView];
-    [[webView _scriptDebugDelegateForwarder] webView:webView willLeaveCallFrame:[frame wrapper] sourceId:sid line:lineno forWebFrame:_webFrame];
+    [[webView _scriptDebugDelegateForwarder] webView:webView willLeaveCallFrame:frame sourceId:sid line:lineno forWebFrame:_webFrame];
     if ([WebScriptDebugServer listenerCount])
-        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView willLeaveCallFrame:[frame wrapper] sourceId:sid line:lineno forWebFrame:_webFrame];
+        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView willLeaveCallFrame:frame sourceId:sid line:lineno forWebFrame:_webFrame];
 }
 
-- (void)exceptionRaised:(WebCoreScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno
+- (void)exceptionRaised:(WebScriptCallFrame *)frame sourceId:(int)sid line:(int)lineno
 {
     WebView *webView = [_webFrame webView];
-    [[webView _scriptDebugDelegateForwarder] webView:webView exceptionWasRaised:[frame wrapper] sourceId:sid line:lineno forWebFrame:_webFrame];
+    [[webView _scriptDebugDelegateForwarder] webView:webView exceptionWasRaised:frame sourceId:sid line:lineno forWebFrame:_webFrame];
     if ([WebScriptDebugServer listenerCount])
-        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView exceptionWasRaised:[frame wrapper] sourceId:sid line:lineno forWebFrame:_webFrame];
+        [[WebScriptDebugServer sharedScriptDebugServer] webView:webView exceptionWasRaised:frame sourceId:sid line:lineno forWebFrame:_webFrame];
 }
 
 @end
 
+@interface WebScriptCallFramePrivate : NSObject {
+@public
+    WebScriptObject        *globalObject;   // the global object's proxy (not retained)
+    WebScriptCallFrame     *caller;         // previous stack frame
+    KJS::ExecState         *state;
+}
+@end
+
+@implementation WebScriptCallFramePrivate
+- (void)dealloc
+{
+    [caller release];
+    [super dealloc];
+}
+@end
 
+// WebScriptCallFrame
+//
+// One of these is created to represent each stack frame.  Additionally, there is a "global"
+// frame to represent the outermost scope.  This global frame is always the last frame in
+// the chain of callers.
+//
+// The delegate can assign a "wrapper" to each frame object so it can relay calls through its
+// own exported interface.  This class is private to WebCore (and the delegate).
 
 @implementation WebScriptCallFrame (WebScriptDebugDelegateInternal)
 
-- (WebScriptCallFrame *)_initWithFrame:(WebCoreScriptCallFrame *)frame
+- (WebScriptCallFrame *)_initWithGlobalObject:(WebScriptObject *)globalObj caller:(WebScriptCallFrame *)caller state:(ExecState *)state
 {
     if ((self = [super init])) {
-        _private = frame;
+        _private = [[WebScriptCallFramePrivate alloc] init];
+        _private->globalObject = globalObj;
+        _private->caller = caller; // (already retained)
+        _private->state = state;
     }
     return self;
 }
@@ -154,7 +180,7 @@ NSString * const WebScriptErrorLineNumberKey = @"WebScriptErrorLineNumber";
     if (!value)
         return nil;
 
-    WebScriptObject *globalObject = [_private globalObject];
+    WebScriptObject *globalObject = _private->globalObject;
     if (value == [globalObject _imp])
         return globalObject;
 
@@ -178,6 +204,7 @@ NSString * const WebScriptErrorLineNumberKey = @"WebScriptErrorLineNumber";
 - (void) dealloc
 {
     [_userInfo release];
+    [_private release];
     [super dealloc];
 }
 
@@ -196,7 +223,7 @@ NSString * const WebScriptErrorLineNumberKey = @"WebScriptErrorLineNumber";
 
 - (WebScriptCallFrame *)caller
 {
-    return [[_private caller] wrapper];
+    return _private->caller;
 }
 
 // Returns an array of scope objects (most local first).
@@ -206,9 +233,9 @@ NSString * const WebScriptErrorLineNumberKey = @"WebScriptErrorLineNumber";
 
 - (NSArray *)scopeChain
 {
-    ExecState* state = [_private state];
+    ExecState* state = _private->state;
     if (!state->scopeNode())  // global frame
-        return [NSArray arrayWithObject:[_private globalObject]];
+        return [NSArray arrayWithObject:_private->globalObject];
 
     ScopeChain      chain  = state->scopeChain();
     NSMutableArray *scopes = [[NSMutableArray alloc] init];
@@ -228,7 +255,7 @@ NSString * const WebScriptErrorLineNumberKey = @"WebScriptErrorLineNumber";
 
 - (NSString *)functionName
 {
-    ExecState* state = [_private state];
+    ExecState* state = _private->state;
     if (!state->scopeNode())
         return nil;
 
@@ -244,7 +271,7 @@ NSString * const WebScriptErrorLineNumberKey = @"WebScriptErrorLineNumber";
 
 - (id)exception
 {
-    ExecState* state = [_private state];
+    ExecState* state = _private->state;
     if (!state->hadException())
         return nil;
     return [self _convertValueToObjcValue:state->exception()];
@@ -265,7 +292,7 @@ NSString * const WebScriptErrorLineNumberKey = @"WebScriptErrorLineNumber";
 
     UString code = String(script);
 
-    ExecState* state = [_private state];
+    ExecState* state = _private->state;
     JSGlobalObject* globalObject = state->dynamicGlobalObject();
 
     // find "eval"