Changeset 27452 in webkit
- Timestamp:
- Nov 5, 2007, 2:43:45 PM (18 years ago)
- Location:
- trunk
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r27448 r27452 1 2007-11-02 Tristan O'Tierney <tristan@apple.com> 2 3 Reviewed by Darin Adler. 4 5 * WebCore.xcodeproj/project.pbxproj: 6 Set WindowFeatures.h as a Private header. 7 8 * loader/FrameLoader.cpp: 9 (WebCore::FrameLoader::createWindow): 10 Revised to use a single createWindow function instead of 11 two createWindow functions and one createModalDialog function. 12 The logic for this is now addressed in WebKit in an effort 13 to make this easier to follow. 14 15 * page/Chrome.cpp: 16 (WebCore::Chrome::createWindow): 17 * page/Chrome.h: 18 * page/ChromeClient.h: 19 * page/ContextMenuController.cpp: 20 (WebCore::openNewWindow): 21 * platform/graphics/svg/SVGImageEmptyClients.h: 22 (WebCore::SVGEmptyChromeClient::createWindow): 23 Revised to take new additional windowFeatures parameter. 24 1 25 2007-11-04 Geoffrey Garen <ggaren@apple.com> 2 26 -
trunk/WebCore/WebCore.xcodeproj/project.pbxproj
r27402 r27452 79 79 14EC267F09CA07E000E1EEEC /* EventTargetNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 14EC267D09CA07E000E1EEEC /* EventTargetNode.h */; settings = {ATTRIBUTES = (Private, ); }; }; 80 80 14EC268009CA07E000E1EEEC /* EventTargetNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14EC267E09CA07E000E1EEEC /* EventTargetNode.cpp */; }; 81 14FD6DFD0AE5EA1B00AD67AD /* WindowFeatures.h in Headers */ = {isa = PBXBuildFile; fileRef = 14FD6DFC0AE5EA1B00AD67AD /* WindowFeatures.h */; };81 14FD6DFD0AE5EA1B00AD67AD /* WindowFeatures.h in Headers */ = {isa = PBXBuildFile; fileRef = 14FD6DFC0AE5EA1B00AD67AD /* WindowFeatures.h */; settings = {ATTRIBUTES = (Private, ); }; }; 82 82 14FFE31D0AE1963300136BF5 /* HTMLFrameElementBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 14FFE31B0AE1963300136BF5 /* HTMLFrameElementBase.h */; }; 83 83 14FFE31E0AE1963300136BF5 /* HTMLFrameElementBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14FFE31C0AE1963300136BF5 /* HTMLFrameElementBase.cpp */; }; -
trunk/WebCore/loader/FrameLoader.cpp
r27378 r27452 320 320 321 321 Page* page = m_frame->page(); 322 if (page) { 323 if (features.dialog) 324 page = page->chrome()->createModalDialog(m_frame, requestWithReferrer); 325 else 326 page = page->chrome()->createWindow(m_frame, requestWithReferrer); 327 } 322 if (page) 323 page = page->chrome()->createWindow(m_frame, requestWithReferrer, features); 328 324 if (!page) 329 325 return 0; -
trunk/WebCore/page/Chrome.cpp
r27266 r27452 35 35 #include "ResourceHandle.h" 36 36 #include "Settings.h" 37 #include "WindowFeatures.h" 37 38 #include "kjs_window.h" 38 39 #include <wtf/PassRefPtr.h> … … 108 109 m_client->takeFocus(direction); 109 110 } 110 111 Page* Chrome::createWindow(Frame* frame, const FrameLoadRequest& request) const 112 { 113 return m_client->createWindow(frame, request); 114 } 115 116 Page* Chrome::createModalDialog(Frame* frame, const FrameLoadRequest& request) const 117 { 118 return m_client->createModalDialog(frame, request); 111 112 Page* Chrome::createWindow(Frame* frame, const FrameLoadRequest& request, const WindowFeatures& features) const 113 { 114 return m_client->createWindow(frame, request, features); 119 115 } 120 116 -
trunk/WebCore/page/Chrome.h
r26787 r27452 44 44 45 45 struct FrameLoadRequest; 46 struct WindowFeatures; 46 47 47 48 enum MessageSource { … … 80 81 void takeFocus(FocusDirection) const; 81 82 82 Page* createWindow(Frame*, const FrameLoadRequest&) const; 83 Page* createModalDialog(Frame*, const FrameLoadRequest&) const; 83 Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&) const; 84 84 void show() const; 85 85 -
trunk/WebCore/page/ChromeClient.h
r26787 r27452 34 34 35 35 struct FrameLoadRequest; 36 struct WindowFeatures; 36 37 37 38 class ChromeClient { … … 57 58 // should not be shown to the user until the ChromeClient of the newly 58 59 // created Page has its show method called. 59 virtual Page* createWindow(Frame*, const FrameLoadRequest&) = 0; 60 virtual Page* createModalDialog(Frame*, const FrameLoadRequest&) = 0; 60 virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&) = 0; 61 61 virtual void show() = 0; 62 62 -
trunk/WebCore/page/ContextMenuController.cpp
r25547 r27452 55 55 #include "Settings.h" 56 56 #include "TextIterator.h" 57 #include "WindowFeatures.h" 57 58 #include "markup.h" 58 59 … … 108 109 static void openNewWindow(const KURL& urlToLoad, Frame* frame) 109 110 { 110 if (Page* oldPage = frame->page()) 111 if (Page* oldPage = frame->page()) { 112 WindowFeatures features; 111 113 if (Page* newPage = oldPage->chrome()->createWindow(frame, 112 FrameLoadRequest(ResourceRequest(urlToLoad, frame->loader()->outgoingReferrer())) ))114 FrameLoadRequest(ResourceRequest(urlToLoad, frame->loader()->outgoingReferrer())), features)) 113 115 newPage->chrome()->show(); 116 } 114 117 } 115 118 -
trunk/WebCore/platform/graphics/svg/SVGImageEmptyClients.h
r26787 r27452 70 70 virtual void takeFocus(FocusDirection) { } 71 71 72 virtual Page* createWindow(Frame*, const FrameLoadRequest&) { return 0; } 73 virtual Page* createModalDialog(Frame*, const FrameLoadRequest&) { return 0; } 72 virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&) { return 0; } 74 73 virtual void show() { } 75 74 -
trunk/WebKit/ChangeLog
r27448 r27452 1 2007-11-02 Tristan O'Tierney <tristan@apple.com> 2 3 Reviewed by Darin Adler. 4 5 * DefaultDelegates/WebDefaultUIDelegate.m: 6 (-[WebDefaultUIDelegate webView:createWebViewWithRequest:windowFeatures:]): 7 Forward the UI delegate to call webView:createWebViewWithRequest: if 8 this method doesn't exist. 9 10 * WebCoreSupport/WebFrameLoaderClient.mm: 11 (WebFrameLoaderClient::dispatchCreatePage): 12 * Plugins/WebBaseNetscapePluginView.mm: 13 (-[WebBaseNetscapePluginView loadPluginRequest:]): 14 * WebView/WebView.mm: 15 (-[WebView _openNewWindowWithRequest:]): 16 Revised to use new webView:createWebViewWithRequest:windowFeatures: callback. 17 18 * WebCoreSupport/WebChromeClient.h: 19 * WebCoreSupport/WebChromeClient.mm: 20 (WebChromeClient::createWindow): 21 Added a new createWindow that accepts 3 parameters, so we can pass up windowFeatures to the chrome. 22 Removed createModalDialog to use new createWindow function. 23 24 * WebView/WebUIDelegatePrivate.h: 25 Added new webView:createWebViewWithRequest:windowFeatures: method. 26 1 27 2007-11-05 Geoffrey Garen <ggaren@apple.com> 2 28 -
trunk/WebKit/DefaultDelegates/WebDefaultUIDelegate.m
r21149 r27452 58 58 } 59 59 60 - (WebView *)webView: (WebView *)wv createWebViewWithRequest:(NSURLRequest *)request 61 { 60 - (WebView *)webView: (WebView *)wv createWebViewWithRequest:(NSURLRequest *)request windowFeatures:(NSDictionary *)features 61 { 62 // If the new API method doesn't exist, fallback to the old version of createWebViewWithRequest 63 // for backwards compatability 64 if (![[wv UIDelegate] respondsToSelector:@selector(webView:createWebViewWithRequest:windowFeatures:)] && [[wv UIDelegate] respondsToSelector:@selector(webView:createWebViewWithRequest:)]) 65 return [[wv UIDelegate] webView:wv createWebViewWithRequest:request]; 62 66 return nil; 63 67 } -
trunk/WebKit/Plugins/WebBaseNetscapePluginView.mm
r27148 r27452 51 51 #import "WebPreferences.h" 52 52 #import "WebViewInternal.h" 53 #import "WebUIDelegatePrivate.h" 53 54 #import <Carbon/Carbon.h> 54 55 #import <JavaScriptCore/Assertions.h> … … 2132 2133 if (frame == nil) { 2133 2134 WebView *currentWebView = [self webView]; 2134 WebView *newWebView = CallUIDelegate(currentWebView, @selector(webView:createWebViewWithRequest:), nil); 2135 NSDictionary *features = [[NSDictionary alloc] init]; 2136 WebView *newWebView = [[currentWebView _UIDelegateForwarder] webView:currentWebView 2137 createWebViewWithRequest:nil 2138 windowFeatures:features]; 2139 [features release]; 2135 2140 2136 2141 if (!newWebView) { -
trunk/WebKit/WebCoreSupport/WebChromeClient.h
r26787 r27452 54 54 virtual void takeFocus(WebCore::FocusDirection); 55 55 56 virtual WebCore::Page* createWindow(WebCore::Frame*, const WebCore::FrameLoadRequest&); 57 virtual WebCore::Page* createModalDialog(WebCore::Frame*, const WebCore::FrameLoadRequest&); 56 virtual WebCore::Page* createWindow(WebCore::Frame*, const WebCore::FrameLoadRequest&, const WebCore::WindowFeatures&); 58 57 virtual void show(); 59 58 -
trunk/WebKit/WebCoreSupport/WebChromeClient.mm
r26787 r27452 49 49 #import <WebCore/PlatformString.h> 50 50 #import <WebCore/ResourceRequest.h> 51 #import <WebCore/WindowFeatures.h> 51 52 #import <wtf/PassRefPtr.h> 52 53 … … 132 133 } 133 134 134 Page* WebChromeClient::createWindow(Frame* , const FrameLoadRequest& request)135 Page* WebChromeClient::createWindow(Frame* frame, const FrameLoadRequest& request, const WindowFeatures& features) 135 136 { 136 137 NSURLRequest *URLRequest = nil; 137 138 if (!request.isEmpty()) 138 139 URLRequest = request.resourceRequest().nsURLRequest(); 139 WebView *newWebView = CallUIDelegate(m_webView, @selector(webView:createWebViewWithRequest:), URLRequest); 140 return core(newWebView); 141 } 142 143 Page* WebChromeClient::createModalDialog(Frame*, const FrameLoadRequest& request) 144 { 145 NSURLRequest *URLRequest = nil; 146 if (!request.isEmpty()) 147 URLRequest = request.resourceRequest().nsURLRequest(); 148 149 WebView *newWebView = nil; 150 id delegate = [m_webView UIDelegate]; 151 if ([delegate respondsToSelector:@selector(webView:createWebViewModalDialogWithRequest:)]) 140 141 id delegate = [m_webView UIDelegate]; 142 WebView *newWebView; 143 144 if ([delegate respondsToSelector:@selector(webView:createWebViewWithRequest:windowFeatures:)]) { 145 NSNumber *x = features.xSet ? [[NSNumber alloc] initWithFloat:features.x] : nil; 146 NSNumber *y = features.ySet ? [[NSNumber alloc] initWithFloat:features.y] : nil; 147 NSNumber *width = features.widthSet ? [[NSNumber alloc] initWithFloat:features.width] : nil; 148 NSNumber *height = features.heightSet ? [[NSNumber alloc] initWithFloat:features.height] : nil; 149 NSNumber *menuBarVisible = [[NSNumber alloc] initWithBool:features.menuBarVisible]; 150 NSNumber *statusBarVisible = [[NSNumber alloc] initWithBool:features.statusBarVisible]; 151 NSNumber *toolBarVisible = [[NSNumber alloc] initWithBool:features.toolBarVisible]; 152 NSNumber *scrollbarsVisible = [[NSNumber alloc] initWithBool:features.scrollbarsVisible]; 153 NSNumber *resizable = [[NSNumber alloc] initWithBool:features.resizable]; 154 NSNumber *fullscreen = [[NSNumber alloc] initWithBool:features.fullscreen]; 155 NSNumber *dialog = [[NSNumber alloc] initWithBool:features.dialog]; 156 157 NSMutableDictionary *dictFeatures = [[NSMutableDictionary alloc] initWithObjectsAndKeys: 158 menuBarVisible, @"menuBarVisible", 159 statusBarVisible, @"statusBarVisible", 160 toolBarVisible, @"toolBarVisible", 161 scrollbarsVisible, @"scrollbarsVisible", 162 resizable, @"resizable", 163 fullscreen, @"fullscreen", 164 dialog, @"dialog", 165 nil]; 166 167 if (x) 168 [dictFeatures setObject:x forKey:@"x"]; 169 if (y) 170 [dictFeatures setObject:y forKey:@"y"]; 171 if (width) 172 [dictFeatures setObject:width forKey:@"width"]; 173 if (height) 174 [dictFeatures setObject:height forKey:@"height"]; 175 176 newWebView = CallUIDelegate(m_webView, @selector(webView:createWebViewWithRequest:windowFeatures:), URLRequest, dictFeatures); 177 178 [dictFeatures release]; 179 [x release]; 180 [y release]; 181 [width release]; 182 [height release]; 183 [menuBarVisible release]; 184 [statusBarVisible release]; 185 [toolBarVisible release]; 186 [scrollbarsVisible release]; 187 [resizable release]; 188 [fullscreen release]; 189 [dialog release]; 190 } else if (features.dialog && [delegate respondsToSelector:@selector(webView:createWebViewModalDialogWithRequest:)]) { 152 191 newWebView = CallUIDelegate(m_webView, @selector(webView:createWebViewModalDialogWithRequest:), URLRequest); 153 else if ([delegate respondsToSelector:@selector(webView:createWebViewWithRequest:)])192 } else { 154 193 newWebView = CallUIDelegate(m_webView, @selector(webView:createWebViewWithRequest:), URLRequest); 194 } 195 155 196 return core(newWebView); 156 197 } -
trunk/WebKit/WebCoreSupport/WebFrameLoaderClient.mm
r27376 r27452 66 66 #import "WebScriptDebugServerPrivate.h" 67 67 #import "WebUIDelegate.h" 68 #import "WebUIDelegatePrivate.h" 68 69 #import "WebViewInternal.h" 69 70 #import <WebCore/AuthenticationMac.h> … … 590 591 { 591 592 WebView *currentWebView = getWebView(m_webFrame.get()); 592 WebView *newWebView = CallUIDelegate(currentWebView, @selector(webView:createWebViewWithRequest:), nil); 593 NSDictionary *features = [[NSDictionary alloc] init]; 594 WebView *newWebView = [[currentWebView _UIDelegateForwarder] webView:currentWebView 595 createWebViewWithRequest:nil 596 windowFeatures:features]; 597 [features release]; 593 598 return core([newWebView mainFrame]); 594 599 } -
trunk/WebKit/WebView/WebUIDelegatePrivate.h
r26787 r27452 97 97 - (BOOL)webView:(WebView *)sender runDatabaseSizeLimitPromptForOrigin:(NSString *)origin initiatedByFrame:(WebFrame *)frame; 98 98 99 - (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request windowFeatures:(NSDictionary *)features; 100 99 101 @end -
trunk/WebKit/WebView/WebView.mm
r27332 r27452 772 772 - (WebView *)_openNewWindowWithRequest:(NSURLRequest *)request 773 773 { 774 WebView *newWindowWebView = CallUIDelegate(self, @selector(webView:createWebViewWithRequest:), request); 774 NSDictionary *features = [[NSDictionary alloc] init]; 775 WebView *newWindowWebView = [[self _UIDelegateForwarder] webView:self 776 createWebViewWithRequest:nil 777 windowFeatures:features]; 778 [features release]; 775 779 if (!newWindowWebView) 776 780 return nil; -
trunk/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
r27396 r27452 38 38 #include "webkitgtkprivate.h" 39 39 #include "NotImplemented.h" 40 #include "WindowFeatures.h" 40 41 41 42 using namespace WebCore; … … 85 86 } 86 87 87 Page* ChromeClient::createWindow(Frame*, const FrameLoadRequest&) 88 { 89 /* TODO: FrameLoadRequest is not used */ 90 WebKitPage* page = WEBKIT_PAGE_GET_CLASS(m_webPage)->create_page(m_webPage); 91 if (!page) 88 Page* ChromeClient::createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures& features) 89 { 90 if (features.dialog) { 91 notImplemented(); 92 92 return 0; 93 94 WebKitPagePrivate *privateData = WEBKIT_PAGE_GET_PRIVATE(WEBKIT_PAGE(page));95 return privateData->page;96 } 97 98 Page* ChromeClient::createModalDialog(Frame*, const FrameLoadRequest&) 99 { 100 notImplemented();101 return 0;93 } else { 94 /* TODO: FrameLoadRequest is not used */ 95 WebKitPage* page = WEBKIT_PAGE_GET_CLASS(m_webPage)->create_page(m_webPage); 96 if (!page) 97 return 0; 98 99 WebKitPagePrivate *privateData = WEBKIT_PAGE_GET_PRIVATE(WEBKIT_PAGE(page)); 100 return privateData->page; 101 } 102 102 } 103 103 -
trunk/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h
r26810 r27452 57 57 virtual void takeFocus(WebCore::FocusDirection); 58 58 59 virtual WebCore::Page* createWindow(WebCore::Frame*, const WebCore::FrameLoadRequest&); 60 virtual WebCore::Page* createModalDialog(WebCore::Frame*, const WebCore::FrameLoadRequest&); 59 virtual WebCore::Page* createWindow(WebCore::Frame*, const WebCore::FrameLoadRequest&, const WebCore::WindowFeatures&); 61 60 virtual void show(); 62 61 -
trunk/WebKit/qt/ChangeLog
r27312 r27452 1 2007-11-05 Tristan O'Tierney <tristan@apple.com> 2 3 Reviewed by Darin Adler. 4 5 * WebCoreSupport/ChromeClientQt.cpp: 6 (WebCore::ChromeClientQt::createWindow): 7 * WebCoreSupport/ChromeClientQt.h: 8 Revised to use new WebCore ChromeClient createWindow API. 9 1 10 2007-10-31 Lars Knoll <lars@trolltech.com> 2 11 -
trunk/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp
r26810 r27452 35 35 #include "FrameView.h" 36 36 #include "NotImplemented.h" 37 #include "WindowFeatures.h" 37 38 38 39 #include "qwebpage.h" … … 119 120 120 121 121 Page* ChromeClientQt::createWindow(Frame*, const FrameLoadRequest& request )122 { 123 QWebPage *newPage = m_webPage->createWindow();122 Page* ChromeClientQt::createWindow(Frame*, const FrameLoadRequest& request, const WindowFeatures& features) 123 { 124 QWebPage *newPage = features.dialog ? m_webPage->createModalDialog() : m_webPage->createWindow(); 124 125 if (!newPage) 125 126 return 0; … … 129 130 } 130 131 131 132 Page* ChromeClientQt::createModalDialog(Frame*, const FrameLoadRequest& request)133 {134 QWebPage *newPage = m_webPage->createModalDialog();135 if (!newPage)136 return 0;137 KURL url = request.resourceRequest().url();138 newPage->open(QUrl(url.prettyURL()));139 return newPage->d->page;140 }141 142 143 132 void ChromeClientQt::show() 144 133 { -
trunk/WebKit/qt/WebCoreSupport/ChromeClientQt.h
r26810 r27452 61 61 virtual void takeFocus(FocusDirection); 62 62 63 virtual Page* createWindow(Frame*, const FrameLoadRequest&); 64 virtual Page* createModalDialog(Frame*, const FrameLoadRequest&); 63 virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&); 65 64 virtual void show(); 66 65 -
trunk/WebKit/win/ChangeLog
r27445 r27452 1 2007-11-05 Tristan O'Tierney <tristan@apple.com> 2 3 Reviewed by Darin Adler. 4 5 Part of the WebKit/WebCore API changes for 6 <rdar://problem/5368188> 7 8 * WebChromeClient.cpp: 9 (WebChromeClient::createWindow): 10 Removed usage of createModalDialog and revised to use new createWindow 11 ChromeClient API. 12 1 13 2007-11-04 Adam Roben <aroben@apple.com> 2 14 -
trunk/WebKit/win/WebChromeClient.cpp
r26787 r27452 38 38 #include <WebCore/FrameView.h> 39 39 #include <WebCore/NotImplemented.h> 40 #include <WebCore/WindowFeatures.h> 40 41 #pragma warning(pop) 41 42 … … 132 133 } 133 134 134 Page* WebChromeClient::createWindow(Frame*, const FrameLoadRequest& frameLoadRequest )135 Page* WebChromeClient::createWindow(Frame*, const FrameLoadRequest& frameLoadRequest, const WindowFeatures& features) 135 136 { 136 137 Page* page = 0; 138 IWebUIDelegate* uiDelegate = 0; 137 139 IWebMutableURLRequest* request = WebMutableURLRequest::createInstance(frameLoadRequest.resourceRequest()); 138 140 139 IWebUIDelegate* uiDelegate = 0; 140 if (SUCCEEDED(m_webView->uiDelegate(&uiDelegate))) { 141 IWebView* webView = 0; 142 if (SUCCEEDED(uiDelegate->createWebViewWithRequest(m_webView, request, &webView))) { 143 page = core(webView); 144 webView->Release(); 141 if (SUCCEEDED(m_webView->uiDelegate(&uiDelegate))) { 142 if (features.dialog) { 143 notImplemented(); 144 } else { 145 IWebView* webView = 0; 146 if (SUCCEEDED(uiDelegate->createWebViewWithRequest(m_webView, request, &webView))) { 147 page = core(webView); 148 webView->Release(); 149 } 145 150 } 146 151 … … 149 154 150 155 request->Release(); 151 return page;152 }153 154 Page* WebChromeClient::createModalDialog(Frame*, const FrameLoadRequest&)155 {156 Page* page = 0;157 IWebUIDelegate* uiDelegate = 0;158 if (SUCCEEDED(m_webView->uiDelegate(&uiDelegate))) {159 notImplemented();160 uiDelegate->Release();161 }162 156 return page; 163 157 }
Note:
See TracChangeset
for help on using the changeset viewer.