Title: [102673] trunk/Source/WebKit2
Revision
102673
Author
carlo...@webkit.org
Date
2011-12-13 05:23:54 -0800 (Tue, 13 Dec 2011)

Log Message

[GTK] Initial UI client implementation for WebKit2 GTK +API
https://bugs.webkit.org/show_bug.cgi?id=69753

Reviewed by Martin Robinson.

* GNUmakefile.am: Add new files to compilation.
* UIProcess/API/gtk/WebKitUIClient.cpp: Added.
(createNewPage): Call webkitWebViewCreateNewPage.
(showPage): Call webkitWebViewReadyToShowPage.
(closePage): Call webkitWebViewClosePage.
(webkitUIClientAttachUIClientToPage): Initialize UI client and
attach it to the given page.
(webkit_ui_client_init):
(webkit_ui_client_class_init):
* UIProcess/API/gtk/WebKitUIClient.h: Added.
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewCreate): Default implementation of signal
WebKitWebView::create that simply returns NULL.
(webkitWebViewConstructed): Create the default UI client.
(webkitWebViewAccumulatorObjectHandled):
(webkit_web_view_class_init):
(webkitWebViewCreateNewPage): Emit create signal.
(webkitWebViewReadyToShowPage): Emit ready-to-show signal.
(webkitWebViewClosePage): Emit close signal.
* UIProcess/API/gtk/WebKitWebView.h:
* UIProcess/API/gtk/WebKitWebViewPrivate.h:
* UIProcess/API/gtk/tests/TestWebKitWebView.cpp:
(testWebViewCreateReadyClose):
(beforeAll):
* UIProcess/API/gtk/webkit2marshal.list:

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (102672 => 102673)


--- trunk/Source/WebKit2/ChangeLog	2011-12-13 13:13:08 UTC (rev 102672)
+++ trunk/Source/WebKit2/ChangeLog	2011-12-13 13:23:54 UTC (rev 102673)
@@ -1,3 +1,36 @@
+2011-12-13  Carlos Garcia Campos  <cgar...@igalia.com>
+
+        [GTK] Initial UI client implementation for WebKit2 GTK +API
+        https://bugs.webkit.org/show_bug.cgi?id=69753
+
+        Reviewed by Martin Robinson.
+
+        * GNUmakefile.am: Add new files to compilation.
+        * UIProcess/API/gtk/WebKitUIClient.cpp: Added.
+        (createNewPage): Call webkitWebViewCreateNewPage.
+        (showPage): Call webkitWebViewReadyToShowPage.
+        (closePage): Call webkitWebViewClosePage.
+        (webkitUIClientAttachUIClientToPage): Initialize UI client and
+        attach it to the given page.
+        (webkit_ui_client_init):
+        (webkit_ui_client_class_init):
+        * UIProcess/API/gtk/WebKitUIClient.h: Added.
+        * UIProcess/API/gtk/WebKitWebView.cpp:
+        (webkitWebViewCreate): Default implementation of signal
+        WebKitWebView::create that simply returns NULL.
+        (webkitWebViewConstructed): Create the default UI client.
+        (webkitWebViewAccumulatorObjectHandled):
+        (webkit_web_view_class_init):
+        (webkitWebViewCreateNewPage): Emit create signal.
+        (webkitWebViewReadyToShowPage): Emit ready-to-show signal.
+        (webkitWebViewClosePage): Emit close signal.
+        * UIProcess/API/gtk/WebKitWebView.h:
+        * UIProcess/API/gtk/WebKitWebViewPrivate.h:
+        * UIProcess/API/gtk/tests/TestWebKitWebView.cpp:
+        (testWebViewCreateReadyClose):
+        (beforeAll):
+        * UIProcess/API/gtk/webkit2marshal.list:
+
 2011-12-13  Caio Marcelo de Oliveira Filho  <caio.olive...@openbossa.org>
 
         [Qt][WK2] Move load & navigation related functions out of QtWebPageProxy

Modified: trunk/Source/WebKit2/GNUmakefile.am (102672 => 102673)


--- trunk/Source/WebKit2/GNUmakefile.am	2011-12-13 13:13:08 UTC (rev 102672)
+++ trunk/Source/WebKit2/GNUmakefile.am	2011-12-13 13:23:54 UTC (rev 102673)
@@ -527,6 +527,8 @@
 	Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp \
 	Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h \
 	Source/WebKit2/UIProcess/API/gtk/WebKitSettingsPrivate.h \
