Changeset 51825 in webkit
- Timestamp:
- Dec 7, 2009 6:44:05 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r51823 r51825 1 2009-12-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> 2 3 Reviewed by Xan Lopez. 4 5 [GTK] Doesn't respect Content-Disposition for downloads, and provides no way for apps to do that 6 https://bugs.webkit.org/show_bug.cgi?id=32247 7 8 Allow creating a ResourceResponse from a SoupMessage. 9 10 Covered by API test. 11 12 * platform/network/soup/ResourceResponse.h: 13 (WebCore::ResourceResponse::ResourceResponse): 14 * platform/network/soup/ResourceResponseSoup.cpp: 15 (WebCore::ResourceResponse::updateFromSoupMessage): 16 1 17 2009-12-07 Nikolas Zimmermann <nzimmermann@rim.com> 2 18 -
trunk/WebCore/platform/network/soup/ResourceResponse.h
r48118 r51825 45 45 } 46 46 47 ResourceResponse(SoupMessage* soupMessage) 48 : ResourceResponseBase() 49 { 50 updateFromSoupMessage(soupMessage); 51 } 52 47 53 SoupMessage* toSoupMessage() const; 54 void updateFromSoupMessage(SoupMessage* soupMessage); 48 55 49 56 private: -
trunk/WebCore/platform/network/soup/ResourceResponseSoup.cpp
r48118 r51825 23 23 24 24 #include "CString.h" 25 #include "GOwnPtr.h" 25 26 #include "PlatformString.h" 26 27 … … 50 51 } 51 52 53 void ResourceResponse::updateFromSoupMessage(SoupMessage* soupMessage) 54 { 55 SoupURI* soupURI = soup_message_get_uri(soupMessage); 56 GOwnPtr<gchar> uri(soup_uri_to_string(soupURI, FALSE)); 57 m_url = KURL(KURL(), String::fromUTF8(uri.get())); 58 59 m_httpStatusCode = soupMessage->status_code; 60 61 SoupMessageHeadersIter headersIter; 62 const char* headerName; 63 const char* headerValue; 64 65 soup_message_headers_iter_init(&headersIter, soupMessage->response_headers); 66 while (soup_message_headers_iter_next(&headersIter, &headerName, &headerValue)) 67 m_httpHeaderFields.set(String::fromUTF8(headerName), String::fromUTF8(headerValue)); 52 68 } 69 70 } -
trunk/WebKit/gtk/ChangeLog
r51783 r51825 1 2009-12-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> 2 3 Reviewed by Xan Lopez. 4 5 [GTK] Doesn't respect Content-Disposition for downloads, and provides no way for apps to do that 6 https://bugs.webkit.org/show_bug.cgi?id=32247 7 8 Provide a way for applications to respect Content-Disposition, by 9 fetching the WebKitNetworkResponse from the frame during 10 mime-type-policy-decision-requested. 11 12 * WebCoreSupport/FrameLoaderClientGtk.cpp: 13 (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType): Download 14 content when Content-Disposition is attachment. 15 * tests/testmimehandling.c: 16 (server_callback): 17 (mime_type_policy_decision_requested_cb): 18 * tests/testwebframe.c: 19 (test_webkit_web_frame_response): 20 (main): 21 * webkit/webkitprivate.cpp: 22 (WebKit::core): 23 * webkit/webkitwebframe.cpp: 24 (webkit_web_frame_get_network_response): 25 * webkit/webkitwebframe.h: 26 1 27 2009-12-07 Gyuyoung Kim <gyuyoung@gmail.com> 2 28 -
trunk/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp
r51644 r51825 306 306 return; 307 307 308 GOwnPtr<WebKitNetworkResponse> networkResponse(webkit_web_frame_get_network_response(m_frame)); 309 if (networkResponse) { 310 ResourceResponse response = core(networkResponse.get()); 311 if (response.isAttachment()) { 312 webkit_web_policy_decision_download(policyDecision); 313 return; 314 } 315 } 316 308 317 if (canShowMIMEType(mimeType)) 309 webkit_web_policy_decision_use 318 webkit_web_policy_decision_use(policyDecision); 310 319 else 311 webkit_web_policy_decision_ignore 320 webkit_web_policy_decision_ignore(policyDecision); 312 321 } 313 322 -
trunk/WebKit/gtk/tests/testmimehandling.c
r51764 r51825 68 68 GError* error = NULL; 69 69 70 soup_message_headers_append(msg->response_headers, "Content-Disposition", "attachment; filename=test.txt"); 71 70 72 g_file_get_contents("test.txt", &contents, &length, &error); 71 73 g_assert(!error); … … 105 107 g_assert(webkit_web_view_can_show_mime_type(view, mime_type)); 106 108 } else if (g_str_equal(type, "text")) { 109 WebKitNetworkResponse* response = webkit_web_frame_get_network_response(frame); 110 SoupMessage* message = webkit_network_response_get_message(response); 111 char* disposition; 112 113 g_assert(message); 114 soup_message_headers_get_content_disposition(message->response_headers, 115 &disposition, NULL); 116 g_object_unref(response); 117 118 g_assert_cmpstr(disposition, ==, "attachment"); 119 g_free(disposition); 120 107 121 g_assert_cmpstr(mime_type, ==, "text/plain"); 108 122 g_assert(webkit_web_view_can_show_mime_type(view, mime_type)); -
trunk/WebKit/gtk/tests/testwebframe.c
r43530 r51825 156 156 } 157 157 158 static void test_webkit_web_frame_response() 159 { 160 WebKitWebFrame* frame = g_object_new(WEBKIT_TYPE_WEB_FRAME, NULL); 161 WebKitNetworkResponse* response = webkit_web_frame_get_network_response(frame); 162 g_assert(!response); 163 g_object_unref(frame); 164 } 165 158 166 int main(int argc, char** argv) 159 167 { … … 165 173 g_test_add_func("/webkit/webframe/lifetime", test_webkit_web_frame_lifetime); 166 174 g_test_add_func("/webkit/webview/printing", test_webkit_web_frame_printing); 175 g_test_add_func("/webkit/webview/response", test_webkit_web_frame_response); 167 176 return g_test_run (); 168 177 } -
trunk/WebKit/gtk/webkit/webkitprivate.cpp
r50507 r51825 38 38 #include "ResourceHandleClient.h" 39 39 #include "ResourceHandleInternal.h" 40 #include "ResourceResponse.h" 40 41 #include <runtime/InitializeThreading.h> 41 42 #include "SecurityOrigin.h" 43 #include "webkitnetworkresponse.h" 42 44 43 45 #if ENABLE(DATABASE) … … 111 113 KURL url = KURL(KURL(), String::fromUTF8(webkit_network_request_get_uri(request))); 112 114 return ResourceRequest(url); 115 } 116 117 WebCore::ResourceResponse core(WebKitNetworkResponse* response) 118 { 119 SoupMessage* soupMessage = webkit_network_response_get_message(response); 120 if (soupMessage) 121 return ResourceResponse(soupMessage); 122 123 return ResourceResponse(); 113 124 } 114 125 -
trunk/WebKit/gtk/webkit/webkitwebframe.cpp
r51567 r51825 1142 1142 view->layout(); 1143 1143 } 1144 1145 /** 1146 * webkit_web_frame_get_network_response: 1147 * @frame: a #WebKitWebFrame 1148 * 1149 * Returns a #WebKitNetworkResponse object representing the response 1150 * that was given to the request for the given frame, or NULL if the 1151 * frame was not created by a load. You must unref the object when you 1152 * are done with it. 1153 * 1154 * Return value: a #WebKitNetworkResponse object 1155 * 1156 * Since: 1.1.18 1157 */ 1158 WebKitNetworkResponse* webkit_web_frame_get_network_response(WebKitWebFrame* frame) 1159 { 1160 Frame* coreFrame = core(frame); 1161 if (!coreFrame) 1162 return NULL; 1163 1164 WebCore::DocumentLoader* loader = coreFrame->loader()->activeDocumentLoader(); 1165 if (!loader) 1166 return NULL; 1167 1168 return webkit_network_response_new_with_core_response(loader->response()); 1169 } -
trunk/WebKit/gtk/webkit/webkitwebframe.h
r49168 r51825 173 173 webkit_web_frame_get_security_origin (WebKitWebFrame *frame); 174 174 175 WEBKIT_API WebKitNetworkResponse* 176 webkit_web_frame_get_network_response (WebKitWebFrame *frame); 177 175 178 G_END_DECLS 176 179
Note: See TracChangeset
for help on using the changeset viewer.