diff options
Diffstat (limited to 'chromium/headless/lib')
17 files changed, 112 insertions, 42 deletions
diff --git a/chromium/headless/lib/DEPS b/chromium/headless/lib/DEPS index 4eabc9c6364..64a94819d01 100644 --- a/chromium/headless/lib/DEPS +++ b/chromium/headless/lib/DEPS @@ -2,6 +2,9 @@ specific_include_rules = { "headless_browser_browsertest.cc": [ "+third_party/crashpad/crashpad/client", ], + "headless_browser_main_parts_linux.cc": [ + "+device/bluetooth", + ], "headless_content_client.cc": [ "+components/embedder_support/origin_trials", ], @@ -9,6 +12,7 @@ specific_include_rules = { "+cc/base/switches.h", "+components/viz/common/switches.h", "+gpu/config/gpu_switches.h", + "+third_party/blink/public/common/switches.h", ], "headless_web_contents_browsertest.cc": [ "+cc/base/switches.h", diff --git a/chromium/headless/lib/browser/devtools_api/domain_type_conversions_h.template b/chromium/headless/lib/browser/devtools_api/domain_type_conversions_h.template index 5c02c6fee5f..022eee9541c 100644 --- a/chromium/headless/lib/browser/devtools_api/domain_type_conversions_h.template +++ b/chromium/headless/lib/browser/devtools_api/domain_type_conversions_h.template @@ -7,6 +7,7 @@ #ifndef HEADLESS_PUBLIC_DEVTOOLS_INTERNAL_TYPE_CONVERSIONS_{{domain.domain | camelcase_to_hacker_style | upper}}_H_ #define HEADLESS_PUBLIC_DEVTOOLS_INTERNAL_TYPE_CONVERSIONS_{{domain.domain | camelcase_to_hacker_style | upper}}_H_ +#include "base/notreached.h" #include "headless/public/devtools/domains/types_{{domain.domain | camelcase_to_hacker_style}}.h" #include "headless/public/internal/value_conversions.h" diff --git a/chromium/headless/lib/browser/headless_browser_context_impl.cc b/chromium/headless/lib/browser/headless_browser_context_impl.cc index 208ce54a9c2..cc26c0451f8 100644 --- a/chromium/headless/lib/browser/headless_browser_context_impl.cc +++ b/chromium/headless/lib/browser/headless_browser_context_impl.cc @@ -12,7 +12,6 @@ #include "base/guid.h" #include "base/memory/ptr_util.h" #include "base/path_service.h" -#include "base/task/post_task.h" #include "components/keyed_service/core/simple_key_map.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" @@ -55,8 +54,8 @@ HeadlessBrowserContextImpl::~HeadlessBrowserContextImpl() { web_contents_map_.clear(); if (request_context_manager_) { - base::DeleteSoon(FROM_HERE, {content::BrowserThread::IO}, - request_context_manager_.release()); + content::GetIOThreadTaskRunner({})->DeleteSoon( + FROM_HERE, request_context_manager_.release()); } ShutdownStoragePartitions(); diff --git a/chromium/headless/lib/browser/headless_browser_impl.cc b/chromium/headless/lib/browser/headless_browser_impl.cc index 859769e6fbf..5c2270330b9 100644 --- a/chromium/headless/lib/browser/headless_browser_impl.cc +++ b/chromium/headless/lib/browser/headless_browser_impl.cc @@ -12,7 +12,6 @@ #include "base/command_line.h" #include "base/memory/ptr_util.h" #include "base/run_loop.h" -#include "base/task/post_task.h" #include "base/threading/thread_task_runner_handle.h" #include "content/public/app/content_main.h" #include "content/public/browser/browser_task_traits.h" @@ -50,7 +49,7 @@ HeadlessBrowserImpl::CreateBrowserContextBuilder() { scoped_refptr<base::SingleThreadTaskRunner> HeadlessBrowserImpl::BrowserMainThread() const { - return base::CreateSingleThreadTaskRunner({content::BrowserThread::UI}); + return content::GetUIThreadTaskRunner({}); } void HeadlessBrowserImpl::Shutdown() { @@ -61,8 +60,8 @@ void HeadlessBrowserImpl::Shutdown() { auto tmp = std::move(browser_contexts_); tmp.clear(); if (system_request_context_manager_) { - base::DeleteSoon(FROM_HERE, {content::BrowserThread::IO}, - system_request_context_manager_.release()); + content::GetIOThreadTaskRunner({})->DeleteSoon( + FROM_HERE, system_request_context_manager_.release()); } browser_main_parts_->QuitMainMessageLoop(); } diff --git a/chromium/headless/lib/browser/headless_browser_main_parts.h b/chromium/headless/lib/browser/headless_browser_main_parts.h index 2331a0a8efa..49432387df6 100644 --- a/chromium/headless/lib/browser/headless_browser_main_parts.h +++ b/chromium/headless/lib/browser/headless_browser_main_parts.h @@ -8,6 +8,7 @@ #include <memory> #include "base/files/file_path.h" +#include "build/build_config.h" #include "content/public/browser/browser_main_parts.h" #include "content/public/common/main_function_params.h" #include "headless/public/headless_browser.h" @@ -31,7 +32,9 @@ class HeadlessBrowserMainParts : public content::BrowserMainParts { #if defined(OS_MACOSX) void PreMainMessageLoopStart() override; #endif - +#if defined(OS_LINUX) + void PostMainMessageLoopStart() override; +#endif void QuitMainMessageLoop(); private: diff --git a/chromium/headless/lib/browser/headless_browser_main_parts_linux.cc b/chromium/headless/lib/browser/headless_browser_main_parts_linux.cc new file mode 100644 index 00000000000..129b6745001 --- /dev/null +++ b/chromium/headless/lib/browser/headless_browser_main_parts_linux.cc @@ -0,0 +1,18 @@ +// 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 "headless/lib/browser/headless_browser_main_parts.h" + +#include "build/build_config.h" +#include "device/bluetooth/dbus/bluez_dbus_manager.h" + +namespace headless { + +void HeadlessBrowserMainParts::PostMainMessageLoopStart() { +#if defined(USE_DBUS) && !defined(OS_CHROMEOS) + bluez::BluezDBusManager::Initialize(/*system_bus=*/nullptr); +#endif +} + +} // namespace headless diff --git a/chromium/headless/lib/browser/headless_devtools_client_impl.cc b/chromium/headless/lib/browser/headless_devtools_client_impl.cc index c5326352ec4..2c1683e1124 100644 --- a/chromium/headless/lib/browser/headless_devtools_client_impl.cc +++ b/chromium/headless/lib/browser/headless_devtools_client_impl.cc @@ -10,7 +10,6 @@ #include "base/json/json_reader.h" #include "base/json/json_writer.h" #include "base/memory/ptr_util.h" -#include "base/task/post_task.h" #include "base/values.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" @@ -86,8 +85,7 @@ void HeadlessDevToolsClientImpl::AttachToExternalHost( } void HeadlessDevToolsClientImpl::InitBrowserMainThread() { - browser_main_thread_ = - base::CreateSingleThreadTaskRunner({content::BrowserThread::UI}); + browser_main_thread_ = content::GetUIThreadTaskRunner({}); } void HeadlessDevToolsClientImpl::ChannelClosed() { diff --git a/chromium/headless/lib/browser/headless_devtools_manager_delegate.cc b/chromium/headless/lib/browser/headless_devtools_manager_delegate.cc index a16c512e7fc..e0447b0d638 100644 --- a/chromium/headless/lib/browser/headless_devtools_manager_delegate.cc +++ b/chromium/headless/lib/browser/headless_devtools_manager_delegate.cc @@ -48,9 +48,8 @@ HeadlessDevToolsManagerDelegate::CreateNewTarget(const GURL& url) { } std::string HeadlessDevToolsManagerDelegate::GetDiscoveryPageHTML() { - return ui::ResourceBundle::GetSharedInstance() - .GetRawDataResource(IDR_HEADLESS_LIB_DEVTOOLS_DISCOVERY_PAGE) - .as_string(); + return ui::ResourceBundle::GetSharedInstance().LoadDataResourceString( + IDR_HEADLESS_LIB_DEVTOOLS_DISCOVERY_PAGE); } bool HeadlessDevToolsManagerDelegate::HasBundledFrontendResources() { diff --git a/chromium/headless/lib/browser/headless_focus_client.cc b/chromium/headless/lib/browser/headless_focus_client.cc index c406c703861..661c3a2e410 100644 --- a/chromium/headless/lib/browser/headless_focus_client.cc +++ b/chromium/headless/lib/browser/headless_focus_client.cc @@ -10,7 +10,7 @@ namespace headless { HeadlessFocusClient::HeadlessFocusClient() - : focused_window_(NULL), observer_manager_(this) {} + : focused_window_(nullptr), observer_manager_(this) {} HeadlessFocusClient::~HeadlessFocusClient() = default; diff --git a/chromium/headless/lib/browser/headless_request_context_manager.cc b/chromium/headless/lib/browser/headless_request_context_manager.cc index aa183d0d306..adba8cecd22 100644 --- a/chromium/headless/lib/browser/headless_request_context_manager.cc +++ b/chromium/headless/lib/browser/headless_request_context_manager.cc @@ -9,7 +9,6 @@ #include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" #include "content/public/browser/browser_task_traits.h" -#include "content/public/browser/cors_exempt_headers.h" #include "content/public/browser/network_service_instance.h" #include "content/public/browser/resource_context.h" #include "headless/app/headless_shell_switches.h" @@ -179,10 +178,9 @@ HeadlessRequestContextManager::CreateSystemContext( cert_verifier_creation_params = ::network::mojom::CertVerifierCreationParams::New(); manager->ConfigureNetworkContextParamsInternal( - /* is_system = */ true, network_context_params.get(), - cert_verifier_creation_params.get()); - network_context_params->cert_verifier_creation_params = - std::move(cert_verifier_creation_params); + network_context_params.get(), cert_verifier_creation_params.get()); + network_context_params->cert_verifier_params = + content::GetCertVerifierParams(std::move(cert_verifier_creation_params)); network_service->CreateNetworkContext( manager->system_context_.InitWithNewPipeAndPassReceiver(), std::move(network_context_params)); @@ -234,19 +232,16 @@ void HeadlessRequestContextManager::ConfigureNetworkContextParams( ::network::mojom::NetworkContextParams* network_context_params, ::network::mojom::CertVerifierCreationParams* cert_verifier_creation_params) { - ConfigureNetworkContextParamsInternal( - /*is_system=*/false, network_context_params, - cert_verifier_creation_params); + ConfigureNetworkContextParamsInternal(network_context_params, + cert_verifier_creation_params); } void HeadlessRequestContextManager::ConfigureNetworkContextParamsInternal( - bool is_system, ::network::mojom::NetworkContextParams* context_params, ::network::mojom::CertVerifierCreationParams* cert_verifier_creation_params) { context_params->user_agent = user_agent_; context_params->accept_language = accept_language_; - context_params->primary_network_context = is_system; // TODO(https://crbug.com/458508): Allow // context_params->http_auth_static_network_context_params->allow_default_credentials @@ -273,7 +268,6 @@ void HeadlessRequestContextManager::ConfigureNetworkContextParamsInternal( } else { proxy_config_monitor_->AddToNetworkContextParams(context_params); } - content::UpdateCorsExemptHeader(context_params); } } // namespace headless diff --git a/chromium/headless/lib/browser/headless_request_context_manager.h b/chromium/headless/lib/browser/headless_request_context_manager.h index b9609c1689c..cfc49194954 100644 --- a/chromium/headless/lib/browser/headless_request_context_manager.h +++ b/chromium/headless/lib/browser/headless_request_context_manager.h @@ -48,7 +48,6 @@ class HeadlessRequestContextManager { private: void ConfigureNetworkContextParamsInternal( - bool is_system, ::network::mojom::NetworkContextParams* network_context_params, ::network::mojom::CertVerifierCreationParams* cert_verifier_creation_params); diff --git a/chromium/headless/lib/browser/protocol/browser_handler.cc b/chromium/headless/lib/browser/protocol/browser_handler.cc index b12027954b0..b7d73eb65ee 100644 --- a/chromium/headless/lib/browser/protocol/browser_handler.cc +++ b/chromium/headless/lib/browser/protocol/browser_handler.cc @@ -5,7 +5,6 @@ #include "headless/lib/browser/protocol/browser_handler.h" #include "base/bind.h" -#include "base/task/post_task.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/web_contents.h" @@ -73,8 +72,8 @@ Response BrowserHandler::GetWindowBounds( } Response BrowserHandler::Close() { - base::PostTask( - FROM_HERE, {content::BrowserThread::UI}, + content::GetUIThreadTaskRunner({})->PostTask( + FROM_HERE, base::BindOnce(&HeadlessBrowserImpl::Shutdown, browser_->GetWeakPtr())); return Response::Success(); } diff --git a/chromium/headless/lib/headless_browser_browsertest.cc b/chromium/headless/lib/headless_browser_browsertest.cc index 277b7201a27..9dc68729e5b 100644 --- a/chromium/headless/lib/headless_browser_browsertest.cc +++ b/chromium/headless/lib/headless_browser_browsertest.cc @@ -212,8 +212,9 @@ class HeadlessBrowserTestWithProxy : public HeadlessBrowserTest { net::SpawnedTestServer proxy_server_; }; -#if defined(OS_WIN) +#if defined(OS_WIN) || (defined(OS_MACOSX) && defined(ADDRESS_SANITIZER)) // TODO(crbug.com/1045971): Disabled due to flakiness. +// TODO(crbug.com/1086872): Disabled due to flakiness on Mac ASAN. #define MAYBE_SetProxyConfig DISABLED_SetProxyConfig #else #define MAYBE_SetProxyConfig SetProxyConfig diff --git a/chromium/headless/lib/headless_content_main_delegate.cc b/chromium/headless/lib/headless_content_main_delegate.cc index 2a8532e8fcd..6805126fd7c 100644 --- a/chromium/headless/lib/headless_content_main_delegate.cc +++ b/chromium/headless/lib/headless_content_main_delegate.cc @@ -36,6 +36,7 @@ #include "headless/lib/utility/headless_content_utility_client.h" #include "services/service_manager/embedder/switches.h" #include "services/service_manager/sandbox/switches.h" +#include "third_party/blink/public/common/switches.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/resource/resource_bundle.h" #include "ui/base/ui_base_switches.h" @@ -99,9 +100,15 @@ void InitializeResourceBundle(const base::CommandLine& command_line) { ui::SCALE_FACTOR_NONE); #else - base::FilePath dir_module; + +// Fuchsia doesn't implement DIR_MODULE +#if !defined(OS_FUCHSIA) bool result = base::PathService::Get(base::DIR_MODULE, &dir_module); +#else + bool result = base::PathService::Get(base::DIR_ASSETS, &dir_module); +#endif // !defined(OS_FUCHSIA) + DCHECK(result); // Try loading the headless library pak file first. If it doesn't exist (i.e., @@ -222,7 +229,7 @@ bool HeadlessContentMainDelegate::BasicStartupComplete(int* exit_code) { // When running headless there is no need to suppress input until content // is ready for display (because it isn't displayed to users). - command_line->AppendSwitch(::switches::kAllowPreCommitInput); + command_line->AppendSwitch(::blink::switches::kAllowPreCommitInput); #if defined(OS_WIN) command_line->AppendSwitch( @@ -491,7 +498,7 @@ void HeadlessContentMainDelegate::PostEarlyInitialization( cc::switches::kDisableCheckerImaging, // Ensure that image animations don't resync their animation timestamps // when looping back around. - ::switches::kDisableImageAnimationResync, + blink::switches::kDisableImageAnimationResync, }; for (const auto* flag : switches) base::CommandLine::ForCurrentProcess()->AppendSwitch(flag); diff --git a/chromium/headless/lib/headless_devtools_client_browsertest.cc b/chromium/headless/lib/headless_devtools_client_browsertest.cc index 1f488dea9a1..ebca8482536 100644 --- a/chromium/headless/lib/headless_devtools_client_browsertest.cc +++ b/chromium/headless/lib/headless_devtools_client_browsertest.cc @@ -178,8 +178,9 @@ class HeadlessDevToolsClientChangeWindowBoundsTest } }; -#if defined(OS_WIN) +#if defined(OS_WIN) || (defined(OS_MACOSX) && defined(ADDRESS_SANITIZER)) // TODO(crbug.com/1045980): Disabled due to flakiness. +// TODO(crbug.com/1086872): Disabled due to flakiness on Mac ASAN. DISABLED_HEADLESS_ASYNC_DEVTOOLED_TEST_F( HeadlessDevToolsClientChangeWindowBoundsTest); #else @@ -1203,8 +1204,9 @@ class DevtoolsInterceptionWithAuthProxyTest std::set<std::string> files_loaded_; }; -#if defined(OS_WIN) +#if defined(OS_WIN) || (defined(OS_MACOSX) && defined(ADDRESS_SANITIZER)) // TODO(crbug.com/1045980): Disabled due to flakiness. +// TODO(crbug.com/1086872): Disabled due to flakiness on Mac ASAN. DISABLED_HEADLESS_ASYNC_DEVTOOLED_TEST_F(DevtoolsInterceptionWithAuthProxyTest); #else HEADLESS_ASYNC_DEVTOOLED_TEST_F(DevtoolsInterceptionWithAuthProxyTest); diff --git a/chromium/headless/lib/headless_origin_trials_browsertest.cc b/chromium/headless/lib/headless_origin_trials_browsertest.cc index 50ea4f3d74f..1a6c83da21b 100644 --- a/chromium/headless/lib/headless_origin_trials_browsertest.cc +++ b/chromium/headless/lib/headless_origin_trials_browsertest.cc @@ -4,6 +4,7 @@ #include "base/strings/strcat.h" #include "base/test/bind_test_util.h" +#include "build/build_config.h" #include "content/public/test/browser_test.h" #include "content/public/test/content_browser_test.h" #include "content/public/test/url_loader_interceptor.h" @@ -53,7 +54,14 @@ class HeadlessOriginTrialsBrowserTest : public HeadlessBrowserTest { DISALLOW_COPY_AND_ASSIGN(HeadlessOriginTrialsBrowserTest); }; -IN_PROC_BROWSER_TEST_F(HeadlessOriginTrialsBrowserTest, TrialsCanBeEnabled) { +// Flaky on Windows Debug https://crbug.com/1090801 +#if defined(OS_WIN) && !defined(NDEBUG) +#define MAYBE_TrialsCanBeEnabled DISABLED_TrialsCanBeEnabled +#else +#define MAYBE_TrialsCanBeEnabled TrialsCanBeEnabled +#endif +IN_PROC_BROWSER_TEST_F(HeadlessOriginTrialsBrowserTest, + MAYBE_TrialsCanBeEnabled) { HeadlessBrowserContext* browser_context = browser()->CreateBrowserContextBuilder().Build(); @@ -76,8 +84,14 @@ IN_PROC_BROWSER_TEST_F(HeadlessOriginTrialsBrowserTest, TrialsCanBeEnabled) { ->GetBool()); } +// Flaky on Windows Debug https://crbug.com/1090801 +#if defined(OS_WIN) && !defined(NDEBUG) +#define MAYBE_TrialsDisabledByDefault DISABLED_TrialsDisabledByDefault +#else +#define MAYBE_TrialsDisabledByDefault TrialsDisabledByDefault +#endif IN_PROC_BROWSER_TEST_F(HeadlessOriginTrialsBrowserTest, - TrialsDisabledByDefault) { + MAYBE_TrialsDisabledByDefault) { HeadlessBrowserContext* browser_context = browser()->CreateBrowserContextBuilder().Build(); @@ -99,8 +113,15 @@ IN_PROC_BROWSER_TEST_F(HeadlessOriginTrialsBrowserTest, ->GetBool()); } +// Flaky on Windows Debug https://crbug.com/1090801 +#if defined(OS_WIN) && !defined(NDEBUG) +#define MAYBE_WebComponentsV0CustomElements \ + DISABLED_WebComponentsV0CustomElements +#else +#define MAYBE_WebComponentsV0CustomElements WebComponentsV0CustomElements +#endif IN_PROC_BROWSER_TEST_F(HeadlessOriginTrialsBrowserTest, - WebComponentsV0CustomElements) { + MAYBE_WebComponentsV0CustomElements) { HeadlessBrowserContext* browser_context = browser()->CreateBrowserContextBuilder().Build(); diff --git a/chromium/headless/lib/headless_web_contents_browsertest.cc b/chromium/headless/lib/headless_web_contents_browsertest.cc index 609ea83cf17..d323c77e1ac 100644 --- a/chromium/headless/lib/headless_web_contents_browsertest.cc +++ b/chromium/headless/lib/headless_web_contents_browsertest.cc @@ -286,12 +286,19 @@ class HeadlessWebContentsScreenshotWindowPositionTest } }; +// Flaky on Windows Debug https://crbug.com/1090801 +#if defined(OS_WIN) && !defined(NDEBUG) +DISABLED_HEADLESS_ASYNC_DEVTOOLED_TEST_P( + HeadlessWebContentsScreenshotWindowPositionTest); +#else HEADLESS_ASYNC_DEVTOOLED_TEST_P( HeadlessWebContentsScreenshotWindowPositionTest); +#endif // Instantiate test case for both software and gpu compositing modes. -#if !defined(OS_WIN) +#if defined(OS_WIN) || (defined(OS_MACOSX) && defined(ADDRESS_SANITIZER)) // TODO(crbug.com/1045980): Disabled on Windows due to flakiness. +// TODO(crbug.com/1086872): Disabled due to flakiness on Mac ASAN. INSTANTIATE_TEST_SUITE_P(HeadlessWebContentsScreenshotWindowPositionTests, HeadlessWebContentsScreenshotWindowPositionTest, ::testing::Bool()); @@ -515,7 +522,7 @@ HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessWebContentsPDFPageSizeRoundingTest); const char kExpectedStructTreeJSON[] = R"({ "type": "Document", "~children": [ { - "type": "H", + "type": "H1", "~children": [ { "type": "NonStruct" } ] @@ -538,6 +545,14 @@ const char kExpectedStructTreeJSON[] = R"({ } ] } ] }, { + "type": "Div", + "~children": [ { + "type": "Link", + "~children": [ { + "type": "NonStruct" + } ] + } ] + }, { "type": "Table", "~children": [ { "type": "TR", @@ -567,6 +582,11 @@ const char kExpectedStructTreeJSON[] = R"({ } ] } ] }, { + "type": "H2", + "~children": [ { + "type": "NonStruct" + } ] + }, { "type": "Div", "~children": [ { "alt": "Car at the beach", @@ -643,7 +663,12 @@ class HeadlessWebContentsTaggedPDFTest } }; +// Flaky on Windows Debug https://crbug.com/1090801 +#if defined(OS_WIN) && !defined(NDEBUG) +DISABLED_HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessWebContentsTaggedPDFTest); +#else HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessWebContentsTaggedPDFTest); +#endif #endif // BUILDFLAG(ENABLE_PRINTING) @@ -1176,9 +1201,10 @@ class DontBlockWebContentsOpenTest : public WebContentsOpenTest { } }; -#if defined(OS_WIN) || defined(OS_LINUX) +#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) // TODO(crbug.com/1045980): Disabled due to flakiness. // TODO(crbug.com/1078405): Disabled due to flakiness. +// TODO(crbug.com/1090936): Disabled due to flakiness. DISABLED_HEADLESS_ASYNC_DEVTOOLED_TEST_F(DontBlockWebContentsOpenTest); #else HEADLESS_ASYNC_DEVTOOLED_TEST_F(DontBlockWebContentsOpenTest); |