Changeset 235528 in webkit


Ignore:
Timestamp:
Aug 30, 2018 3:50:33 PM (6 years ago)
Author:
Wenson Hsieh
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):

Location:
trunk/Tools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r235525 r235528  
     12018-08-30  Wenson Hsieh  <wenson_hsieh@apple.com>
     2
     3        Followup to [iOS] TestWebKitAPI.PasteImage tests are flaky failures
     4        https://bugs.webkit.org/show_bug.cgi?id=185965
     5
     6        Reviewed by Andy Estes.
     7
     8        The first attempt to fix these flaky tests on iOS caused timeouts on macOS while waiting for a "loaded" message
     9        from the page. To (hopefully) fix this across both platforms, make sure that we first register our script
     10        message handlers in the UI process *before* evaluating script that could propagate the script message.
     11
     12        * TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm:
     13        (-[TestWKWebView waitForMessage:afterEvaluatingScript:]):
     14        (TEST):
     15
    1162018-08-30  Thomas Denney  <tdenney@apple.com>
    217
  • trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteImage.mm

    r235504 r235528  
    5050#endif
    5151
     52@interface TestWKWebView (PasteImage)
     53- (void)waitForMessage:(NSString *)message afterEvaluatingScript:(NSString *)script;
     54@end
     55
     56@implementation TestWKWebView (PasteImage)
     57
     58- (void)waitForMessage:(NSString *)message afterEvaluatingScript:(NSString *)script
     59{
     60    __block bool evaluatedScript = false;
     61    __block bool receivedMessage = false;
     62    [self performAfterReceivingMessage:message action:^{
     63        receivedMessage = true;
     64    }];
     65    [self evaluateJavaScript:script completionHandler:^(id, NSError *) {
     66        evaluatedScript = true;
     67    }];
     68    TestWebKitAPI::Util::run(&evaluatedScript);
     69    TestWebKitAPI::Util::run(&receivedMessage);
     70}
     71
     72@end
     73
    5274TEST(PasteImage, PasteGIFImage)
    5375{
     
    6789    EXPECT_WK_STREQ("true", [webView stringByEvaluatingJavaScript:@"dataTransfer.files.includes(gifItem.file).toString()"]);
    6890
    69     [webView stringByEvaluatingJavaScript:@"insertFileAsImage(gifItem.file)"];
    70     [webView waitForMessage:@"loaded"];
     91    [webView waitForMessage:@"loaded" afterEvaluatingScript:@"insertFileAsImage(gifItem.file)"];
    7192    EXPECT_WK_STREQ("blob:", [webView stringByEvaluatingJavaScript:@"url = new URL(imageElement.src); url.protocol"]);
    7293    EXPECT_WK_STREQ("400", [webView stringByEvaluatingJavaScript:@"imageElement.width"]);
     
    90111    EXPECT_WK_STREQ("true", [webView stringByEvaluatingJavaScript:@"dataTransfer.files.includes(jpegItem.file).toString()"]);
    91112
    92     [webView stringByEvaluatingJavaScript:@"insertFileAsImage(jpegItem.file)"];
    93     [webView waitForMessage:@"loaded"];
     113    [webView waitForMessage:@"loaded" afterEvaluatingScript:@"insertFileAsImage(jpegItem.file)"];
    94114    EXPECT_WK_STREQ("blob:", [webView stringByEvaluatingJavaScript:@"url = new URL(imageElement.src); url.protocol"]);
    95115    EXPECT_WK_STREQ("600", [webView stringByEvaluatingJavaScript:@"imageElement.width"]);
     
    113133    EXPECT_WK_STREQ("true", [webView stringByEvaluatingJavaScript:@"dataTransfer.files.includes(pngItem.file).toString()"]);
    114134
    115     [webView stringByEvaluatingJavaScript:@"insertFileAsImage(pngItem.file)"];
    116     [webView waitForMessage:@"loaded"];
     135    [webView waitForMessage:@"loaded" afterEvaluatingScript:@"insertFileAsImage(pngItem.file)"];
    117136    EXPECT_WK_STREQ("blob:", [webView stringByEvaluatingJavaScript:@"url = new URL(imageElement.src); url.protocol"]);
    118137    EXPECT_WK_STREQ("200", [webView stringByEvaluatingJavaScript:@"imageElement.width"]);
Note: See TracChangeset for help on using the changeset viewer.