Changeset 175618 in webkit
- Timestamp:
- Nov 5, 2014 2:54:05 AM (9 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r175616 r175618 1 2014-11-05 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK] Add WebKitWebResource::failed-with-tls-errors signal 4 https://bugs.webkit.org/show_bug.cgi?id=137862 5 6 Reviewed by Gustavo Noronha Silva. 7 8 When a resource load fails due to TLS errors emit WebKitWebResource::failed-with-tls-errors 9 signal instead of WebKitWebResource::failed so that TLS errors information and certificate 10 are provided. 11 12 * UIProcess/API/gtk/WebKitInjectedBundleClient.cpp: 13 (didReceiveWebViewMessageFromInjectedBundle): Check if the error 14 is a TLS failure to emit failed-with-tls-errors instead of failed. 15 * UIProcess/API/gtk/WebKitWebResource.cpp: 16 (webkit_web_resource_class_init): Add WebKitWebResource::failed-with-tls-errors signal. 17 (webkitWebResourceFailedWithTLSErrors): Emit failed-with-tls-errors and finish signals. 18 * UIProcess/API/gtk/WebKitWebResourcePrivate.h: 19 1 20 2014-11-05 Shivakumar JM <shiva.jm@samsung.com> 2 21 -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitInjectedBundleClient.cpp
r164438 r175618 90 90 GUniquePtr<GError> resourceError(g_error_new_literal(g_quark_from_string(platformError.domain().utf8().data()), 91 91 toWebKitError(platformError.errorCode()), platformError.localizedDescription().utf8().data())); 92 if (platformError.tlsErrors()) 93 webkitWebResourceFailedWithTLSErrors(resource.get(), static_cast<GTlsCertificateFlags>(platformError.tlsErrors()), platformError.certificate()); 94 else 95 webkitWebResourceFailed(resource.get(), resourceError.get()); 92 96 93 webkitWebResourceFailed(resource.get(), resourceError.get());94 97 webkitWebViewRemoveLoadingWebResource(webView, resourceIdentifier->value()); 95 98 } else if (g_str_equal(messageName, "DidGetSnapshot")) { -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebResource.cpp
r170633 r175618 54 54 FINISHED, 55 55 FAILED, 56 FAILED_WITH_TLS_ERRORS, 56 57 57 58 LAST_SIGNAL … … 198 199 G_TYPE_NONE, 1, 199 200 G_TYPE_POINTER); 201 202 /** 203 * WebKitWebResource::failed-with-tls-errors: 204 * @resource: the #WebKitWebResource 205 * @certificate: a #GTlsCertificate 206 * @errors: a #GTlsCertificateFlags with the verification status of @certificate 207 * 208 * This signal is emitted when a TLS error occurs during the resource load operation. 209 * 210 * Since: 2.8 211 */ 212 signals[FAILED_WITH_TLS_ERRORS] = 213 g_signal_new("failed-with-tls-errors", 214 G_TYPE_FROM_CLASS(objectClass), 215 G_SIGNAL_RUN_LAST, 216 0, nullptr, nullptr, 217 g_cclosure_marshal_generic, 218 G_TYPE_NONE, 2, 219 G_TYPE_TLS_CERTIFICATE, 220 G_TYPE_TLS_CERTIFICATE_FLAGS); 200 221 } 201 222 … … 245 266 g_signal_emit(resource, signals[FAILED], 0, error); 246 267 g_signal_emit(resource, signals[FINISHED], 0, NULL); 268 } 269 270 void webkitWebResourceFailedWithTLSErrors(WebKitWebResource* resource, GTlsCertificateFlags tlsErrors, GTlsCertificate* certificate) 271 { 272 g_signal_emit(resource, signals[FAILED_WITH_TLS_ERRORS], 0, certificate, tlsErrors); 273 g_signal_emit(resource, signals[FINISHED], 0, nullptr); 247 274 } 248 275 -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebResourcePrivate.h
r131760 r175618 30 30 void webkitWebResourceFinished(WebKitWebResource*); 31 31 void webkitWebResourceFailed(WebKitWebResource*, GError*); 32 void webkitWebResourceFailedWithTLSErrors(WebKitWebResource*, GTlsCertificateFlags, GTlsCertificate*); 32 33 WebKit::WebFrameProxy* webkitWebResourceGetFrame(WebKitWebResource*); 33 34 -
trunk/Tools/ChangeLog
r175613 r175618 1 2014-11-05 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK] Add WebKitWebResource::failed-with-tls-errors signal 4 https://bugs.webkit.org/show_bug.cgi?id=137862 5 6 Reviewed by Gustavo Noronha Silva. 7 8 Add a test case to check that WebKitWebResource::failed-with-tls-errors 9 is emitted when a subresource load fails due to TLS errors. 10 11 * TestWebKitAPI/Tests/WebKit2Gtk/TestSSL.cpp: 12 (TLSSubresourceTest::resourceLoadStartedCallback): 13 (TLSSubresourceTest::TLSSubresourceTest): 14 (TLSSubresourceTest::subresourceFailedCallback): 15 (TLSSubresourceTest::subresourceFailedWithTLSErrorsCallback): 16 (TLSSubresourceTest::subresourceLoadStarted): 17 (TLSSubresourceTest::subresourceFailedWithTLSErrors): 18 (TLSSubresourceTest::waitUntilSubresourceLoadFail): 19 (testSubresourceLoadFailedWithTLSErrors): 20 (httpsServerCallback): 21 (httpServerCallback): 22 (beforeAll): 23 1 24 2014-11-05 Alexey Proskuryakov <ap@apple.com> 2 25 -
trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestSSL.cpp
r174930 r175618 260 260 } 261 261 262 class TLSSubresourceTest : public WebViewTest { 263 public: 264 MAKE_GLIB_TEST_FIXTURE(TLSSubresourceTest); 265 266 static void resourceLoadStartedCallback(WebKitWebView* webView, WebKitWebResource* resource, WebKitURIRequest* request, TLSSubresourceTest* test) 267 { 268 if (webkit_web_view_get_main_resource(test->m_webView) == resource) 269 return; 270 271 // Ignore favicons. 272 if (g_str_has_suffix(webkit_uri_request_get_uri(request), "favicon.ico")) 273 return; 274 275 test->subresourceLoadStarted(resource); 276 } 277 278 TLSSubresourceTest() 279 : m_tlsErrors(static_cast<GTlsCertificateFlags>(0)) 280 { 281 g_signal_connect(m_webView, "resource-load-started", G_CALLBACK(resourceLoadStartedCallback), this); 282 } 283 284 static void subresourceFailedCallback(WebKitWebResource*, GError*) 285 { 286 g_assert_not_reached(); 287 } 288 289 static void subresourceFailedWithTLSErrorsCallback(WebKitWebResource* resource, GTlsCertificate* certificate, GTlsCertificateFlags tlsErrors, TLSSubresourceTest* test) 290 { 291 test->subresourceFailedWithTLSErrors(resource, certificate, tlsErrors); 292 } 293 294 void subresourceLoadStarted(WebKitWebResource* resource) 295 { 296 g_signal_connect(resource, "failed", G_CALLBACK(subresourceFailedCallback), nullptr); 297 g_signal_connect(resource, "failed-with-tls-errors", G_CALLBACK(subresourceFailedWithTLSErrorsCallback), this); 298 } 299 300 void subresourceFailedWithTLSErrors(WebKitWebResource* resource, GTlsCertificate* certificate, GTlsCertificateFlags tlsErrors) 301 { 302 m_certificate = certificate; 303 m_tlsErrors = tlsErrors; 304 g_main_loop_quit(m_mainLoop); 305 } 306 307 void waitUntilSubresourceLoadFail() 308 { 309 g_main_loop_run(m_mainLoop); 310 } 311 312 GRefPtr<GTlsCertificate> m_certificate; 313 GTlsCertificateFlags m_tlsErrors; 314 }; 315 316 static void testSubresourceLoadFailedWithTLSErrors(TLSSubresourceTest* test, gconstpointer) 317 { 318 WebKitWebContext* context = webkit_web_view_get_context(test->m_webView); 319 webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL); 320 321 test->loadURI(kHttpServer->getURIForPath("/").data()); 322 test->waitUntilSubresourceLoadFail(); 323 g_assert(G_IS_TLS_CERTIFICATE(test->m_certificate.get())); 324 g_assert_cmpuint(test->m_tlsErrors, ==, G_TLS_CERTIFICATE_UNKNOWN_CA); 325 } 262 326 263 327 static void httpsServerCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer) … … 287 351 soup_message_set_status(message, SOUP_STATUS_UNAUTHORIZED); 288 352 soup_message_headers_append(message->response_headers, "WWW-Authenticate", "Basic realm=\"HTTPS auth\""); 353 } else if (g_str_equal(path, "/style.css")) { 354 soup_message_set_status(message, SOUP_STATUS_OK); 355 static const char* styleCSS = "body { color: black; }"; 356 soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, styleCSS, strlen(styleCSS)); 289 357 } else 290 358 soup_message_set_status(message, SOUP_STATUS_NOT_FOUND); … … 315 383 soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, contents, length); 316 384 soup_message_set_status(message, SOUP_STATUS_OK); 385 soup_message_body_complete(message->response_body); 386 } else if (g_str_equal(path, "/")) { 387 soup_message_set_status(message, SOUP_STATUS_OK); 388 char* responseHTML = g_strdup_printf("<html><head><link rel='stylesheet' href='%s' type='text/css'></head><body>SSL subresource test</body></html>", 389 kHttpsServer->getURIForPath("/style.css").data()); 390 soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, responseHTML, strlen(responseHTML)); 317 391 soup_message_body_complete(message->response_body); 318 392 } else … … 336 410 SSLTest::add("WebKitWebView", "tls-errors-redirect-to-http", testTLSErrorsRedirect); 337 411 SSLTest::add("WebKitWebView", "tls-http-auth", testTLSErrorsHTTPAuth); 412 TLSSubresourceTest::add("WebKitWebView", "tls-subresource", testSubresourceLoadFailedWithTLSErrors); 338 413 TLSErrorsTest::add("WebKitWebView", "load-failed-with-tls-errors", testLoadFailedWithTLSErrors); 339 414 }
Note: See TracChangeset
for help on using the changeset viewer.