summaryrefslogtreecommitdiff
path: root/chromium/headless/lib/browser
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-07-31 15:50:41 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-08-30 12:35:23 +0000
commit7b2ffa587235a47d4094787d72f38102089f402a (patch)
tree30e82af9cbab08a7fa028bb18f4f2987a3f74dfa /chromium/headless/lib/browser
parentd94af01c90575348c4e81a418257f254b6f8d225 (diff)
downloadqtwebengine-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')
-rw-r--r--chromium/headless/lib/browser/DEPS1
-rw-r--r--chromium/headless/lib/browser/headless_browser_context_impl.cc5
-rw-r--r--chromium/headless/lib/browser/headless_browser_context_impl.h2
-rw-r--r--chromium/headless/lib/browser/headless_browser_impl.cc76
-rw-r--r--chromium/headless/lib/browser/headless_browser_impl_aura.cc3
-rw-r--r--chromium/headless/lib/browser/headless_content_browser_client.cc25
-rw-r--r--chromium/headless/lib/browser/headless_content_browser_client.h7
-rw-r--r--chromium/headless/lib/browser/headless_permission_manager.cc14
-rw-r--r--chromium/headless/lib/browser/headless_permission_manager.h19
-rw-r--r--chromium/headless/lib/browser/headless_web_contents_impl.cc2
-rw-r--r--chromium/headless/lib/browser/headless_window_tree_host.cc6
-rw-r--r--chromium/headless/lib/browser/headless_window_tree_host.h4
-rw-r--r--chromium/headless/lib/browser/protocol/headless_devtools_session.cc10
-rw-r--r--chromium/headless/lib/browser/protocol/target_handler.cc2
-rw-r--r--chromium/headless/lib/browser/protocol/target_handler.h2
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;