Changeset 30980 in webkit
- Timestamp:
- Mar 11, 2008 10:27:19 PM (16 years ago)
- Location:
- trunk
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r30979 r30980 1 2008-03-11 Darin Adler <darin@apple.com> 2 3 Reviewed by Sam. 4 5 - remove all bridge-related things from WebCore except the bridge itself 6 7 * WebCore.base.exp: Removed the bridge and setBridge functions. 8 9 * loader/FrameLoader.cpp: 10 (WebCore::FrameLoader::detachFromParent): Removed call to the bridge's 11 close method. 12 13 * page/Frame.cpp: 14 (WebCore::Frame::~Frame): Removed call to setBridge(0). 15 (WebCore::FramePrivate::FramePrivate): Removed initialization of m_bridge. 16 * page/Frame.h: Removed setBridge and bridge functions. 17 * page/FramePrivate.h: Removed m_bridge pointer. 18 * page/mac/FrameMac.mm: Removed setBridge and bridge functions. 19 20 * page/mac/WebCoreFrameBridge.h: Added setWebCoreFrame: method. 21 Removed bridgeForDOMDocument: and clearFrame methods. 22 * page/mac/WebCoreFrameBridge.mm: Ditto. 23 (-[WebCoreFrameBridge close]): Changed to set m_frame to 0 directly. 24 (-[WebCoreFrameBridge setWebCoreFrame:]): Added. 25 1 26 2008-03-11 Darin Adler <darin@apple.com> 2 27 -
trunk/WebCore/WebCore.base.exp
r30973 r30980 407 407 __ZN7WebCore5Frame29cleanupScriptObjectsForPluginEPv 408 408 __ZN7WebCore5Frame4initEv 409 __ZN7WebCore5Frame9setBridgeEP18WebCoreFrameBridge410 409 __ZN7WebCore5FrameC1EPNS_4PageEPNS_21HTMLFrameOwnerElementEPNS_17FrameLoaderClientE 411 410 __ZN7WebCore5Image10getNSImageEv … … 669 668 __ZNK7WebCore5Frame4treeEv 670 669 __ZNK7WebCore5Frame4viewEv 671 __ZNK7WebCore5Frame6bridgeEv672 670 __ZNK7WebCore5Frame6editorEv 673 671 __ZNK7WebCore5Frame6loaderEv -
trunk/WebCore/loader/FrameLoader.cpp
r30949 r30980 3201 3201 m_frame->pageDestroyed(); 3202 3202 } 3203 #if PLATFORM(MAC)3204 [m_frame->bridge() close];3205 #endif3206 3203 m_client->detachedFromParent4(); 3207 3204 } -
trunk/WebCore/page/Frame.cpp
r30923 r30980 156 156 setView(0); 157 157 loader()->clearRecordedFormValues(); 158 159 #if PLATFORM(MAC)160 setBridge(0);161 #endif162 163 158 loader()->cancelAndClear(); 164 159 … … 1888 1883 #if PLATFORM(MAC) 1889 1884 , m_windowScriptObject(nil) 1890 , m_bridge(nil)1891 1885 #endif 1892 1886 { -
trunk/WebCore/page/Frame.h
r30975 r30980 49 49 #if PLATFORM(MAC) 50 50 #ifdef __OBJC__ 51 @class WebCoreFrameBridge;52 51 @class WebScriptObject; 53 52 #else … … 56 55 class NSMutableDictionary; 57 56 class NSString; 58 class WebCoreFrameBridge;59 57 class WebScriptObject; 60 58 typedef int NSWritingDirection; … … 88 86 void init(); 89 87 90 #if PLATFORM(MAC)91 void setBridge(WebCoreFrameBridge*);92 WebCoreFrameBridge* bridge() const;93 #endif94 95 88 Page* page() const; 96 89 HTMLFrameOwnerElement* ownerElement() const; -
trunk/WebCore/page/FramePrivate.h
r30897 r30980 46 46 #if PLATFORM(MAC) 47 47 #ifdef __OBJC__ 48 @class WebCoreFrameBridge;49 48 @class WebScriptObject; 50 49 #else 51 class WebCoreFrameBridge;52 50 class WebScriptObject; 53 51 #endif … … 130 128 #if PLATFORM(MAC) 131 129 RetainPtr<WebScriptObject> m_windowScriptObject; 132 WebCoreFrameBridge* m_bridge;133 130 #endif 134 131 }; -
trunk/WebCore/page/mac/FrameMac.mm
r30976 r30980 83 83 #import "TextResourceDecoder.h" 84 84 #import "UserStyleSheetLoader.h" 85 #import "WebCoreFrameBridge.h"86 85 #import "WebCoreViewFactory.h" 87 86 #import "WebDashboardRegion.h" … … 114 113 using namespace EventNames; 115 114 using namespace HTMLNames; 116 117 void Frame::setBridge(WebCoreFrameBridge* bridge)118 {119 if (d->m_bridge == bridge)120 return;121 122 if (!bridge) {123 [d->m_bridge clearFrame];124 HardRelease(d->m_bridge);125 d->m_bridge = nil;126 return;127 }128 HardRetain(bridge);129 HardRelease(d->m_bridge);130 d->m_bridge = bridge;131 }132 133 WebCoreFrameBridge* Frame::bridge() const134 {135 return d->m_bridge;136 }137 115 138 116 // Either get cached regexp or build one that matches any of the labels. -
trunk/WebCore/page/mac/WebCoreFrameBridge.h
r30975 r30980 55 55 } 56 56 57 - (void)setWebCoreFrame:(WebCore::Frame*)webCoreFrame; 57 58 - (WebCore::Frame*)_frame; // underscore to prevent conflict with -[NSView frame] 58 59 + (WebCoreFrameBridge *)bridgeForDOMDocument:(DOMDocument *)document;60 59 61 60 - (id)init; 62 61 - (void)close; 63 64 - (void)clearFrame;65 62 66 63 - (NSURL *)baseURL; -
trunk/WebCore/page/mac/WebCoreFrameBridge.mm
r30976 r30980 216 216 @implementation WebCoreFrameBridge 217 217 218 static inline WebCoreFrameBridge *bridge(Frame *frame)219 {220 if (!frame)221 return nil;222 return frame->bridge();223 }224 225 218 - (NSString *)domain 226 219 { … … 231 224 } 232 225 233 + (WebCoreFrameBridge *)bridgeForDOMDocument:(DOMDocument *)document234 {235 return bridge([document _document]->frame());236 }237 238 226 - (id)init 239 227 { … … 268 256 - (void)close 269 257 { 270 [self clearFrame];258 m_frame = 0; 271 259 _closed = YES; 272 260 } … … 284 272 m_frame->loader()->addData((const char *)[data bytes], [data length]); 285 273 } 286 }287 288 - (void)clearFrame289 {290 m_frame = 0;291 274 } 292 275 … … 1180 1163 // ------------------- 1181 1164 1165 - (void)setWebCoreFrame:(Frame*)webCoreFrame 1166 { 1167 m_frame = webCoreFrame; 1168 } 1169 1182 1170 - (Frame*)_frame 1183 1171 { -
trunk/WebKit/mac/ChangeLog
r30976 r30980 1 2008-03-11 Darin Adler <darin@apple.com> 2 3 Reviewed by Sam. 4 5 - remove all bridge-related things from WebCore except the bridge itself 6 7 * DOM/WebDOMOperations.mm: 8 (-[DOMNode _bridge]): Reimplemented to not use the bridgeForDOMDocument: method. 9 10 * DefaultDelegates/WebDefaultContextMenuDelegate.mm: Removed unneeded include. 11 12 * Plugins/WebPluginController.mm: Ditto. 13 14 * WebCoreSupport/WebFrameBridge.h: Removed unneeded things, including the 15 init and close methods. Added a setWebFrame: method. 16 17 * WebCoreSupport/WebFrameBridge.mm: 18 (-[WebFrameBridge setWebFrame:]): Added. 19 20 * WebCoreSupport/WebFrameLoaderClient.mm: 21 (WebFrameLoaderClient::frameLoaderDestroyed): Added an assertion. 22 (WebFrameLoaderClient::detachedFromParent4): Moved the call to close on the 23 bridge here. Soon we will be able to remove this entirely! 24 (WebFrameLoaderClient::createFrame): Rewrote this to use the method moved 25 into WebFrame from the bridge. 26 27 * WebView/WebFrame.mm: 28 (-[WebFramePrivate dealloc]): Added code to release the bridge, because it's 29 now owned by the frame. 30 (-[WebFramePrivate finalize]): Added this missing method. We'd leak the script 31 debugger under GC without this! 32 (kit): Rewrote the function that maps from a WebCore::Frame to a WebFrame to 33 use WebFrameLoaderClient instead of the bridge. 34 (+[WebFrame _createFrameWithPage:frameName:frameView:ownerElement:]): Added. 35 This is code that used to live in the bridge's init function. 36 (+[WebFrame _createMainFrameWithPage:frameName:frameView:]): Ditto. 37 (+[WebFrame WebCore::_createSubframeWithOwnerElement:frameName:frameView:]): Ditto. 38 (-[WebFrame _initWithWebFrameView:webView:bridge:]): Retain the bridge, since 39 the WebView is now the bridge's owner. 40 (-[WebFrame _updateBackground]): Changed this one call site that was calling the 41 WebCore::Frame::bridge function directly to use the kit function instead. 42 (-[WebFrame dealloc]): Added code to clear the WebFrame pointer in the bridge. 43 This code won't last long -- we're eliminating the bridge soon. 44 (-[WebFrame finalize]): Ditto. 45 46 * WebView/WebFrameInternal.h: Added a coreFrame backpointer and two new methods 47 for creating frames. 48 49 * WebView/WebView.mm: 50 (-[WebView _commonInitializationWithFrameName:groupName:]): Rewrote this to use 51 the method moved into WebFrame from the bridge. Gets rid of the unpleasant idiom 52 where we have to allocate a WebFrameBridge and then immediately release it. 53 1 54 2008-03-11 Darin Adler <darin@apple.com> 2 55 -
trunk/WebKit/mac/DOM/WebDOMOperations.mm
r28568 r30980 27 27 */ 28 28 29 #import <WebKit/WebDOMOperationsPrivate.h> 30 29 #import "WebDOMOperationsPrivate.h" 30 31 #import "WebArchiver.h" 32 #import "WebDataSourcePrivate.h" 33 #import "WebFrameBridge.h" 34 #import "WebFrameInternal.h" 35 #import "WebFramePrivate.h" 36 #import "WebKitNSStringExtras.h" 37 #import <JavaScriptCore/Assertions.h> 38 #import <WebCore/Document.h> 31 39 #import <WebKit/DOMExtensions.h> 32 40 #import <WebKit/DOMHTML.h> 33 #import <JavaScriptCore/Assertions.h>34 #import <WebKit/WebFrameBridge.h>35 #import <WebKit/WebDataSourcePrivate.h>36 #import <WebKit/WebFramePrivate.h>37 #import <WebKit/WebKitNSStringExtras.h>38 #import <WebKit/WebArchiver.h>39 41 40 42 #if ENABLE(SVG) … … 42 44 #endif 43 45 46 using namespace WebCore; 47 44 48 @implementation DOMNode (WebDOMNodeOperations) 45 49 46 50 - (WebFrameBridge *)_bridge 47 51 { 48 return (WebFrameBridge *)[WebFrameBridge bridgeForDOMDocument:[self ownerDocument]]; 52 Document* document = core(self)->document(); 53 if (!document) 54 return nil; 55 Frame* frame = document->frame(); 56 if (!frame) 57 return nil; 58 return [kit(frame) _bridge]; 49 59 } 50 60 -
trunk/WebKit/mac/DefaultDelegates/WebDefaultContextMenuDelegate.mm
r23717 r30980 50 50 #import <WebCore/FrameLoader.h> 51 51 #import <WebCore/KURL.h> 52 #import <WebCore/WebCoreFrameBridge.h>53 52 #import <WebKit/DOM.h> 54 53 #import <WebKit/DOMPrivate.h> -
trunk/WebKit/mac/Plugins/WebPluginController.mm
r29581 r30980 35 35 #import <WebCore/ResourceRequest.h> 36 36 #import <WebCore/PlatformString.h> 37 #import <WebCore/WebCoreFrameBridge.h>38 37 #import <WebCore/DocumentLoader.h> 39 38 #import <WebKit/WebDataSourceInternal.h> -
trunk/WebKit/mac/WebCoreSupport/WebFrameBridge.h
r30975 r30980 29 29 #import <WebCore/WebCoreFrameBridge.h> 30 30 31 namespace WebCore {32 class HTMLFrameOwnerElement;33 class Page;34 }35 36 31 @class WebFrame; 37 @class WebFrameView;38 32 39 33 @interface WebFrameBridge : WebCoreFrameBridge { 40 34 @public 41 WebFrame *_ frame;35 WebFrame *_webFrame; 42 36 } 43 - (id)initMainFrameWithPage:(WebCore::Page*)page frameName:(const WebCore::String&)name frameView:(WebFrameView *)frameView; 44 - (id)initSubframeWithOwnerElement:(WebCore::HTMLFrameOwnerElement*)ownerElement frameName:(const WebCore::String&)name frameView:(WebFrameView *)frameView; 45 - (void)close; 37 - (void)setWebFrame:(WebFrame *)webFrame; 46 38 - (WebFrame *)webFrame; 47 39 @end -
trunk/WebKit/mac/WebCoreSupport/WebFrameBridge.mm
r30975 r30980 29 29 #import "WebFrameBridge.h" 30 30 31 #import "WebFrameInternal.h" 32 #import "WebFrameLoaderClient.h" 33 #import "WebKitStatisticsPrivate.h" 34 #import "WebView.h" 35 #import <WebCore/Frame.h> 36 #import <WebCore/FrameTree.h> 37 #import <WebCore/HTMLFrameOwnerElement.h> 38 39 using namespace WebCore; 31 #import "WebFrame.h" 40 32 41 33 @implementation WebFrameBridge 42 34 43 - (void) finishInitializingWithPage:(Page*)page frameName:(const String&)name frameView:(WebFrameView *)frameView ownerElement:(HTMLFrameOwnerElement*)ownerElement35 - (void)setWebFrame:(WebFrame *)webFrame; 44 36 { 45 ++WebBridgeCount; 46 47 WebView *webView = kit(page); 48 49 _frame = [[WebFrame alloc] _initWithWebFrameView:frameView webView:webView bridge:self]; 50 51 m_frame = new Frame(page, ownerElement, new WebFrameLoaderClient(_frame)); 52 m_frame->setBridge(self); 53 m_frame->tree()->setName(name); 54 m_frame->init(); 55 56 [self setTextSizeMultiplier:[webView textSizeMultiplier]]; 57 } 58 59 - (id)initMainFrameWithPage:(Page*)page frameName:(const String&)name frameView:(WebFrameView *)frameView 60 { 61 self = [super init]; 62 [self finishInitializingWithPage:page frameName:name frameView:frameView ownerElement:0]; 63 return self; 64 } 65 66 - (id)initSubframeWithOwnerElement:(HTMLFrameOwnerElement*)ownerElement frameName:(const String&)name frameView:(WebFrameView *)frameView 67 { 68 self = [super init]; 69 [self finishInitializingWithPage:ownerElement->document()->frame()->page() frameName:name frameView:frameView ownerElement:ownerElement]; 70 return self; 37 _webFrame = webFrame; 71 38 } 72 39 73 40 - (WebFrame *)webFrame 74 41 { 75 return _frame; 76 } 77 78 - (void)close 79 { 80 [super close]; 81 if (!_frame) 82 return; 83 --WebBridgeCount; 84 [_frame release]; 85 _frame = nil; 42 return _webFrame; 86 43 } 87 44 -
trunk/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm
r30976 r30980 103 103 #import <WebCore/ResourceRequest.h> 104 104 #import <WebCore/SharedBuffer.h> 105 #import <WebCore/WebCoreFrameBridge.h>106 105 #import <WebCore/WebCoreObjCExtras.h> 107 106 #import <WebCore/Widget.h> … … 147 146 void WebFrameLoaderClient::frameLoaderDestroyed() 148 147 { 148 ASSERT(!m_webFrame->_private->bridge); 149 149 delete this; 150 150 } … … 213 213 void WebFrameLoaderClient::detachedFromParent4() 214 214 { 215 [m_webFrame->_private->bridge close]; 215 216 m_webFrame->_private->bridge = nil; 216 217 } … … 1134 1135 [childView _setMarginHeight:marginHeight]; 1135 1136 1136 WebFrameBridge *newBridge = [[WebFrameBridge alloc] initSubframeWithOwnerElement:ownerElement frameName:name frameView:childView]; 1137 RefPtr<Frame> newCoreFrame = [WebFrame _createSubframeWithOwnerElement:ownerElement frameName:name frameView:childView]; 1138 1137 1139 [childView release]; 1138 1140 1139 if (!new Bridge)1141 if (!newCoreFrame) 1140 1142 return 0; 1141 1143 1142 [m_webFrame.get() _addChild:[newBridge webFrame]]; 1143 [newBridge release]; 1144 1145 RefPtr<Frame> newFrame = [newBridge _frame]; 1146 1147 [m_webFrame.get() _loadURL:url referrer:referrer intoChild:kit(newFrame.get())]; 1144 WebFrame *newFrame = kit(newCoreFrame.get()); 1145 1146 [m_webFrame.get() _addChild:newFrame]; 1147 [m_webFrame.get() _loadURL:url referrer:referrer intoChild:newFrame]; 1148 1148 1149 1149 // The frame's onload handler may have removed it from the document. 1150 if (!new Frame->tree()->parent())1150 if (!newCoreFrame->tree()->parent()) 1151 1151 return 0; 1152 1152 1153 return new Frame.get();1153 return newCoreFrame.release(); 1154 1154 1155 1155 END_BLOCK_OBJC_EXCEPTIONS; -
trunk/WebKit/mac/WebView/WebFrame.mm
r30923 r30980 137 137 - (void)dealloc 138 138 { 139 [bridge release]; 139 140 [webFrameView release]; 140 141 141 142 delete scriptDebugger; 142 143 143 144 [super dealloc]; 145 } 146 147 - (void)finalize 148 { 149 delete scriptDebugger; 150 151 [super finalize]; 144 152 } 145 153 … … 238 246 @implementation WebFrame (WebInternal) 239 247 240 static inline WebFrame *frame(WebCoreFrameBridge *bridge)241 {242 return ((WebFrameBridge *)bridge)->_frame;243 }244 245 248 Frame* core(WebFrame *frame) 246 249 { … … 256 259 WebFrame *kit(Frame* frame) 257 260 { 258 return frame ? ((WebFrameBridge *)frame->bridge())->_frame: nil;261 return frame ? static_cast<WebFrameLoaderClient*>(frame->loader()->client())->webFrame() : nil; 259 262 } 260 263 … … 275 278 return nil; 276 279 return kit(coreFrame->page()); 280 } 281 282 + (PassRefPtr<Frame>)_createFrameWithPage:(Page*)page frameName:(const String&)name frameView:(WebFrameView *)frameView ownerElement:(HTMLFrameOwnerElement*)ownerElement 283 { 284 ++WebBridgeCount; 285 286 WebView *webView = kit(page); 287 288 WebFrameBridge *bridge = [[WebFrameBridge alloc] init]; 289 WebFrame *frame = [[self alloc] _initWithWebFrameView:frameView webView:webView bridge:bridge]; 290 RefPtr<Frame> coreFrame = new Frame(page, ownerElement, new WebFrameLoaderClient(frame)); 291 [frame release]; 292 [bridge setWebCoreFrame:coreFrame.get()]; 293 [bridge release]; 294 295 coreFrame->tree()->setName(name); 296 coreFrame->init(); 297 298 [bridge setTextSizeMultiplier:[webView textSizeMultiplier]]; 299 300 return coreFrame.release(); 301 } 302 303 + (void)_createMainFrameWithPage:(Page*)page frameName:(const String&)name frameView:(WebFrameView *)frameView 304 { 305 [self _createFrameWithPage:page frameName:name frameView:frameView ownerElement:0]; 306 } 307 308 + (PassRefPtr<WebCore::Frame>)_createSubframeWithOwnerElement:(HTMLFrameOwnerElement*)ownerElement frameName:(const String&)name frameView:(WebFrameView *)frameView 309 { 310 return [self _createFrameWithPage:ownerElement->document()->frame()->page() frameName:name frameView:frameView ownerElement:ownerElement]; 277 311 } 278 312 … … 390 424 391 425 _private = [[WebFramePrivate alloc] init]; 392 _private->bridge = bridge;426 _private->bridge = [bridge retain]; 393 427 394 428 if (fv) { … … 421 455 Frame* coreFrame = core(self); 422 456 for (Frame* frame = coreFrame; frame; frame = frame->tree()->traverseNext(coreFrame)) { 423 WebFrame Bridge *bridge = (WebFrameBridge *)frame->bridge();424 WebFrame *webFrame = [bridge webFrame];457 WebFrame *webFrame = kit(frame); 458 WebFrameBridge *bridge = [webFrame _bridge]; 425 459 // Never call setDrawsBackground:YES here on the scroll view or the background color will 426 460 // flash between pages loads. setDrawsBackground:YES will be called in _frameLoadCompleted. … … 676 710 - (void)dealloc 677 711 { 678 ASSERT(_private->bridge == nil);712 [_private->bridge setWebFrame:nil]; 679 713 [_private release]; 680 714 --WebFrameCount; … … 684 718 - (void)finalize 685 719 { 686 ASSERT(_private->bridge == nil);720 [_private->bridge setWebFrame:nil]; 687 721 --WebFrameCount; 688 722 [super finalize]; -
trunk/WebKit/mac/WebView/WebFrameInternal.h
r30923 r30980 58 58 class HistoryItem; 59 59 class HTMLElement; 60 class HTMLFrameOwnerElement; 60 61 class Node; 61 62 class Page; … … 95 96 @interface WebFramePrivate : NSObject { 96 97 @public 98 WebCore::Frame* coreFrame; 97 99 WebFrameView *webFrameView; 98 100 WebFrameBridge *bridge; … … 107 109 108 110 @interface WebFrame (WebInternal) 111 112 + (void)_createMainFrameWithPage:(WebCore::Page*)page frameName:(const WebCore::String&)name frameView:(WebFrameView *)frameView; 113 + (PassRefPtr<WebCore::Frame>)_createSubframeWithOwnerElement:(WebCore::HTMLFrameOwnerElement*)ownerElement frameName:(const WebCore::String&)name frameView:(WebFrameView *)frameView; 109 114 110 115 - (void)_updateBackground; -
trunk/WebKit/mac/WebView/WebView.mm
r30976 r30980 113 113 #import <WebCore/Settings.h> 114 114 #import <WebCore/TextResourceDecoder.h> 115 #import <WebCore/WebCoreFrameBridge.h>116 115 #import <WebCore/WebCoreObjCExtras.h> 117 116 #import <WebCore/WebCoreTextRenderer.h> … … 1820 1819 1821 1820 _private->page = new Page(new WebChromeClient(self), new WebContextMenuClient(self), new WebEditorClient(self), new WebDragClient(self), new WebInspectorClient(self)); 1822 [ [[WebFrameBridge alloc] initMainFrameWithPage:_private->page frameName:frameName frameView:frameView] release];1821 [WebFrame _createMainFrameWithPage:_private->page frameName:frameName frameView:frameView]; 1823 1822 1824 1823 #ifndef BUILDING_ON_TIGER
Note: See TracChangeset
for help on using the changeset viewer.