Changeset 27452 in webkit


Ignore:
Timestamp:
Nov 5, 2007, 2:43:45 PM (18 years ago)
Author:
tristan
Message:

qt:

Reviewed by Darin Adler.

  • WebCoreSupport/ChromeClientQt.cpp: (WebCore::ChromeClientQt::createWindow):
  • WebCoreSupport/ChromeClientQt.h: Revised to use new WebCore ChromeClient createWindow API.

WebCore:

Reviewed by Darin Adler.

  • WebCore.xcodeproj/project.pbxproj: Set WindowFeatures.h as a Private header.


  • loader/FrameLoader.cpp: (WebCore::FrameLoader::createWindow): Revised to use a single createWindow function instead of two createWindow functions and one createModalDialog function. The logic for this is now addressed in WebKit in an effort to make this easier to follow.


  • page/Chrome.cpp: (WebCore::Chrome::createWindow):
  • page/Chrome.h:
  • page/ChromeClient.h:
  • page/ContextMenuController.cpp: (WebCore::openNewWindow):
  • platform/graphics/svg/SVGImageEmptyClients.h: (WebCore::SVGEmptyChromeClient::createWindow): Revised to take new additional windowFeatures parameter.

WebKit:

Reviewed by Darin Adler.

  • DefaultDelegates/WebDefaultUIDelegate.m: (-[WebDefaultUIDelegate webView:createWebViewWithRequest:windowFeatures:]): Forward the UI delegate to call webView:createWebViewWithRequest: if this method doesn't exist.


  • WebCoreSupport/WebFrameLoaderClient.mm: (WebFrameLoaderClient::dispatchCreatePage):
  • Plugins/WebBaseNetscapePluginView.mm: (-[WebBaseNetscapePluginView loadPluginRequest:]):
  • WebView/WebView.mm: (-[WebView _openNewWindowWithRequest:]): Revised to use new webView:createWebViewWithRequest:windowFeatures: callback.


  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm: (WebChromeClient::createWindow): Added a new createWindow that accepts 3 parameters, so we can pass up windowFeatures to the chrome. Removed createModalDialog to use new createWindow function.


  • WebView/WebUIDelegatePrivate.h: Added new webView:createWebViewWithRequest:windowFeatures: method.

win:

Reviewed by Darin Adler.


Part of the WebKit/WebCore API changes for
<rdar://problem/5368188>

  • WebChromeClient.cpp: (WebChromeClient::createWindow): Removed usage of createModalDialog and revised to use new createWindow ChromeClient API.