+	Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp \
+	Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.h \
 	Source/WebKit2/UIProcess/API/gtk/WebKitURIRequest.cpp \
 	Source/WebKit2/UIProcess/API/gtk/WebKitURIRequest.h \
 	Source/WebKit2/UIProcess/API/gtk/WebKitURIResponse.cpp \

Added: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp (0 => 102673)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp	                        (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp	2011-12-13 13:23:54 UTC (rev 102673)
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2011 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "WebKitUIClient.h"
+
+#include "WebKitWebViewPrivate.h"
+#include "WebPageProxy.h"
+#include <WebKit2/WKBase.h>
+
+using namespace WebKit;
+
+G_DEFINE_TYPE(WebKitUIClient, webkit_ui_client, G_TYPE_OBJECT)
+
+static WKPageRef createNewPage(WKPageRef page, WKURLRequestRef, WKDictionaryRef, WKEventModifiers, WKEventMouseButton, const void*)
+{
+    return webkitWebViewCreateNewPage(WEBKIT_WEB_VIEW(toImpl(page)->viewWidget()));
+}
+
+static void showPage(WKPageRef page, const void*)
+{
+    webkitWebViewReadyToShowPage(WEBKIT_WEB_VIEW(toImpl(page)->viewWidget()));
+}
+
+static void closePage(WKPageRef page, const void*)
+{
+    webkitWebViewClosePage(WEBKIT_WEB_VIEW(toImpl(page)->viewWidget()));
+}
+
+void webkitUIClientAttachUIClientToPage(WebKitUIClient* uiClient, WKPageRef wkPage)
+{
+    WKPageUIClient wkUIClient = {
+        kWKPageUIClientCurrentVersion,
+        uiClient, // clientInfo
+        0, // createNewPage_deprecatedForUseWithV0
+        showPage,
+        closePage,
+        0, // takeFocus
+        0, // focus
+        0, // unfocus
+        0, // runJavaScriptAlert
+        0, // runJavaScriptConfirm
+        0, // runJavaScriptPrompt
+        0, // setStatusText
+        0, // mouseDidMoveOverElement_deprecatedForUseWithV0
+        0, // missingPluginButtonClicked
+        0, // didNotHandleKeyEvent
+        0, // didNotHandleWheelEvent
+        0, // toolbarsAreVisible
+        0, // setToolbarsAreVisible
+        0, // menuBarIsVisible
+        0, // setMenuBarIsVisible
+        0, // statusBarIsVisible
+        0, // setStatusBarIsVisible
+        0, // isResizable
+        0, // setIsResizable
+        0, // getWindowFrame
+        0, // setWindowFrame
+        0, // runBeforeUnloadConfirmPanel
+        0, // didDraw
+        0, // pageDidScroll
+        0, // exceededDatabaseQuota
+        0, // runOpenPanel
+        0, // decidePolicyForGeolocationPermissionRequest
+        0, // headerHeight
+        0, // footerHeight
+        0, // drawHeader
+        0, // drawFooter
+        0, // printFrame
+        0, // runModal
+        0, // didCompleteRubberBandForMainFrame
+        0, // saveDataToFileInDownloadsFolder
+        0, // shouldInterruptJavaScript
+        createNewPage,
+        0, // mouseDidMoveOverElement
+        0, // decidePolicyForNotificationPermissionRequest
+    };
+    WKPageSetPageUIClient(wkPage, &wkUIClient);
+}
+
+static void webkit_ui_client_init(WebKitUIClient* client)
+{
+}
+
+static void webkit_ui_client_class_init(WebKitUIClientClass* clientClass)
+{
+}

Added: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.h (0 => 102673)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.h	                        (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.h	2011-12-13 13:23:54 UTC (rev 102673)
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2011 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef WebKitUIClient_h
+#define WebKitUIClient_h
+
+#include <WebKit2/WebKit2.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_UI_CLIENT            (webkit_ui_client_get_type())
+#define WEBKIT_UI_CLIENT(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_UI_CLIENT, WebKitUIClient))
+#define WEBKIT_UI_CLIENT_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),  WEBKIT_TYPE_UI_CLIENT, WebKitUIClientClass))
+#define WEBKIT_IS_UI_CLIENT(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_UI_CLIENT))
+#define WEBKIT_IS_UI_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),  WEBKIT_TYPE_UI_CLIENT))
+#define WEBKIT_UI_CLIENT_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj),  WEBKIT_TYPE_UI_CLIENT, WebKitUIClientClass))
+
+typedef struct _WebKitUIClient      WebKitUIClient;
+typedef struct _WebKitUIClientClass WebKitUIClientClass;
+
+struct _WebKitUIClient {
+    GObject parent;
+};
+
+struct _WebKitUIClientClass {
+    GObjectClass parent_class;
+};
+
+GType webkit_ui_client_get_type (void);
+
+void webkitUIClientAttachUIClientToPage(WebKitUIClient*, WKPageRef);
+
+G_END_DECLS
+
+#endif

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp (102672 => 102673)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp	2011-12-13 13:13:08 UTC (rev 102672)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp	2011-12-13 13:23:54 UTC (rev 102673)
@@ -22,7 +22,9 @@
 #include "WebKitWebView.h"
 
 #include "WebKitBackForwardListPrivate.h"
+#include "WebKitMarshal.h"
 #include "WebKitSettingsPrivate.h"
+#include "WebKitUIClient.h"
 #include "WebKitWebContextPrivate.h"
 #include "WebKitWebLoaderClient.h"
 #include "WebKitWebLoaderClientPrivate.h"
@@ -41,6 +43,14 @@
 using namespace WebCore;
 
 enum {
+    CREATE,
+    READY_TO_SHOW,
+    CLOSE,
+
+    LAST_SIGNAL
+};
+
+enum {
     PROP_0,
 
     PROP_WEB_CONTEXT,
@@ -57,12 +67,20 @@
     CString activeURI;
 
     GRefPtr<WebKitWebLoaderClient> loaderClient;
+    GRefPtr<WebKitUIClient> uiClient;
     GRefPtr<WebKitBackForwardList> backForwardList;
     GRefPtr<WebKitSettings> settings;
 };
 
+static guint signals[LAST_SIGNAL] = { 0, };
+
 G_DEFINE_TYPE(WebKitWebView, webkit_web_view, WEBKIT_TYPE_WEB_VIEW_BASE)
 
+static GtkWidget* webkitWebViewCreate(WebKitWebView*)
+{
+    return 0;
+}
+
 static void webkitWebViewSetLoaderClient(WebKitWebView* webView, WebKitWebLoaderClient* loaderClient, WKPageRef wkPage)
 {
     webView->priv->loaderClient = loaderClient;
@@ -85,6 +103,10 @@
     static GRefPtr<WebKitWebLoaderClient> defaultLoaderClient = adoptGRef(WEBKIT_WEB_LOADER_CLIENT(g_object_new(WEBKIT_TYPE_WEB_LOADER_CLIENT, NULL)));
     webkitWebViewSetLoaderClient(webView, defaultLoaderClient.get(), toAPI(page));
 
+    static GRefPtr<WebKitUIClient> defaultUIClient = adoptGRef(WEBKIT_UI_CLIENT(g_object_new(WEBKIT_TYPE_UI_CLIENT, NULL)));
+    priv->uiClient = defaultUIClient.get();
+    webkitUIClientAttachUIClientToPage(priv->uiClient.get(), toAPI(page));
+
     priv->backForwardList = adoptGRef(webkitBackForwardListCreate(WKPageGetBackForwardList(toAPI(page))));
     priv->settings = adoptGRef(webkit_settings_new());
     webkitSettingsAttachSettingsToPage(priv->settings.get(), toAPI(page));
@@ -138,6 +160,15 @@
     new (priv) WebKitWebViewPrivate();
 }
 
+static gboolean webkitWebViewAccumulatorObjectHandled(GSignalInvocationHint*, GValue* returnValue, const GValue* handlerReturn, gpointer)
+{
+    void* object = g_value_get_object(handlerReturn);
+    if (object)
+        g_value_set_object(returnValue, object);
+
+    return !object;
+}
+
 static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
 {
     GObjectClass* gObjectClass = G_OBJECT_CLASS(webViewClass);
@@ -147,6 +178,8 @@
     gObjectClass->get_property = webkitWebViewGetProperty;
     gObjectClass->finalize = webkitWebViewFinalize;
 
+    webViewClass->create = webkitWebViewCreate;
+
     g_type_class_add_private(webViewClass, sizeof(WebKitWebViewPrivate));
 
     /**
@@ -207,6 +240,66 @@
                                                         "The current active URI of the view",
                                                         0,
                                                         WEBKIT_PARAM_READABLE));
+
+    /**
+     * WebKitWebView::create:
+     * @web_view: the #WebKitWebView on which the signal is emitted
+     *
+     * Emitted when the creation of a new #WebKitWebView is requested.
+     * If this signal is handled the signal handler should return the
+     * newly created #WebKitWebView.
+     *
+     * The new #WebKitWebView should not be displayed to the user
+     * until the #WebKitWebView::ready-to-show signal is emitted.
+     *
+     * Returns: (transfer full): a newly allocated #WebKitWebView widget
+     *    or %NULL to propagate the event further.
+     */
+    signals[CREATE] =
+        g_signal_new("create",
+                     G_TYPE_FROM_CLASS(webViewClass),
+                     G_SIGNAL_RUN_LAST,
+                     G_STRUCT_OFFSET(WebKitWebViewClass, create),
+                     webkitWebViewAccumulatorObjectHandled, 0,
+                     webkit_marshal_OBJECT__VOID,
+                     GTK_TYPE_WIDGET, 0);
+
+    /**
+     * WebKitWebView::ready-to-show:
+     * @web_view: the #WebKitWebView on which the signal is emitted
+     *
+     * Emitted after #WebKitWebView::create on the newly created #WebKitWebView
+     * when it should be displayed to the user. When this signal is emitted
+     * all the information about how the window should look, including
+     * size, position, whether the location, status and scrollbars
+     * should be displayed, is already set.
+     */
+    signals[READY_TO_SHOW] =
+        g_signal_new("ready-to-show",
+                     G_TYPE_FROM_CLASS(webViewClass),
+                     G_SIGNAL_RUN_LAST,
+                     G_STRUCT_OFFSET(WebKitWebViewClass, ready_to_show),
+                     0, 0,
+                     g_cclosure_marshal_VOID__VOID,
+                     G_TYPE_NONE, 0);
+
+    /**
+     * WebKitWebView::close:
+     * @webView: the #WebKitWebView on which the signal is emitted
+     *
+     * Emitted when closing a #WebKitWebView is requested. This occurs when a
+     * call is made from _javascript_'s <function>window.close</function> function.
+     * It is the owner's responsibility to handle this signal to hide or
+     * destroy the #WebKitWebView, if necessary.
+     */
+    signals[CLOSE] =
+        g_signal_new("close",
+                     G_TYPE_FROM_CLASS(webViewClass),
+                     G_SIGNAL_RUN_LAST,
+                     G_STRUCT_OFFSET(WebKitWebViewClass, close),
+                     0, 0,
+                     g_cclosure_marshal_VOID__VOID,
+                     G_TYPE_NONE, 0);
 }
 
 void webkitWebViewSetTitle(WebKitWebView* webView, const CString& title)
@@ -242,6 +335,26 @@
     g_object_notify(G_OBJECT(webView), "uri");
 }
 
+WKPageRef webkitWebViewCreateNewPage(WebKitWebView* webView)
+{
+    WebKitWebView* newWebView;
+    g_signal_emit(webView, signals[CREATE], 0, &newWebView);
+    if (!newWebView)
+        return 0;
+
+    return static_cast<WKPageRef>(WKRetain(toAPI(webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(newWebView)))));
+}
+
+void webkitWebViewReadyToShowPage(WebKitWebView* webView)
+{
+    g_signal_emit(webView, signals[READY_TO_SHOW], 0, NULL);
+}
+
+void webkitWebViewClosePage(WebKitWebView* webView)
+{
+    g_signal_emit(webView, signals[CLOSE], 0, NULL);
+}
+
 /**
  * webkit_web_view_new:
  *

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h (102672 => 102673)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h	2011-12-13 13:13:08 UTC (rev 102672)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h	2011-12-13 13:23:54 UTC (rev 102673)
@@ -57,6 +57,10 @@
 struct _WebKitWebViewClass {
     WebKitWebViewBaseClass parent;
 
+    GtkWidget *(* create)        (WebKitWebView *web_view);
+    void       (* ready_to_show) (WebKitWebView *web_view);
+    void       (* close)         (WebKitWebView *web_view);
+
     /* Padding for future expansion */
     void (*_webkit_reserved0) (void);
     void (*_webkit_reserved1) (void);

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h (102672 => 102673)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h	2011-12-13 13:13:08 UTC (rev 102672)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h	2011-12-13 13:23:54 UTC (rev 102673)
@@ -34,5 +34,8 @@
 void webkitWebViewSetEstimatedLoadProgress(WebKitWebView*, double estimatedLoadProgress);
 void webkitWebViewSetTitle(WebKitWebView*, const CString&);
 void webkitWebViewUpdateURI(WebKitWebView*);
