summaryrefslogtreecommitdiff
path: root/chromium/headless/lib/browser
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2022-09-07 13:12:05 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2022-11-09 10:02:59 +0000
commit33fc33aa94d4add0878ec30dc818e34e1dd3cc2a (patch)
treef6af110909c79b2759136554f1143d8b0572af0a /chromium/headless/lib/browser
parent7d2c5d177e9813077a621df8d18c0deda73099b3 (diff)
downloadqtwebengine-chromium-33fc33aa94d4add0878ec30dc818e34e1dd3cc2a.tar.gz
BASELINE: Update Chromium to 104.0.5112.120
Change-Id: I5d2726c2ab018d75d055739b6ba64317904f05bb Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/438935 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@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.cc25
-rw-r--r--chromium/headless/lib/browser/headless_browser_impl.h9
-rw-r--r--chromium/headless/lib/browser/headless_browser_impl_mac.mm1
-rw-r--r--chromium/headless/lib/browser/headless_browser_main_parts.cc6
-rw-r--r--chromium/headless/lib/browser/headless_browser_main_parts.h5
-rw-r--r--chromium/headless/lib/browser/headless_content_browser_client.cc11
-rw-r--r--chromium/headless/lib/browser/headless_content_browser_client.h4
-rw-r--r--chromium/headless/lib/browser/headless_permission_manager.cc39
-rw-r--r--chromium/headless/lib/browser/headless_permission_manager.h29
-rw-r--r--chromium/headless/lib/browser/headless_request_context_manager.cc9
-rw-r--r--chromium/headless/lib/browser/headless_web_contents_impl.cc24
-rw-r--r--chromium/headless/lib/browser/protocol/README.md2
-rw-r--r--chromium/headless/lib/browser/protocol/headless_devtools_session.cc8
-rw-r--r--chromium/headless/lib/browser/protocol/headless_handler.cc8
-rw-r--r--chromium/headless/lib/browser/protocol/page_handler.cc6
-rw-r--r--chromium/headless/lib/browser/protocol/page_handler.h1
17 files changed, 120 insertions, 68 deletions
diff --git a/chromium/headless/lib/browser/DEPS b/chromium/headless/lib/browser/DEPS
index f5ac5cb4f51..10d356d6c21 100644
--- a/chromium/headless/lib/browser/DEPS
+++ b/chromium/headless/lib/browser/DEPS
@@ -17,6 +17,7 @@ include_rules = [
"+third_party/blink/public/mojom/badging",
"+third_party/blink/public/common/renderer_preferences/renderer_preferences.h",
"+third_party/blink/public/common/associated_interfaces/associated_interface_registry.h",
+ "+third_party/blink/public/common/permissions/permission_utils.h",
"+ui/aura",
"+ui/compositor",
"+ui/events/keycodes/dom",
diff --git a/chromium/headless/lib/browser/headless_browser_context_impl.cc b/chromium/headless/lib/browser/headless_browser_context_impl.cc
index 6eb8b9ce6a1..06f8c52f600 100644
--- a/chromium/headless/lib/browser/headless_browser_context_impl.cc
+++ b/chromium/headless/lib/browser/headless_browser_context_impl.cc
@@ -31,6 +31,28 @@
namespace headless {
+namespace {
+
+base::FilePath MakeAbsolutePath(const base::FilePath& path) {
+#if BUILDFLAG(IS_WIN)
+ // On Windows it's common to omit drive specification assuming the current
+ // drive, which makes the path specification not absolute, but relative to
+ // the current drive. Handle this case by prepending the current drive to
+ // the "\path" specification.
+ std::vector<base::FilePath::StringType> components = path.GetComponents();
+ if (components.size() > 0 && components[0].length() == 1 &&
+ base::FilePath::IsSeparator(components[0].front())) {
+ components =
+ base::PathService::CheckedGet(base::DIR_CURRENT).GetComponents();
+ return base::FilePath(components[0]).Append(path);
+ }
+#endif // BUILDFLAG(IS_WIN)
+
+ return base::PathService::CheckedGet(base::DIR_CURRENT).Append(path);
+}
+
+} // namespace
+
HeadlessBrowserContextImpl::HeadlessBrowserContextImpl(
HeadlessBrowserImpl* browser,
std::unique_ptr<HeadlessBrowserContextOptions> context_options)
@@ -170,7 +192,8 @@ void HeadlessBrowserContextImpl::InitWhileIOAllowed() {
base::FilePath path =
context_options_->user_data_dir().Append(kDefaultProfileName);
if (!path.IsAbsolute())
- path = base::PathService::CheckedGet(base::DIR_CURRENT).Append(path);
+ path = MakeAbsolutePath(path);
+
path_ = std::move(path);
} else {
base::PathService::Get(base::DIR_EXE, &path_);
diff --git a/chromium/headless/lib/browser/headless_browser_impl.h b/chromium/headless/lib/browser/headless_browser_impl.h
index 7be22a33a25..7f4ac8617f1 100644
--- a/chromium/headless/lib/browser/headless_browser_impl.h
+++ b/chromium/headless/lib/browser/headless_browser_impl.h
@@ -14,6 +14,7 @@
#include "base/memory/weak_ptr.h"
#include "base/task/single_thread_task_runner.h"
+#include "build/build_config.h"
#include "headless/lib/browser/headless_devtools_manager_delegate.h"
#include "headless/public/headless_devtools_target.h"
#include "headless/public/headless_export.h"
@@ -28,6 +29,10 @@ class PolicyService;
} // namespace policy
#endif
+#if BUILDFLAG(IS_MAC)
+#include "ui/display/screen.h"
+#endif
+
namespace ui {
class Compositor;
} // namespace ui
@@ -117,6 +122,10 @@ class HEADLESS_EXPORT HeadlessBrowserImpl : public HeadlessBrowser,
#endif
protected:
+#if BUILDFLAG(IS_MAC)
+ std::unique_ptr<display::ScopedNativeScreen> screen_;
+#endif
+
base::OnceCallback<void(HeadlessBrowser*)> on_start_callback_;
HeadlessBrowser::Options options_;
raw_ptr<HeadlessBrowserMainParts> browser_main_parts_; // Not owned.
diff --git a/chromium/headless/lib/browser/headless_browser_impl_mac.mm b/chromium/headless/lib/browser/headless_browser_impl_mac.mm
index 812572ac9ff..da3dee4352a 100644
--- a/chromium/headless/lib/browser/headless_browser_impl_mac.mm
+++ b/chromium/headless/lib/browser/headless_browser_impl_mac.mm
@@ -65,6 +65,7 @@ const NSActivityOptions kActivityOptions =
} // namespace
void HeadlessBrowserImpl::PlatformInitialize() {
+ screen_ = std::make_unique<display::ScopedNativeScreen>();
HeadlessPopUpMethods::Init();
}
diff --git a/chromium/headless/lib/browser/headless_browser_main_parts.cc b/chromium/headless/lib/browser/headless_browser_main_parts.cc
index 5c1e6411faf..1dad925e410 100644
--- a/chromium/headless/lib/browser/headless_browser_main_parts.cc
+++ b/chromium/headless/lib/browser/headless_browser_main_parts.cc
@@ -49,10 +49,8 @@ const base::FilePath::CharType kLocalStateFilename[] =
} // namespace
-HeadlessBrowserMainParts::HeadlessBrowserMainParts(
- content::MainFunctionParams parameters,
- HeadlessBrowserImpl* browser)
- : parameters_(std::move(parameters)), browser_(browser) {}
+HeadlessBrowserMainParts::HeadlessBrowserMainParts(HeadlessBrowserImpl* browser)
+ : browser_(browser) {}
HeadlessBrowserMainParts::~HeadlessBrowserMainParts() = default;
diff --git a/chromium/headless/lib/browser/headless_browser_main_parts.h b/chromium/headless/lib/browser/headless_browser_main_parts.h
index 938f31a3f02..12c05457a8c 100644
--- a/chromium/headless/lib/browser/headless_browser_main_parts.h
+++ b/chromium/headless/lib/browser/headless_browser_main_parts.h
@@ -10,7 +10,6 @@
#include "base/memory/raw_ptr.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"
#include "headless/public/headless_export.h"
@@ -34,8 +33,7 @@ class HeadlessBrowserImpl;
class HEADLESS_EXPORT HeadlessBrowserMainParts
: public content::BrowserMainParts {
public:
- explicit HeadlessBrowserMainParts(content::MainFunctionParams parameters,
- HeadlessBrowserImpl* browser);
+ explicit HeadlessBrowserMainParts(HeadlessBrowserImpl* browser);
HeadlessBrowserMainParts(const HeadlessBrowserMainParts&) = delete;
HeadlessBrowserMainParts& operator=(const HeadlessBrowserMainParts&) = delete;
@@ -75,7 +73,6 @@ class HEADLESS_EXPORT HeadlessBrowserMainParts
void CreatePrefService();
#endif
- content::MainFunctionParams parameters_; // For running browser tests.
raw_ptr<HeadlessBrowserImpl> browser_; // Not owned.
#if defined(HEADLESS_USE_POLICY)
diff --git a/chromium/headless/lib/browser/headless_content_browser_client.cc b/chromium/headless/lib/browser/headless_content_browser_client.cc
index 30ad2cd76fe..024dc8eedfe 100644
--- a/chromium/headless/lib/browser/headless_content_browser_client.cc
+++ b/chromium/headless/lib/browser/headless_content_browser_client.cc
@@ -115,9 +115,9 @@ HeadlessContentBrowserClient::~HeadlessContentBrowserClient() = default;
std::unique_ptr<content::BrowserMainParts>
HeadlessContentBrowserClient::CreateBrowserMainParts(
- content::MainFunctionParams parameters) {
- auto browser_main_parts = std::make_unique<HeadlessBrowserMainParts>(
- std::move(parameters), browser_);
+ bool /* is_integration_test */) {
+ auto browser_main_parts =
+ std::make_unique<HeadlessBrowserMainParts>(browser_);
browser_->set_browser_main_parts(browser_main_parts.get());
@@ -216,6 +216,9 @@ void HeadlessContentBrowserClient::AppendExtraCommandLineSwitches(
}
#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
+ if (old_command_line.HasSwitch(switches::kDisablePDFTagging))
+ command_line->AppendSwitch(switches::kDisablePDFTagging);
+
// If we're spawning a renderer, then override the language switch.
std::string process_type =
command_line->GetSwitchValueASCII(::switches::kProcessType);
@@ -286,7 +289,7 @@ void HeadlessContentBrowserClient::AllowCertificateError(
int cert_error,
const net::SSLInfo& ssl_info,
const GURL& request_url,
- bool is_main_frame_request,
+ bool is_primary_main_frame_request,
bool strict_enforcement,
base::OnceCallback<void(content::CertificateRequestResultType)> callback) {
if (!callback.is_null()) {
diff --git a/chromium/headless/lib/browser/headless_content_browser_client.h b/chromium/headless/lib/browser/headless_content_browser_client.h
index 4311b946319..b6f427b1734 100644
--- a/chromium/headless/lib/browser/headless_content_browser_client.h
+++ b/chromium/headless/lib/browser/headless_content_browser_client.h
@@ -32,7 +32,7 @@ class HeadlessContentBrowserClient : public content::ContentBrowserClient {
// content::ContentBrowserClient implementation:
std::unique_ptr<content::BrowserMainParts> CreateBrowserMainParts(
- content::MainFunctionParams parameters) override;
+ bool is_integration_test) override;
void OverrideWebkitPrefs(content::WebContents* web_contents,
blink::web_pref::WebPreferences* prefs) override;
void RegisterBrowserInterfaceBindersForFrame(
@@ -62,7 +62,7 @@ class HeadlessContentBrowserClient : public content::ContentBrowserClient {
int cert_error,
const net::SSLInfo& ssl_info,
const GURL& request_url,
- bool is_main_frame_request,
+ bool is_primary_main_frame_request,
bool strict_enforcement,
base::OnceCallback<void(content::CertificateRequestResultType)> callback)
override;
diff --git a/chromium/headless/lib/browser/headless_permission_manager.cc b/chromium/headless/lib/browser/headless_permission_manager.cc
index bb402a9e9d8..e5c0ecd9905 100644
--- a/chromium/headless/lib/browser/headless_permission_manager.cc
+++ b/chromium/headless/lib/browser/headless_permission_manager.cc
@@ -7,7 +7,7 @@
#include "base/callback.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/permission_controller.h"
-#include "content/public/browser/permission_type.h"
+#include "third_party/blink/public/common/permissions/permission_utils.h"
namespace headless {
@@ -18,7 +18,7 @@ HeadlessPermissionManager::HeadlessPermissionManager(
HeadlessPermissionManager::~HeadlessPermissionManager() = default;
void HeadlessPermissionManager::RequestPermission(
- content::PermissionType permission,
+ blink::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
@@ -27,7 +27,7 @@ void HeadlessPermissionManager::RequestPermission(
// 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) {
+ permission == blink::PermissionType::NOTIFICATIONS) {
std::move(callback).Run(blink::mojom::PermissionStatus::DENIED);
return;
}
@@ -36,7 +36,7 @@ void HeadlessPermissionManager::RequestPermission(
}
void HeadlessPermissionManager::RequestPermissions(
- const std::vector<content::PermissionType>& permissions,
+ const std::vector<blink::PermissionType>& permissions,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
@@ -50,35 +50,40 @@ void HeadlessPermissionManager::RequestPermissions(
}
void HeadlessPermissionManager::ResetPermission(
- content::PermissionType permission,
+ blink::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) {}
+void HeadlessPermissionManager::RequestPermissionsFromCurrentDocument(
+ const std::vector<blink::PermissionType>& permissions,
+ content::RenderFrameHost* render_frame_host,
+ bool user_gesture,
+ 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);
+ std::move(callback).Run(result);
+}
+
blink::mojom::PermissionStatus HeadlessPermissionManager::GetPermissionStatus(
- content::PermissionType permission,
+ blink::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) {
return blink::mojom::PermissionStatus::ASK;
}
blink::mojom::PermissionStatus
-HeadlessPermissionManager::GetPermissionStatusForFrame(
- content::PermissionType permission,
- content::RenderFrameHost* render_frame_host,
- const GURL& requesting_origin) {
- return blink::mojom::PermissionStatus::ASK;
-}
-
-blink::mojom::PermissionStatus
HeadlessPermissionManager::GetPermissionStatusForCurrentDocument(
- content::PermissionType permission,
+ blink::PermissionType permission,
content::RenderFrameHost* render_frame_host) {
return blink::mojom::PermissionStatus::ASK;
}
blink::mojom::PermissionStatus
HeadlessPermissionManager::GetPermissionStatusForWorker(
- content::PermissionType permission,
+ blink::PermissionType permission,
content::RenderProcessHost* render_process_host,
const GURL& worker_origin) {
return blink::mojom::PermissionStatus::ASK;
@@ -86,7 +91,7 @@ HeadlessPermissionManager::GetPermissionStatusForWorker(
HeadlessPermissionManager::SubscriptionId
HeadlessPermissionManager::SubscribePermissionStatusChange(
- content::PermissionType permission,
+ blink::PermissionType permission,
content::RenderProcessHost* render_process_host,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
diff --git a/chromium/headless/lib/browser/headless_permission_manager.h b/chromium/headless/lib/browser/headless_permission_manager.h
index a0888a89bae..ed91c2947ac 100644
--- a/chromium/headless/lib/browser/headless_permission_manager.h
+++ b/chromium/headless/lib/browser/headless_permission_manager.h
@@ -9,6 +9,10 @@
#include "base/memory/raw_ptr.h"
#include "content/public/browser/permission_controller_delegate.h"
+namespace blink {
+enum class PermissionType;
+}
+
namespace content {
class BrowserContext;
}
@@ -27,40 +31,43 @@ class HeadlessPermissionManager : public content::PermissionControllerDelegate {
// PermissionManager implementation.
void RequestPermission(
- content::PermissionType permission,
+ blink::PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
base::OnceCallback<void(blink::mojom::PermissionStatus)> callback)
override;
void RequestPermissions(
- const std::vector<content::PermissionType>& permission,
+ const std::vector<blink::PermissionType>& permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
bool user_gesture,
base::OnceCallback<
void(const std::vector<blink::mojom::PermissionStatus>&)> callback)
override;
- void ResetPermission(content::PermissionType permission,
+ void ResetPermission(blink::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) override;
+ void RequestPermissionsFromCurrentDocument(
+ const std::vector<blink::PermissionType>& permissions,
+ content::RenderFrameHost* render_frame_host,
+ bool user_gesture,
+ base::OnceCallback<
+ void(const std::vector<blink::mojom::PermissionStatus>&)> callback)
+ override;
blink::mojom::PermissionStatus GetPermissionStatus(
- content::PermissionType permission,
+ blink::PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) override;
- blink::mojom::PermissionStatus GetPermissionStatusForFrame(
- content::PermissionType permission,
- content::RenderFrameHost* render_frame_host,
- const GURL& requesting_origin) override;
blink::mojom::PermissionStatus GetPermissionStatusForCurrentDocument(
- content::PermissionType permission,
+ blink::PermissionType permission,
content::RenderFrameHost* render_frame_host) override;
blink::mojom::PermissionStatus GetPermissionStatusForWorker(
- content::PermissionType permission,
+ blink::PermissionType permission,
content::RenderProcessHost* render_process_host,
const GURL& worker_origin) override;
SubscriptionId SubscribePermissionStatusChange(
- content::PermissionType permission,
+ blink::PermissionType permission,
content::RenderProcessHost* render_process_host,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
diff --git a/chromium/headless/lib/browser/headless_request_context_manager.cc b/chromium/headless/lib/browser/headless_request_context_manager.cc
index 8587de817e4..60c331241df 100644
--- a/chromium/headless/lib/browser/headless_request_context_manager.cc
+++ b/chromium/headless/lib/browser/headless_request_context_manager.cc
@@ -5,6 +5,7 @@
#include "headless/lib/browser/headless_request_context_manager.h"
#include "base/bind.h"
+#include "base/command_line.h"
#include "base/threading/thread_task_runner_handle.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
@@ -264,9 +265,15 @@ void HeadlessRequestContextManager::ConfigureNetworkContextParamsInternal(
context_params->enable_encrypted_cookies = cookie_encryption_enabled_;
context_params->file_paths =
::network::mojom::NetworkContextFilePaths::New();
- context_params->file_paths->data_directory = user_data_path_;
+ context_params->file_paths->data_directory =
+ user_data_path_.Append(FILE_PATH_LITERAL("Network"));
+ context_params->file_paths->unsandboxed_data_path = user_data_path_;
context_params->file_paths->cookie_database_name =
base::FilePath(FILE_PATH_LITERAL("Cookies"));
+ // Headless should never perform a migration leaving it to the network
+ // service to decide which data directory (sandboxed or unsandboxed)
+ // it should pick.
+ context_params->file_paths->trigger_migration = false;
}
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
if (command_line->HasSwitch(switches::kDiskCacheDir)) {
diff --git a/chromium/headless/lib/browser/headless_web_contents_impl.cc b/chromium/headless/lib/browser/headless_web_contents_impl.cc
index 899b8beabdf..9108af11283 100644
--- a/chromium/headless/lib/browser/headless_web_contents_impl.cc
+++ b/chromium/headless/lib/browser/headless_web_contents_impl.cc
@@ -103,7 +103,7 @@ class HeadlessWebContentsImpl::Delegate : public content::WebContentsDelegate {
}
void ActivateContents(content::WebContents* contents) override {
- contents->GetMainFrame()->GetRenderViewHost()->GetWidget()->Focus();
+ contents->GetPrimaryMainFrame()->GetRenderViewHost()->GetWidget()->Focus();
}
void CloseContents(content::WebContents* source) override {
@@ -306,7 +306,7 @@ HeadlessWebContentsImpl::HeadlessWebContentsImpl(
HeadlessBrowserContextImpl* browser_context)
: content::WebContentsObserver(web_contents.get()),
browser_context_(browser_context),
- render_process_host_(web_contents->GetMainFrame()->GetProcess()),
+ render_process_host_(web_contents->GetPrimaryMainFrame()->GetProcess()),
web_contents_delegate_(new HeadlessWebContentsImpl::Delegate(this)),
web_contents_(std::move(web_contents)),
agent_host_(
@@ -355,7 +355,7 @@ void HeadlessWebContentsImpl::RenderFrameDeleted(
}
void HeadlessWebContentsImpl::RenderViewReady() {
- DCHECK(web_contents()->GetMainFrame()->IsRenderFrameLive());
+ DCHECK(web_contents()->GetPrimaryMainFrame()->IsRenderFrameLive());
if (devtools_target_ready_notification_sent_)
return;
@@ -367,21 +367,24 @@ void HeadlessWebContentsImpl::RenderViewReady() {
}
int HeadlessWebContentsImpl::GetMainFrameRenderProcessId() const {
- if (!web_contents() || !web_contents()->GetMainFrame())
+ if (!web_contents() || !web_contents()->GetPrimaryMainFrame())
return -1;
- return web_contents()->GetMainFrame()->GetProcess()->GetID();
+ return web_contents()->GetPrimaryMainFrame()->GetProcess()->GetID();
}
int HeadlessWebContentsImpl::GetMainFrameTreeNodeId() const {
- if (!web_contents() || !web_contents()->GetMainFrame())
+ if (!web_contents() || !web_contents()->GetPrimaryMainFrame())
return -1;
- return web_contents()->GetMainFrame()->GetFrameTreeNodeId();
+ return web_contents()->GetPrimaryMainFrame()->GetFrameTreeNodeId();
}
std::string HeadlessWebContentsImpl::GetMainFrameDevToolsId() const {
- if (!web_contents() || !web_contents()->GetMainFrame())
+ if (!web_contents() || !web_contents()->GetPrimaryMainFrame())
return "";
- return web_contents()->GetMainFrame()->GetDevToolsFrameToken().ToString();
+ return web_contents()
+ ->GetPrimaryMainFrame()
+ ->GetDevToolsFrameToken()
+ .ToString();
}
bool HeadlessWebContentsImpl::OpenURL(const GURL& url) {
@@ -442,7 +445,8 @@ void HeadlessWebContentsImpl::RenderProcessHostDestroyed(
}
HeadlessDevToolsTarget* HeadlessWebContentsImpl::GetDevToolsTarget() {
- return web_contents()->GetMainFrame()->IsRenderFrameLive() ? this : nullptr;
+ return web_contents()->GetPrimaryMainFrame()->IsRenderFrameLive() ? this
+ : nullptr;
}
std::unique_ptr<HeadlessDevToolsChannel>
diff --git a/chromium/headless/lib/browser/protocol/README.md b/chromium/headless/lib/browser/protocol/README.md
index e0315182b14..d7157ea4bb9 100644
--- a/chromium/headless/lib/browser/protocol/README.md
+++ b/chromium/headless/lib/browser/protocol/README.md
@@ -1,3 +1,3 @@
# Chrome DevTools Protocol
-Contributing to Chrome DevTools Protocol: [docs.google.com](https://docs.google.com/document/d/1c-COD2kaK__5iMM5SEx-PzNA7HFmgttcYfOHHX0HaOM/edit?usp=sharing).
+Contributing to Chrome DevTools Protocol: <https://goo.gle/devtools-contribution-guide-cdp>
diff --git a/chromium/headless/lib/browser/protocol/headless_devtools_session.cc b/chromium/headless/lib/browser/protocol/headless_devtools_session.cc
index 7b5e00c2d1a..8978d9ba7ed 100644
--- a/chromium/headless/lib/browser/protocol/headless_devtools_session.cc
+++ b/chromium/headless/lib/browser/protocol/headless_devtools_session.cc
@@ -22,6 +22,8 @@ HeadlessDevToolsSession::HeadlessDevToolsSession(
base::WeakPtr<HeadlessBrowserImpl> browser,
content::DevToolsAgentHostClientChannel* channel)
: browser_(browser), dispatcher_(this), client_channel_(channel) {
+ CHECK(client_channel_->GetClient()->IsTrusted())
+ << "Connection to headless requires a trusted client";
content::DevToolsAgentHost* agent_host = channel->GetAgentHost();
if (agent_host->GetWebContents() &&
agent_host->GetType() == content::DevToolsAgentHost::kTypePage) {
@@ -30,10 +32,8 @@ HeadlessDevToolsSession::HeadlessDevToolsSession(
AddHandler(std::make_unique<PageHandler>(agent_host,
agent_host->GetWebContents()));
}
- if (channel->GetClient()->MayAttachToBrowser()) {
- AddHandler(
- std::make_unique<BrowserHandler>(browser_.get(), agent_host->GetId()));
- }
+ AddHandler(
+ std::make_unique<BrowserHandler>(browser_.get(), agent_host->GetId()));
AddHandler(std::make_unique<TargetHandler>(browser_.get()));
}
diff --git a/chromium/headless/lib/browser/protocol/headless_handler.cc b/chromium/headless/lib/browser/protocol/headless_handler.cc
index 1078d5e93ac..04d336ad1c4 100644
--- a/chromium/headless/lib/browser/protocol/headless_handler.cc
+++ b/chromium/headless/lib/browser/protocol/headless_handler.cc
@@ -110,10 +110,10 @@ void HeadlessHandler::BeginFrame(Maybe<double> in_frame_time_ticks,
if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
::switches::kRunAllCompositorStagesBeforeDraw)) {
- callback->sendFailure(
- Response::ServerError("Command is only supported with "
- "--run-all-compositor-stages-before-draw, see "
- "https://goo.gl/3zHXhB for more info."));
+ callback->sendFailure(Response::ServerError(
+ "Command is only supported with "
+ "--run-all-compositor-stages-before-draw, see "
+ "https://goo.gle/chrome-headless-rendering for more info."));
return;
}
diff --git a/chromium/headless/lib/browser/protocol/page_handler.cc b/chromium/headless/lib/browser/protocol/page_handler.cc
index b9f8f0fc694..4f601ce114a 100644
--- a/chromium/headless/lib/browser/protocol/page_handler.cc
+++ b/chromium/headless/lib/browser/protocol/page_handler.cc
@@ -49,7 +49,6 @@ void PageHandler::PrintToPDF(Maybe<bool> landscape,
Maybe<double> margin_left,
Maybe<double> margin_right,
Maybe<String> page_ranges,
- Maybe<bool> ignore_invalid_page_ranges,
Maybe<String> header_template,
Maybe<String> footer_template,
Maybe<bool> prefer_css_page_size,
@@ -65,7 +64,7 @@ void PageHandler::PrintToPDF(Maybe<bool> landscape,
absl::variant<printing::mojom::PrintPagesParamsPtr, std::string>
print_pages_params = print_to_pdf::GetPrintPagesParams(
- web_contents_->GetMainFrame()->GetLastCommittedURL(),
+ web_contents_->GetPrimaryMainFrame()->GetLastCommittedURL(),
OptionalFromMaybe<bool>(landscape),
OptionalFromMaybe<bool>(display_header_footer),
OptionalFromMaybe<bool>(print_background),
@@ -92,8 +91,7 @@ void PageHandler::PrintToPDF(Maybe<bool> landscape,
Page::PrintToPDF::TransferModeEnum::ReturnAsStream;
print_to_pdf::PdfPrintManager::FromWebContents(web_contents_.get())
->PrintToPdf(
- web_contents_->GetMainFrame(), page_ranges.fromMaybe(""),
- ignore_invalid_page_ranges.fromMaybe(false),
+ web_contents_->GetPrimaryMainFrame(), page_ranges.fromMaybe(""),
std::move(absl::get<printing::mojom::PrintPagesParamsPtr>(
print_pages_params)),
base::BindOnce(&PageHandler::PDFCreated, weak_factory_.GetWeakPtr(),
diff --git a/chromium/headless/lib/browser/protocol/page_handler.h b/chromium/headless/lib/browser/protocol/page_handler.h
index d35512ac13b..c3df7f1f3b9 100644
--- a/chromium/headless/lib/browser/protocol/page_handler.h
+++ b/chromium/headless/lib/browser/protocol/page_handler.h
@@ -49,7 +49,6 @@ class PageHandler : public DomainHandler, public Page::Backend {
Maybe<double> margin_left,
Maybe<double> margin_right,
Maybe<String> page_ranges,
- Maybe<bool> ignore_invalid_page_ranges,
Maybe<String> header_template,
Maybe<String> footer_template,
Maybe<bool> prefer_css_page_size,