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

Side by Side Diff: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc

Issue 2843503002: scheduler: Move WebFrameScheduler and WebScheduler into Blink (Closed)
Patch Set: Build fix Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "platform/scheduler/renderer/renderer_scheduler_impl.h" 5 #include "platform/scheduler/renderer/renderer_scheduler_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 2672 matching lines...) Expand 10 before | Expand all | Expand 10 after
2683 2683
2684 TEST_F(RendererSchedulerImplTest, 2684 TEST_F(RendererSchedulerImplTest,
2685 ExpensiveLoadingTasksBlockedIfChildFrameNavigationExpected) { 2685 ExpensiveLoadingTasksBlockedIfChildFrameNavigationExpected) {
2686 std::vector<std::string> run_order; 2686 std::vector<std::string> run_order;
2687 2687
2688 DoMainFrame(); 2688 DoMainFrame();
2689 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true); 2689 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
2690 SimulateExpensiveTasks(loading_task_runner_); 2690 SimulateExpensiveTasks(loading_task_runner_);
2691 ForceTouchStartToBeExpectedSoon(); 2691 ForceTouchStartToBeExpectedSoon();
2692 scheduler_->AddPendingNavigation( 2692 scheduler_->AddPendingNavigation(
2693 blink::WebScheduler::NavigatingFrameType::kChildFrame); 2693 scheduler::RendererScheduler::NavigatingFrameType::kChildFrame);
2694 2694
2695 PostTestTasks(&run_order, "L1 D1"); 2695 PostTestTasks(&run_order, "L1 D1");
2696 RunUntilIdle(); 2696 RunUntilIdle();
2697 2697
2698 // The expensive loading task gets blocked. 2698 // The expensive loading task gets blocked.
2699 EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1"))); 2699 EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1")));
2700 EXPECT_EQ(v8::PERFORMANCE_RESPONSE, GetRAILMode()); 2700 EXPECT_EQ(v8::PERFORMANCE_RESPONSE, GetRAILMode());
2701 } 2701 }
2702 2702
2703 TEST_F(RendererSchedulerImplTest, 2703 TEST_F(RendererSchedulerImplTest,
2704 ExpensiveLoadingTasksNotBlockedIfMainFrameNavigationExpected) { 2704 ExpensiveLoadingTasksNotBlockedIfMainFrameNavigationExpected) {
2705 std::vector<std::string> run_order; 2705 std::vector<std::string> run_order;
2706 2706
2707 DoMainFrame(); 2707 DoMainFrame();
2708 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true); 2708 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
2709 SimulateExpensiveTasks(loading_task_runner_); 2709 SimulateExpensiveTasks(loading_task_runner_);
2710 ForceTouchStartToBeExpectedSoon(); 2710 ForceTouchStartToBeExpectedSoon();
2711 scheduler_->AddPendingNavigation( 2711 scheduler_->AddPendingNavigation(
2712 blink::WebScheduler::NavigatingFrameType::kMainFrame); 2712 scheduler::RendererScheduler::NavigatingFrameType::kMainFrame);
2713 2713
2714 PostTestTasks(&run_order, "L1 D1"); 2714 PostTestTasks(&run_order, "L1 D1");
2715 RunUntilIdle(); 2715 RunUntilIdle();
2716 2716
2717 EXPECT_EQ(UseCase::NONE, ForceUpdatePolicyAndGetCurrentUseCase()); 2717 EXPECT_EQ(UseCase::NONE, ForceUpdatePolicyAndGetCurrentUseCase());
2718 EXPECT_TRUE(HaveSeenABeginMainframe()); 2718 EXPECT_TRUE(HaveSeenABeginMainframe());
2719 EXPECT_TRUE(LoadingTasksSeemExpensive()); 2719 EXPECT_TRUE(LoadingTasksSeemExpensive());
2720 EXPECT_FALSE(TimerTasksSeemExpensive()); 2720 EXPECT_FALSE(TimerTasksSeemExpensive());
2721 EXPECT_TRUE(TouchStartExpectedSoon()); 2721 EXPECT_TRUE(TouchStartExpectedSoon());
2722 EXPECT_EQ(1, NavigationTaskExpectedCount()); 2722 EXPECT_EQ(1, NavigationTaskExpectedCount());
2723 EXPECT_THAT(run_order, 2723 EXPECT_THAT(run_order,
2724 testing::ElementsAre(std::string("L1"), std::string("D1"))); 2724 testing::ElementsAre(std::string("L1"), std::string("D1")));
2725 2725
2726 // After the nagigation has been cancelled, the expensive loading tasks should 2726 // After the nagigation has been cancelled, the expensive loading tasks should
2727 // get blocked. 2727 // get blocked.
2728 scheduler_->RemovePendingNavigation( 2728 scheduler_->RemovePendingNavigation(
2729 blink::WebScheduler::NavigatingFrameType::kMainFrame); 2729 scheduler::RendererScheduler::NavigatingFrameType::kMainFrame);
2730 run_order.clear(); 2730 run_order.clear();
2731 2731
2732 PostTestTasks(&run_order, "L1 D1"); 2732 PostTestTasks(&run_order, "L1 D1");
2733 RunUntilIdle(); 2733 RunUntilIdle();
2734 2734
2735 EXPECT_EQ(RendererSchedulerImpl::UseCase::NONE, CurrentUseCase()); 2735 EXPECT_EQ(RendererSchedulerImpl::UseCase::NONE, CurrentUseCase());
2736 EXPECT_TRUE(HaveSeenABeginMainframe()); 2736 EXPECT_TRUE(HaveSeenABeginMainframe());
2737 EXPECT_TRUE(LoadingTasksSeemExpensive()); 2737 EXPECT_TRUE(LoadingTasksSeemExpensive());
2738 EXPECT_FALSE(TimerTasksSeemExpensive()); 2738 EXPECT_FALSE(TimerTasksSeemExpensive());
2739 EXPECT_TRUE(TouchStartExpectedSoon()); 2739 EXPECT_TRUE(TouchStartExpectedSoon());
2740 EXPECT_EQ(0, NavigationTaskExpectedCount()); 2740 EXPECT_EQ(0, NavigationTaskExpectedCount());
2741 EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1"))); 2741 EXPECT_THAT(run_order, testing::ElementsAre(std::string("D1")));
2742 EXPECT_EQ(v8::PERFORMANCE_RESPONSE, GetRAILMode()); 2742 EXPECT_EQ(v8::PERFORMANCE_RESPONSE, GetRAILMode());
2743 } 2743 }
2744 2744
2745 TEST_F(RendererSchedulerImplTest, 2745 TEST_F(RendererSchedulerImplTest,
2746 ExpensiveLoadingTasksNotBlockedIfMainFrameNavigationExpected_Multiple) { 2746 ExpensiveLoadingTasksNotBlockedIfMainFrameNavigationExpected_Multiple) {
2747 std::vector<std::string> run_order; 2747 std::vector<std::string> run_order;
2748 2748
2749 DoMainFrame(); 2749 DoMainFrame();
2750 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true); 2750 scheduler_->SetHasVisibleRenderWidgetWithTouchHandler(true);
2751 SimulateExpensiveTasks(loading_task_runner_); 2751 SimulateExpensiveTasks(loading_task_runner_);
2752 ForceTouchStartToBeExpectedSoon(); 2752 ForceTouchStartToBeExpectedSoon();
2753 scheduler_->AddPendingNavigation( 2753 scheduler_->AddPendingNavigation(
2754 blink::WebScheduler::NavigatingFrameType::kMainFrame); 2754 scheduler::RendererScheduler::NavigatingFrameType::kMainFrame);
2755 scheduler_->AddPendingNavigation( 2755 scheduler_->AddPendingNavigation(
2756 blink::WebScheduler::NavigatingFrameType::kMainFrame); 2756 scheduler::RendererScheduler::NavigatingFrameType::kMainFrame);
2757 2757
2758 PostTestTasks(&run_order, "L1 D1"); 2758 PostTestTasks(&run_order, "L1 D1");
2759 RunUntilIdle(); 2759 RunUntilIdle();
2760 2760
2761 EXPECT_EQ(UseCase::NONE, ForceUpdatePolicyAndGetCurrentUseCase()); 2761 EXPECT_EQ(UseCase::NONE, ForceUpdatePolicyAndGetCurrentUseCase());
2762 EXPECT_TRUE(HaveSeenABeginMainframe()); 2762 EXPECT_TRUE(HaveSeenABeginMainframe());
2763 EXPECT_TRUE(LoadingTasksSeemExpensive()); 2763 EXPECT_TRUE(LoadingTasksSeemExpensive());
2764 EXPECT_FALSE(TimerTasksSeemExpensive()); 2764 EXPECT_FALSE(TimerTasksSeemExpensive());
2765 EXPECT_TRUE(TouchStartExpectedSoon()); 2765 EXPECT_TRUE(TouchStartExpectedSoon());
2766 EXPECT_EQ(2, NavigationTaskExpectedCount()); 2766 EXPECT_EQ(2, NavigationTaskExpectedCount());
2767 EXPECT_THAT(run_order, 2767 EXPECT_THAT(run_order,
2768 testing::ElementsAre(std::string("L1"), std::string("D1"))); 2768 testing::ElementsAre(std::string("L1"), std::string("D1")));
2769 2769
2770 run_order.clear(); 2770 run_order.clear();
2771 scheduler_->RemovePendingNavigation( 2771 scheduler_->RemovePendingNavigation(
2772 blink::WebScheduler::NavigatingFrameType::kMainFrame); 2772 scheduler::RendererScheduler::NavigatingFrameType::kMainFrame);
2773 // Navigation task expected ref count non-zero so expensive tasks still not 2773 // Navigation task expected ref count non-zero so expensive tasks still not
2774 // blocked. 2774 // blocked.
2775 PostTestTasks(&run_order, "L1 D1"); 2775 PostTestTasks(&run_order, "L1 D1");
2776 RunUntilIdle(); 2776 RunUntilIdle();
2777 2777
2778 EXPECT_EQ(UseCase::NONE, ForceUpdatePolicyAndGetCurrentUseCase()); 2778 EXPECT_EQ(UseCase::NONE, ForceUpdatePolicyAndGetCurrentUseCase());
2779 EXPECT_TRUE(HaveSeenABeginMainframe()); 2779 EXPECT_TRUE(HaveSeenABeginMainframe());
2780 EXPECT_TRUE(LoadingTasksSeemExpensive()); 2780 EXPECT_TRUE(LoadingTasksSeemExpensive());
2781 EXPECT_FALSE(TimerTasksSeemExpensive()); 2781 EXPECT_FALSE(TimerTasksSeemExpensive());
2782 EXPECT_TRUE(TouchStartExpectedSoon()); 2782 EXPECT_TRUE(TouchStartExpectedSoon());
2783 EXPECT_EQ(1, NavigationTaskExpectedCount()); 2783 EXPECT_EQ(1, NavigationTaskExpectedCount());
2784 EXPECT_THAT(run_order, 2784 EXPECT_THAT(run_order,
2785 testing::ElementsAre(std::string("L1"), std::string("D1"))); 2785 testing::ElementsAre(std::string("L1"), std::string("D1")));
2786 2786
2787 run_order.clear(); 2787 run_order.clear();
2788 scheduler_->RemovePendingNavigation( 2788 scheduler_->RemovePendingNavigation(
2789 blink::WebScheduler::NavigatingFrameType::kMainFrame); 2789 scheduler::RendererScheduler::NavigatingFrameType::kMainFrame);
2790 // Navigation task expected ref count is now zero, the expensive loading tasks 2790 // Navigation task expected ref count is now zero, the expensive loading tasks
2791 // should get blocked. 2791 // should get blocked.
2792 PostTestTasks(&run_order, "L1 D1"); 2792 PostTestTasks(&run_order, "L1 D1");
2793 RunUntilIdle(); 2793 RunUntilIdle();
2794 2794
2795 EXPECT_EQ(RendererSchedulerImpl::UseCase::NONE, CurrentUseCase()); 2795 EXPECT_EQ(RendererSchedulerImpl::UseCase::NONE, CurrentUseCase());
2796 EXPECT_TRUE(HaveSeenABeginMainframe()); 2796 EXPECT_TRUE(HaveSeenABeginMainframe());
2797 EXPECT_TRUE(LoadingTasksSeemExpensive()); 2797 EXPECT_TRUE(LoadingTasksSeemExpensive());
2798 EXPECT_FALSE(TimerTasksSeemExpensive()); 2798 EXPECT_FALSE(TimerTasksSeemExpensive());
2799 EXPECT_TRUE(TouchStartExpectedSoon()); 2799 EXPECT_TRUE(TouchStartExpectedSoon());
(...skipping 1020 matching lines...) Expand 10 before | Expand all | Expand 10 after
3820 EXPECT_TRUE( 3820 EXPECT_TRUE(
3821 scheduler_->MainThreadSeemsUnresponsive(responsiveness_threshold())); 3821 scheduler_->MainThreadSeemsUnresponsive(responsiveness_threshold()));
3822 // Once we've dropped the lock, we realize the main thread is responsive. 3822 // Once we've dropped the lock, we realize the main thread is responsive.
3823 DropQueueingTimeEstimatorLock(); 3823 DropQueueingTimeEstimatorLock();
3824 EXPECT_FALSE( 3824 EXPECT_FALSE(
3825 scheduler_->MainThreadSeemsUnresponsive(responsiveness_threshold())); 3825 scheduler_->MainThreadSeemsUnresponsive(responsiveness_threshold()));
3826 } 3826 }
3827 3827
3828 } // namespace scheduler 3828 } // namespace scheduler
3829 } // namespace blink 3829 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698