| #define FML_USED_ON_EMBEDDER | |
| #include <initializer_list> | |
| #include "flutter/common/settings.h" | |
| #include "flutter/common/task_runners.h" | |
| #include "flutter/shell/common/switches.h" | |
| #include "gtest/gtest.h" | |
| #include "thread_host.h" | |
| #include "vsync_waiter.h" | |
| namespace flutter { | |
| namespace testing { | |
| class TestVsyncWaiter : public VsyncWaiter { | |
| public: | |
| explicit TestVsyncWaiter(const TaskRunners& task_runners) | |
| : VsyncWaiter(task_runners) {} | |
| int await_vsync_call_count_ = 0; | |
| protected: | |
| void AwaitVSync() override { await_vsync_call_count_++; } | |
| }; | |
| TEST(VsyncWaiterTest, NoUnneededAwaitVsync) { | |
| using flutter::ThreadHost; | |
| std::string prefix = "vsync_waiter_test"; | |
| fml::MessageLoop::EnsureInitializedForCurrentThread(); | |
| auto task_runner = fml::MessageLoop::GetCurrent().GetTaskRunner(); | |
| const flutter::TaskRunners task_runners(prefix, task_runner, task_runner, | |
| task_runner, task_runner); | |
| TestVsyncWaiter vsync_waiter(task_runners); | |
| vsync_waiter.ScheduleSecondaryCallback(1, [] {}); | |
| EXPECT_EQ(vsync_waiter.await_vsync_call_count_, 1); | |
| vsync_waiter.ScheduleSecondaryCallback(2, [] {}); | |
| EXPECT_EQ(vsync_waiter.await_vsync_call_count_, 1); | |
| } | |
| } // namespace testing | |
| } // namespace flutter |