WebKit Bugzilla
Attachment 348545 Details for
Bug 185965
: [iOS] TestWebKitAPI.PasteImage tests are flaky failures
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-185965-20180830140851.patch (text/plain), 4.33 KB, created by
Wenson Hsieh
on 2018-08-30 14:08:51 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Wenson Hsieh
Created:
2018-08-30 14:08:51 PDT
Size:
4.33 KB
patch
obsolete
>Subversion Revision: 235520 >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 7cec6187fe5500d5bf80f52d8061660ba32b4e7d..ff092c67c44117d11970127f5807915f8c2c6bac 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,18 @@ >+2018-08-30 Wenson Hsieh <wenson_hsieh@apple.com> >+ >+ Followup to [iOS] TestWebKitAPI.PasteImage tests are flaky failures >+ https://bugs.webkit.org/show_bug.cgi?id=185965 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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 Sihui Liu <sihui_liu@apple.com> > > WKNavigation.ProcessCrashDuringCallback is failing on iOS >diff --git a/Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm b/Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm >index 01591b2c4d8626017ea22abaefe7343bc3c47533..d89ec94b46834d7638535cf3bc5abb2de8b8a23c 100644 >--- a/Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm >+++ b/Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm >@@ -49,6 +49,28 @@ void writeImageDataToPasteboard(NSString *type, NSData *data) > } > #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 @@ TEST(PasteImage, PasteGIFImage) > 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 = new URL(imageElement.src); url.protocol"]); > EXPECT_WK_STREQ("400", [webView stringByEvaluatingJavaScript:@"imageElement.width"]); > } >@@ -89,8 +110,7 @@ TEST(PasteImage, PasteJPEGImage) > 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 = new URL(imageElement.src); url.protocol"]); > EXPECT_WK_STREQ("600", [webView stringByEvaluatingJavaScript:@"imageElement.width"]); > } >@@ -112,8 +132,7 @@ TEST(PasteImage, PastePNGImage) > 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 = new URL(imageElement.src); url.protocol"]); > EXPECT_WK_STREQ("200", [webView stringByEvaluatingJavaScript:@"imageElement.width"]); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 185965
:
348478
| 348545