Title: [150474] trunk/Tools
Revision
150474
Author
[email protected]
Date
2013-05-21 13:38:04 -0700 (Tue, 21 May 2013)

Log Message

        <rdar://problem/13929704> [WK2] WebKitTestRunner always crashes on exit
        https://bugs.webkit.org/show_bug.cgi?id=116568

        Reviewed by Anders Carlsson.

        * WebKitTestRunner/WebNotificationProvider.cpp:
        (WTR::WebNotificationProvider::~WebNotificationProvider):
        * WebKitTestRunner/WebNotificationProvider.h:
        When the provider is destroyed, it should no longer be registered with the manager.

        * WebKitTestRunner/GeolocationProviderMock.cpp:
        (WTR::GeolocationProviderMock::~GeolocationProviderMock):
        * WebKitTestRunner/GeolocationProviderMock.h:
        I wasn't seeing a crash here, but this code has the same issue as notification
        provider, so applying the same fix.

        * WebKitTestRunner/TestController.cpp: (WTR::TestController::~TestController):
        Close icon database. I started seeing ASSERT(!isOpen()) in WebCore IconDatabase
        destructor having fixed the above.

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (150473 => 150474)


--- trunk/Tools/ChangeLog	2013-05-21 20:32:23 UTC (rev 150473)
+++ trunk/Tools/ChangeLog	2013-05-21 20:38:04 UTC (rev 150474)
@@ -1,3 +1,25 @@
+2013-05-21  Alexey Proskuryakov  <[email protected]>
+
+        <rdar://problem/13929704> [WK2] WebKitTestRunner always crashes on exit
+        https://bugs.webkit.org/show_bug.cgi?id=116568
+
+        Reviewed by Anders Carlsson.
+
+        * WebKitTestRunner/WebNotificationProvider.cpp:
+        (WTR::WebNotificationProvider::~WebNotificationProvider):
+        * WebKitTestRunner/WebNotificationProvider.h:
+        When the provider is destroyed, it should no longer be registered with the manager.
+
+        * WebKitTestRunner/GeolocationProviderMock.cpp:
+        (WTR::GeolocationProviderMock::~GeolocationProviderMock):
+        * WebKitTestRunner/GeolocationProviderMock.h:
+        I wasn't seeing a crash here, but this code has the same issue as notification
+        provider, so applying the same fix.
+
+        * WebKitTestRunner/TestController.cpp: (WTR::TestController::~TestController):
+        Close icon database. I started seeing ASSERT(!isOpen()) in WebCore IconDatabase
+        destructor having fixed the above.
+
 2013-05-21  Commit Queue  <[email protected]>
 
         Unreviewed, rolling out r150386 and r150397.

Modified: trunk/Tools/WebKitTestRunner/GeolocationProviderMock.cpp (150473 => 150474)


--- trunk/Tools/WebKitTestRunner/GeolocationProviderMock.cpp	2013-05-21 20:32:23 UTC (rev 150473)
+++ trunk/Tools/WebKitTestRunner/GeolocationProviderMock.cpp	2013-05-21 20:38:04 UTC (rev 150474)
@@ -58,6 +58,11 @@
     WKGeolocationManagerSetProvider(m_geolocationManager, &providerCallback);
 }
 
+GeolocationProviderMock::~GeolocationProviderMock()
+{
+    WKGeolocationManagerSetProvider(m_geolocationManager, 0);
+}
+
 void GeolocationProviderMock::setPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
 {
     m_position.adopt(WKGeolocationPositionCreate_b(currentTime(), latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed));

Modified: trunk/Tools/WebKitTestRunner/GeolocationProviderMock.h (150473 => 150474)


--- trunk/Tools/WebKitTestRunner/GeolocationProviderMock.h	2013-05-21 20:32:23 UTC (rev 150473)
+++ trunk/Tools/WebKitTestRunner/GeolocationProviderMock.h	2013-05-21 20:38:04 UTC (rev 150474)
@@ -33,6 +33,7 @@
 class GeolocationProviderMock {
 public:
     GeolocationProviderMock(WKContextRef);
+    ~GeolocationProviderMock();
 
     void setPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed);
     void setPositionUnavailableError(WKStringRef errorMessage);

Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (150473 => 150474)


--- trunk/Tools/WebKitTestRunner/TestController.cpp	2013-05-21 20:32:23 UTC (rev 150473)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp	2013-05-21 20:38:04 UTC (rev 150474)
@@ -33,6 +33,7 @@
 #include <WebKit2/WKAuthenticationDecisionListener.h>
 #include <WebKit2/WKContextPrivate.h>
 #include <WebKit2/WKCredential.h>
+#include <WebKit2/WKIconDatabase.h>
 #include <WebKit2/WKNotification.h>
 #include <WebKit2/WKNotificationManager.h>
 #include <WebKit2/WKNotificationPermissionRequest.h>
@@ -120,6 +121,8 @@
 
 TestController::~TestController()
 {
+    WKIconDatabaseClose(WKContextGetIconDatabase(m_context.get()));
+
     platformDestroy();
 }
 

Modified: trunk/Tools/WebKitTestRunner/WebNotificationProvider.cpp (150473 => 150474)


--- trunk/Tools/WebKitTestRunner/WebNotificationProvider.cpp	2013-05-21 20:32:23 UTC (rev 150473)
+++ trunk/Tools/WebKitTestRunner/WebNotificationProvider.cpp	2013-05-21 20:38:04 UTC (rev 150474)
@@ -63,6 +63,11 @@
 {
 }
 
+WebNotificationProvider::~WebNotificationProvider()
+{
+    WKNotificationManagerSetProvider(m_notificationManager.get(), 0);
+}
+
 WKNotificationProvider WebNotificationProvider::provider()
 {
     WKNotificationProvider notificationProvider = {

Modified: trunk/Tools/WebKitTestRunner/WebNotificationProvider.h (150473 => 150474)


--- trunk/Tools/WebKitTestRunner/WebNotificationProvider.h	2013-05-21 20:32:23 UTC (rev 150473)
+++ trunk/Tools/WebKitTestRunner/WebNotificationProvider.h	2013-05-21 20:38:04 UTC (rev 150474)
@@ -36,6 +36,7 @@
 class WebNotificationProvider {
 public:
     WebNotificationProvider();
+    ~WebNotificationProvider();
     WKNotificationProvider provider();
 
     void showWebNotification(WKPageRef, WKNotificationRef);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to