#include <memory>
#include "base/functional/bind.h"
#include "base/test/launcher/unit_test_launcher.h"
#include "base/test/task_environment.h"
#include "base/test/test_suite.h"
#include "build/build_config.h"
#if BUILDFLAG(IS_MAC)
#include "base/test/mock_chrome_application_mac.h"
#endif
#if BUILDFLAG(IS_OZONE)
#include "base/command_line.h"
#include "mojo/core/embedder/embedder.h"
#include "ui/base/ui_base_features.h"
#include "ui/ozone/public/ozone_platform.h"
#endif
#if BUILDFLAG(ARKWEB_UNITTESTS)
#include "arkweb/chromium_ext/ui/gl/test/run_all_unittests_ext.h"
#endif
namespace {
class GlTestSuite : public base::TestSuite {
public:
GlTestSuite(int argc, char** argv) : base::TestSuite(argc, argv) {
}
GlTestSuite(const GlTestSuite&) = delete;
GlTestSuite& operator=(const GlTestSuite&) = delete;
protected:
void Initialize() override {
#if BUILDFLAG(ARKWEB_UNITTESTS)
gl::init::InitializeGLNoExtensionsOneOff(
true, gl::GpuPreference::kDefault);
#endif
base::TestSuite::Initialize();
#if BUILDFLAG(IS_MAC)
mock_cr_app::RegisterMockCrApp();
#endif
#if BUILDFLAG(ARKWEB_UNITTESTS)
task_environment_ = std::make_unique<base::test::TaskEnvironment>();
#else
task_environment_ = std::make_unique<base::test::TaskEnvironment>(
base::test::TaskEnvironment::MainThreadType::UI);
#endif
#if BUILDFLAG(IS_OZONE)
ui::OzonePlatform::InitParams params;
params.single_process = true;
#if BUILDFLAG(ARKWEB_UNITTESTS)
ARKWEB_UNITTESTS_CREATE_FOR_TESTING()
#endif
ui::OzonePlatform::InitializeForUI(params);
#endif
}
void Shutdown() override {
base::TestSuite::Shutdown();
}
private:
std::unique_ptr<base::test::TaskEnvironment> task_environment_;
};
}
int main(int argc, char** argv) {
#if BUILDFLAG(IS_OZONE)
mojo::core::Init();
#endif
GlTestSuite test_suite(argc, argv);
return base::LaunchUnitTests(
argc, argv,
base::BindOnce(&GlTestSuite::Run, base::Unretained(&test_suite)));
}