Title: [224044] trunk/Tools
- Revision
- 224044
- Author
- [email protected]
- Date
- 2017-10-26 13:22:13 -0700 (Thu, 26 Oct 2017)
Log Message
[MediaStream] Clear cached gUM prompt state
https://bugs.webkit.org/show_bug.cgi?id=178754
<rdar://problem/32742356>
Unreviewed, fix a flakey test.
Patch by Eric Carlson <[email protected]> on 2017-10-26
* TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm:
(-[GetUserMediaRepromptTestView haveStream:]): New, check several times for expected state.
(TestWebKitAPI::TEST): Don't assume stream state changes in the page immediately.
Modified Paths
Diff
Modified: trunk/Tools/ChangeLog (224043 => 224044)
--- trunk/Tools/ChangeLog 2017-10-26 20:20:42 UTC (rev 224043)
+++ trunk/Tools/ChangeLog 2017-10-26 20:22:13 UTC (rev 224044)
@@ -1,3 +1,15 @@
+2017-10-26 Eric Carlson <[email protected]>
+
+ [MediaStream] Clear cached gUM prompt state
+ https://bugs.webkit.org/show_bug.cgi?id=178754
+ <rdar://problem/32742356>
+
+ Unreviewed, fix a flakey test.
+
+ * TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm:
+ (-[GetUserMediaRepromptTestView haveStream:]): New, check several times for expected state.
+ (TestWebKitAPI::TEST): Don't assume stream state changes in the page immediately.
+
2017-10-26 Andy Estes <[email protected]>
[Payment Request] Enable Payment Request whenever Apple Pay is enabled
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm (224043 => 224044)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm 2017-10-26 20:20:42 UTC (rev 224043)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit/GetUserMediaReprompt.mm 2017-10-26 20:22:13 UTC (rev 224044)
@@ -58,6 +58,26 @@
}
@end
+@interface GetUserMediaRepromptTestView : TestWKWebView
+- (BOOL)haveStream:(BOOL)expected;
+@end
+
+@implementation GetUserMediaRepromptTestView
+- (BOOL)haveStream:(BOOL)expected
+{
+ int retryCount = 10;
+ while (retryCount--) {
+ auto result = [self stringByEvaluatingJavaScript:@"haveStream()"];
+ if (result.boolValue == expected)
+ return YES;
+
+ TestWebKitAPI::Util::spinRunLoop(10);
+ }
+
+ return NO;
+}
+@end
+
namespace TestWebKitAPI {
TEST(WebKit2, GetUserMediaReprompt)
@@ -68,7 +88,7 @@
preferences._mediaCaptureRequiresSecureConnection = NO;
preferences._mediaDevicesEnabled = YES;
preferences._mockCaptureDevicesEnabled = YES;
- auto webView = [[TestWKWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 500) configuration:configuration.get() processPoolConfiguration:processPoolConfig.get()];
+ auto webView = [[GetUserMediaRepromptTestView alloc] initWithFrame:CGRectMake(0, 0, 320, 500) configuration:configuration.get() processPoolConfiguration:processPoolConfig.get()];
auto delegate = adoptNS([[GetUserMediaRepromptUIDelegate alloc] init]);
webView.UIDelegate = delegate.get();
@@ -76,23 +96,19 @@
[webView loadTestPageNamed:@"getUserMedia"];
TestWebKitAPI::Util::run(&wasPrompted);
- auto result = [webView stringByEvaluatingJavaScript:@"haveStream()"];
- EXPECT_TRUE([result boolValue]);
+ EXPECT_TRUE([webView haveStream:YES]);
[webView stringByEvaluatingJavaScript:@"stop()"];
- result = [webView stringByEvaluatingJavaScript:@"haveStream()"];
- EXPECT_FALSE([result boolValue]);
+ EXPECT_TRUE([webView haveStream:NO]);
wasPrompted = false;
[webView stringByEvaluatingJavaScript:@"promptForCapture()"];
- result = [webView stringByEvaluatingJavaScript:@"haveStream()"];
- EXPECT_TRUE([result boolValue]);
+ EXPECT_TRUE([webView haveStream:YES]);
EXPECT_FALSE(wasPrompted);
preferences._inactiveMediaCaptureSteamRepromptIntervalInMinutes = .5 / 60;
[webView stringByEvaluatingJavaScript:@"stop()"];
- result = [webView stringByEvaluatingJavaScript:@"haveStream()"];
- EXPECT_FALSE([result boolValue]);
+ EXPECT_TRUE([webView haveStream:NO]);
// Sleep long enough for the reprompt timer to fire and clear cached state.
Util::sleep(1);
@@ -100,8 +116,7 @@
wasPrompted = false;
[webView stringByEvaluatingJavaScript:@"promptForCapture()"];
TestWebKitAPI::Util::run(&wasPrompted);
- result = [webView stringByEvaluatingJavaScript:@"haveStream()"];
- EXPECT_TRUE([result boolValue]);
+ EXPECT_TRUE([webView haveStream:YES]);
}
} // namespace TestWebKitAPI
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes