Changeset 148665 in webkit
- Timestamp:
- Apr 18, 2013 3:35:37 AM (11 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r148660 r148665 1 2013-04-18 Xan Lopez <xan@igalia.com> 2 3 [GTK] When the WebProcess crashes, a signal should be emitted 4 https://bugs.webkit.org/show_bug.cgi?id=105180 5 6 Emit a "web-process-crashed" signal when the WebProcess crashes. This 7 is useful, for example, to show an error page in a web browser 8 like Chrome does. 9 10 Reviewed Carlos Garcia Campos. 11 12 * UIProcess/API/gtk/WebKitLoaderClient.cpp: 13 (processDidCrash): 14 (attachLoaderClientToView): 15 * UIProcess/API/gtk/WebKitWebContextPrivate.h: 16 * UIProcess/API/gtk/WebKitWebView.cpp: 17 (webkit_web_view_class_init): 18 (webkitWebViewWebProcessCrashed): 19 * UIProcess/API/gtk/tests/TestWebExtensions.cpp: 20 (testWebExtensionGetTitle): 21 (webProcessCrashedCallback): 22 (testWebKitWebViewProcessCrashed): 23 (beforeAll): 24 * UIProcess/API/gtk/tests/WebExtensionTest.cpp: 25 (methodCallCallback): 26 1 27 2013-04-18 Kenneth Rohde Christiansen <kenneth@webkit.org> 2 28 -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitLoaderClient.cpp
r148294 r148665 134 134 } 135 135 136 static void processDidCrash(WKPageRef page, const void* clientInfo) 137 { 138 webkitWebViewWebProcessCrashed(WEBKIT_WEB_VIEW(clientInfo)); 139 } 140 136 141 void attachLoaderClientToView(WebKitWebView* webView) 137 142 { … … 160 165 0, // didBecomeUnresponsive 161 166 0, // didBecomeResponsive 162 0, // processDidCrash167 processDidCrash, 163 168 didChangeBackForwardList, 164 169 0, // shouldGoToBackForwardListItem -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp
r148526 r148665 118 118 INSECURE_CONTENT_DETECTED, 119 119 120 WEB_PROCESS_CRASHED, 121 120 122 LAST_SIGNAL 121 123 }; … … 1299 1301 G_TYPE_NONE, 1, 1300 1302 WEBKIT_TYPE_INSECURE_CONTENT_EVENT); 1303 1304 /** 1305 * WebKitWebView::web-process-crashed: 1306 * @web_view: the #WebKitWebView 1307 * 1308 * This signal is emitted when the web process crashes. 1309 * 1310 * Returns: %TRUE to stop other handlers from being invoked for the event. 1311 * %FALSE to propagate the event further. 1312 */ 1313 signals[WEB_PROCESS_CRASHED] = g_signal_new( 1314 "web-process-crashed", 1315 G_TYPE_FROM_CLASS(webViewClass), 1316 G_SIGNAL_RUN_LAST, 1317 G_STRUCT_OFFSET(WebKitWebViewClass, web_process_crashed), 1318 g_signal_accumulator_true_handled, 1319 0, 1320 webkit_marshal_BOOLEAN__VOID, 1321 G_TYPE_BOOLEAN, 0); 1301 1322 } 1302 1323 … … 3028 3049 return cairo_surface_reference(static_cast<GetSnapshotAsyncData*>(g_simple_async_result_get_op_res_gpointer(simple))->snapshot.get()); 3029 3050 } 3051 3052 void webkitWebViewWebProcessCrashed(WebKitWebView* webView) 3053 { 3054 gboolean returnValue; 3055 g_signal_emit(webView, signals[WEB_PROCESS_CRASHED], 0, &returnValue); 3056 } 3057 -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h
r148526 r148665 239 239 void (* insecure_content_detected) (WebKitWebView *web_view, 240 240 WebKitInsecureContentEvent event); 241 gboolean (* web_process_crashed) (WebKitWebView *web_view); 241 242 242 243 /* Padding for future expansion */ -
trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h
r148526 r148665 60 60 void webkitWebViewHandleAuthenticationChallenge(WebKitWebView*, WebKit::AuthenticationChallengeProxy*); 61 61 void webkitWebViewInsecureContentDetected(WebKitWebView*, WebKitInsecureContentEvent); 62 void webkitWebViewWebProcessCrashed(WebKitWebView*); 62 63 63 64 #endif // WebKitWebViewPrivate_h -
trunk/Source/WebKit2/UIProcess/API/gtk/tests/TestWebExtensions.cpp
r148281 r148665 26 26 static WebKitTestBus* bus; 27 27 28 static void testWebExtension (WebViewTest* test, gconstpointer)28 static void testWebExtensionGetTitle(WebViewTest* test, gconstpointer) 29 29 { 30 30 test->loadHtml("<html><head><title>WebKitGTK+ Web Extensions Test</title></head><body></body></html>", 0); … … 73 73 } 74 74 75 static gboolean webProcessCrashedCallback(WebKitWebView*, WebViewTest* test) 76 { 77 test->quitMainLoop(); 78 79 return FALSE; 80 } 81 82 static void testWebKitWebViewProcessCrashed(WebViewTest* test, gconstpointer) 83 { 84 test->loadHtml("<html></html>", 0); 85 test->waitUntilLoadFinished(); 86 87 g_signal_connect(test->m_webView, "web-process-crashed", 88 G_CALLBACK(webProcessCrashedCallback), test); 89 90 GRefPtr<GDBusProxy> proxy = adoptGRef(bus->createProxy("org.webkit.gtk.WebExtensionTest", 91 "/org/webkit/gtk/WebExtensionTest", "org.webkit.gtk.WebExtensionTest", test->m_mainLoop)); 92 93 GRefPtr<GVariant> result = adoptGRef(g_dbus_proxy_call_sync( 94 proxy.get(), 95 "AbortProcess", 96 0, 97 G_DBUS_CALL_FLAGS_NONE, 98 -1, 0, 0)); 99 g_assert(!result); 100 g_main_loop_run(test->m_mainLoop); 101 } 102 75 103 void beforeAll() 76 104 { … … 80 108 return; 81 109 82 WebViewTest::add("WebKitWebExtension", "dom-document-title", testWebExtension );110 WebViewTest::add("WebKitWebExtension", "dom-document-title", testWebExtensionGetTitle); 83 111 WebViewTest::add("WebKitWebExtension", "document-loaded-signal", testDocumentLoadedSignal); 112 WebViewTest::add("WebKitWebView", "web-process-crashed", testWebKitWebViewProcessCrashed); 84 113 } 85 114 -
trunk/Source/WebKit2/UIProcess/API/gtk/tests/WebExtensionTest.cpp
r148592 r148665 21 21 22 22 #include <gio/gio.h> 23 #include <stdlib.h> 24 23 25 #include <webkit2/webkit-web-extension.h> 24 26 #include <wtf/gobject/GOwnPtr.h> … … 30 32 " <arg type='t' name='pageID' direction='in'/>" 31 33 " <arg type='s' name='title' direction='out'/>" 34 " </method>" 35 " <method name='AbortProcess'>" 32 36 " </method>" 33 37 " <signal name='DocumentLoaded'/>" … … 74 78 GOwnPtr<char> title(webkit_dom_document_get_title(document)); 75 79 g_dbus_method_invocation_return_value(invocation, g_variant_new("(s)", title.get())); 80 } else if (!g_strcmp0(methodName, "AbortProcess")) { 81 abort(); 76 82 } 77 83 }
Note: See TracChangeset
for help on using the changeset viewer.