Title: [233137] trunk/Source/WebDriver
Revision
233137
Author
[email protected]
Date
2018-06-24 23:31:15 -0700 (Sun, 24 Jun 2018)

Log Message

Unreviewed. Fix WebDriver tests after r233077.

WebDriver process is crashing because GVariant doesn't allow to pass a nullptr array when using @ modifier.

* SessionHost.h:
* glib/SessionHostGlib.cpp:
(WebDriver::SessionHost::buildSessionCapabilities const): Receive a GVariantBuilder and return true if there are
session capabilities.
(WebDriver::SessionHost::startAutomationSession): Remove the @ modifier and use a GVariantBuilder instead, or
nullptr if there aren't session capabilities.

Modified Paths

Diff

Modified: trunk/Source/WebDriver/ChangeLog (233136 => 233137)


--- trunk/Source/WebDriver/ChangeLog	2018-06-25 04:40:21 UTC (rev 233136)
+++ trunk/Source/WebDriver/ChangeLog	2018-06-25 06:31:15 UTC (rev 233137)
@@ -1,3 +1,16 @@
+2018-06-24  Carlos Garcia Campos  <[email protected]>
+
+        Unreviewed. Fix WebDriver tests after r233077.
+
+        WebDriver process is crashing because GVariant doesn't allow to pass a nullptr array when using @ modifier.
+
+        * SessionHost.h:
+        * glib/SessionHostGlib.cpp:
+        (WebDriver::SessionHost::buildSessionCapabilities const): Receive a GVariantBuilder and return true if there are
+        session capabilities.
+        (WebDriver::SessionHost::startAutomationSession): Remove the @ modifier and use a GVariantBuilder instead, or
+        nullptr if there aren't session capabilities.
+
 2018-06-21  Brian Burg  <[email protected]>
 
         Web Automation: key actions should support multiple pressed virtual keys

Modified: trunk/Source/WebDriver/SessionHost.h (233136 => 233137)


--- trunk/Source/WebDriver/SessionHost.h	2018-06-25 04:40:21 UTC (rev 233136)
+++ trunk/Source/WebDriver/SessionHost.h	2018-06-25 06:31:15 UTC (rev 233137)
@@ -80,7 +80,7 @@
     void launchBrowser(Function<void (std::optional<String> error)>&&);
     void connectToBrowser(std::unique_ptr<ConnectToBrowserAsyncData>&&);
     bool matchCapabilities(GVariant*);
-    GVariant* buildSessionCapabilities() const;
+    bool buildSessionCapabilities(GVariantBuilder*) const;
     void setupConnection(GRefPtr<GDBusConnection>&&);
     void setTargetList(uint64_t connectionID, Vector<Target>&&);
     void sendMessageToFrontend(uint64_t connectionID, uint64_t targetID, const char* message);

Modified: trunk/Source/WebDriver/glib/SessionHostGlib.cpp (233136 => 233137)


--- trunk/Source/WebDriver/glib/SessionHostGlib.cpp	2018-06-25 04:40:21 UTC (rev 233136)
+++ trunk/Source/WebDriver/glib/SessionHostGlib.cpp	2018-06-25 06:31:15 UTC (rev 233137)
@@ -261,15 +261,14 @@
     return didMatch;
 }
 
-GVariant* SessionHost::buildSessionCapabilities() const
+bool SessionHost::buildSessionCapabilities(GVariantBuilder* builder) const
 {
     if (!m_capabilities.acceptInsecureCerts && !m_capabilities.certificates)
-        return nullptr;
+        return false;
 
-    GVariantBuilder builder;
-    g_variant_builder_init(&builder, G_VARIANT_TYPE("a{sv}"));
+    g_variant_builder_init(builder, G_VARIANT_TYPE("a{sv}"));
     if (m_capabilities.acceptInsecureCerts)
-        g_variant_builder_add(&builder, "{sv}", "acceptInsecureCerts", g_variant_new_boolean(m_capabilities.acceptInsecureCerts.value()));
+        g_variant_builder_add(builder, "{sv}", "acceptInsecureCerts", g_variant_new_boolean(m_capabilities.acceptInsecureCerts.value()));
 
     if (m_capabilities.certificates) {
         GVariantBuilder arrayBuilder;
@@ -278,10 +277,10 @@
             g_variant_builder_add_value(&arrayBuilder, g_variant_new("(ss)",
                 certificate.first.utf8().data(), certificate.second.utf8().data()));
         }
-        g_variant_builder_add(&builder, "{sv}", "certificates", g_variant_builder_end(&arrayBuilder));
+        g_variant_builder_add(builder, "{sv}", "certificates", g_variant_builder_end(&arrayBuilder));
     }
 
-    return g_variant_builder_end(&builder);
+    return true;
 }
 
 void SessionHost::startAutomationSession(Function<void (bool, std::optional<String>)>&& completionHandler)
@@ -290,11 +289,12 @@
     ASSERT(!m_startSessionCompletionHandler);
     m_startSessionCompletionHandler = WTFMove(completionHandler);
     m_sessionID = createCanonicalUUIDString();
+    GVariantBuilder builder;
     g_dbus_connection_call(m_dbusConnection.get(), nullptr,
         INSPECTOR_DBUS_OBJECT_PATH,
         INSPECTOR_DBUS_INTERFACE,
         "StartAutomationSession",
-        g_variant_new("(s@a{sv})", m_sessionID.utf8().data(), buildSessionCapabilities()),
+        g_variant_new("(sa{sv})", m_sessionID.utf8().data(), buildSessionCapabilities(&builder) ? &builder : nullptr),
         nullptr, G_DBUS_CALL_FLAGS_NO_AUTO_START,
         -1, m_cancellable.get(), [](GObject* source, GAsyncResult* result, gpointer userData) {
             GUniqueOutPtr<GError> error;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to