// Copyright 2017 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "services/viz/public/cpp/gpu/gpu.h" #include <memory> #include <utility> #include "base/functional/bind.h" #include "base/functional/callback_helpers.h" #include "base/memory/ptr_util.h" #include "base/message_loop/message_pump_type.h" #include "base/run_loop.h" #include "base/synchronization/waitable_event.h" #include "base/test/task_environment.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "gpu/command_buffer/common/shared_image_capabilities.h" #include "gpu/config/gpu_feature_info.h" #include "gpu/config/gpu_info.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/receiver_set.h" #include "testing/gtest/include/gtest/gtest.h" namespace viz { namespace { class TestGpuImpl : public mojom::Gpu { … }; } // namespace class GpuTest : public testing::Test { … }; // Tests that multiple calls for establishing a gpu channel are all notified // correctly when the channel is established (or fails to establish). TEST_F(GpuTest, EstablishRequestsQueued) { … } // Tests that a new request for establishing a gpu channel from a callback of a // previous callback is processed correctly. TEST_F(GpuTest, EstablishRequestOnFailureOnPreviousRequest) { … } // Tests that if a request for a gpu channel succeeded, then subsequent requests // are met synchronously. TEST_F(GpuTest, EstablishRequestResponseSynchronouslyOnSuccess) { … } // Tests that if EstablishGpuChannel() was called but hasn't finished yet and // EstablishGpuChannelSync() is called, that EstablishGpuChannelSync() blocks // the thread until the original call returns. TEST_F(GpuTest, EstablishRequestAsyncThenSync) { … } // Tests that Gpu::EstablishGpuChannelSync() returns even if a connection error // occurs. The implementation of mojom::Gpu never runs the callback for // mojom::Gpu::EstablishGpuChannel() due to the connection error. TEST_F(GpuTest, SyncConnectionError) { … } // Tests that Gpu::EstablishGpuChannel() callbacks are run even if a connection // error occurs. The implementation of mojom::Gpu never runs the callback for // mojom::Gpu::EstablishGpuChannel() due to the connection error. TEST_F(GpuTest, AsyncConnectionError) { … } // Tests that if EstablishGpuChannelSync() is called after a request for // EstablishGpuChannel() has returned that request is used immediately. TEST_F(GpuTest, EstablishRequestAsyncThenSyncWithResponse) { … } // Tests that if Gpu is destroyed with a pending request it doesn't cause any // issues. TEST_F(GpuTest, DestroyGpuWithPendingRequest) { … } } // namespace viz