Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1007)

Unified Diff: third_party/WebKit/Source/web/tests/VirtualTimeTest.cpp

Issue 2184123002: Change VirtualTimePolicy::PAUSE_IF_NETWORK_FETCHES_PENDING (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/web/tests/VirtualTimeTest.cpp
diff --git a/third_party/WebKit/Source/web/tests/VirtualTimeTest.cpp b/third_party/WebKit/Source/web/tests/VirtualTimeTest.cpp
index 85c06d9aa96519ce4f3a7f680010c105b9c61d1e..7d78d7724299548e3869b301efb561bedbbca158 100644
--- a/third_party/WebKit/Source/web/tests/VirtualTimeTest.cpp
+++ b/third_party/WebKit/Source/web/tests/VirtualTimeTest.cpp
@@ -38,11 +38,24 @@ protected:
ScriptExecutionCallbackHelper callbackHelper;
webView().mainFrame()->toWebLocalFrame()->requestExecuteScriptAndReturnValue(
WebScriptSource(WebString(scriptSource)), false, &callbackHelper);
- testing::runPendingTasks();
return callbackHelper.result();
}
};
+namespace {
+ void quitRunLoop()
+ {
+ base::MessageLoop::current()->QuitNow();
+ }
+
+ // Some task queues may have repeating v8 tasks that run forever so we impose a hard time limit.
+ void runTasksForPeriod(double delayMs)
+ {
+ Platform::current()->currentThread()->getWebTaskRunner()->postDelayedTask(BLINK_FROM_HERE, WTF::bind(&quitRunLoop), delayMs);
+ testing::enterRunLoop();
+ }
+}
+
TEST_F(VirtualTimeTest, DOMTimersFireInExpectedOrder)
{
webView().scheduler()->enableVirtualTime();
@@ -61,6 +74,7 @@ TEST_F(VirtualTimeTest, DOMTimersFireInExpectedOrder)
// take 100h to fire, but thanks to timer fast forwarding we can make them
// fire immediatly.
+ testing::runPendingTasks();
EXPECT_EQ("c, b, a", ExecuteJavaScript("run_order.join(', ')"));
}
@@ -79,8 +93,8 @@ TEST_F(VirtualTimeTest, SetInterval)
"}, 1000);"
"setTimeout(function() { run_order.push('timer'); }, 1500);");
- // If virtual time is not supplied to TimerBase then the setInterval
- // won't fire 10x.
+ runTasksForPeriod(12000);
+
EXPECT_EQ("9, timer, 8, 7, 6, 5, 4, 3, 2, 1, 0", ExecuteJavaScript("run_order.join(', ')"));
}
@@ -98,10 +112,11 @@ TEST_F(VirtualTimeTest, AllowVirtualTimeToAdvance)
"timerFn(10, 'b');"
"timerFn(1, 'c');");
+ testing::runPendingTasks();
EXPECT_EQ("", ExecuteJavaScript("run_order.join(', ')"));
webView().scheduler()->setVirtualTimePolicy(WebViewScheduler::VirtualTimePolicy::ADVANCE);
- testing::runPendingTasks();
+ runTasksForPeriod(1000);
EXPECT_EQ("c, b, a", ExecuteJavaScript("run_order.join(', ')"));
}
@@ -111,14 +126,12 @@ TEST_F(VirtualTimeTest, VirtualTimeNotAllowedToAdvanceWhileResourcesLoading)
webView().scheduler()->enableVirtualTime();
webView().scheduler()->setVirtualTimePolicy(WebViewScheduler::VirtualTimePolicy::DETERMINISTIC_LOADING);
- EXPECT_TRUE(webView().scheduler()->virtualTimeAllowedToAdvance());
+ // To ensure determinism virtual time is not allowed to advance until we have seen at least one load.
+ EXPECT_FALSE(webView().scheduler()->virtualTimeAllowedToAdvance());
SimRequest mainResource("https://example.com/test.html", "text/html");
SimRequest cssResource("https://example.com/test.css", "text/css");
- // Not loading, virtual time should be able to advance.
- EXPECT_TRUE(webView().scheduler()->virtualTimeAllowedToAdvance());
-
// Loading, virtual time should not advance.
loadURL("https://example.com/test.html");
EXPECT_FALSE(webView().scheduler()->virtualTimeAllowedToAdvance());
« no previous file with comments | « third_party/WebKit/Source/platform/WebViewSchedulerTest.cpp ('k') | third_party/WebKit/public/platform/WebViewScheduler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698