Title: [258211] trunk/Tools
Revision
258211
Author
lmo...@igalia.com
Date
2020-03-10 09:11:25 -0700 (Tue, 10 Mar 2020)

Log Message

[WPE] MiniBrowser: Close child WebViews when exiting
https://bugs.webkit.org/show_bug.cgi?id=208689

Reviewed by Carlos Garcia Campos.

Store created views so we can release them before exiting.

* MiniBrowser/wpe/main.cpp:
(webViewClose):
(createWebView):
(main):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (258210 => 258211)


--- trunk/Tools/ChangeLog	2020-03-10 15:12:19 UTC (rev 258210)
+++ trunk/Tools/ChangeLog	2020-03-10 16:11:25 UTC (rev 258211)
@@ -1,3 +1,17 @@
+2020-03-10  Lauro Moura  <lmo...@igalia.com>
+
+        [WPE] MiniBrowser: Close child WebViews when exiting
+        https://bugs.webkit.org/show_bug.cgi?id=208689
+
+        Reviewed by Carlos Garcia Campos.
+
+        Store created views so we can release them before exiting.
+
+        * MiniBrowser/wpe/main.cpp:
+        (webViewClose):
+        (createWebView):
+        (main):
+
 2020-03-10  Aakash Jain  <aakash_j...@apple.com>
 
         Add ValidateCommiterAndReviewer and ValidateChangeLogAndReviewer build steps in commit-queue

Modified: trunk/Tools/MiniBrowser/wpe/main.cpp (258210 => 258211)


--- trunk/Tools/MiniBrowser/wpe/main.cpp	2020-03-10 15:12:19 UTC (rev 258210)
+++ trunk/Tools/MiniBrowser/wpe/main.cpp	2020-03-10 16:11:25 UTC (rev 258211)
@@ -49,6 +49,7 @@
 static const char* proxy;
 const char* bgColor;
 static gboolean printVersion;
+static GHashTable* openViews;
 
 static const GOptionEntry commandLineOptions[] =
 {
@@ -149,7 +150,8 @@
 
 static void webViewClose(WebKitWebView* webView, gpointer)
 {
-    g_object_unref(webView);
+    // Hash table key delete func takes care of unref'ing the view
+    g_hash_table_remove(openViews, webView);
 }
 
 static WebKitWebView* createWebView(WebKitWebView* webView, WebKitNavigationAction*, gpointer)
@@ -169,6 +171,8 @@
 
     g_signal_connect(newWebView, "close", G_CALLBACK(webViewClose), nullptr);
 
+    g_hash_table_add(openViews, newWebView);
+
     return newWebView;
 }
 
@@ -288,7 +292,6 @@
         "is-controlled-by-automation", automationMode,
         nullptr));
     g_object_unref(settings);
-    g_object_add_weak_pointer(G_OBJECT(webView), reinterpret_cast<void**>(&webView));
 
     backendPtr->setInputClient(std::make_unique<InputClient>(loop, webView));
 #if defined(HAVE_ACCESSIBILITY) && HAVE_ACCESSIBILITY
@@ -297,11 +300,14 @@
         backendPtr->setAccessibleChild(ATK_OBJECT(accessible));
 #endif
 
+    openViews = g_hash_table_new_full(nullptr, nullptr, g_object_unref, nullptr);
+
     webkit_web_context_set_automation_allowed(webContext, automationMode);
     g_signal_connect(webContext, "automation-started", G_CALLBACK(automationStartedCallback), webView);
     g_signal_connect(webView, "permission-request", G_CALLBACK(decidePermissionRequest), nullptr);
     g_signal_connect(webView, "create", G_CALLBACK(createWebView), nullptr);
     g_signal_connect(webView, "close", G_CALLBACK(webViewClose), nullptr);
+    g_hash_table_add(openViews, webView);
 
     if (ignoreTLSErrors)
         webkit_web_context_set_tls_errors_policy(webContext, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
@@ -327,10 +333,9 @@
 
     g_main_loop_run(loop);
 
-    if (webView) {
-        g_object_remove_weak_pointer(G_OBJECT(webView), reinterpret_cast<void**>(&webView));
-        g_object_unref(webView);
-    }
+    g_hash_table_destroy(openViews);
+
+
     if (privateMode || automationMode)
         g_object_unref(webContext);
     g_main_loop_unref(loop);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to