[webkit-changes] cvs commit: WebKit/WebView.subproj
WebControllerSets.m WebFrame.m WebFrameInternal.h
WebFramePrivate.h WebView.m WebViewInternal.h
Maciej
mjs at opensource.apple.com
Tue Dec 20 00:32:58 PST 2005
mjs 05/12/20 00:32:58
Modified: . ChangeLog
WebCoreSupport.subproj WebBridge.m
WebView.subproj WebControllerSets.m WebFrame.m
WebFrameInternal.h WebFramePrivate.h WebView.m
WebViewInternal.h
Log:
Reviewed by Eric.
- Move handling of frame namespaces down to WebFrame.
- Put some internal class declarations in the implementation file.
* WebView.subproj/WebControllerSets.m:
(+[WebFrameNamespaces addWebView:toFrameNamespace:]):
(+[WebFrameNamespaces webViewsInFrameNamespace:]):
* WebView.subproj/WebFrame.m:
(-[WebFramePrivate dealloc]):
(-[WebFrame _setFrameNamespace:]):
(-[WebFrame _frameNamespace]):
* WebView.subproj/WebFrameInternal.h:
* WebView.subproj/WebFramePrivate.h:
* WebView.subproj/WebView.m:
(-[WebView _close]):
(-[WebView _findFrameNamed:sourceFrame:]):
(-[WebView setGroupName:]):
(-[WebView groupName]):
* WebView.subproj/WebViewInternal.h:
Revision Changes Path
1.3412 +23 -0 WebKit/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /cvs/root/WebKit/ChangeLog,v
retrieving revision 1.3411
retrieving revision 1.3412
diff -u -r1.3411 -r1.3412
--- ChangeLog 19 Dec 2005 22:16:17 -0000 1.3411
+++ ChangeLog 20 Dec 2005 08:32:44 -0000 1.3412
@@ -1,3 +1,26 @@
+2005-12-19 Maciej Stachowiak <mjs at apple.com>
+
+ Reviewed by Eric.
+
+ - Move handling of frame namespaces down to WebFrame.
+ - Put some internal class declarations in the implementation file.
+
+ * WebView.subproj/WebControllerSets.m:
+ (+[WebFrameNamespaces addWebView:toFrameNamespace:]):
+ (+[WebFrameNamespaces webViewsInFrameNamespace:]):
+ * WebView.subproj/WebFrame.m:
+ (-[WebFramePrivate dealloc]):
+ (-[WebFrame _setFrameNamespace:]):
+ (-[WebFrame _frameNamespace]):
+ * WebView.subproj/WebFrameInternal.h:
+ * WebView.subproj/WebFramePrivate.h:
+ * WebView.subproj/WebView.m:
+ (-[WebView _close]):
+ (-[WebView _findFrameNamed:sourceFrame:]):
+ (-[WebView setGroupName:]):
+ (-[WebView groupName]):
+ * WebView.subproj/WebViewInternal.h:
+
2005-12-19 Mitz Pettel <opendarwin.org at mitzpettel.com>
Reviewed by Darin, committed by Adele.
1.376 +4 -7 WebKit/WebCoreSupport.subproj/WebBridge.m
Index: WebBridge.m
===================================================================
RCS file: /cvs/root/WebKit/WebCoreSupport.subproj/WebBridge.m,v
retrieving revision 1.375
retrieving revision 1.376
diff -u -r1.375 -r1.376
--- WebBridge.m 8 Dec 2005 18:33:55 -0000 1.375
+++ WebBridge.m 20 Dec 2005 08:32:54 -0000 1.376
@@ -349,7 +349,7 @@
{
WebView *parentWebView = [_frame webView];
- // We need to remove the parent WebView from WebViewSets here, before it actually
+ // We need to remove the main frame from WebFrameNaemespaces here, before it actually
// closes, to make sure that JavaScript code that executes before it closes
// can't find it. Otherwise, window.open will select a closed WebView instead of
// opening a new one <rdar://problem/3572585>.
@@ -361,11 +361,8 @@
// message by actually closing the WebView. Safari guarantees this behavior, but other apps might not.
// This approach is an inherent limitation of not making a close execute immediately
// after a call to window.close.
-
- [WebFrameNamespaces removeWebView:parentWebView fromFrameNamespace:[parentWebView groupName]];
-
+ [[parentWebView mainFrame] _setFrameNamespace:nil];
[parentWebView stopLoading:self];
-
[parentWebView performSelector:@selector(_closeWindow) withObject:nil afterDelay:0.0];
}
@@ -1718,9 +1715,9 @@
NSMutableArray *deferredWebViews = [NSMutableArray array];
NSString *setName = [webView groupName];
if (setName) {
- NSEnumerator *enumerator = [WebFrameNamespaces webViewsInFrameNamespace:setName];
+ NSEnumerator *enumerator = [WebFrameNamespaces framesInNamespace:setName];
WebView *otherWebView;
- while ((otherWebView = [enumerator nextObject]) != nil) {
+ while ((otherWebView = [[enumerator nextObject] webView]) != nil) {
if (otherWebView != webView && ![otherWebView defersCallbacks]) {
[otherWebView setDefersCallbacks:YES];
[deferredWebViews addObject:otherWebView];
1.7 +14 -10 WebKit/WebView.subproj/WebControllerSets.m
Index: WebControllerSets.m
===================================================================
RCS file: /cvs/root/WebKit/WebView.subproj/WebControllerSets.m,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- WebControllerSets.m 8 Dec 2005 18:33:56 -0000 1.6
+++ WebControllerSets.m 20 Dec 2005 08:32:55 -0000 1.7
@@ -43,44 +43,48 @@
+(void)addWebView:(WebView *)webView toFrameNamespace:(NSString *)name
{
- if (namespaces == nil) {
+ if (!name)
+ return;
+
+ if (!namespaces)
namespaces = [[NSMutableDictionary alloc] init];
- }
CFMutableSetRef namespace = (CFMutableSetRef)[namespaces objectForKey:name];
- if (namespace == NULL) {
+ if (!namespace) {
namespace = CFSetCreateMutable(NULL, 0, &NonRetainingSetCallbacks);
[namespaces setObject:(id)namespace forKey:name];
CFRelease(namespace);
}
-
CFSetSetValue(namespace, webView);
}
+(void)removeWebView:(WebView *)webView fromFrameNamespace:(NSString *)name
{
+ if (!name)
+ return;
+
CFMutableSetRef namespace = (CFMutableSetRef)[namespaces objectForKey:name];
- if (namespace == NULL) {
+ if (!namespace)
return;
- }
CFSetRemoveValue(namespace, webView);
- if (CFSetGetCount(namespace) == 0) {
+ if (CFSetGetCount(namespace) == 0)
[namespaces removeObjectForKey:name];
- }
}
+(NSEnumerator *)webViewsInFrameNamespace:(NSString *)name;
{
+ if (!name)
+ return [[[NSEnumerator alloc] init] autorelease];
+
CFMutableSetRef namespace = (CFMutableSetRef)[namespaces objectForKey:name];
- if (namespace == NULL) {
+ if (!namespace)
return [[[NSEnumerator alloc] init] autorelease];
- }
return [(NSSet *)namespace objectEnumerator];
}
1.258 +87 -0 WebKit/WebView.subproj/WebFrame.m
Index: WebFrame.m
===================================================================
RCS file: /cvs/root/WebKit/WebView.subproj/WebFrame.m,v
retrieving revision 1.257
retrieving revision 1.258
diff -u -r1.257 -r1.258
--- WebFrame.m 15 Dec 2005 22:17:57 -0000 1.257
+++ WebFrame.m 20 Dec 2005 08:32:55 -0000 1.258
@@ -64,6 +64,7 @@
#import <WebKit/WebViewInternal.h>
#import <WebKit/WebUIDelegate.h>
#import <WebKit/WebScriptDebugDelegatePrivate.h>
+#import <WebKit/WebControllerSets.h>
#import <objc/objc-runtime.h>
@@ -186,6 +187,71 @@
- (WebHistoryItem *)_currentBackForwardListItemToResetTo;
@end
+ at interface WebFramePrivate : NSObject
+{
+ at public
+ WebFrame *nextSibling;
+ WebFrame *previousSibling;
+
+ NSString *name;
+ WebFrameView *webFrameView;
+ WebDataSource *dataSource;
+ WebDataSource *provisionalDataSource;
+ WebBridge *bridge;
+ WebView *webView;
+ WebFrameState state;
+ WebFrameLoadType loadType;
+ WebFrame *parent;
+ NSMutableArray *children;
+ WebHistoryItem *currentItem; // BF item for our current content
+ WebHistoryItem *provisionalItem; // BF item for where we're trying to go
+ // (only known when navigating to a pre-existing BF item)
+ WebHistoryItem *previousItem; // BF item for previous content, see _itemForSavingDocState
+
+ WebPolicyDecisionListener *listener;
+ // state we'll need to continue after waiting for the policy delegate's decision
+ NSURLRequest *policyRequest;
+ NSString *policyFrameName;
+ id policyTarget;
+ SEL policySelector;
+ WebFormState *policyFormState;
+ WebDataSource *policyDataSource;
+ WebFrameLoadType policyLoadType;
+
+ BOOL quickRedirectComing;
+ BOOL isStoppingLoad;
+ BOOL delegateIsHandlingProvisionalLoadError;
+ BOOL delegateIsDecidingNavigationPolicy;
+ BOOL delegateIsHandlingUnimplementablePolicy;
+
+ id internalLoadDelegate;
+ WebScriptDebugger *scriptDebugger;
+
+ NSString *frameNamespace;
+}
+
+- (void)setName:(NSString *)name;
+- (NSString *)name;
+- (void)setWebView:(WebView *)wv;
+- (WebView *)webView;
+- (void)setWebFrameView:(WebFrameView *)v;
+- (WebFrameView *)webFrameView;
+- (void)setDataSource:(WebDataSource *)d;
+- (WebDataSource *)dataSource;
+- (void)setProvisionalDataSource:(WebDataSource *)d;
+- (WebDataSource *)provisionalDataSource;
+- (WebFrameLoadType)loadType;
+- (void)setLoadType:(WebFrameLoadType)loadType;
+
+- (void)setProvisionalItem:(WebHistoryItem *)item;
+- (WebHistoryItem *)provisionalItem;
+- (void)setPreviousItem:(WebHistoryItem *)item;
+- (WebHistoryItem *)previousItem;
+- (void)setCurrentItem:(WebHistoryItem *)item;
+- (WebHistoryItem *)currentItem;
+
+ at end
+
@implementation WebFramePrivate
- init
@@ -222,6 +288,7 @@
ASSERT(policyTarget == nil);
ASSERT(policyFormState == nil);
ASSERT(policyDataSource == nil);
+ ASSERT(frameNamesace == nil);
[super dealloc];
}
@@ -2792,6 +2859,26 @@
[self _detachChildren];
}
+- (void)_setFrameNamespace:(NSString *)namespace
+{
+ ASSERT(self == [[self webView] mainFrame]);
+
+ if (namespace != _private->frameNamespace){
+ [WebFrameNamespaces removeWebView:[self webView] fromFrameNamespace:_private->frameNamespace];
+ namespace = [namespace copy];
+ [_private->frameNamespace release];
+ _private->frameNamespace = namespace;
+ [WebFrameNamespaces addWebView:[self webView] toFrameNamespace:_private->frameNamespace];
+ }
+}
+
+- (NSString *)_frameNamespace
+{
+ ASSERT(self == [[self webView] mainFrame]);
+
+ return _private->frameNamespace;
+}
+
@end
@implementation WebFormState : NSObject
1.15 +4 -0 WebKit/WebView.subproj/WebFrameInternal.h
Index: WebFrameInternal.h
===================================================================
RCS file: /cvs/root/WebKit/WebView.subproj/WebFrameInternal.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- WebFrameInternal.h 8 Sep 2005 21:35:07 -0000 1.14
+++ WebFrameInternal.h 20 Dec 2005 08:32:55 -0000 1.15
@@ -49,6 +49,10 @@
data:(NSData *)data
error:(NSError *)error;
- (void)_setupForReplace;
+
+- (void)_setFrameNamespace:(NSString *)namespace;
+- (NSString *)_frameNamespace;
+
@end
@interface NSObject (WebInternalFrameLoadDelegate)
1.163 +0 -63 WebKit/WebView.subproj/WebFramePrivate.h
Index: WebFramePrivate.h
===================================================================
RCS file: /cvs/root/WebKit/WebView.subproj/WebFramePrivate.h,v
retrieving revision 1.162
retrieving revision 1.163
diff -u -r1.162 -r1.163
--- WebFramePrivate.h 11 Nov 2005 01:15:36 -0000 1.162
+++ WebFramePrivate.h 20 Dec 2005 08:32:55 -0000 1.163
@@ -78,69 +78,6 @@
extern NSString *WebPageCacheDataSourceKey;
extern NSString *WebPageCacheDocumentViewKey;
- at interface WebFramePrivate : NSObject
-{
- at public
- WebFrame *nextSibling;
- WebFrame *previousSibling;
-
- NSString *name;
- WebFrameView *webFrameView;
- WebDataSource *dataSource;
- WebDataSource *provisionalDataSource;
- WebBridge *bridge;
- WebView *webView;
- WebFrameState state;
- WebFrameLoadType loadType;
- WebFrame *parent;
- NSMutableArray *children;
- WebHistoryItem *currentItem; // BF item for our current content
- WebHistoryItem *provisionalItem; // BF item for where we're trying to go
- // (only known when navigating to a pre-existing BF item)
- WebHistoryItem *previousItem; // BF item for previous content, see _itemForSavingDocState
-
- WebPolicyDecisionListener *listener;
- // state we'll need to continue after waiting for the policy delegate's decision
- NSURLRequest *policyRequest;
- NSString *policyFrameName;
- id policyTarget;
- SEL policySelector;
- WebFormState *policyFormState;
- WebDataSource *policyDataSource;
- WebFrameLoadType policyLoadType;
-
- BOOL quickRedirectComing;
- BOOL isStoppingLoad;
- BOOL delegateIsHandlingProvisionalLoadError;
- BOOL delegateIsDecidingNavigationPolicy;
- BOOL delegateIsHandlingUnimplementablePolicy;
-
- id internalLoadDelegate;
- WebScriptDebugger *scriptDebugger;
-}
-
-- (void)setName:(NSString *)name;
-- (NSString *)name;
-- (void)setWebView:(WebView *)wv;
-- (WebView *)webView;
-- (void)setWebFrameView:(WebFrameView *)v;
-- (WebFrameView *)webFrameView;
-- (void)setDataSource:(WebDataSource *)d;
-- (WebDataSource *)dataSource;
-- (void)setProvisionalDataSource:(WebDataSource *)d;
-- (WebDataSource *)provisionalDataSource;
-- (WebFrameLoadType)loadType;
-- (void)setLoadType:(WebFrameLoadType)loadType;
-
-- (void)setProvisionalItem:(WebHistoryItem *)item;
-- (WebHistoryItem *)provisionalItem;
-- (void)setPreviousItem:(WebHistoryItem *)item;
-- (WebHistoryItem *)previousItem;
-- (void)setCurrentItem:(WebHistoryItem *)item;
-- (WebHistoryItem *)currentItem;
-
- at end
-
@interface WebFrame (WebPrivate)
// Other private methods
1.319 +88 -13 WebKit/WebView.subproj/WebView.m
Index: WebView.m
===================================================================
RCS file: /cvs/root/WebKit/WebView.subproj/WebView.m,v
retrieving revision 1.318
retrieving revision 1.319
diff -u -r1.318 -r1.319
--- WebView.m 15 Dec 2005 22:17:58 -0000 1.318
+++ WebView.m 20 Dec 2005 08:32:56 -0000 1.319
@@ -204,6 +204,89 @@
- (BOOL)_shouldAutoscrollForDraggingInfo:(id)dragInfo;
@end
+ at interface WebViewPrivate : NSObject
+{
+ at public
+ WebFrame *mainFrame;
+
+ id UIDelegate;
+ id UIDelegateForwarder;
+ id resourceProgressDelegate;
+ id resourceProgressDelegateForwarder;
+ id downloadDelegate;
+ id policyDelegate;
+ id policyDelegateForwarder;
+ id frameLoadDelegate;
+ id frameLoadDelegateForwarder;
+ id <WebFormDelegate> formDelegate;
+ id editingDelegate;
+ id editingDelegateForwarder;
+ id scriptDebugDelegate;
+ id scriptDebugDelegateForwarder;
+
+ WebBackForwardList *backForwardList;
+ BOOL useBackForwardList;
+
+ float textSizeMultiplier;
+
+ NSString *applicationNameForUserAgent;
+ NSString *userAgent;
+ BOOL userAgentOverridden;
+
+ BOOL defersCallbacks;
+
+ WebPreferences *preferences;
+ WebCoreSettings *settings;
+
+ BOOL lastElementWasNonNil;
+
+ NSWindow *hostWindow;
+
+ int programmaticFocusCount;
+
+ WebResourceDelegateImplementationCache resourceLoadDelegateImplementations;
+
+ long long totalPageAndResourceBytesToLoad;
+ long long totalBytesReceived;
+ double progressValue;
+ double lastNotifiedProgressValue;
+ double lastNotifiedProgressTime;
+ double progressNotificationInterval;
+ double progressNotificationTimeInterval;
+ BOOL finalProgressChangedSent;
+ WebFrame *orginatingProgressFrame;
+
+ int numProgressTrackedFrames;
+ NSMutableDictionary *progressItems;
+
+ void *observationInfo;
+
+ BOOL drawsBackground;
+ BOOL editable;
+ BOOL initiatedDrag;
+
+ NSString *mediaStyle;
+
+ NSView <WebDocumentDragging> *draggingDocumentView;
+ unsigned int dragDestinationActionMask;
+ WebBridge *dragCaretBridge;
+
+ BOOL hasSpellCheckerDocumentTag;
+ WebNSInt spellCheckerDocumentTag;
+
+ BOOL continuousSpellCheckingEnabled;
+ BOOL smartInsertDeleteEnabled;
+
+ BOOL dashboardBehaviorAlwaysSendMouseEventsToAllWindows;
+ BOOL dashboardBehaviorAlwaysSendActiveNullEventsToPlugIns;
+ BOOL dashboardBehaviorAlwaysAcceptsFirstMouse;
+ BOOL dashboardBehaviorAllowWheelScrolling;
+
+ BOOL shouldUseFontSmoothing;
+ BOOL selectWordBeforeMenuEvent;
+}
+ at end
+
@interface WebView (WebFileInternal)
#ifndef NDEBUG
- (void)_debugCheckForMultipleSelectedFrames;
@@ -459,11 +542,7 @@
- (void)_close
{
[self _removeFromAllWebViewsSet];
- if (_private->setName != nil) {
- [WebFrameNamespaces removeWebView:self fromFrameNamespace:_private->setName];
- [_private->setName release];
- _private->setName = nil;
- }
+ [self setGroupName:nil];
// To avoid leaks, call removeDragCaret in case it wasn't called after moveDragCaretToPoint.
[self removeDragCaret];
@@ -645,8 +724,8 @@
}
// Try other WebViews in the same set
- if (_private->setName != nil) {
- NSEnumerator *enumerator = [WebFrameNamespaces webViewsInFrameNamespace:_private->setName];
+ if ([self groupName] != nil) {
+ NSEnumerator *enumerator = [WebFrameNamespaces webViewsInFrameNamespace:[self groupName]];
WebView *webView;
while ((webView = [enumerator nextObject]) != nil && frame == nil) {
frame = [webView _findFrameInThisWindowNamed:name sourceFrame:source];
@@ -2223,16 +2302,12 @@
- (void)setGroupName:(NSString *)groupName
{
- if (groupName != _private->setName){
- [_private->setName release];
- _private->setName = [groupName copy];
- [WebFrameNamespaces addWebView:self toFrameNamespace:_private->setName];
- }
+ [[self mainFrame] _setFrameNamespace:groupName];
}
- (NSString *)groupName
{
- return _private->setName;
+ return [[self mainFrame] _frameNamespace];
}
- (double)estimatedProgress
1.25 +0 -85 WebKit/WebView.subproj/WebViewInternal.h
Index: WebViewInternal.h
===================================================================
RCS file: /cvs/root/WebKit/WebView.subproj/WebViewInternal.h,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- WebViewInternal.h 8 Dec 2005 18:33:56 -0000 1.24
+++ WebViewInternal.h 20 Dec 2005 08:32:56 -0000 1.25
@@ -35,91 +35,6 @@
@protocol WebDocumentDragging;
- at interface WebViewPrivate : NSObject
-{
- at public
- WebFrame *mainFrame;
-
- id UIDelegate;
- id UIDelegateForwarder;
- id resourceProgressDelegate;
- id resourceProgressDelegateForwarder;
- id downloadDelegate;
- id policyDelegate;
- id policyDelegateForwarder;
- id frameLoadDelegate;
- id frameLoadDelegateForwarder;
- id <WebFormDelegate> formDelegate;
- id editingDelegate;
- id editingDelegateForwarder;
- id scriptDebugDelegate;
- id scriptDebugDelegateForwarder;
-
- WebBackForwardList *backForwardList;
- BOOL useBackForwardList;
-
- float textSizeMultiplier;
-
- NSString *applicationNameForUserAgent;
- NSString *userAgent;
- BOOL userAgentOverridden;
-
- BOOL defersCallbacks;
-
- NSString *setName;
-
- WebPreferences *preferences;
- WebCoreSettings *settings;
-
- BOOL lastElementWasNonNil;
-
- NSWindow *hostWindow;
-
- int programmaticFocusCount;
-
- WebResourceDelegateImplementationCache resourceLoadDelegateImplementations;
-
- long long totalPageAndResourceBytesToLoad;
- long long totalBytesReceived;
- double progressValue;
- double lastNotifiedProgressValue;
- double lastNotifiedProgressTime;
- double progressNotificationInterval;
- double progressNotificationTimeInterval;
- BOOL finalProgressChangedSent;
- WebFrame *orginatingProgressFrame;
-
- int numProgressTrackedFrames;
- NSMutableDictionary *progressItems;
-
- void *observationInfo;
-
- BOOL drawsBackground;
- BOOL editable;
- BOOL initiatedDrag;
-
- NSString *mediaStyle;
-
- NSView <WebDocumentDragging> *draggingDocumentView;
- unsigned int dragDestinationActionMask;
- WebBridge *dragCaretBridge;
-
- BOOL hasSpellCheckerDocumentTag;
- WebNSInt spellCheckerDocumentTag;
-
- BOOL continuousSpellCheckingEnabled;
- BOOL smartInsertDeleteEnabled;
-
- BOOL dashboardBehaviorAlwaysSendMouseEventsToAllWindows;
- BOOL dashboardBehaviorAlwaysSendActiveNullEventsToPlugIns;
- BOOL dashboardBehaviorAlwaysAcceptsFirstMouse;
- BOOL dashboardBehaviorAllowWheelScrolling;
-
- BOOL shouldUseFontSmoothing;
- BOOL selectWordBeforeMenuEvent;
-}
- at end
-
@interface WebView (WebViewEditingExtras)
- (BOOL)_interceptEditingKeyEvent:(NSEvent *)event;
- (BOOL)_shouldChangeSelectedDOMRange:(DOMRange *)currentRange toDOMRange:(DOMRange *)proposedRange affinity:(NSSelectionAffinity)selectionAffinity stillSelecting:(BOOL)flag;
More information about the webkit-changes
mailing list