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>