REGRESSION: [iOS] API test TestWebKitAPI._WKDownload.OriginatingWebView is a flaky...
authordavid_quesada@apple.com <david_quesada@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 18 Dec 2018 23:59:34 +0000 (23:59 +0000)
committerdavid_quesada@apple.com <david_quesada@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 18 Dec 2018 23:59:34 +0000 (23:59 +0000)
https://bugs.webkit.org/show_bug.cgi?id=192810
<rdar://problem/46812536>

Reviewed by Alex Christensen.

* TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
(-[OriginatingWebViewDownloadDelegate _downloadDidStart:]):
    After releasing our reference to the web view, wait until the next turn of the runloop
    before checking that the originatingWebView has been zeroed, since the web view might
    still be referenced in the autorelease pool. This _WKDownload unit test isn't about
    testing general memory management of WKWebViews, only that _WKDownload does not retain
    its web view via the 'originatingWebView' property.

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

Tools/ChangeLog
Tools/TestWebKitAPI/Tests/WebKitCocoa/Download.mm

index b0a31fb..201a7fc 100644 (file)
@@ -1,3 +1,19 @@
+2018-12-18  David Quesada  <david_quesada@apple.com>
+
+        REGRESSION: [iOS] API test TestWebKitAPI._WKDownload.OriginatingWebView is a flaky failure
+        https://bugs.webkit.org/show_bug.cgi?id=192810
+        <rdar://problem/46812536>
+
+        Reviewed by Alex Christensen.
+
+        * TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
+        (-[OriginatingWebViewDownloadDelegate _downloadDidStart:]):
+            After releasing our reference to the web view, wait until the next turn of the runloop
+            before checking that the originatingWebView has been zeroed, since the web view might
+            still be referenced in the autorelease pool. This _WKDownload unit test isn't about
+            testing general memory management of WKWebViews, only that _WKDownload does not retain
+            its web view via the 'originatingWebView' property.
+
 2018-12-18  Sihui Liu  <sihui_liu@apple.com>
 
         Clean up IndexedDB files between tests
index dae0d27..21b35ce 100644 (file)
@@ -41,6 +41,7 @@
 #import <WebKit/WKUIDelegatePrivate.h>
 #import <WebKit/WKWebView.h>
 #import <WebKit/WKWebViewConfiguration.h>
+#import <wtf/MainThread.h>
 #import <wtf/RetainPtr.h>
 #import <wtf/text/WTFString.h>
 
@@ -253,13 +254,13 @@ TEST(_WKDownload, CancelDownload)
 
 - (void)_downloadDidStart:(_WKDownload *)download
 {
-    @autoreleasepool {
-        EXPECT_EQ([download originatingWebView], _webView);
-    }
-
+    EXPECT_EQ([download originatingWebView], _webView);
     _webView = nullptr;
-    EXPECT_NULL([download originatingWebView]);
-    isDone = true;
+
+    WTF::callOnMainThread([download = retainPtr(download)] {
+        EXPECT_NULL([download originatingWebView]);
+        isDone = true;
+    });
 }
 
 @end