Title: [100414] trunk/Source/WebKit2
Revision
100414
Author
[email protected]
Date
2011-11-15 23:47:46 -0800 (Tue, 15 Nov 2011)

Log Message

[GTK] Add webkit_web_view_load_request() to WebKit2 GTK+ API
https://bugs.webkit.org/show_bug.cgi?id=72380

Reviewed by Martin Robinson.

It adds an initial implementation of WebKitNetworkRequest
class that only contains a URI for now.

* GNUmakefile.am:
* UIProcess/API/gtk/WebKitNetworkRequest.cpp: Added.
(webkitNetworkRequestFinalize):
(webkitNetworkRequestGetProperty):
(webkitNetworkRequestSetProperty):
(webkit_network_request_class_init):
(webkit_network_request_init):
(webkit_network_request_new):
(webkit_network_request_get_uri):
* UIProcess/API/gtk/WebKitNetworkRequest.h: Added.
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkit_web_view_load_request): Use WKPageLoadURLRequest() to load
the given WebKitNetworkRequest.
* UIProcess/API/gtk/WebKitWebView.h:
* UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols.
* UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp:
(testLoadRequest):
(beforeAll):
* UIProcess/API/gtk/tests/WebViewTest.cpp:
(WebViewTest::loadRequest):
* UIProcess/API/gtk/tests/WebViewTest.h:
* UIProcess/API/gtk/webkit2.h:

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (100413 => 100414)


--- trunk/Source/WebKit2/ChangeLog	2011-11-16 07:24:21 UTC (rev 100413)
+++ trunk/Source/WebKit2/ChangeLog	2011-11-16 07:47:46 UTC (rev 100414)
@@ -1,3 +1,36 @@
+2011-11-15  Carlos Garcia Campos  <[email protected]>
+
+        [GTK] Add webkit_web_view_load_request() to WebKit2 GTK+ API
+        https://bugs.webkit.org/show_bug.cgi?id=72380
+
+        Reviewed by Martin Robinson.
+
+        It adds an initial implementation of WebKitNetworkRequest
+        class that only contains a URI for now.
+
+        * GNUmakefile.am:
+        * UIProcess/API/gtk/WebKitNetworkRequest.cpp: Added.
+        (webkitNetworkRequestFinalize):
+        (webkitNetworkRequestGetProperty):
+        (webkitNetworkRequestSetProperty):
+        (webkit_network_request_class_init):
+        (webkit_network_request_init):
+        (webkit_network_request_new):
+        (webkit_network_request_get_uri):
+        * UIProcess/API/gtk/WebKitNetworkRequest.h: Added.
+        * UIProcess/API/gtk/WebKitWebView.cpp:
+        (webkit_web_view_load_request): Use WKPageLoadURLRequest() to load
+        the given WebKitNetworkRequest.
+        * UIProcess/API/gtk/WebKitWebView.h:
+        * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new symbols.
+        * UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp:
+        (testLoadRequest):
+        (beforeAll):
+        * UIProcess/API/gtk/tests/WebViewTest.cpp:
+        (WebViewTest::loadRequest):
+        * UIProcess/API/gtk/tests/WebViewTest.h:
+        * UIProcess/API/gtk/webkit2.h:
+
 2011-11-15  Andy Estes  <[email protected]>
 
         Consolidate the logic that creates run loop observers for flushing layer tree changes to CoreAnimation

Modified: trunk/Source/WebKit2/GNUmakefile.am (100413 => 100414)


--- trunk/Source/WebKit2/GNUmakefile.am	2011-11-16 07:24:21 UTC (rev 100413)
+++ trunk/Source/WebKit2/GNUmakefile.am	2011-11-16 07:47:46 UTC (rev 100414)
@@ -79,6 +79,7 @@
 	$(WebKit2)/UIProcess/API/gtk/WebKitBackForwardListItem.h \
 	$(WebKit2)/UIProcess/API/gtk/WebKitDefines.h \
 	$(WebKit2)/UIProcess/API/gtk/WebKitError.h \
+	$(WebKit2)/UIProcess/API/gtk/WebKitNetworkRequest.h \
 	$(WebKit2)/UIProcess/API/gtk/WebKitWebContext.h \
 	$(WebKit2)/UIProcess/API/gtk/WebKitWebLoaderClient.h \
 	$(WebKit2)/UIProcess/API/gtk/WebKitSettings.h \
@@ -501,6 +502,8 @@
 	Source/WebKit2/UIProcess/API/gtk/WebKitDefines.h \
 	Source/WebKit2/UIProcess/API/gtk/WebKitError.h \
 	Source/WebKit2/UIProcess/API/gtk/WebKitError.cpp \