+WKPageRef webkitWebViewCreateNewPage(WebKitWebView*);
+void webkitWebViewReadyToShowPage(WebKitWebView*);
+void webkitWebViewClosePage(WebKitWebView*);
 
 #endif // WebKitWebViewPrivate_h

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp (102672 => 102673)


--- trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp	2011-12-13 13:13:08 UTC (rev 102672)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp	2011-12-13 13:23:54 UTC (rev 102673)
@@ -19,7 +19,6 @@
 
 #include "config.h"
 #include "WebViewTest.h"
-#include "LoadTrackingTest.h"
 #include <wtf/gobject/GRefPtr.h>
 
 static void testWebViewDefaultContext(WebViewTest* test, gconstpointer)
@@ -76,12 +75,86 @@
     g_assert(webkit_settings_get_enable_javascript(settings));
 }
 
+class UIClientTest: public WebViewTest {
+public:
+    MAKE_GLIB_TEST_FIXTURE(UIClientTest);
+
+    enum WebViewEvents {
+        Create,
+        ReadyToShow,
+        Close
+    };
+
+    static void viewClose(WebKitWebView* webView, UIClientTest* test)
+    {
+        g_assert(webView != test->m_webView);
+
+        test->m_webViewEvents.append(Close);
+        g_object_unref(webView);
+
+        g_main_loop_quit(test->m_mainLoop);
+    }
+
+    static void viewReadyToShow(WebKitWebView* webView, UIClientTest* test)
+    {
+        g_assert(webView != test->m_webView);
+
+        test->m_webViewEvents.append(ReadyToShow);
+    }
+
+    static GtkWidget* viewCreate(WebKitWebView* webView, UIClientTest* test)
+    {
+        g_assert(webView == test->m_webView);
+
+        GtkWidget* newWebView = webkit_web_view_new_with_context(webkit_web_view_get_context(webView));
+        g_object_ref_sink(newWebView);
+
+        test->m_webViewEvents.append(Create);
+
+        g_signal_connect(newWebView, "ready-to-show", G_CALLBACK(viewReadyToShow), test);
+        g_signal_connect(newWebView, "close", G_CALLBACK(viewClose), test);
+
+        return newWebView;
+    }
+
+    UIClientTest()
+    {
+        webkit_settings_set_javascript_can_open_windows_automatically(webkit_web_view_get_settings(m_webView), TRUE);
+        g_signal_connect(m_webView, "create", G_CALLBACK(viewCreate), this);
+    }
+
+    ~UIClientTest()
+    {
+        g_signal_handlers_disconnect_matched(m_webView, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+    }
+
+    void waitUntilMainLoopFinishes()
+    {
+        g_main_loop_run(m_mainLoop);
+    }
+
+    Vector<WebViewEvents> m_webViewEvents;
+};
+
+static void testWebViewCreateReadyClose(UIClientTest* test, gconstpointer)
+{
+    test->loadHtml("<html><body _onLoad_=\"window.open().close();\"></html>", 0);
+    test->waitUntilMainLoopFinishes();
+
+    Vector<UIClientTest::WebViewEvents>& events = test->m_webViewEvents;
+    g_assert_cmpint(events.size(), ==, 3);
+    g_assert_cmpint(events[0], ==, UIClientTest::Create);
+    g_assert_cmpint(events[1], ==, UIClientTest::ReadyToShow);
+    g_assert_cmpint(events[2], ==, UIClientTest::Close);
+}
+
 void beforeAll()
 {
     WebViewTest::add("WebKitWebView", "default-context", testWebViewDefaultContext);
     WebViewTest::add("WebKitWebView", "custom-charset", testWebViewCustomCharset);
     Test::add("WebKitWebView", "webviews-share-clients", testWebViewsShareClients);
     WebViewTest::add("WebKitWebView", "settings", testWebViewSettings);
+    UIClientTest::add("WebKitWebView", "create-ready-close", testWebViewCreateReadyClose);
 }
 
 void afterAll()

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/webkit2marshal.list (102672 => 102673)


--- trunk/Source/WebKit2/UIProcess/API/gtk/webkit2marshal.list	2011-12-13 13:13:08 UTC (rev 102672)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/webkit2marshal.list	2011-12-13 13:23:54 UTC (rev 102673)
@@ -1,5 +1,6 @@
 BOOLEAN:OBJECT,STRING,POINTER
 BOOLEAN:OBJECT
 BOOLEAN:VOID
+OBJECT:VOID
 VOID:OBJECT,POINTER
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to