| #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 |