diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-07-31 15:50:41 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-08-30 12:35:23 +0000 |
commit | 7b2ffa587235a47d4094787d72f38102089f402a (patch) | |
tree | 30e82af9cbab08a7fa028bb18f4f2987a3f74dfa /chromium/headless/lib/browser | |
parent | d94af01c90575348c4e81a418257f254b6f8d225 (diff) | |
download | qtwebengine-chromium-7b2ffa587235a47d4094787d72f38102089f402a.tar.gz |
BASELINE: Update Chromium to 76.0.3809.94
Change-Id: I321c3f5f929c105aec0f98c5091ef6108822e647
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/headless/lib/browser')
15 files changed, 47 insertions, 131 deletions
diff --git a/chromium/headless/lib/browser/DEPS b/chromium/headless/lib/browser/DEPS index ff46d427416..683053040f4 100644 --- a/chromium/headless/lib/browser/DEPS +++ b/chromium/headless/lib/browser/DEPS @@ -1,5 +1,6 @@ include_rules = [ "+cc/base", + "+components/keyed_service/core", "+components/printing/browser", "+components/printing/common", "+components/security_state", diff --git a/chromium/headless/lib/browser/headless_browser_context_impl.cc b/chromium/headless/lib/browser/headless_browser_context_impl.cc index 16fcd8a9d67..60f4b7c98a2 100644 --- a/chromium/headless/lib/browser/headless_browser_context_impl.cc +++ b/chromium/headless/lib/browser/headless_browser_context_impl.cc @@ -12,6 +12,7 @@ #include "base/guid.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" #include "content/public/browser/storage_partition.h" @@ -34,6 +35,9 @@ HeadlessBrowserContextImpl::HeadlessBrowserContextImpl( permission_controller_delegate_( std::make_unique<HeadlessPermissionManager>(this)) { InitWhileIOAllowed(); + simple_factory_key_ = + std::make_unique<SimpleFactoryKey>(GetPath(), IsOffTheRecord()); + SimpleKeyMap::GetInstance()->Associate(this, simple_factory_key_.get()); base::FilePath user_data_path = IsOffTheRecord() || context_options_->user_data_dir().empty() ? base::FilePath() @@ -44,6 +48,7 @@ HeadlessBrowserContextImpl::HeadlessBrowserContextImpl( HeadlessBrowserContextImpl::~HeadlessBrowserContextImpl() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + SimpleKeyMap::GetInstance()->Dissociate(this); NotifyWillBeDestroyed(this); // Destroy all web contents before shutting down storage partitions. diff --git a/chromium/headless/lib/browser/headless_browser_context_impl.h b/chromium/headless/lib/browser/headless_browser_context_impl.h index 001e4b1cc96..a46beaafaf1 100644 --- a/chromium/headless/lib/browser/headless_browser_context_impl.h +++ b/chromium/headless/lib/browser/headless_browser_context_impl.h @@ -12,6 +12,7 @@ #include "base/files/file_path.h" #include "base/unguessable_token.h" +#include "components/keyed_service/core/simple_factory_key.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/global_routing_id.h" #include "content/public/browser/resource_context.h" @@ -143,6 +144,7 @@ class HEADLESS_EXPORT HeadlessBrowserContextImpl final permission_controller_delegate_; std::unique_ptr<HeadlessRequestContextManager> request_context_manager_; + std::unique_ptr<SimpleFactoryKey> simple_factory_key_; DISALLOW_COPY_AND_ASSIGN(HeadlessBrowserContextImpl); }; diff --git a/chromium/headless/lib/browser/headless_browser_impl.cc b/chromium/headless/lib/browser/headless_browser_impl.cc index 93956145520..8759337eb4d 100644 --- a/chromium/headless/lib/browser/headless_browser_impl.cc +++ b/chromium/headless/lib/browser/headless_browser_impl.cc @@ -34,36 +34,6 @@ #endif namespace headless { -namespace { - -int RunContentMain( - HeadlessBrowser::Options options, - base::OnceCallback<void(HeadlessBrowser*)> on_browser_start_callback) { - content::ContentMainParams params(nullptr); -#if defined(OS_WIN) - // Sandbox info has to be set and initialized. - CHECK(options.sandbox_info); - params.instance = options.instance; - params.sandbox_info = std::move(options.sandbox_info); -#elif !defined(OS_ANDROID) - params.argc = options.argc; - params.argv = options.argv; -#endif - - // TODO(skyostil): Implement custom message pumps. - DCHECK(!options.message_pump); - - std::unique_ptr<HeadlessBrowserImpl> browser(new HeadlessBrowserImpl( - std::move(on_browser_start_callback), std::move(options))); - HeadlessContentMainDelegate delegate(std::move(browser)); - params.delegate = &delegate; - return content::ContentMain(params); -} - -} // namespace - -const base::FilePath::CharType kDefaultProfileName[] = - FILE_PATH_LITERAL("Default"); HeadlessBrowserImpl::HeadlessBrowserImpl( base::OnceCallback<void(HeadlessBrowser*)> on_start_callback, @@ -242,50 +212,4 @@ bool HeadlessBrowserImpl::IsAttached() { return agent_host_->IsAttached(); } -#if defined(OS_WIN) -void RunChildProcessIfNeeded(HINSTANCE instance, - sandbox::SandboxInterfaceInfo* sandbox_info) { - base::CommandLine::Init(0, nullptr); - HeadlessBrowser::Options::Builder builder(0, nullptr); - builder.SetInstance(instance); - builder.SetSandboxInfo(std::move(sandbox_info)); -#else -void RunChildProcessIfNeeded(int argc, const char** argv) { - base::CommandLine::Init(argc, argv); - HeadlessBrowser::Options::Builder builder(argc, argv); -#endif // defined(OS_WIN) - const base::CommandLine& command_line( - *base::CommandLine::ForCurrentProcess()); - - if (!command_line.HasSwitch(::switches::kProcessType)) - return; - - if (command_line.HasSwitch(switches::kUserAgent)) { - std::string ua = command_line.GetSwitchValueASCII(switches::kUserAgent); - if (net::HttpUtil::IsValidHeaderValue(ua)) - builder.SetUserAgent(ua); - } - - exit(RunContentMain(builder.Build(), - base::OnceCallback<void(HeadlessBrowser*)>())); -} - -int HeadlessBrowserMain( - HeadlessBrowser::Options options, - base::OnceCallback<void(HeadlessBrowser*)> on_browser_start_callback) { - DCHECK(!on_browser_start_callback.is_null()); -#if DCHECK_IS_ON() - // The browser can only be initialized once. - static bool browser_was_initialized; - DCHECK(!browser_was_initialized); - browser_was_initialized = true; - - // Child processes should not end up here. - DCHECK(!base::CommandLine::ForCurrentProcess()->HasSwitch( - ::switches::kProcessType)); -#endif - return RunContentMain(std::move(options), - std::move(on_browser_start_callback)); -} - } // namespace headless diff --git a/chromium/headless/lib/browser/headless_browser_impl_aura.cc b/chromium/headless/lib/browser/headless_browser_impl_aura.cc index 5ab8eca9f71..8425f908edd 100644 --- a/chromium/headless/lib/browser/headless_browser_impl_aura.cc +++ b/chromium/headless/lib/browser/headless_browser_impl_aura.cc @@ -63,8 +63,7 @@ void HeadlessBrowserImpl::PlatformSetWebContentsBounds( gfx::Rect new_host_bounds( 0, 0, std::max(old_host_bounds.width(), bounds.x() + bounds.width()), std::max(old_host_bounds.height(), bounds.y() + bounds.height())); - web_contents->window_tree_host()->SetBoundsInPixels( - new_host_bounds, viz::LocalSurfaceIdAllocation()); + web_contents->window_tree_host()->SetBoundsInPixels(new_host_bounds); web_contents->window_tree_host()->window()->SetBounds(new_host_bounds); gfx::NativeView native_view = web_contents->web_contents()->GetNativeView(); diff --git a/chromium/headless/lib/browser/headless_content_browser_client.cc b/chromium/headless/lib/browser/headless_content_browser_client.cc index 406bb8f7662..a40339ea576 100644 --- a/chromium/headless/lib/browser/headless_content_browser_client.cc +++ b/chromium/headless/lib/browser/headless_content_browser_client.cc @@ -33,7 +33,6 @@ #include "headless/lib/headless_macros.h" #include "net/base/url_util.h" #include "net/ssl/client_cert_identity.h" -#include "printing/buildflags/buildflags.h" #include "storage/browser/quota/quota_settings.h" #include "ui/base/ui_base_switches.h" #include "ui/gfx/switches.h" @@ -45,11 +44,6 @@ #include "content/public/common/content_descriptors.h" #endif // defined(HEADLESS_USE_BREAKPAD) -#if BUILDFLAG(ENABLE_PRINTING) && !defined(CHROME_MULTIPLE_DLL_CHILD) -#include "base/strings/utf_string_conversions.h" -#include "components/services/pdf_compositor/public/interfaces/pdf_compositor.mojom.h" -#endif - namespace headless { namespace { @@ -122,12 +116,15 @@ HeadlessContentBrowserClient::HeadlessContentBrowserClient( HeadlessContentBrowserClient::~HeadlessContentBrowserClient() = default; -content::BrowserMainParts* HeadlessContentBrowserClient::CreateBrowserMainParts( +std::unique_ptr<content::BrowserMainParts> +HeadlessContentBrowserClient::CreateBrowserMainParts( const content::MainFunctionParams&) { - std::unique_ptr<HeadlessBrowserMainParts> browser_main_parts = + auto browser_main_parts = std::make_unique<HeadlessBrowserMainParts>(browser_); + browser_->set_browser_main_parts(browser_main_parts.get()); - return browser_main_parts.release(); + + return browser_main_parts; } void HeadlessContentBrowserClient::OverrideWebkitPrefs( @@ -158,14 +155,6 @@ HeadlessContentBrowserClient::GetServiceManifestOverlay( return base::nullopt; } -void HeadlessContentBrowserClient::RegisterOutOfProcessServices( - OutOfProcessServiceMap* services) { -#if BUILDFLAG(ENABLE_PRINTING) && !defined(CHROME_MULTIPLE_DLL_CHILD) - (*services)[printing::mojom::kServiceName] = - base::BindRepeating(&base::ASCIIToUTF16, "PDF Compositor Service"); -#endif -} - scoped_refptr<content::QuotaPermissionContext> HeadlessContentBrowserClient::CreateQuotaPermissionContext() { return new HeadlessQuotaPermissionContext(); @@ -271,7 +260,7 @@ void HeadlessContentBrowserClient::AllowCertificateError( int cert_error, const net::SSLInfo& ssl_info, const GURL& request_url, - content::ResourceType resource_type, + bool is_main_frame_request, bool strict_enforcement, bool expired_previous_decision, const base::Callback<void(content::CertificateRequestResultType)>& diff --git a/chromium/headless/lib/browser/headless_content_browser_client.h b/chromium/headless/lib/browser/headless_content_browser_client.h index f463d0abc91..1af66e1ddb4 100644 --- a/chromium/headless/lib/browser/headless_content_browser_client.h +++ b/chromium/headless/lib/browser/headless_content_browser_client.h @@ -5,6 +5,8 @@ #ifndef HEADLESS_LIB_BROWSER_HEADLESS_CONTENT_BROWSER_CLIENT_H_ #define HEADLESS_LIB_BROWSER_HEADLESS_CONTENT_BROWSER_CLIENT_H_ +#include <memory> + #include "content/public/browser/content_browser_client.h" #include "headless/lib/browser/headless_resource_dispatcher_host_delegate.h" #include "headless/public/headless_browser.h" @@ -19,14 +21,13 @@ class HeadlessContentBrowserClient : public content::ContentBrowserClient { ~HeadlessContentBrowserClient() override; // content::ContentBrowserClient implementation: - content::BrowserMainParts* CreateBrowserMainParts( + std::unique_ptr<content::BrowserMainParts> CreateBrowserMainParts( const content::MainFunctionParams&) override; void OverrideWebkitPrefs(content::RenderViewHost* render_view_host, content::WebPreferences* prefs) override; content::DevToolsManagerDelegate* GetDevToolsManagerDelegate() override; base::Optional<service_manager::Manifest> GetServiceManifestOverlay( base::StringPiece name) override; - void RegisterOutOfProcessServices(OutOfProcessServiceMap* services) override; scoped_refptr<content::QuotaPermissionContext> CreateQuotaPermissionContext() override; void GetQuotaSettings( @@ -49,7 +50,7 @@ class HeadlessContentBrowserClient : public content::ContentBrowserClient { int cert_error, const net::SSLInfo& ssl_info, const GURL& request_url, - content::ResourceType resource_type, + bool is_main_frame_request, bool strict_enforcement, bool expired_previous_decision, const base::Callback<void(content::CertificateRequestResultType)>& diff --git a/chromium/headless/lib/browser/headless_permission_manager.cc b/chromium/headless/lib/browser/headless_permission_manager.cc index 46fa0038350..5d4d609fc0c 100644 --- a/chromium/headless/lib/browser/headless_permission_manager.cc +++ b/chromium/headless/lib/browser/headless_permission_manager.cc @@ -22,17 +22,17 @@ int HeadlessPermissionManager::RequestPermission( content::RenderFrameHost* render_frame_host, const GURL& requesting_origin, bool user_gesture, - const base::Callback<void(blink::mojom::PermissionStatus)>& callback) { + base::OnceCallback<void(blink::mojom::PermissionStatus)> callback) { // In headless mode we just pretent the user "closes" any permission prompt, // without accepting or denying. Notifications are the exception to this, // which are explicitly disabled in Incognito mode. if (browser_context_->IsOffTheRecord() && permission == content::PermissionType::NOTIFICATIONS) { - callback.Run(blink::mojom::PermissionStatus::DENIED); + std::move(callback).Run(blink::mojom::PermissionStatus::DENIED); return content::PermissionController::kNoPendingOperation; } - callback.Run(blink::mojom::PermissionStatus::ASK); + std::move(callback).Run(blink::mojom::PermissionStatus::ASK); return content::PermissionController::kNoPendingOperation; } @@ -41,13 +41,13 @@ int HeadlessPermissionManager::RequestPermissions( content::RenderFrameHost* render_frame_host, const GURL& requesting_origin, bool user_gesture, - const base::Callback< - void(const std::vector<blink::mojom::PermissionStatus>&)>& callback) { + base::OnceCallback<void(const std::vector<blink::mojom::PermissionStatus>&)> + callback) { // In headless mode we just pretent the user "closes" any permission prompt, // without accepting or denying. std::vector<blink::mojom::PermissionStatus> result( permissions.size(), blink::mojom::PermissionStatus::ASK); - callback.Run(result); + std::move(callback).Run(result); return content::PermissionController::kNoPendingOperation; } @@ -75,7 +75,7 @@ int HeadlessPermissionManager::SubscribePermissionStatusChange( content::PermissionType permission, content::RenderFrameHost* render_frame_host, const GURL& requesting_origin, - const base::Callback<void(blink::mojom::PermissionStatus)>& callback) { + base::RepeatingCallback<void(blink::mojom::PermissionStatus)> callback) { return content::PermissionController::kNoPendingOperation; } diff --git a/chromium/headless/lib/browser/headless_permission_manager.h b/chromium/headless/lib/browser/headless_permission_manager.h index 95cadf7209a..4b83309ab3a 100644 --- a/chromium/headless/lib/browser/headless_permission_manager.h +++ b/chromium/headless/lib/browser/headless_permission_manager.h @@ -21,20 +21,19 @@ class HeadlessPermissionManager : public content::PermissionControllerDelegate { ~HeadlessPermissionManager() override; // PermissionManager implementation. - int RequestPermission( - content::PermissionType permission, - content::RenderFrameHost* render_frame_host, - const GURL& requesting_origin, - bool user_gesture, - const base::Callback<void(blink::mojom::PermissionStatus)>& callback) - override; + int RequestPermission(content::PermissionType permission, + content::RenderFrameHost* render_frame_host, + const GURL& requesting_origin, + bool user_gesture, + base::OnceCallback<void(blink::mojom::PermissionStatus)> + callback) override; int RequestPermissions( const std::vector<content::PermissionType>& permission, content::RenderFrameHost* render_frame_host, const GURL& requesting_origin, bool user_gesture, - const base::Callback< - void(const std::vector<blink::mojom::PermissionStatus>&)>& callback) + base::OnceCallback< + void(const std::vector<blink::mojom::PermissionStatus>&)> callback) override; void ResetPermission(content::PermissionType permission, const GURL& requesting_origin, @@ -51,7 +50,7 @@ class HeadlessPermissionManager : public content::PermissionControllerDelegate { content::PermissionType permission, content::RenderFrameHost* render_frame_host, const GURL& requesting_origin, - const base::Callback<void(blink::mojom::PermissionStatus)>& callback) + base::RepeatingCallback<void(blink::mojom::PermissionStatus)> callback) override; void UnsubscribePermissionStatusChange(int subscription_id) override; diff --git a/chromium/headless/lib/browser/headless_web_contents_impl.cc b/chromium/headless/lib/browser/headless_web_contents_impl.cc index 357136e85ee..5c94cb1616a 100644 --- a/chromium/headless/lib/browser/headless_web_contents_impl.cc +++ b/chromium/headless/lib/browser/headless_web_contents_impl.cc @@ -306,6 +306,8 @@ HeadlessWebContentsImpl::HeadlessWebContentsImpl( } HeadlessWebContentsImpl::~HeadlessWebContentsImpl() { + for (auto& observer : observers_) + observer.HeadlessWebContentsDestroyed(); agent_host_->RemoveObserver(this); if (render_process_host_) render_process_host_->RemoveObserver(this); diff --git a/chromium/headless/lib/browser/headless_window_tree_host.cc b/chromium/headless/lib/browser/headless_window_tree_host.cc index 63ed82fc5d7..ed63d0e7ada 100644 --- a/chromium/headless/lib/browser/headless_window_tree_host.cc +++ b/chromium/headless/lib/browser/headless_window_tree_host.cc @@ -55,16 +55,14 @@ gfx::Rect HeadlessWindowTreeHost::GetBoundsInPixels() const { return bounds_; } -void HeadlessWindowTreeHost::SetBoundsInPixels( - const gfx::Rect& bounds, - const viz::LocalSurfaceIdAllocation& local_surface_id_allocation) { +void HeadlessWindowTreeHost::SetBoundsInPixels(const gfx::Rect& bounds) { bool origin_changed = bounds_.origin() != bounds.origin(); bool size_changed = bounds_.size() != bounds.size(); bounds_ = bounds; if (origin_changed) OnHostMovedInPixels(bounds.origin()); if (size_changed) - OnHostResizedInPixels(bounds.size(), local_surface_id_allocation); + OnHostResizedInPixels(bounds.size()); } void HeadlessWindowTreeHost::ShowImpl() {} diff --git a/chromium/headless/lib/browser/headless_window_tree_host.h b/chromium/headless/lib/browser/headless_window_tree_host.h index 5eaf7d6bc7d..09fe9042430 100644 --- a/chromium/headless/lib/browser/headless_window_tree_host.h +++ b/chromium/headless/lib/browser/headless_window_tree_host.h @@ -47,9 +47,7 @@ class HeadlessWindowTreeHost : public aura::WindowTreeHost, void ShowImpl() override; void HideImpl() override; gfx::Rect GetBoundsInPixels() const override; - void SetBoundsInPixels(const gfx::Rect& bounds, - const viz::LocalSurfaceIdAllocation& - local_surface_id_allocation) override; + void SetBoundsInPixels(const gfx::Rect& bounds) override; gfx::Point GetLocationOnScreenInPixels() const override; void SetCapture() override; void ReleaseCapture() override; diff --git a/chromium/headless/lib/browser/protocol/headless_devtools_session.cc b/chromium/headless/lib/browser/protocol/headless_devtools_session.cc index 2e77c10bc7f..e99d8a109c2 100644 --- a/chromium/headless/lib/browser/protocol/headless_devtools_session.cc +++ b/chromium/headless/lib/browser/protocol/headless_devtools_session.cc @@ -7,7 +7,6 @@ #include "base/command_line.h" #include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/devtools_agent_host_client.h" -#include "content/public/common/content_switches.h" #include "headless/lib/browser/protocol/browser_handler.h" #include "headless/lib/browser/protocol/headless_handler.h" #include "headless/lib/browser/protocol/page_handler.h" @@ -15,10 +14,6 @@ namespace headless { namespace protocol { -static bool EnableInternalDevToolsBinaryProtocol() { - return false; -} - HeadlessDevToolsSession::HeadlessDevToolsSession( base::WeakPtr<HeadlessBrowserImpl> browser, content::DevToolsAgentHost* agent_host, @@ -57,9 +52,8 @@ void HeadlessDevToolsSession::HandleCommand( int call_id; std::string unused; std::unique_ptr<protocol::DictionaryValue> value = - protocol::DictionaryValue::cast(protocol::StringUtil::parseMessage( - message, client_->UsesBinaryProtocol() || - EnableInternalDevToolsBinaryProtocol())); + protocol::DictionaryValue::cast( + protocol::StringUtil::parseMessage(message, /*binary=*/true)); if (!dispatcher_->parseCommand(value.get(), &call_id, &unused)) return; pending_commands_[call_id] = std::move(callback); diff --git a/chromium/headless/lib/browser/protocol/target_handler.cc b/chromium/headless/lib/browser/protocol/target_handler.cc index 15da7d7edb7..499f83c457a 100644 --- a/chromium/headless/lib/browser/protocol/target_handler.cc +++ b/chromium/headless/lib/browser/protocol/target_handler.cc @@ -27,6 +27,8 @@ Response TargetHandler::CreateTarget(const std::string& url, Maybe<int> height, Maybe<std::string> context_id, Maybe<bool> enable_begin_frame_control, + Maybe<bool> new_window, + Maybe<bool> background, std::string* out_target_id) { #if defined(OS_MACOSX) if (enable_begin_frame_control.fromMaybe(false)) diff --git a/chromium/headless/lib/browser/protocol/target_handler.h b/chromium/headless/lib/browser/protocol/target_handler.h index c1b1a250491..9ed61826f3f 100644 --- a/chromium/headless/lib/browser/protocol/target_handler.h +++ b/chromium/headless/lib/browser/protocol/target_handler.h @@ -24,6 +24,8 @@ class TargetHandler : public DomainHandler, public Target::Backend { Maybe<int> height, Maybe<std::string> context_id, Maybe<bool> enable_begin_frame_control, + Maybe<bool> new_window, + Maybe<bool> background, std::string* out_target_id) override; Response CloseTarget(const std::string& target_id, bool* out_success) override; |