+	Source/WebKit2/UIProcess/API/gtk/WebKitNetworkRequest.cpp \
+	Source/WebKit2/UIProcess/API/gtk/WebKitNetworkRequest.h \
 	Source/WebKit2/UIProcess/API/gtk/WebKitPrivate.h \
 	Source/WebKit2/UIProcess/API/gtk/WebKitSettings.cpp \
 	Source/WebKit2/UIProcess/API/gtk/WebKitSettings.h \

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


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitNetworkRequest.cpp	                        (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitNetworkRequest.cpp	2011-11-16 07:47:46 UTC (rev 100414)
@@ -0,0 +1,132 @@
+/*
+ * 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 "WebKitNetworkRequest.h"
+
+#include "WebKitPrivate.h"
+#include "WebURLRequest.h"
+#include <glib/gi18n-lib.h>
+#include <wtf/gobject/GRefPtr.h>
+#include <wtf/text/CString.h>
+
+enum {
+    PROP_0,
+
+    PROP_URI
+};
+
+using namespace WebCore;
+
+G_DEFINE_TYPE(WebKitNetworkRequest, webkit_network_request, G_TYPE_OBJECT)
+
+struct _WebKitNetworkRequestPrivate {
+    CString uri;
+};
+
+static void webkitNetworkRequestFinalize(GObject* object)
+{
+    WEBKIT_NETWORK_REQUEST(object)->priv->~WebKitNetworkRequestPrivate();
+    G_OBJECT_CLASS(webkit_network_request_parent_class)->finalize(object);
+}
+
+static void webkitNetworkRequestGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* paramSpec)
+{
+    WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(object);
+
+    switch (propId) {
+    case PROP_URI:
+        g_value_set_string(value, webkit_network_request_get_uri(request));
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
+    }
+}
+
+static void webkitNetworkRequestSetProperty(GObject* object, guint propId, const GValue* value, GParamSpec* paramSpec)
+{
+    WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(object);
+
+    switch (propId) {
+    case PROP_URI:
+        request->priv->uri = g_value_get_string(value);
+        break;
+    default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec);
+    }
+}
+
+static void webkit_network_request_class_init(WebKitNetworkRequestClass* requestClass)
+{
+    GObjectClass* objectClass = G_OBJECT_CLASS(requestClass);
+
+    objectClass->finalize = webkitNetworkRequestFinalize;
+    objectClass->get_property = webkitNetworkRequestGetProperty;
+    objectClass->set_property = webkitNetworkRequestSetProperty;
+
+    /**
+     * WebKitNetworkRequest:uri:
+     *
+     * The URI to which the request will be made.
+     */
+    g_object_class_install_property(objectClass, PROP_URI,
+                                    g_param_spec_string("uri",
+                                                        _("URI"),
+                                                        _("The URI to which the request will be made."),
+                                                        0,
+                                                        static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
+
+    g_type_class_add_private(requestClass, sizeof(WebKitNetworkRequestPrivate));
+}
+
+static void webkit_network_request_init(WebKitNetworkRequest* request)
+{
+    WebKitNetworkRequestPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(request, WEBKIT_TYPE_NETWORK_REQUEST, WebKitNetworkRequestPrivate);
+    request->priv = priv;
+    new (priv) WebKitNetworkRequestPrivate();
+}
+
+/**
+ * webkit_network_request_new:
+ * @uri: an URI
+ *
+ * Creates a new #WebKitNetworkRequest for the given URI.
+ *
+ * Returns: a new #WebKitNetworkRequest
+ */
+WebKitNetworkRequest* webkit_network_request_new(const gchar* uri)
+{
+    g_return_val_if_fail(uri, 0);
+
+    return WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "uri", uri, NULL));
+}
+
+/**
+ * webkit_network_request_get_uri:
+ * @request: a #WebKitNetworkRequest
+ *
+ * Returns: the uri of the #WebKitNetworkRequest
+ */
+const gchar* webkit_network_request_get_uri(WebKitNetworkRequest* request)
+{
+    g_return_val_if_fail(WEBKIT_IS_NETWORK_REQUEST(request), 0);
+
+    return request->priv->uri.data();
+}
+

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


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitNetworkRequest.h	                        (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitNetworkRequest.h	2011-11-16 07:47:46 UTC (rev 100414)
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+
+#if !defined(__WEBKIT2_H_INSIDE__) && !defined(WEBKIT2_COMPILATION)
+#error "Only <webkit2/webkit2.h> can be included directly."
+#endif
+
+#ifndef WebKitNetworkRequest_h
+#define WebKitNetworkRequest_h
+
+#include <glib-object.h>
+#include <webkit2/WebKitDefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_NETWORK_REQUEST            (webkit_network_request_get_type())
+#define WEBKIT_NETWORK_REQUEST(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_NETWORK_REQUEST, WebKitNetworkRequest))
+#define WEBKIT_IS_NETWORK_REQUEST(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_NETWORK_REQUEST))
+#define WEBKIT_NETWORK_REQUEST_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),  WEBKIT_TYPE_NETWORK_REQUEST, WebKitNetworkRequestClass))
+#define WEBKIT_IS_NETWORK_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),  WEBKIT_TYPE_NETWORK_REQUEST))
+#define WEBKIT_NETWORK_REQUEST_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj),  WEBKIT_TYPE_NETWORK_REQUEST, WebKitNetworkRequestClass))
+
+typedef struct _WebKitNetworkRequest WebKitNetworkRequest;
+typedef struct _WebKitNetworkRequestClass WebKitNetworkRequestClass;
+typedef struct _WebKitNetworkRequestPrivate WebKitNetworkRequestPrivate;
+
+struct _WebKitNetworkRequest {
+    GObject parent;
+
+    /*< private >*/
+    WebKitNetworkRequestPrivate *priv;
+};
+
+struct _WebKitNetworkRequestClass {
+    GObjectClass parent_class;
+
+};
+
+WEBKIT_API GType
+webkit_network_request_get_type (void);
+
+WEBKIT_API WebKitNetworkRequest *
+webkit_network_request_new      (const gchar          *uri);
+
+WEBKIT_API const gchar *
+webkit_network_request_get_uri  (WebKitNetworkRequest *request);
+
+G_END_DECLS
+
+#endif

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


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp	2011-11-16 07:24:21 UTC (rev 100413)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp	2011-11-16 07:47:46 UTC (rev 100414)
@@ -416,6 +416,27 @@
 }
 
 /**
+ * webkit_web_view_load_request:
+ * @web_view: a #WebKitWebView
+ * @request: a #WebKitNetworkRequest to load
+ *
+ * Requests loading of the specified #WebKitNetworkRequest.
+ * You can monitor the status of the load operation using the
+ * #WebKitWebLoaderClient of @web_view. See webkit_web_view_get_loader_client().
+ */
+void webkit_web_view_load_request(WebKitWebView* webView, WebKitNetworkRequest* request)
+{
+    g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+    g_return_if_fail(WEBKIT_IS_NETWORK_REQUEST(request));
+
+    WKRetainPtr<WKURLRef> wkURL(AdoptWK, WKURLCreateWithUTF8CString(webkit_network_request_get_uri(request)));
+    WKRetainPtr<WKURLRequestRef> wkRequest(AdoptWK, WKURLRequestCreateWithWKURL(wkURL.get()));
+    WebPageProxy* page = webkitWebViewBaseGetPage(WEBKIT_WEB_VIEW_BASE(webView));
+    WKPageLoadURLRequest(toAPI(page), wkRequest.get());
+    webkitWebViewUpdateURI(webView);
+}
+
+/**
  * webkit_web_view_get_title:
  * @web_view: a #WebKitWebView
  * 

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


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h	2011-11-16 07:24:21 UTC (rev 100413)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h	2011-11-16 07:47:46 UTC (rev 100414)
@@ -30,6 +30,7 @@
 
 #include <webkit2/WebKitBackForwardList.h>
 #include <webkit2/WebKitDefines.h>
+#include <webkit2/WebKitNetworkRequest.h>
 #include <webkit2/WebKitWebContext.h>
 #include <webkit2/WebKitWebLoaderClient.h>
 #include <webkit2/WebKitSettings.h>
@@ -104,6 +105,9 @@
                                               const gchar               *content,
                                               const gchar               *base_uri,
                                               const gchar               *unreachable_uri);
+WEBKIT_API void
+webkit_web_view_load_request                 (WebKitWebView             *web_view,
+                                              WebKitNetworkRequest      *request);
 
 WEBKIT_API void
 webkit_web_view_stop_loading                 (WebKitWebView             *web_view);

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml (100413 => 100414)


--- trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml	2011-11-16 07:24:21 UTC (rev 100413)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml	2011-11-16 07:47:46 UTC (rev 100414)
@@ -18,6 +18,7 @@
     <xi:include href=""
     <xi:include href=""
     <xi:include href=""
+    <xi:include href=""
     <xi:include href=""
   </chapter>
 

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt (100413 => 100414)


--- trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt	2011-11-16 07:24:21 UTC (rev 100413)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt	2011-11-16 07:47:46 UTC (rev 100414)
@@ -55,6 +55,7 @@
 webkit_web_view_load_html
 webkit_web_view_load_plain_text
 webkit_web_view_load_alternate_html
+webkit_web_view_load_request
 webkit_web_view_can_go_back
 webkit_web_view_go_back
 webkit_web_view_can_go_forward
@@ -221,6 +222,26 @@
 </SECTION>
 
 <SECTION>
+<FILE>WebKitNetworkRequest</FILE>
+WebKitNetworkRequest
+webkit_network_request_new
+webkit_network_request_get_uri
+
+<SUBSECTION Standard>
+WebKitNetworkRequestClass
+WEBKIT_TYPE_NETWORK_REQUEST
+WEBKIT_NETWORK_REQUEST
+WEBKIT_IS_NETWORK_REQUEST
+WEBKIT_NETWORK_REQUEST_CLASS
+WEBKIT_IS_NETWORK_REQUEST_CLASS
+WEBKIT_NETWORK_REQUEST_GET_CLASS
+
+<SUBSECTION Private>
+WebKitNetworkRequestPrivate
+webkit_network_request_get_type
+</SECTION>
+
+<SECTION>
 <FILE>WebKitError</FILE>
 WEBKIT_NETWORK_ERROR
 WEBKIT_PLUGIN_ERROR

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp (100413 => 100414)


--- trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp	2011-11-16 07:24:21 UTC (rev 100413)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebLoaderClient.cpp	2011-11-16 07:47:46 UTC (rev 100414)
@@ -84,6 +84,14 @@
     assertNormalLoadHappenedAndClearEvents(test->m_loadEvents);
 }
 
+static void testLoadRequest(LoadTrackingTest* test, gconstpointer)
+{
+    GRefPtr<WebKitNetworkRequest> request(webkit_network_request_new(kServer->getURIForPath("/normal").data()));
+    test->loadRequest(request.get());
+    test->waitUntilLoadFinished();
+    assertNormalLoadHappenedAndClearEvents(test->m_loadEvents);
+}
+
 class LoadStopTrackingTest : public LoadTrackingTest {
 public:
     MAKE_GLIB_TEST_FIXTURE(LoadStopTrackingTest);
@@ -245,7 +253,8 @@
     LoadTrackingTest::add("WebKitWebLoaderClient", "loading-error", testLoadingError);
     LoadTrackingTest::add("WebKitWebView", "load-html", testLoadHtml);
     LoadTrackingTest::add("WebKitWebView", "load-plain-text", testLoadPlainText);
-    LoadTrackingTest::add("WebKitWebLoaderClient", "load-alternate-content", testLoadAlternateContent);
+    LoadTrackingTest::add("WebKitWebView", "load-alternate-content", testLoadAlternateContent);
+    LoadTrackingTest::add("WebKitWebView", "load-request", testLoadRequest);
     LoadStopTrackingTest::add("WebKitWebView", "stop-loading", testLoadCancelled);
     LoadTrackingTest::add("WebKitWebView", "title", testWebViewTitle);
     LoadTrackingTest::add("WebKitWebView", "progress", testLoadProgress);

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.cpp (100413 => 100414)


--- trunk/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.cpp	2011-11-16 07:24:21 UTC (rev 100413)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.cpp	2011-11-16 07:47:46 UTC (rev 100414)
@@ -64,6 +64,12 @@
     webkit_web_view_load_alternate_html(m_webView, html, baseURI, unreachableURI);
 }
 
+void WebViewTest::loadRequest(WebKitNetworkRequest* request)
+{
+    m_activeURI = webkit_network_request_get_uri(request);
+    webkit_web_view_load_request(m_webView, request);
+}
+
 void WebViewTest::goBack()
 {
     if (webkit_web_view_can_go_back(m_webView)) {

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.h (100413 => 100414)


--- trunk/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.h	2011-11-16 07:24:21 UTC (rev 100413)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.h	2011-11-16 07:47:46 UTC (rev 100414)
@@ -35,6 +35,7 @@
     void loadHtml(const char* html, const char* baseURI);
     void loadPlainText(const char* plainText);
     void loadAlternateHTML(const char* html, const char* baseURI, const char* unreachableURI);
+    void loadRequest(WebKitNetworkRequest*);
     void goBack();
     void goForward();
     void goToBackForwardListItem(WebKitBackForwardListItem*);

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/webkit2.h (100413 => 100414)


--- trunk/Source/WebKit2/UIProcess/API/gtk/webkit2.h	2011-11-16 07:24:21 UTC (rev 100413)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/webkit2.h	2011-11-16 07:47:46 UTC (rev 100414)
@@ -28,6 +28,7 @@
 #include <webkit2/WebKitDefines.h>
 #include <webkit2/WebKitEnumTypes.h>
 #include <webkit2/WebKitError.h>
+#include <webkit2/WebKitNetworkRequest.h>
 #include <webkit2/WebKitSettings.h>
 #include <webkit2/WebKitWebContext.h>
 #include <webkit2/WebKitWebLoaderClient.h>
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to