| // 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 |