Title: [235528] trunk/Tools
Revision
235528
Author
wenson_hs...@apple.com
Date
2018-08-30 15:50:33 -0700 (Thu, 30 Aug 2018)

Log Message

Followup to [iOS] TestWebKitAPI.PasteImage tests are flaky failures
https://bugs.webkit.org/show_bug.cgi?id=185965

Reviewed by Andy Estes.

The first attempt to fix these flaky tests on iOS caused timeouts on macOS while waiting for a "loaded" message
from the page. To (hopefully) fix this across both platforms, make sure that we first register our script
message handlers in the UI process *before* evaluating script that could propagate the script message.

* TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm:
(-[TestWKWebView waitForMessage:afterEvaluatingScript:]):
(TEST):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (235527 => 235528)


--- trunk/Tools/ChangeLog	2018-08-30 22:37:34 UTC (rev 235527)
+++ trunk/Tools/ChangeLog	2018-08-30 22:50:33 UTC (rev 235528)
@@ -1,3 +1,18 @@
+2018-08-30  Wenson Hsieh  <wenson_hs...@apple.com>
+
+        Followup to [iOS] TestWebKitAPI.PasteImage tests are flaky failures
+        https://bugs.webkit.org/show_bug.cgi?id=185965
+
+        Reviewed by Andy Estes.
+
+        The first attempt to fix these flaky tests on iOS caused timeouts on macOS while waiting for a "loaded" message
+        from the page. To (hopefully) fix this across both platforms, make sure that we first register our script
+        message handlers in the UI process *before* evaluating script that could propagate the script message.
+
+        * TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm:
+        (-[TestWKWebView waitForMessage:afterEvaluatingScript:]):
+        (TEST):
+
 2018-08-30  Thomas Denney  <tden...@apple.com>
 
         [WHLSL] Implement tests to verify array indexing order matches our desires

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm (235527 => 235528)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm	2018-08-30 22:37:34 UTC (rev 235527)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm	2018-08-30 22:50:33 UTC (rev 235528)
@@ -49,6 +49,28 @@
 }
 #endif
 
+@interface TestWKWebView (PasteImage)
+- (void)waitForMessage:(NSString *)message afterEvaluatingScript:(NSString *)script;
+@end
+
+@implementation TestWKWebView (PasteImage)
+
+- (void)waitForMessage:(NSString *)message afterEvaluatingScript:(NSString *)script
+{
+    __block bool evaluatedScript = false;
+    __block bool receivedMessage = false;
+    [self performAfterReceivingMessage:message action:^{
+        receivedMessage = true;
+    }];
+    [self evaluateJavaScript:script completionHandler:^(id, NSError *) {
+        evaluatedScript = true;
+    }];
+    TestWebKitAPI::Util::run(&evaluatedScript);
+    TestWebKitAPI::Util::run(&receivedMessage);
+}
+
+@end
+
 TEST(PasteImage, PasteGIFImage)
 {
     auto webView = adoptNS([[TestWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 400, 400)]);
@@ -66,8 +88,7 @@
     EXPECT_WK_STREQ("image.gif", [webView stringByEvaluatingJavaScript:@"gifItem.file.name"]);
     EXPECT_WK_STREQ("true", [webView stringByEvaluatingJavaScript:@"dataTransfer.files.includes(gifItem.file).toString()"]);
 
-    [webView stringByEvaluatingJavaScript:@"insertFileAsImage(gifItem.file)"];
-    [webView waitForMessage:@"loaded"];
+    [webView waitForMessage:@"loaded" afterEvaluatingScript:@"insertFileAsImage(gifItem.file)"];
     EXPECT_WK_STREQ("blob:", [webView stringByEvaluatingJavaScript:@"url = "" URL(imageElement.src); url.protocol"]);
     EXPECT_WK_STREQ("400", [webView stringByEvaluatingJavaScript:@"imageElement.width"]);
 }
@@ -89,8 +110,7 @@
     EXPECT_WK_STREQ("image.jpeg", [webView stringByEvaluatingJavaScript:@"jpegItem.file.name"]);
     EXPECT_WK_STREQ("true", [webView stringByEvaluatingJavaScript:@"dataTransfer.files.includes(jpegItem.file).toString()"]);
 
-    [webView stringByEvaluatingJavaScript:@"insertFileAsImage(jpegItem.file)"];
-    [webView waitForMessage:@"loaded"];
+    [webView waitForMessage:@"loaded" afterEvaluatingScript:@"insertFileAsImage(jpegItem.file)"];
     EXPECT_WK_STREQ("blob:", [webView stringByEvaluatingJavaScript:@"url = "" URL(imageElement.src); url.protocol"]);
     EXPECT_WK_STREQ("600", [webView stringByEvaluatingJavaScript:@"imageElement.width"]);
 }
@@ -112,8 +132,7 @@
     EXPECT_WK_STREQ("image.png", [webView stringByEvaluatingJavaScript:@"pngItem.file.name"]);
     EXPECT_WK_STREQ("true", [webView stringByEvaluatingJavaScript:@"dataTransfer.files.includes(pngItem.file).toString()"]);
 
-    [webView stringByEvaluatingJavaScript:@"insertFileAsImage(pngItem.file)"];
-    [webView waitForMessage:@"loaded"];
+    [webView waitForMessage:@"loaded" afterEvaluatingScript:@"insertFileAsImage(pngItem.file)"];
     EXPECT_WK_STREQ("blob:", [webView stringByEvaluatingJavaScript:@"url = "" URL(imageElement.src); url.protocol"]);
     EXPECT_WK_STREQ("200", [webView stringByEvaluatingJavaScript:@"imageElement.width"]);
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to