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

Unified Diff: components/scheduler/renderer/renderer_scheduler_impl_unittest.cc

Issue 1962053002: Allow expensive task blocking if there is pending iframe navigation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: use an enum Created 4 years, 7 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: components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
diff --git a/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc b/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
index 1a8944443ae6c699d3cef55ec96911ca2136af1f..c4f0977a9747618de68509f10486c62820945e46 100644
--- a/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
+++ b/components/scheduler/renderer/renderer_scheduler_impl_unittest.cc
@@ -2308,14 +2308,33 @@ TEST_F(RendererSchedulerImplTest,
}
TEST_F(RendererSchedulerImplTest,
- ExpensiveLoadingTasksNotBlockedIfNavigationExpected) {
+ ExpensiveLoadingTasksBlockedIfChildFrameNavigationExpected) {
std::vector<std::string> run_order;
DoMainFrame();
scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
SimulateExpensiveTasks(loading_task_runner_);
ForceTouchStartToBeExpectedSoon();
- scheduler_->AddPendingNavigation();
+ scheduler_->AddPendingNavigation(
+ blink::WebScheduler::NavigatingFrameType::kChildFrame);
+
+ PostTestTasks(&run_order, "L1 D1");
+ RunUntilIdle();
+
+ // The expensive loading task gets blocked.
+ EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1")));
+}
+
+TEST_F(RendererSchedulerImplTest,
+ ExpensiveLoadingTasksNotBlockedIfMainFrameNavigationExpected) {
+ std::vector<std::string> run_order;
+
+ DoMainFrame();
+ scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
+ SimulateExpensiveTasks(loading_task_runner_);
+ ForceTouchStartToBeExpectedSoon();
+ scheduler_->AddPendingNavigation(
+ blink::WebScheduler::NavigatingFrameType::kMainFrame);
PostTestTasks(&run_order, "L1 D1");
RunUntilIdle();
@@ -2331,7 +2350,8 @@ TEST_F(RendererSchedulerImplTest,
// After the nagigation has been cancelled, the expensive loading tasks should
// get blocked.
- scheduler_->RemovePendingNavigation();
+ scheduler_->RemovePendingNavigation(
+ blink::WebScheduler::NavigatingFrameType::kMainFrame);
run_order.clear();
PostTestTasks(&run_order, "L1 D1");
@@ -2348,15 +2368,17 @@ TEST_F(RendererSchedulerImplTest,
TEST_F(
RendererSchedulerImplTest,
- ExpensiveLoadingTasksNotBlockedIfNavigationExpected_MultipleNavigations) {
+ ExpensiveLoadingTasksNotBlockedIfMainFrameNavigationExpected_Multiple) {
std::vector<std::string> run_order;
DoMainFrame();
scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
SimulateExpensiveTasks(loading_task_runner_);
ForceTouchStartToBeExpectedSoon();
- scheduler_->AddPendingNavigation();
- scheduler_->AddPendingNavigation();
+ scheduler_->AddPendingNavigation(
+ blink::WebScheduler::NavigatingFrameType::kMainFrame);
+ scheduler_->AddPendingNavigation(
+ blink::WebScheduler::NavigatingFrameType::kMainFrame);
PostTestTasks(&run_order, "L1 D1");
RunUntilIdle();
@@ -2372,7 +2394,8 @@ TEST_F(
run_order.clear();
- scheduler_->RemovePendingNavigation();
+ scheduler_->RemovePendingNavigation(
+ blink::WebScheduler::NavigatingFrameType::kMainFrame);
// Navigation task expected ref count non-zero so expensive tasks still not
// blocked.
PostTestTasks(&run_order, "L1 D1");
@@ -2389,7 +2412,8 @@ TEST_F(
run_order.clear();
- scheduler_->RemovePendingNavigation();
+ scheduler_->RemovePendingNavigation(
+ blink::WebScheduler::NavigatingFrameType::kMainFrame);
// Navigation task expected ref count is now zero, the expensive loading tasks
// should get blocked.
PostTestTasks(&run_order, "L1 D1");
« no previous file with comments | « components/scheduler/renderer/renderer_scheduler_impl.cc ('k') | components/scheduler/renderer/renderer_web_scheduler_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698