Diff
Modified: trunk/Source/WebKit2/ChangeLog (185547 => 185548)
--- trunk/Source/WebKit2/ChangeLog 2015-06-15 04:13:02 UTC (rev 185547)
+++ trunk/Source/WebKit2/ChangeLog 2015-06-15 11:09:08 UTC (rev 185548)
@@ -1,3 +1,24 @@
+2015-06-15 Carlos Garcia Campos <[email protected]>
+
+ [SOUP] Make WebKitSoupRequestGeneric independent from CustomProtocolManagerImpl
+ https://bugs.webkit.org/show_bug.cgi?id=145966
+
+ Reviewed by Sergio Villar Senin.
+
+ Add WebKitSoupRequestGenericClient with start and finish methods,
+ that are implemented by WebKitSoupRequestGeneric.
+ This allows us to move WebKitSoupRequestGeneric to platform layer.
+
+ * Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.cpp:
+ (WebKit::CustomProtocolManagerImpl::registerScheme):
+ (WebKit::CustomProtocolManagerImpl::start):
+ * Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.h:
+ * WebProcess/soup/WebKitSoupRequestGeneric.cpp:
+ (webkitSoupRequestGenericSendAsync):
+ (webkitSoupRequestGenericSendFinish):
+ * WebProcess/soup/WebKitSoupRequestGeneric.h:
+ * WebProcess/soup/WebKitSoupRequestGenericClient.h: Added.
+
2015-06-14 Dan Bernstein <[email protected]>
Fixed the build.
Modified: trunk/Source/WebKit2/Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.cpp (185547 => 185548)
--- trunk/Source/WebKit2/Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.cpp 2015-06-15 04:13:02 UTC (rev 185547)
+++ trunk/Source/WebKit2/Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.cpp 2015-06-15 11:09:08 UTC (rev 185548)
@@ -93,7 +93,7 @@
SoupSession* session = WebCore::SoupNetworkSession::defaultSession().soupSession();
SoupRequestClass* genericRequestClass = static_cast<SoupRequestClass*>(g_type_class_ref(WEBKIT_TYPE_SOUP_REQUEST_GENERIC));
genericRequestClass->schemes = const_cast<const char**>(reinterpret_cast<char**>(m_schemes->pdata));
- static_cast<WebKitSoupRequestGenericClass*>(g_type_class_ref(WEBKIT_TYPE_SOUP_REQUEST_GENERIC))->customProtocolManager = this;
+ static_cast<WebKitSoupRequestGenericClass*>(g_type_class_ref(WEBKIT_TYPE_SOUP_REQUEST_GENERIC))->client = this;
soup_session_add_feature_by_type(session, WEBKIT_TYPE_SOUP_REQUEST_GENERIC);
}
@@ -184,7 +184,7 @@
m_customProtocolMap.remove(customProtocolID);
}
-void CustomProtocolManagerImpl::send(GTask* task)
+void CustomProtocolManagerImpl::start(GTask* task)
{
uint64_t customProtocolID = generateCustomProtocolID();
WebKitSoupRequestGeneric* request = WEBKIT_SOUP_REQUEST_GENERIC(g_task_get_source_object(task));
Modified: trunk/Source/WebKit2/Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.h (185547 => 185548)
--- trunk/Source/WebKit2/Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.h 2015-06-15 04:13:02 UTC (rev 185547)
+++ trunk/Source/WebKit2/Shared/Network/CustomProtocols/soup/CustomProtocolManagerImpl.h 2015-06-15 11:09:08 UTC (rev 185548)
@@ -20,13 +20,11 @@
#ifndef CustomProtocolManagerImpl_h
#define CustomProtocolManagerImpl_h
+#include "WebKitSoupRequestGenericClient.h"
#include <wtf/HashMap.h>
#include <wtf/glib/GRefPtr.h>
#include <wtf/text/WTFString.h>
-typedef struct _GTask GTask;
-typedef struct _GInputStream GInputStream;
-
namespace IPC {
class DataReference;
} // namespace IPC
@@ -41,7 +39,7 @@
class ChildProcess;
struct WebSoupRequestAsyncData;
-class CustomProtocolManagerImpl {
+class CustomProtocolManagerImpl : public WebKitSoupRequestGenericClient {
WTF_MAKE_NONCOPYABLE(CustomProtocolManagerImpl);
public:
explicit CustomProtocolManagerImpl(ChildProcess*);
@@ -55,11 +53,10 @@
void didReceiveResponse(uint64_t customProtocolID, const WebCore::ResourceResponse&);
void didFinishLoading(uint64_t customProtocolID);
- // SoupRequest implementation.
- void send(GTask*);
- GInputStream* finish(GTask*, GError**);
-
private:
+ void start(GTask*) final override;
+ GInputStream* finish(GTask*, GError**) final override;
+
ChildProcess* m_childProcess;
GRefPtr<GPtrArray> m_schemes;
HashMap<uint64_t, std::unique_ptr<WebSoupRequestAsyncData>> m_customProtocolMap;
Modified: trunk/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.cpp (185547 => 185548)
--- trunk/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.cpp 2015-06-15 04:13:02 UTC (rev 185547)
+++ trunk/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.cpp 2015-06-15 11:09:08 UTC (rev 185548)
@@ -46,17 +46,17 @@
static void webkitSoupRequestGenericSendAsync(SoupRequest* request, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer userData)
{
- CustomProtocolManagerImpl* customProtocolManager = WEBKIT_SOUP_REQUEST_GENERIC_GET_CLASS(request)->customProtocolManager;
- ASSERT(customProtocolManager);
- customProtocolManager->send(g_task_new(request, cancellable, callback, userData));
+ WebKitSoupRequestGenericClient* client = WEBKIT_SOUP_REQUEST_GENERIC_GET_CLASS(request)->client;
+ ASSERT(client);
+ client->start(g_task_new(request, cancellable, callback, userData));
}
static GInputStream* webkitSoupRequestGenericSendFinish(SoupRequest* request, GAsyncResult* result, GError** error)
{
- g_return_val_if_fail(g_task_is_valid(result, request), 0);
- CustomProtocolManagerImpl* customProtocolManager = WEBKIT_SOUP_REQUEST_GENERIC_GET_CLASS(request)->customProtocolManager;
- ASSERT(customProtocolManager);
- return customProtocolManager->finish(G_TASK(result), error);
+ g_return_val_if_fail(g_task_is_valid(result, request), nullptr);
+ WebKitSoupRequestGenericClient* client = WEBKIT_SOUP_REQUEST_GENERIC_GET_CLASS(request)->client;
+ ASSERT(client);
+ return client->finish(G_TASK(result), error);
}
static goffset webkitSoupRequestGenericGetContentLength(SoupRequest* request)
Modified: trunk/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.h (185547 => 185548)
--- trunk/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.h 2015-06-15 04:13:02 UTC (rev 185547)
+++ trunk/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGeneric.h 2015-06-15 11:09:08 UTC (rev 185548)
@@ -20,7 +20,7 @@
#ifndef WebKitSoupRequestGeneric_h
#define WebKitSoupRequestGeneric_h
-#include "CustomProtocolManagerImpl.h"
+#include "WebKitSoupRequestGenericClient.h"
#include <glib-object.h>
#include <libsoup/soup.h>
@@ -46,7 +46,7 @@
struct _WebKitSoupRequestGenericClass {
SoupRequestClass parent;
- WebKit::CustomProtocolManagerImpl* customProtocolManager;
+ WebKit::WebKitSoupRequestGenericClient* client;
};
GType webkit_soup_request_generic_get_type();
Added: trunk/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGenericClient.h (0 => 185548)
--- trunk/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGenericClient.h (rev 0)
+++ trunk/Source/WebKit2/WebProcess/soup/WebKitSoupRequestGenericClient.h 2015-06-15 11:09:08 UTC (rev 185548)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2015 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 WebKitSoupRequestGenericClient_h
+#define WebKitSoupRequestGenericClient_h
+
+typedef struct _GError GError;
+typedef struct _GInputStream GInputStream;
+typedef struct _GTask GTask;
+
+namespace WebKit {
+
+class WebKitSoupRequestGenericClient {
+public:
+ virtual void start(GTask*) = 0;
+ virtual GInputStream* finish(GTask*, GError**) = 0;
+};
+
+} // namespace WebKit
+
+#endif // WebKitSoupRequestGenericClient_h