diff --git a/shell/platform/embedder/BUILD.gn b/shell/platform/embedder/BUILD.gn index a0c1b25899b61..849bc8fcee454 100644 --- a/shell/platform/embedder/BUILD.gn +++ b/shell/platform/embedder/BUILD.gn @@ -317,6 +317,7 @@ if (enable_unittests) { "tests/embedder_test_compositor_gl.h", "tests/embedder_test_context_gl.cc", "tests/embedder_test_context_gl.h", + "tests/embedder_test_gl.cc", ] public_deps += [ @@ -331,6 +332,7 @@ if (enable_unittests) { "tests/embedder_test_compositor_metal.h", "tests/embedder_test_context_metal.cc", "tests/embedder_test_context_metal.h", + "tests/embedder_test_metal.mm", ] public_deps += [ "//flutter/testing:metal" ] @@ -342,6 +344,7 @@ if (enable_unittests) { "tests/embedder_test_compositor_vulkan.h", "tests/embedder_test_context_vulkan.cc", "tests/embedder_test_context_vulkan.h", + "tests/embedder_test_vulkan.cc", ] public_deps += [ diff --git a/shell/platform/embedder/tests/embedder_test.cc b/shell/platform/embedder/tests/embedder_test.cc index 0b557d318e1ee..10eb5595602a7 100644 --- a/shell/platform/embedder/tests/embedder_test.cc +++ b/shell/platform/embedder/tests/embedder_test.cc @@ -5,20 +5,7 @@ #include "flutter/shell/platform/embedder/tests/embedder_test.h" #include "flutter/shell/platform/embedder/tests/embedder_test_context_software.h" -#ifdef SHELL_ENABLE_GL -#include "flutter/shell/platform/embedder/tests/embedder_test_context_gl.h" -#endif - -#ifdef SHELL_ENABLE_METAL -#include "flutter/shell/platform/embedder/tests/embedder_test_context_metal.h" -#endif - -#ifdef SHELL_ENABLE_VULKAN -#include "flutter/shell/platform/embedder/tests/embedder_test_context_vulkan.h" -#endif - -namespace flutter { -namespace testing { +namespace flutter::testing { EmbedderTest::EmbedderTest() = default; @@ -33,28 +20,17 @@ EmbedderTestContext& EmbedderTest::GetEmbedderContext( if (!embedder_contexts_[type]) { switch (type) { case EmbedderTestContextType::kSoftwareContext: - embedder_contexts_[type] = - std::make_unique( - GetFixturesDirectory()); + embedder_contexts_[type] = CreateSoftwareContext(); break; -#ifdef SHELL_ENABLE_VULKAN - case EmbedderTestContextType::kVulkanContext: - embedder_contexts_[type] = - std::make_unique(GetFixturesDirectory()); - break; -#endif -#ifdef SHELL_ENABLE_GL case EmbedderTestContextType::kOpenGLContext: - embedder_contexts_[type] = - std::make_unique(GetFixturesDirectory()); + embedder_contexts_[type] = CreateGLContext(); + break; + case EmbedderTestContextType::kVulkanContext: + embedder_contexts_[type] = CreateVulkanContext(); break; -#endif -#ifdef SHELL_ENABLE_METAL case EmbedderTestContextType::kMetalContext: - embedder_contexts_[type] = - std::make_unique(GetFixturesDirectory()); + embedder_contexts_[type] = CreateMetalContext(); break; -#endif default: FML_DCHECK(false) << "Invalid context type specified."; break; @@ -64,5 +40,35 @@ EmbedderTestContext& EmbedderTest::GetEmbedderContext( return *embedder_contexts_[type]; } -} // namespace testing -} // namespace flutter +std::unique_ptr EmbedderTest::CreateSoftwareContext() { + return std::make_unique(GetFixturesDirectory()); +} + +#ifndef SHELL_ENABLE_GL +// Fallback implementation. +// See: flutter/shell/platform/embedder/tests/embedder_test_gl.cc. +std::unique_ptr EmbedderTest::CreateGLContext() { + FML_LOG(FATAL) << "OpenGL is not supported in this build"; + return nullptr; +} +#endif + +#ifndef SHELL_ENABLE_METAL +// Fallback implementation. +// See: flutter/shell/platform/embedder/tests/embedder_test_metal.mm. +std::unique_ptr EmbedderTest::CreateMetalContext() { + FML_LOG(FATAL) << "Metal is not supported in this build"; + return nullptr; +} +#endif + +#ifndef SHELL_ENABLE_VULKAN +// Fallback implementation. +// See: flutter/shell/platform/embedder/tests/embedder_test_vulkan.cc. +std::unique_ptr EmbedderTest::CreateVulkanContext() { + FML_LOG(FATAL) << "Vulkan is not supported in this build"; + return nullptr; +} +#endif + +} // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_test.h b/shell/platform/embedder/tests/embedder_test.h index eb16637872872..4ba11ffdb4784 100644 --- a/shell/platform/embedder/tests/embedder_test.h +++ b/shell/platform/embedder/tests/embedder_test.h @@ -14,8 +14,7 @@ #include "flutter/testing/thread_test.h" #include "gtest/gtest.h" -namespace flutter { -namespace testing { +namespace flutter::testing { class EmbedderTest : public ThreadTest { public: @@ -29,6 +28,11 @@ class EmbedderTest : public ThreadTest { std::map> embedder_contexts_; + std::unique_ptr CreateSoftwareContext(); + std::unique_ptr CreateGLContext(); + std::unique_ptr CreateMetalContext(); + std::unique_ptr CreateVulkanContext(); + FML_DISALLOW_COPY_AND_ASSIGN(EmbedderTest); }; @@ -36,7 +40,6 @@ class EmbedderTestMultiBackend : public EmbedderTest, public ::testing::WithParamInterface {}; -} // namespace testing -} // namespace flutter +} // namespace flutter::testing #endif // FLUTTER_SHELL_PLATFORM_EMBEDDER_TESTS_EMBEDDER_TEST_H_ diff --git a/shell/platform/embedder/tests/embedder_test_gl.cc b/shell/platform/embedder/tests/embedder_test_gl.cc new file mode 100644 index 0000000000000..6361437b57f92 --- /dev/null +++ b/shell/platform/embedder/tests/embedder_test_gl.cc @@ -0,0 +1,15 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "flutter/shell/platform/embedder/tests/embedder_test.h" + +#include "flutter/shell/platform/embedder/tests/embedder_test_context_gl.h" + +namespace flutter::testing { + +std::unique_ptr EmbedderTest::CreateGLContext() { + return std::make_unique(GetFixturesDirectory()); +} + +} // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_test_metal.mm b/shell/platform/embedder/tests/embedder_test_metal.mm new file mode 100644 index 0000000000000..63c210fced333 --- /dev/null +++ b/shell/platform/embedder/tests/embedder_test_metal.mm @@ -0,0 +1,15 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "flutter/shell/platform/embedder/tests/embedder_test.h" + +#include "flutter/shell/platform/embedder/tests/embedder_test_context_metal.h" + +namespace flutter::testing { + +std::unique_ptr EmbedderTest::CreateMetalContext() { + return std::make_unique(GetFixturesDirectory()); +} + +} // namespace flutter::testing diff --git a/shell/platform/embedder/tests/embedder_test_vulkan.cc b/shell/platform/embedder/tests/embedder_test_vulkan.cc new file mode 100644 index 0000000000000..2dea4f6265679 --- /dev/null +++ b/shell/platform/embedder/tests/embedder_test_vulkan.cc @@ -0,0 +1,15 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "flutter/shell/platform/embedder/tests/embedder_test.h" + +#include "flutter/shell/platform/embedder/tests/embedder_test_context_vulkan.h" + +namespace flutter::testing { + +std::unique_ptr EmbedderTest::CreateVulkanContext() { + return std::make_unique(GetFixturesDirectory()); +} + +} // namespace flutter::testing