// Copyright 2011 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CC_TEST_LAYER_TREE_TEST_H_ #define CC_TEST_LAYER_TREE_TEST_H_ #include <memory> #include <string> #include "base/memory/raw_ptr.h" #include "base/memory/ref_counted.h" #include "base/run_loop.h" #include "base/task/single_thread_task_runner.h" #include "base/test/scoped_feature_list.h" #include "base/threading/thread.h" #include "base/time/time.h" #include "build/build_config.h" #include "cc/animation/animation_delegate.h" #include "cc/base/features.h" #include "cc/test/property_tree_test_utils.h" #include "cc/test/test_hooks.h" #include "cc/test/test_task_graph_runner.h" #include "cc/test/test_types.h" #include "cc/trees/compositor_mode.h" #include "cc/trees/layer_tree_host.h" #include "cc/trees/layer_tree_host_impl.h" #include "components/viz/common/surfaces/parent_local_surface_id_allocator.h" #include "components/viz/test/test_gpu_service_holder.h" #include "gpu/command_buffer/client/test_gpu_memory_buffer_manager.h" #include "testing/gtest/include/gtest/gtest.h" namespace base { namespace test { class ScopedFeatureList; } } // namespace base namespace viz { class BeginFrameSource; class TestContextProvider; } namespace cc { class Animation; class AnimationHost; class LayerTreeHost; class LayerTreeHostForTesting; class LayerTreeTestLayerTreeFrameSinkClient; class Proxy; class TestLayerTreeFrameSink; class TestTaskGraphRunner; class LayerTreeHostClientForTesting; // The LayerTreeTests runs with the main loop running. It instantiates a single // LayerTreeHostForTesting and associated LayerTreeHostImplForTesting and // LayerTreeHostClientForTesting. // // BeginTest() is called once the main message loop is running and the layer // tree host is initialized. // // Key stages of the drawing loop, e.g. drawing or commiting, redirect to // LayerTreeTest methods of similar names. To track the commit process, override // these functions. // // The test continues until someone calls EndTest. EndTest can be called on any // thread, but be aware that ending the test is an asynchronous process. class LayerTreeTest : public testing::Test, public TestHooks { … }; } // namespace cc // Do not change this macro to disable a test, it will disable half of // the unit test suite. Instead, comment out the usage of this macro for // a specific test name. eg. // // TODO(crbug.com/abcd): Disabled for some reasons stated here. // // SINGLE_AND_MULTI_THREAD_TEST_F(SomeRandomTest) #define SINGLE_THREAD_TEST_F(TEST_FIXTURE_NAME) … // Do not change this macro to disable a test, it will disable half of // the unit test suite. Instead, comment out the usage of this macro for // a specific test name. eg. // // TODO(crbug.com/abcd): Disabled for some reasons stated here. // // SINGLE_AND_MULTI_THREAD_TEST_F(SomeRandomTest) #define MULTI_THREAD_TEST_F(TEST_FIXTURE_NAME) … // Do not change this macro to disable a test, it will disable half of // the unit test suite. Instead, comment out the usage of this macro for // a specific test name. eg. // // TODO(crbug.com/abcd): Disabled for some reasons stated here. // // SINGLE_AND_MULTI_THREAD_TEST_F(SomeRandomTest) #define SINGLE_AND_MULTI_THREAD_TEST_F(TEST_FIXTURE_NAME) … // Some tests want to control when notify ready for activation occurs, // but this is not supported in the single-threaded case. // // Do not change this macro to disable a test, it will disable half of // the unit test suite. Instead, comment out the usage of this macro for // a specific test name. eg. // // TODO(crbug.com/abcd): Disabled for some reasons stated here. // // MULTI_THREAD_BLOCKNOTIFY_TEST_F(SomeRandomTest) #define MULTI_THREAD_BLOCKNOTIFY_TEST_F(TEST_FIXTURE_NAME) … #endif // CC_TEST_LAYER_TREE_TEST_H_