| Index: components/test/components_test_suit.cc
|
| diff --git a/components/test/components_test_suit.cc b/components/test/components_test_suit.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6ecc558e133adffcaa6e0d90aa2e9e23edfdd677
|
| --- /dev/null
|
| +++ b/components/test/components_test_suit.cc
|
| @@ -0,0 +1,157 @@
|
| +// Copyright (c) 2016 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 "components/test/components_test_suit.h"
|
| +
|
| +#include <memory>
|
| +
|
| +#include "base/bind.h"
|
| +#include "base/command_line.h"
|
| +#include "base/files/file_path.h"
|
| +#include "base/macros.h"
|
| +#include "base/memory/ptr_util.h"
|
| +#include "base/metrics/statistics_recorder.h"
|
| +#include "base/path_service.h"
|
| +#include "base/test/launcher/unit_test_launcher.h"
|
| +#include "build/build_config.h"
|
| +#include "components/content_settings/core/common/content_settings_pattern.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +#include "ui/base/resource/resource_bundle.h"
|
| +#include "ui/base/ui_base_paths.h"
|
| +#include "url/url_util.h"
|
| +
|
| +#if !defined(OS_IOS)
|
| +#include "content/public/test/test_content_client_initializer.h"
|
| +#include "content/public/test/unittest_test_suite.h"
|
| +#include "mojo/edk/embedder/embedder.h"
|
| +#include "ui/gl/test/gl_surface_test_support.h"
|
| +#endif
|
| +
|
| +#if defined(OS_ANDROID)
|
| +#include "base/android/jni_android.h"
|
| +#include "components/gcm_driver/instance_id/android/component_jni_registrar.h"
|
| +#include "components/invalidation/impl/android/component_jni_registrar.h"
|
| +#include "components/policy/core/browser/android/component_jni_registrar.h"
|
| +#include "components/safe_json/android/component_jni_registrar.h"
|
| +#include "components/signin/core/browser/android/component_jni_registrar.h"
|
| +#include "content/public/test/test_utils.h"
|
| +#include "net/android/net_jni_registrar.h"
|
| +#include "ui/base/android/ui_base_jni_registrar.h"
|
| +#include "ui/gfx/android/gfx_jni_registrar.h"
|
| +#endif
|
| +
|
| +namespace {
|
| +
|
| +class ComponentsUnitTestEventListener : public testing::EmptyTestEventListener {
|
| + public:
|
| + ComponentsUnitTestEventListener() {}
|
| + ~ComponentsUnitTestEventListener() override {}
|
| +
|
| + void OnTestStart(const testing::TestInfo& test_info) override {
|
| +#if !defined(OS_IOS)
|
| + content_initializer_.reset(new content::TestContentClientInitializer());
|
| +#endif
|
| + }
|
| +
|
| + void OnTestEnd(const testing::TestInfo& test_info) override {
|
| +#if !defined(OS_IOS)
|
| + content_initializer_.reset();
|
| +#endif
|
| + }
|
| +
|
| + private:
|
| +#if !defined(OS_IOS)
|
| + std::unique_ptr<content::TestContentClientInitializer> content_initializer_;
|
| +#endif
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ComponentsUnitTestEventListener);
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +ComponentsTestSuite::ComponentsTestSuite(int argc, char** argv)
|
| + : base::TestSuite(argc, argv) {}
|
| +
|
| +void ComponentsTestSuite::Initialize() {
|
| + base::TestSuite::Initialize();
|
| +
|
| + // Initialize the histograms subsystem, so that any histograms hit in tests
|
| + // are correctly registered with the statistics recorder and can be queried
|
| + // by tests.
|
| + base::StatisticsRecorder::Initialize();
|
| +
|
| +#if !defined(OS_IOS)
|
| + gl::GLSurfaceTestSupport::InitializeOneOff();
|
| +#endif
|
| +#if defined(OS_ANDROID)
|
| + // Register JNI bindings for android.
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + ASSERT_TRUE(content::RegisterJniForTesting(env));
|
| + ASSERT_TRUE(gfx::android::RegisterJni(env));
|
| + ASSERT_TRUE(instance_id::android::RegisterInstanceIDJni(env));
|
| + ASSERT_TRUE(invalidation::android::RegisterInvalidationJni(env));
|
| + ASSERT_TRUE(policy::android::RegisterPolicy(env));
|
| + ASSERT_TRUE(safe_json::android::RegisterSafeJsonJni(env));
|
| + ASSERT_TRUE(signin::android::RegisterSigninJni(env));
|
| + ASSERT_TRUE(net::android::RegisterJni(env));
|
| + ASSERT_TRUE(ui::android::RegisterJni(env));
|
| +#endif
|
| +
|
| + ui::RegisterPathProvider();
|
| +
|
| + base::FilePath pak_path;
|
| +#if defined(OS_ANDROID)
|
| + PathService::Get(ui::DIR_RESOURCE_PAKS_ANDROID, &pak_path);
|
| +#else
|
| + PathService::Get(base::DIR_MODULE, &pak_path);
|
| +#endif
|
| +
|
| + base::FilePath ui_test_pak_path;
|
| + ASSERT_TRUE(PathService::Get(ui::UI_TEST_PAK, &ui_test_pak_path));
|
| + ui::ResourceBundle::InitSharedInstanceWithPakPath(ui_test_pak_path);
|
| +
|
| + ui::ResourceBundle::GetSharedInstance().AddDataPackFromPath(
|
| + pak_path.AppendASCII("components_tests_resources.pak"),
|
| + ui::SCALE_FACTOR_NONE);
|
| +
|
| + // These schemes need to be added globally to pass tests of
|
| + // autocomplete_input_unittest.cc and content_settings_pattern*
|
| + url::AddStandardScheme("chrome", url::SCHEME_WITHOUT_PORT);
|
| + url::AddStandardScheme("chrome-extension", url::SCHEME_WITHOUT_PORT);
|
| + url::AddStandardScheme("chrome-devtools", url::SCHEME_WITHOUT_PORT);
|
| + url::AddStandardScheme("chrome-search", url::SCHEME_WITHOUT_PORT);
|
| +
|
| + // Not using kExtensionScheme to avoid the dependency to extensions.
|
| + ContentSettingsPattern::SetNonWildcardDomainNonPortScheme("chrome-extension");
|
| +}
|
| +
|
| +void ComponentsTestSuite::Shutdown() {
|
| + ui::ResourceBundle::CleanupSharedInstance();
|
| + base::TestSuite::Shutdown();
|
| +}
|
| +
|
| +base::RunTestSuiteCallback CreateCallbackForLaunch(
|
| + std::unique_ptr<ComponentsTestSuite> test_suite) {
|
| +#if !defined(OS_IOS)
|
| + auto wrapped_test_suite =
|
| + base::MakeUnique<content::UnitTestTestSuite>(test_suite.release());
|
| +#else
|
| + auto wrapped_test_suite = std::move(test_suite);
|
| +#endif
|
| +
|
| + // The listener will set up common test environment for all components unit
|
| + // tests.
|
| + testing::TestEventListeners& listeners =
|
| + testing::UnitTest::GetInstance()->listeners();
|
| + listeners.Append(new ComponentsUnitTestEventListener());
|
| +
|
| +#if !defined(OS_IOS)
|
| + mojo::edk::Init();
|
| + return base::Bind(&content::UnitTestTestSuite::Run,
|
| + base::Owned(wrapped_test_suite.release()));
|
| +#else
|
| + return base::Bind(&base::TestSuite::Run,
|
| + base::Owned(wrapped_test_suite.release()));
|
| +#endif
|
| +}
|
|
|