[GLIB] WebDriver: browser close not correctly detected on session close in some cases
authorcarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 4 Jan 2019 11:34:01 +0000 (11:34 +0000)
committercarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 4 Jan 2019 11:34:01 +0000 (11:34 +0000)
https://bugs.webkit.org/show_bug.cgi?id=193104

Reviewed by Michael Catanzaro.

This happens when the dbus connection is closed right before the response to SendMessageToBackend message is
going to be sent. In that case, g_dbus_connection_call async ready handler generates an error before the close
signal is emitted. Then, the close commands try to handle the error checking if SessionHost::isConnected(), but
it still returns true, because the browser is still alive, but the dbus connection has been closed.

* glib/SessionHostGlib.cpp:
(WebDriver::SessionHost::isConnected const): Session is connected when launching or when dbus connection hasn't
been closed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@239606 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebDriver/ChangeLog
Source/WebDriver/glib/SessionHostGlib.cpp

index 11c8270..767eefa 100644 (file)
@@ -1,3 +1,19 @@
+2019-01-04  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        [GLIB] WebDriver: browser close not correctly detected on session close in some cases
+        https://bugs.webkit.org/show_bug.cgi?id=193104
+
+        Reviewed by Michael Catanzaro.
+
+        This happens when the dbus connection is closed right before the response to SendMessageToBackend message is
+        going to be sent. In that case, g_dbus_connection_call async ready handler generates an error before the close
+        signal is emitted. Then, the close commands try to handle the error checking if SessionHost::isConnected(), but
+        it still returns true, because the browser is still alive, but the dbus connection has been closed.
+
+        * glib/SessionHostGlib.cpp:
+        (WebDriver::SessionHost::isConnected const): Session is connected when launching or when dbus connection hasn't
+        been closed.
+
 2018-12-21  Carlos Garcia Campos  <cgarcia@igalia.com>
 
         [GLIB] WebDriver: dbusConnectionClosedCallback can be called after SessionHost has been deleted
index 364ca80..34f9bca 100644 (file)
@@ -108,7 +108,8 @@ void SessionHost::connectToBrowser(Function<void (Optional<String> error)>&& com
 
 bool SessionHost::isConnected() const
 {
-    return !!m_browser;
+    // Session is connected when launching or when dbus connection hasn't been closed.
+    return m_browser && (!m_dbusConnection || !g_dbus_connection_is_closed(m_dbusConnection.get()));
 }
 
 struct ConnectToBrowserAsyncData {