blob: 9077ab765df957570b78151e17d05880cfefd8b4 [file] [log] [blame]
// Copyright 2020 The Chromium 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 "base/bind.h"
#include "base/test/launcher/unit_test_launcher.h"
#include "base/threading/thread_restrictions.h"
#include "content/public/test/content_test_suite_base.h"
#include "content/public/test/unittest_test_suite.h"
#include "weblayer/browser/content_browser_client_impl.h"
#include "weblayer/common/content_client_impl.h"
#include "weblayer/utility/content_utility_client_impl.h"
namespace weblayer {
namespace {
class WebLayerUnitTestSuiteInitializer
: public testing::EmptyTestEventListener {
public:
WebLayerUnitTestSuiteInitializer() = default;
~WebLayerUnitTestSuiteInitializer() override = default;
WebLayerUnitTestSuiteInitializer(const WebLayerUnitTestSuiteInitializer&) =
delete;
WebLayerUnitTestSuiteInitializer& operator=(
const WebLayerUnitTestSuiteInitializer&) = delete;
void OnTestStart(const testing::TestInfo& test_info) override {
content_client_ = std::make_unique<ContentClientImpl>();
content::SetContentClient(content_client_.get());
browser_content_client_ =
std::make_unique<ContentBrowserClientImpl>(nullptr);
content::SetBrowserClientForTesting(browser_content_client_.get());
utility_content_client_ = std::make_unique<ContentUtilityClientImpl>();
content::SetUtilityClientForTesting(utility_content_client_.get());
}
void OnTestEnd(const testing::TestInfo& test_info) override {
browser_content_client_ = nullptr;
utility_content_client_ = nullptr;
content_client_ = nullptr;
content::SetContentClient(nullptr);
}
private:
std::unique_ptr<ContentClientImpl> content_client_;
std::unique_ptr<ContentBrowserClientImpl> browser_content_client_;
std::unique_ptr<ContentUtilityClientImpl> utility_content_client_;
};
} // namespace
class WebLayerTestSuite : public content::ContentTestSuiteBase {
public:
WebLayerTestSuite(int argc, char** argv) : ContentTestSuiteBase(argc, argv) {}
~WebLayerTestSuite() override = default;
WebLayerTestSuite(const WebLayerTestSuite&) = delete;
WebLayerTestSuite& operator=(const WebLayerTestSuite&) = delete;
void Initialize() override {
testing::TestEventListeners& listeners =
testing::UnitTest::GetInstance()->listeners();
listeners.Append(new WebLayerUnitTestSuiteInitializer);
ContentTestSuiteBase::Initialize();
}
};
} // namespace weblayer
int main(int argc, char** argv) {
content::UnitTestTestSuite test_suite(
new weblayer::WebLayerTestSuite(argc, argv));
return base::LaunchUnitTests(argc, argv,
base::BindOnce(&content::UnitTestTestSuite::Run,
base::Unretained(&test_suite)));
}