Changeset 148966 in webkit
- Timestamp:
- Apr 23, 2013 8:08:22 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r148965 r148966 1 2013-04-23 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK] Add webkit_uri_request_get_http_headers to WebKit2 GTK+ API 4 https://bugs.webkit.org/show_bug.cgi?id=112160 5 6 Reviewed by Andreas Kling. 7 8 * platform/network/soup/GOwnPtrSoup.cpp: 9 (WTF::SoupMessageHeaders): Add freeOwnedGPtr implementation for 10 SoupMessageHeaders. 11 (WTF): 12 * platform/network/soup/GOwnPtrSoup.h: 13 (WTF): 14 * platform/network/soup/ResourceRequest.h: 15 (ResourceRequest): 16 * platform/network/soup/ResourceRequestSoup.cpp: 17 (WebCore::ResourceRequest::updateSoupMessageHeaders): New function 18 to update the given SoupMessageHeaders with the ResourceRequest 19 headers. 20 (WebCore::ResourceRequest::updateFromSoupMessageHeaders): New 21 function to update the ResourceRequest headers with the given 22 SoupMessageHeaders. 23 (WebCore::ResourceRequest::updateSoupMessage): Use 24 updateSoupMessageHeaders() to update the headers. 25 (WebCore::ResourceRequest::toSoupMessage): Ditto. 26 (WebCore::ResourceRequest::updateFromSoupMessage): Use 27 updateFromSoupMessageHeaders to update the headers. 28 1 29 2013-04-23 Andreas Kling <akling@apple.com> 2 30 -
trunk/Source/WebCore/platform/network/soup/GOwnPtrSoup.cpp
r148507 r148966 37 37 } 38 38 39 template <> void freeOwnedGPtr<SoupMessageHeaders>(SoupMessageHeaders* ptr) 40 { 41 if (ptr) 42 soup_message_headers_free(ptr); 39 43 } 44 45 } -
trunk/Source/WebCore/platform/network/soup/GOwnPtrSoup.h
r112234 r148966 25 25 typedef struct _SoupURI SoupURI; 26 26 typedef struct _SoupCookie SoupCookie; 27 typedef struct SoupMessageHeaders SoupMessageHeaders; 27 28 28 29 namespace WTF { … … 30 31 template<> void freeOwnedGPtr<SoupURI>(SoupURI* ptr); 31 32 template<> void freeOwnedGPtr<SoupCookie>(SoupCookie* ptr); 33 template<> void freeOwnedGPtr<SoupMessageHeaders>(SoupMessageHeaders*); 32 34 33 35 } -
trunk/Source/WebCore/platform/network/soup/ResourceRequest.h
r144216 r148966 70 70 void updateFromDelegatePreservingOldHTTPBody(const ResourceRequest& delegateProvidedRequest) { *this = delegateProvidedRequest; } 71 71 72 void updateSoupMessageHeaders(SoupMessageHeaders*) const; 73 void updateFromSoupMessageHeaders(SoupMessageHeaders*); 72 74 void updateSoupMessage(SoupMessage*) const; 73 75 SoupMessage* toSoupMessage() const; -
trunk/Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp
r145376 r148966 35 35 namespace WebCore { 36 36 37 void ResourceRequest::updateSoupMessageHeaders(SoupMessageHeaders* soupHeaders) const 38 { 39 const HTTPHeaderMap& headers = httpHeaderFields(); 40 if (!headers.isEmpty()) { 41 HTTPHeaderMap::const_iterator end = headers.end(); 42 for (HTTPHeaderMap::const_iterator it = headers.begin(); it != end; ++it) 43 soup_message_headers_append(soupHeaders, it->key.string().utf8().data(), it->value.utf8().data()); 44 } 45 } 46 47 void ResourceRequest::updateFromSoupMessageHeaders(SoupMessageHeaders* soupHeaders) 48 { 49 m_httpHeaderFields.clear(); 50 SoupMessageHeadersIter headersIter; 51 soup_message_headers_iter_init(&headersIter, soupHeaders); 52 const char* headerName; 53 const char* headerValue; 54 while (soup_message_headers_iter_next(&headersIter, &headerName, &headerValue)) 55 m_httpHeaderFields.set(String::fromUTF8(headerName), String::fromUTF8(headerValue)); 56 } 57 37 58 void ResourceRequest::updateSoupMessage(SoupMessage* soupMessage) const 38 59 { … … 42 63 soup_message_set_uri(soupMessage, uri.get()); 43 64 44 const HTTPHeaderMap& headers = httpHeaderFields(); 45 SoupMessageHeaders* soupHeaders = soupMessage->request_headers; 46 if (!headers.isEmpty()) { 47 HTTPHeaderMap::const_iterator end = headers.end(); 48 for (HTTPHeaderMap::const_iterator it = headers.begin(); it != end; ++it) 49 soup_message_headers_append(soupHeaders, it->key.string().utf8().data(), it->value.utf8().data()); 50 } 65 updateSoupMessageHeaders(soupMessage->request_headers); 51 66 52 67 String firstPartyString = firstPartyForCookies().string(); … … 65 80 return 0; 66 81 67 const HTTPHeaderMap& headers = httpHeaderFields(); 68 SoupMessageHeaders* soupHeaders = soupMessage->request_headers; 69 if (!headers.isEmpty()) { 70 HTTPHeaderMap::const_iterator end = headers.end(); 71 for (HTTPHeaderMap::const_iterator it = headers.begin(); it != end; ++it) 72 soup_message_headers_append(soupHeaders, it->key.string().utf8().data(), it->value.utf8().data()); 73 } 82 updateSoupMessageHeaders(soupMessage->request_headers); 74 83 75 84 String firstPartyString = firstPartyForCookies().string(); … … 99 108 m_httpMethod = String::fromUTF8(soupMessage->method); 100 109 101 m_httpHeaderFields.clear(); 102 SoupMessageHeadersIter headersIter; 103 const char* headerName; 104 const char* headerValue; 105 soup_message_headers_iter_init(&headersIter, soupMessage->request_headers); 106 while (soup_message_headers_iter_next(&headersIter, &headerName, &headerValue)) 107 m_httpHeaderFields.set(String::fromUTF8(headerName), String::fromUTF8(headerValue)); 110 updateFromSoupMessageHeaders(soupMessage->request_headers); 108 111 109 112 if (soupMessage->request_body->data) -
trunk/Source/WebKit2/ChangeLog
r148963 r148966 1 2013-04-23 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK] Add webkit_uri_request_get_http_headers to WebKit2 GTK+ API 4 https://bugs.webkit.org/show_bug.cgi?id=112160 5 6 Reviewed by Andreas Kling. 7 8 It allows to load requests with custom headers, or to update the 9 headers of a request before being sent to the server in the 10 WebKitWebPage::send-request callback. 11 12 * UIProcess/API/gtk/WebKitURIRequest.cpp: 13 (_WebKitURIRequestPrivate): Add SoupMessageHeaders. 14 (webkit_uri_request_get_http_headers): Return the HTTP headers of 15 the request as a SoupMessageHeaders if the request is HTTP. A new 16 SoupMessageHeaders is created on demand using the existing headers 17 of the request. 18 (webkitURIRequestGetResourceRequest): Instead of returning a const 19 reference of the internal ResourceRequest, set a request passed as 20 a reference and update its HTTP headers using the 21 SoupMessageHeaders if present. 22 * UIProcess/API/gtk/WebKitURIRequest.h: 23 * UIProcess/API/gtk/WebKitURIRequestPrivate.h: 24 * UIProcess/API/gtk/WebKitWebView.cpp: 25 (webkit_web_view_load_request): Update to the new 26 webkitURIRequestGetResourceRequest API. 27 * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add 28 webkit_uri_request_get_http_headers symbol. 29 * UIProcess/API/gtk/tests/TestLoaderClient.cpp: 30 (testWebPageURI): 31 (testURIRequestHTTPHeaders): 32 (serverCallback): 33 (beforeAll): 34 * WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp: 35 (willSendRequestForFrame): Update to the new 36 webkitURIRequestGetResourceRequest API. 37 1 38 2013-04-23 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> 2 39 -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitURIRequest.cpp
r148679 r148966 23 23 #include "WebKitPrivate.h" 24 24 #include "WebKitURIRequestPrivate.h" 25 #include <WebCore/GOwnPtrSoup.h> 25 26 #include <glib/gi18n-lib.h> 26 27 #include <wtf/text/CString.h> … … 48 49 WebCore::ResourceRequest resourceRequest; 49 50 CString uri; 51 GOwnPtr<SoupMessageHeaders> httpHeaders; 50 52 }; 51 53 … … 146 148 } 147 149 148 WebKitURIRequest* webkitURIRequestCreateForResourceRequest(const WebCore::ResourceRequest& resourceRequest) 150 /** 151 * webkit_uri_request_get_http_headers: 152 * @request: a #WebKitURIRequest 153 * 154 * Get the HTTP headers of a #WebKitURIRequest as a #SoupMessageHeaders. 155 * 156 * Returns: (transfer none): a #SoupMessageHeaders with the HTTP headers of @request 157 * or %NULL if @request is not an HTTP request. 158 */ 159 SoupMessageHeaders* webkit_uri_request_get_http_headers(WebKitURIRequest* request) 160 { 161 g_return_val_if_fail(WEBKIT_IS_URI_REQUEST(request), 0); 162 163 if (request->priv->httpHeaders) 164 return request->priv->httpHeaders.get(); 165 166 if (!request->priv->resourceRequest.url().protocolIsInHTTPFamily()) 167 return 0; 168 169 request->priv->httpHeaders.set(soup_message_headers_new(SOUP_MESSAGE_HEADERS_REQUEST)); 170 request->priv->resourceRequest.updateSoupMessageHeaders(request->priv->httpHeaders.get()); 171 return request->priv->httpHeaders.get(); 172 } 173 174 WebKitURIRequest* webkitURIRequestCreateForResourceRequest(const ResourceRequest& resourceRequest) 149 175 { 150 176 WebKitURIRequest* uriRequest = WEBKIT_URI_REQUEST(g_object_new(WEBKIT_TYPE_URI_REQUEST, NULL)); … … 153 179 } 154 180 155 const WebCore::ResourceRequest& webkitURIRequestGetResourceRequest(WebKitURIRequest* uriRequest)181 void webkitURIRequestGetResourceRequest(WebKitURIRequest* request, ResourceRequest& resourceRequest) 156 182 { 157 return uriRequest->priv->resourceRequest; 183 resourceRequest = request->priv->resourceRequest; 184 if (request->priv->httpHeaders) 185 resourceRequest.updateFromSoupMessageHeaders(request->priv->httpHeaders.get()); 158 186 } -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitURIRequest.h
r148679 r148966 26 26 27 27 #include <glib-object.h> 28 #include <libsoup/soup.h> 28 29 #include <webkit2/WebKitDefines.h> 29 30 … … 54 55 55 56 WEBKIT_API GType 56 webkit_uri_request_get_type (void);57 webkit_uri_request_get_type (void); 57 58 58 59 WEBKIT_API WebKitURIRequest * 59 webkit_uri_request_new (const gchar *uri);60 webkit_uri_request_new (const gchar *uri); 60 61 61 62 WEBKIT_API const gchar * 62 webkit_uri_request_get_uri (WebKitURIRequest *request);63 webkit_uri_request_get_uri (WebKitURIRequest *request); 63 64 64 65 WEBKIT_API void 65 webkit_uri_request_set_uri (WebKitURIRequest *request, 66 const gchar *uri); 66 webkit_uri_request_set_uri (WebKitURIRequest *request, 67 const gchar *uri); 68 69 WEBKIT_API SoupMessageHeaders * 70 webkit_uri_request_get_http_headers (WebKitURIRequest *request); 67 71 68 72 G_END_DECLS -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitURIRequestPrivate.h
r129475 r148966 31 31 32 32 WebKitURIRequest* webkitURIRequestCreateForResourceRequest(const WebCore::ResourceRequest&); 33 const WebCore::ResourceRequest& webkitURIRequestGetResourceRequest(WebKitURIRequest*);33 void webkitURIRequestGetResourceRequest(WebKitURIRequest*, WebCore::ResourceRequest&); 34 34 35 35 #endif // WebKitURIRequestPrivate_h -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp
r148665 r148966 1844 1844 g_return_if_fail(WEBKIT_IS_URI_REQUEST(request)); 1845 1845 1846 RefPtr<WebURLRequest> urlRequest = WebURLRequest::create(webkitURIRequestGetResourceRequest(request)); 1846 ResourceRequest resourceRequest; 1847 webkitURIRequestGetResourceRequest(request, resourceRequest); 1848 RefPtr<WebURLRequest> urlRequest = WebURLRequest::create(resourceRequest); 1847 1849 getPage(webView)->loadURLRequest(urlRequest.get()); 1848 1850 } -
trunk/Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt
r148887 r148966 337 337 webkit_uri_request_get_uri 338 338 webkit_uri_request_set_uri 339 webkit_uri_request_get_http_headers 339 340 340 341 <SUBSECTION Standard> -
trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestLoaderClient.cpp
r148666 r148966 33 33 static WebKitTestServer* kServer; 34 34 35 const char* kDNTHeaderNotPresent = "DNT header not present"; 36 35 37 static void testLoadingStatus(LoadTrackingTest* test, gconstpointer data) 36 38 { … … 346 348 } 347 349 350 static void testURIRequestHTTPHeaders(WebViewTest* test, gconstpointer) 351 { 352 GRefPtr<WebKitURIRequest> uriRequest = adoptGRef(webkit_uri_request_new("file:///foo/bar")); 353 g_assert(uriRequest.get()); 354 g_assert_cmpstr(webkit_uri_request_get_uri(uriRequest.get()), ==, "file:///foo/bar"); 355 g_assert(!webkit_uri_request_get_http_headers(uriRequest.get())); 356 357 // Load a request with no Do Not Track header. 358 webkit_uri_request_set_uri(uriRequest.get(), kServer->getURIForPath("/do-not-track-header").data()); 359 test->loadRequest(uriRequest.get()); 360 test->waitUntilLoadFinished(); 361 362 size_t mainResourceDataSize = 0; 363 const char* mainResourceData = test->mainResourceData(mainResourceDataSize); 364 g_assert_cmpint(mainResourceDataSize, ==, strlen(kDNTHeaderNotPresent)); 365 g_assert(!strncmp(mainResourceData, kDNTHeaderNotPresent, mainResourceDataSize)); 366 367 // Add the Do Not Track header and load the request again. 368 SoupMessageHeaders* headers = webkit_uri_request_get_http_headers(uriRequest.get()); 369 g_assert(headers); 370 soup_message_headers_append(headers, "DNT", "1"); 371 test->loadRequest(uriRequest.get()); 372 test->waitUntilLoadFinished(); 373 374 mainResourceData = test->mainResourceData(mainResourceDataSize); 375 g_assert_cmpint(mainResourceDataSize, ==, 1); 376 g_assert(!strncmp(mainResourceData, "1", mainResourceDataSize)); 377 378 // Load a URI for which the web extension will add the Do Not Track header. 379 test->loadURI(kServer->getURIForPath("/add-do-not-track-header").data()); 380 test->waitUntilLoadFinished(); 381 382 mainResourceData = test->mainResourceData(mainResourceDataSize); 383 g_assert_cmpint(mainResourceDataSize, ==, 1); 384 g_assert(!strncmp(mainResourceData, "1", mainResourceDataSize)); 385 } 386 348 387 static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer) 349 388 { … … 376 415 soup_server_unpause_message(server, message); 377 416 return; 417 } else if (g_str_equal(path, "/do-not-track-header") || g_str_equal(path, "/add-do-not-track-header")) { 418 const char* doNotTrack = soup_message_headers_get_one(message->request_headers, "DNT"); 419 if (doNotTrack) 420 soup_message_body_append(message->response_body, SOUP_MEMORY_COPY, doNotTrack, strlen(doNotTrack)); 421 else 422 soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, kDNTHeaderNotPresent, strlen(kDNTHeaderNotPresent)); 423 soup_message_set_status(message, SOUP_STATUS_OK); 378 424 } else 379 425 soup_message_set_status(message, SOUP_STATUS_NOT_FOUND); … … 410 456 ViewIsLoadingTest::add("WebKitWebView", "is-loading", testWebViewIsLoading); 411 457 WebPageURITest::add("WebKitWebPage", "get-uri", testWebPageURI); 458 WebViewTest::add("WebKitURIRequest", "http-headers", testURIRequestHTTPHeaders); 412 459 } 413 460 -
trunk/Source/WebKit2/UIProcess/API/gtk/tests/WebExtensionTest.cpp
r148679 r148966 77 77 GOwnPtr<char> newURI(g_strdup_printf("%s/javascript.js", prefix.get())); 78 78 webkit_uri_request_set_uri(request, newURI.get()); 79 } else if (g_str_has_suffix(requestURI, "/add-do-not-track-header")) { 80 SoupMessageHeaders* headers = webkit_uri_request_get_http_headers(request); 81 g_assert(headers); 82 soup_message_headers_append(headers, "DNT", "1"); 79 83 } else if (g_str_has_suffix(requestURI, "/cancel-this.js")) 80 84 return TRUE; -
trunk/Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp
r148679 r148966 138 138 return 0; 139 139 140 RefPtr<WebURLRequest> newRequest = WebURLRequest::create(webkitURIRequestGetResourceRequest(request.get())); 140 ResourceRequest resourceRequest; 141 webkitURIRequestGetResourceRequest(request.get(), resourceRequest); 142 RefPtr<WebURLRequest> newRequest = WebURLRequest::create(resourceRequest); 141 143 142 144 ImmutableDictionary::MapType message; -
trunk/Tools/ChangeLog
r148963 r148966 1 2013-04-23 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK] Add webkit_uri_request_get_http_headers to WebKit2 GTK+ API 4 https://bugs.webkit.org/show_bug.cgi?id=112160 5 6 Reviewed by Andreas Kling. 7 8 * MiniBrowser/gtk/GNUmakefile.am: Add missing libsoup flags to 9 CPPFLAGS. 10 1 11 2013-04-23 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> 2 12 -
trunk/Tools/MiniBrowser/gtk/GNUmakefile.am
r141126 r148966 15 15 $(FREETYPE_CFLAGS) \ 16 16 $(GLIB_CFLAGS) \ 17 $(GTK_CFLAGS) 17 $(GTK_CFLAGS) \ 18 $(LIBSOUP_CFLAGS) 18 19 19 20 Programs_MiniBrowser_SOURCES = \
Note: See TracChangeset
for help on using the changeset viewer.