API test WebKit2.AutoLayoutIntegration is a flaky timeout
authortimothy_horton@apple.com <timothy_horton@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 29 Sep 2016 01:14:38 +0000 (01:14 +0000)
committertimothy_horton@apple.com <timothy_horton@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 29 Sep 2016 01:14:38 +0000 (01:14 +0000)
https://bugs.webkit.org/show_bug.cgi?id=160284

Reviewed by Dan Bernstein.

* TestWebKitAPI/Tests/WebKit2Cocoa/AutoLayoutIntegration.mm:
(-[AutoLayoutWKWebView load:withWidth:expectingContentSize:resettingWidth:]):
(-[AutoLayoutWKWebView beginLayoutAtMinimumWidth:andExpectContentSizeChange:]):
(-[AutoLayoutWKWebView waitForContentSizeChangeResettingWidth:]):
(-[AutoLayoutWKWebView layoutAtMinimumWidth:andExpectContentSizeChange:resettingWidth:]):
(-[AutoLayoutWKWebView invalidateIntrinsicContentSize]):
(TEST):
Make the autolayout tests a bit more flexible regarding the ordering of
invalidateIntrinsicContentSize, to avoid a race between the load
completing and the invalidation.

Also, move the newly added test to use its own WKWebView, since once in a
while we get a first layout notification from the previous page, causing the test to fail.

Un-disable the tests, which now run without any flakes for me with quite a few iterations.

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

Tools/ChangeLog
Tools/TestWebKitAPI/Tests/WebKit2Cocoa/AutoLayoutIntegration.mm

index f99d69a..cd97b1a 100644 (file)
@@ -1,3 +1,26 @@
+2016-09-28  Tim Horton  <timothy_horton@apple.com>
+
+        API test WebKit2.AutoLayoutIntegration is a flaky timeout
+        https://bugs.webkit.org/show_bug.cgi?id=160284
+
+        Reviewed by Dan Bernstein.
+
+        * TestWebKitAPI/Tests/WebKit2Cocoa/AutoLayoutIntegration.mm:
+        (-[AutoLayoutWKWebView load:withWidth:expectingContentSize:resettingWidth:]):
+        (-[AutoLayoutWKWebView beginLayoutAtMinimumWidth:andExpectContentSizeChange:]):
+        (-[AutoLayoutWKWebView waitForContentSizeChangeResettingWidth:]):
+        (-[AutoLayoutWKWebView layoutAtMinimumWidth:andExpectContentSizeChange:resettingWidth:]):
+        (-[AutoLayoutWKWebView invalidateIntrinsicContentSize]):
+        (TEST):
+        Make the autolayout tests a bit more flexible regarding the ordering of
+        invalidateIntrinsicContentSize, to avoid a race between the load
+        completing and the invalidation.
+
+        Also, move the newly added test to use its own WKWebView, since once in a
+        while we get a first layout notification from the previous page, causing the test to fail.
+
+        Un-disable the tests, which now run without any flakes for me with quite a few iterations.
+
 2016-09-28  Alex Christensen  <achristensen@webkit.org>
 
         URLParser should properly handle unexpected periods and overflows in IPv4 addresses
index db2a193..d86928b 100644 (file)
@@ -70,12 +70,13 @@ static bool didEvaluateJavaScript;
     "</style>";
 
     [self loadHTMLString:[baseHTML stringByAppendingString:HTMLString] baseURL:nil];
+    [self beginLayoutAtMinimumWidth:width andExpectContentSizeChange:size];
     [self _test_waitForDidFinishNavigation];
 
-    [self layoutAtMinimumWidth:width andExpectContentSizeChange:size resettingWidth:resetAfter];
+    [self waitForContentSizeChangeResettingWidth:resetAfter];
 }
 
-- (void)layoutAtMinimumWidth:(CGFloat)width andExpectContentSizeChange:(NSSize)size resettingWidth:(BOOL)resetAfter
+- (void)beginLayoutAtMinimumWidth:(CGFloat)width andExpectContentSizeChange:(NSSize)size
 {
     [self _setMinimumLayoutWidth:width];
 
@@ -85,29 +86,38 @@ static bool didEvaluateJavaScript;
     _expectingIntrinsicContentSizeChange = YES;
     _expectedIntrinsicContentSize = size;
     didInvalidateIntrinsicContentSize = false;
+}
+
+- (void)waitForContentSizeChangeResettingWidth:(BOOL)resetAfter
+{
     TestWebKitAPI::Util::run(&didInvalidateIntrinsicContentSize);
 
+    NSSize intrinsicContentSize = self.intrinsicContentSize;
+    EXPECT_EQ(_expectedIntrinsicContentSize.width, intrinsicContentSize.width);
+    EXPECT_EQ(_expectedIntrinsicContentSize.height, intrinsicContentSize.height);
+
     if (resetAfter)
         [self _setMinimumLayoutWidth:0];
 }
 
+- (void)layoutAtMinimumWidth:(CGFloat)width andExpectContentSizeChange:(NSSize)size resettingWidth:(BOOL)resetAfter
+{
+    [self beginLayoutAtMinimumWidth:width andExpectContentSizeChange:size];
+    [self waitForContentSizeChangeResettingWidth:resetAfter];
+}
+
 - (void)invalidateIntrinsicContentSize
 {
     if (!_expectingIntrinsicContentSizeChange)
         return;
 
     _expectingIntrinsicContentSizeChange = NO;
-
-    NSSize intrinsicContentSize = self.intrinsicContentSize;
-    EXPECT_EQ(_expectedIntrinsicContentSize.width, intrinsicContentSize.width);
-    EXPECT_EQ(_expectedIntrinsicContentSize.height, intrinsicContentSize.height);
-
     didInvalidateIntrinsicContentSize = true;
 }
 
 @end
 
-TEST(WebKit2, DISABLED_AutoLayoutIntegration)
+TEST(WebKit2, AutoLayoutIntegration)
 {
     RetainPtr<AutoLayoutWKWebView> webView = adoptNS([[AutoLayoutWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 1000, 1000)]);
 
@@ -156,6 +166,11 @@ TEST(WebKit2, DISABLED_AutoLayoutIntegration)
     TestWebKitAPI::Util::run(&didEvaluateJavaScript);
     didEvaluateJavaScript = false;
     [webView _setShouldExpandContentToViewHeightForAutoLayout:NO];
+}
+
+TEST(WebKit2, AutoLayoutRenderingProgressRelativeOrdering)
+{
+    RetainPtr<AutoLayoutWKWebView> webView = adoptNS([[AutoLayoutWKWebView alloc] initWithFrame:NSMakeRect(0, 0, 1000, 1000)]);
 
     auto navigationDelegate = adoptNS([[TestNavigationDelegate alloc] init]);