Location:
trunk
Files:
23 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r27448 r27452  
     12007-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
    1252007-11-04  Geoffrey Garen  <ggaren@apple.com>
    226
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r27402 r27452  
    7979                14EC267F09CA07E000E1EEEC /* EventTargetNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 14EC267D09CA07E000E1EEEC /* EventTargetNode.h */; settings = {ATTRIBUTES = (Private, ); }; };
    8080                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, ); }; };
    8282                14FFE31D0AE1963300136BF5 /* HTMLFrameElementBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 14FFE31B0AE1963300136BF5 /* HTMLFrameElementBase.h */; };
    8383                14FFE31E0AE1963300136BF5 /* HTMLFrameElementBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14FFE31C0AE1963300136BF5 /* HTMLFrameElementBase.cpp */; };
  • trunk/WebCore/loader/FrameLoader.cpp

    r27378 r27452  
    320320   
    321321    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);
    328324    if (!page)
    329325        return 0;
  • trunk/WebCore/page/Chrome.cpp

    r27266 r27452  
    3535#include "ResourceHandle.h"
    3636#include "Settings.h"
     37#include "WindowFeatures.h"
    3738#include "kjs_window.h"
    3839#include <wtf/PassRefPtr.h>
     
    108109    m_client->takeFocus(direction);
    109110}
    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   
     112Page* Chrome::createWindow(Frame* frame, const FrameLoadRequest& request, const WindowFeatures& features) const
     113{
     114    return m_client->createWindow(frame, request, features);
    119115}
    120116
  • trunk/WebCore/page/Chrome.h

    r26787 r27452  
    4444   
    4545    struct FrameLoadRequest;
     46    struct WindowFeatures;
    4647   
    4748    enum MessageSource {
     
    8081        void takeFocus(FocusDirection) const;
    8182
    82         Page* createWindow(Frame*, const FrameLoadRequest&) const;
    83         Page* createModalDialog(Frame*, const FrameLoadRequest&) const;
     83        Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&) const;
    8484        void show() const;
    8585
  • trunk/WebCore/page/ChromeClient.h

    r26787 r27452  
    3434   
    3535    struct FrameLoadRequest;
     36    struct WindowFeatures;
    3637   
    3738    class ChromeClient {
     
    5758        // should not be shown to the user until the ChromeClient of the newly
    5859        // 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;
    6161        virtual void show() = 0;
    6262
  • trunk/WebCore/page/ContextMenuController.cpp

    r25547 r27452  
    5555#include "Settings.h"
    5656#include "TextIterator.h"
     57#include "WindowFeatures.h"
    5758#include "markup.h"
    5859
     
    108109static void openNewWindow(const KURL& urlToLoad, Frame* frame)
    109110{
    110     if (Page* oldPage = frame->page())
     111    if (Page* oldPage = frame->page()) {
     112        WindowFeatures features;
    111113        if (Page* newPage = oldPage->chrome()->createWindow(frame,
    112                 FrameLoadRequest(ResourceRequest(urlToLoad, frame->loader()->outgoingReferrer()))))
     114                FrameLoadRequest(ResourceRequest(urlToLoad, frame->loader()->outgoingReferrer())), features))
    113115            newPage->chrome()->show();
     116    }
    114117}
    115118
  • trunk/WebCore/platform/graphics/svg/SVGImageEmptyClients.h

    r26787 r27452  
    7070    virtual void takeFocus(FocusDirection) { }
    7171   
    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; }
    7473    virtual void show() { }
    7574   
  • trunk/WebKit/ChangeLog

    r27448 r27452  
     12007-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
    1272007-11-05  Geoffrey Garen  <ggaren@apple.com>
    228
  • trunk/WebKit/DefaultDelegates/WebDefaultUIDelegate.m

    r21149 r27452  
    5858}
    5959
    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];
    6266    return nil;
    6367}
  • trunk/WebKit/Plugins/WebBaseNetscapePluginView.mm

    r27148 r27452  
    5151#import "WebPreferences.h"
    5252#import "WebViewInternal.h"
     53#import "WebUIDelegatePrivate.h"
    5354#import <Carbon/Carbon.h>
    5455#import <JavaScriptCore/Assertions.h>
     
    21322133        if (frame == nil) {
    21332134            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];
    21352140
    21362141            if (!newWebView) {
  • trunk/WebKit/WebCoreSupport/WebChromeClient.h

    r26787 r27452  
    5454    virtual void takeFocus(WebCore::FocusDirection);
    5555
    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&);
    5857    virtual void show();
    5958
  • trunk/WebKit/WebCoreSupport/WebChromeClient.mm

    r26787 r27452  
    4949#import <WebCore/PlatformString.h>
    5050#import <WebCore/ResourceRequest.h>
     51#import <WebCore/WindowFeatures.h>
    5152#import <wtf/PassRefPtr.h>
    5253
     
    132133}
    133134
    134 Page* WebChromeClient::createWindow(Frame*, const FrameLoadRequest& request)
     135Page* WebChromeClient::createWindow(Frame* frame, const FrameLoadRequest& request, const WindowFeatures& features)
    135136{
    136137    NSURLRequest *URLRequest = nil;
    137138    if (!request.isEmpty())
    138139        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:)]) {
    152191        newWebView = CallUIDelegate(m_webView, @selector(webView:createWebViewModalDialogWithRequest:), URLRequest);
    153     else if ([delegate respondsToSelector:@selector(webView:createWebViewWithRequest:)])
     192    } else {
    154193        newWebView = CallUIDelegate(m_webView, @selector(webView:createWebViewWithRequest:), URLRequest);
     194    }
     195   
    155196    return core(newWebView);
    156197}
  • trunk/WebKit/WebCoreSupport/WebFrameLoaderClient.mm

    r27376 r27452  
    6666#import "WebScriptDebugServerPrivate.h"
    6767#import "WebUIDelegate.h"
     68#import "WebUIDelegatePrivate.h"
    6869#import "WebViewInternal.h"
    6970#import <WebCore/AuthenticationMac.h>
     
    590591{
    591592    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];
    593598    return core([newWebView mainFrame]);
    594599}
  • trunk/WebKit/WebView/WebUIDelegatePrivate.h

    r26787 r27452  
    9797- (BOOL)webView:(WebView *)sender runDatabaseSizeLimitPromptForOrigin:(NSString *)origin initiatedByFrame:(WebFrame *)frame;
    9898
     99- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request windowFeatures:(NSDictionary *)features;
     100
    99101@end
  • trunk/WebKit/WebView/WebView.mm

    r27332 r27452  
    772772- (WebView *)_openNewWindowWithRequest:(NSURLRequest *)request
    773773{
    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];
    775779    if (!newWindowWebView)
    776780        return nil;
  • trunk/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp

    r27396 r27452  
    3838#include "webkitgtkprivate.h"
    3939#include "NotImplemented.h"
     40#include "WindowFeatures.h"
    4041
    4142using namespace WebCore;
     
    8586}
    8687   
    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)
     88Page* ChromeClient::createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures& features)
     89{
     90    if (features.dialog) {
     91        notImplemented();
    9292        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    }
    102102}
    103103
  • trunk/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h

    r26810 r27452  
    5757        virtual void takeFocus(WebCore::FocusDirection);
    5858
    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&);
    6160        virtual void show();
    6261
  • trunk/WebKit/qt/ChangeLog

    r27312 r27452  
     12007-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
    1102007-10-31  Lars Knoll  <lars@trolltech.com>
    211
  • trunk/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp

    r26810 r27452  
    3535#include "FrameView.h"
    3636#include "NotImplemented.h"
     37#include "WindowFeatures.h"
    3738
    3839#include "qwebpage.h"
     
    119120
    120121
    121 Page* ChromeClientQt::createWindow(Frame*, const FrameLoadRequest& request)
    122 {
    123     QWebPage *newPage = m_webPage->createWindow();
     122Page* ChromeClientQt::createWindow(Frame*, const FrameLoadRequest& request, const WindowFeatures& features)
     123{
     124    QWebPage *newPage = features.dialog ? m_webPage->createModalDialog() : m_webPage->createWindow();
    124125    if (!newPage)
    125126        return 0;
     
    129130}
    130131
    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 
    143132void ChromeClientQt::show()
    144133{
  • trunk/WebKit/qt/WebCoreSupport/ChromeClientQt.h

    r26810 r27452  
    6161        virtual void takeFocus(FocusDirection);
    6262
    63         virtual Page* createWindow(Frame*, const FrameLoadRequest&);
    64         virtual Page* createModalDialog(Frame*, const FrameLoadRequest&);
     63        virtual Page* createWindow(Frame*, const FrameLoadRequest&, const WindowFeatures&);
    6564        virtual void show();
    6665
  • trunk/WebKit/win/ChangeLog

    r27445 r27452  
     12007-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
    1132007-11-04  Adam Roben  <aroben@apple.com>
    214
  • trunk/WebKit/win/WebChromeClient.cpp

    r26787 r27452  
    3838#include <WebCore/FrameView.h>
    3939#include <WebCore/NotImplemented.h>
     40#include <WebCore/WindowFeatures.h>
    4041#pragma warning(pop)
    4142
     
    132133}
    133134
    134 Page* WebChromeClient::createWindow(Frame*, const FrameLoadRequest& frameLoadRequest)
     135Page* WebChromeClient::createWindow(Frame*, const FrameLoadRequest& frameLoadRequest, const WindowFeatures& features)
    135136{
    136137    Page* page = 0;
     138    IWebUIDelegate* uiDelegate = 0;
    137139    IWebMutableURLRequest* request = WebMutableURLRequest::createInstance(frameLoadRequest.resourceRequest());
    138140
    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            }
    145150        }
    146151   
     
    149154
    150155    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     }
    162156    return page;
    163157}
Note: See TracChangeset for help on using the changeset viewer.