diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-09-07 13:12:05 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2022-11-09 10:02:59 +0000 |
commit | 33fc33aa94d4add0878ec30dc818e34e1dd3cc2a (patch) | |
tree | f6af110909c79b2759136554f1143d8b0572af0a /chromium/headless/lib/browser | |
parent | 7d2c5d177e9813077a621df8d18c0deda73099b3 (diff) | |
download | qtwebengine-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')
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, |