1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/test/base/android/android_browser_test.h"
#include "base/command_line.h"
#include "chrome/browser/ui/android/tab_model/tab_model.h"
#include "chrome/browser/ui/android/tab_model/tab_model_list.h"
#include "chrome/test/base/chrome_test_utils.h"
#include "chrome/test/base/test_launcher_utils.h"
#include "content/public/test/test_utils.h"
#include "extensions/buildflags/buildflags.h"
#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
#include "extensions/common/extension_features.h"
#endif
namespace {
AndroidBrowserTest* g_current_test = nullptr;
} // namespace
AndroidBrowserTest::AndroidBrowserTest() {
CreateTestServer(base::FilePath(FILE_PATH_LITERAL("chrome/test/data")));
#if BUILDFLAG(ENABLE_EXTENSIONS_CORE)
// Allow unpacked extensions without developer mode for testing.
feature_list_.InitAndDisableFeature(
extensions_features::kExtensionDisableUnsupportedDeveloper);
#endif
g_current_test = this;
}
AndroidBrowserTest::~AndroidBrowserTest() {
g_current_test = nullptr;
}
AndroidBrowserTest* AndroidBrowserTest::GetCurrent() {
return g_current_test;
}
void AndroidBrowserTest::SetUp() {
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
SetUpCommandLine(command_line);
SetUpDefaultCommandLine(command_line);
ASSERT_TRUE(test_launcher_utils::CreateUserDataDir(&temp_user_data_dir_));
InitializeHTTPSTestServer();
embedded_https_test_server().AddDefaultHandlers(GetChromeTestDataDir());
ASSERT_TRUE(SetUpUserDataDirectory());
BrowserTestBase::SetUp();
}
void AndroidBrowserTest::SetUpDefaultCommandLine(
base::CommandLine* command_line) {
test_launcher_utils::PrepareBrowserCommandLineForTests(command_line);
test_launcher_utils::PrepareBrowserCommandLineForBrowserTests(
command_line, /*open_about_blank_on_launch=*/true);
}
bool AndroidBrowserTest::SetUpUserDataDirectory() {
return true;
}
void AndroidBrowserTest::PreRunTestOnMainThread() {}
void AndroidBrowserTest::PostRunTestOnMainThread() {
for (TabModel* model : TabModelList::models()) {
if (model->GetTabCount()) {
model->ForceCloseAllTabs();
}
ASSERT_EQ(0, model->GetTabCount());
}
// Run any shutdown events from closing tabs.
content::RunAllPendingInMessageLoop();
}
// static
size_t AndroidBrowserTest::GetTestPreCount() {
constexpr std::string_view kPreTestPrefix = "PRE_";
std::string_view test_name =
testing::UnitTest::GetInstance()->current_test_info()->name();
size_t count = 0;
while (base::StartsWith(test_name, kPreTestPrefix)) {
++count;
test_name = test_name.substr(kPreTestPrefix.size());
}
return count;
}
base::FilePath AndroidBrowserTest::GetChromeTestDataDir() const {
return chrome_test_utils::GetChromeTestDataDir();
}
Profile* AndroidBrowserTest::GetProfile() const {
for (TabModel* model : TabModelList::models()) {
if (model->GetProfile()) {
return model->GetProfile();
}
}
return nullptr;
}
|