blob: 026664787d8c1af6a007e855b7c4bf207fb304c2 [file] [log] [blame]
// Copyright 2019 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 "weblayer/test/weblayer_browser_test.h"
#include "base/base_paths.h"
#include "base/command_line.h"
#include "components/embedder_support/switches.h"
#include "content/public/browser/browser_context.h"
#include "weblayer/browser/browser_context_impl.h"
#include "weblayer/browser/profile_impl.h"
#include "weblayer/browser/tab_impl.h"
#include "weblayer/common/features.h"
#include "weblayer/shell/browser/shell.h"
#include "weblayer/shell/common/shell_switches.h"
namespace weblayer {
WebLayerBrowserTest::WebLayerBrowserTest() {
CreateTestServer(base::FilePath(FILE_PATH_LITERAL("weblayer/test/data")));
}
WebLayerBrowserTest::~WebLayerBrowserTest() = default;
void WebLayerBrowserTest::SetUp() {
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
command_line->AppendSwitch(switches::kNoInitialNavigation);
// Disable auto reload since most browser tests do not expect error pages to
// reload automatically. Tests that want auto reload can explicitly append
// embedder_support::kEnableAutoReload, which will override the disable here.
command_line->AppendSwitch(embedder_support::kDisableAutoReload);
if (start_in_incognito_mode_)
command_line->AppendSwitch(switches::kStartInIncognito);
SetUpCommandLine(command_line);
content::BrowserTestBase::SetUp();
}
void WebLayerBrowserTest::PreRunTestOnMainThread() {
ASSERT_EQ(Shell::windows().size(), 1u);
shell_ = Shell::windows()[0];
// Don't fill machine's download directory from tests; instead place downloads
// in the temporary user-data-dir for this test.
auto* tab_impl = static_cast<TabImpl*>(shell_->tab());
auto* browser_context = tab_impl->web_contents()->GetBrowserContext();
auto* browser_context_impl =
static_cast<BrowserContextImpl*>(browser_context);
browser_context_impl->profile_impl()->SetDownloadDirectory(
browser_context->GetPath());
// Accessing a browser context may involve storage partition initialization.
// Wait for the initialization to be completed.
base::RunLoop().RunUntilIdle();
}
void WebLayerBrowserTest::PostRunTestOnMainThread() {
Shell::CloseAllWindows();
}
void WebLayerBrowserTest::SetShellStartsInIncognitoMode() {
DCHECK(!set_up_called());
start_in_incognito_mode_ = true;
}
ProfileImpl* WebLayerBrowserTest::GetProfile() {
return static_cast<TabImpl*>(shell_->tab())->profile();
}
content::BrowserContext* WebLayerBrowserTest::GetBrowserContext() {
return GetProfile()->GetBrowserContext();
}
} // namespace weblayer