Remove PrintManagerHost::DidGetDocumentCookie() interface.
In PrintManager and derived classes, set the document cookie used for printing in those classes in the browser process. Don't pass it to a renderer, get the value back, and then set it. Bug: 1202661 Change-Id: I9482c886d7aa3d2e17f06d8d218f87f8e27784f4 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2909373 Reviewed-by: Alan Screen <awscreen@chromium.org> Reviewed-by: Robert Sesek <rsesek@chromium.org> Reviewed-by: Andrey Kosyakov <caseq@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org> Cr-Commit-Position: refs/heads/master@{#886032}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
15aa757cd8
commit
eead1ba5da
chrome/browser/printing
components/printing
browser
common
renderer
test
headless/lib/browser
@ -148,16 +148,6 @@ void CreateQueryWithSettings(base::Value job_settings,
|
|||||||
}
|
}
|
||||||
#endif // BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
#endif // BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
||||||
|
|
||||||
// Runs |callback| with |params| to reply to
|
|
||||||
// mojom::PrintManagerHost::GetDefaultPrintSettings.
|
|
||||||
void GetDefaultPrintSettingsReply(
|
|
||||||
mojom::PrintManagerHost::GetDefaultPrintSettingsCallback callback,
|
|
||||||
mojom::PrintParamsPtr params) {
|
|
||||||
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
|
||||||
DCHECK(params);
|
|
||||||
std::move(callback).Run(std::move(params));
|
|
||||||
}
|
|
||||||
|
|
||||||
void GetDefaultPrintSettingsReplyOnIO(
|
void GetDefaultPrintSettingsReplyOnIO(
|
||||||
scoped_refptr<PrintQueriesQueue> queue,
|
scoped_refptr<PrintQueriesQueue> queue,
|
||||||
std::unique_ptr<PrinterQuery> printer_query,
|
std::unique_ptr<PrinterQuery> printer_query,
|
||||||
@ -170,8 +160,7 @@ void GetDefaultPrintSettingsReplyOnIO(
|
|||||||
}
|
}
|
||||||
|
|
||||||
content::GetUIThreadTaskRunner({})->PostTask(
|
content::GetUIThreadTaskRunner({})->PostTask(
|
||||||
FROM_HERE, base::BindOnce(&GetDefaultPrintSettingsReply,
|
FROM_HERE, base::BindOnce(std::move(callback), std::move(params)));
|
||||||
std::move(callback), std::move(params)));
|
|
||||||
|
|
||||||
// If printing was enabled.
|
// If printing was enabled.
|
||||||
if (printer_query) {
|
if (printer_query) {
|
||||||
@ -212,17 +201,6 @@ mojom::PrintPagesParamsPtr CreateEmptyPrintPagesParamsPtr() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
||||||
// Runs |callback| with |params| to reply to
|
|
||||||
// mojom::PrintManagerHost::UpdatePrintSettings.
|
|
||||||
void UpdatePrintSettingsReply(
|
|
||||||
mojom::PrintManagerHost::UpdatePrintSettingsCallback callback,
|
|
||||||
mojom::PrintPagesParamsPtr params,
|
|
||||||
bool canceled) {
|
|
||||||
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
|
||||||
DCHECK(params);
|
|
||||||
std::move(callback).Run(std::move(params), canceled);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(OS_WIN)
|
#if defined(OS_WIN)
|
||||||
content::WebContents* GetWebContentsForRenderFrame(int render_process_id,
|
content::WebContents* GetWebContentsForRenderFrame(int render_process_id,
|
||||||
int render_frame_id) {
|
int render_frame_id) {
|
||||||
@ -274,8 +252,8 @@ void UpdatePrintSettingsReplyOnIO(
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
content::GetUIThreadTaskRunner({})->PostTask(
|
content::GetUIThreadTaskRunner({})->PostTask(
|
||||||
FROM_HERE, base::BindOnce(&UpdatePrintSettingsReply, std::move(callback),
|
FROM_HERE,
|
||||||
std::move(params), canceled));
|
base::BindOnce(std::move(callback), std::move(params), canceled));
|
||||||
|
|
||||||
if (printer_query->cookie() && printer_query->settings().dpi()) {
|
if (printer_query->cookie() && printer_query->settings().dpi()) {
|
||||||
queue->QueuePrinterQuery(std::move(printer_query));
|
queue->QueuePrinterQuery(std::move(printer_query));
|
||||||
@ -306,27 +284,10 @@ void UpdatePrintSettingsOnIO(
|
|||||||
}
|
}
|
||||||
#endif // BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
#endif // BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
||||||
|
|
||||||
// Runs |callback| with |params| to reply to
|
|
||||||
// mojom::PrintManagerHost::ScriptedPrint.
|
|
||||||
void ScriptedPrintReply(mojom::PrintManagerHost::ScriptedPrintCallback callback,
|
|
||||||
mojom::PrintPagesParamsPtr params,
|
|
||||||
int process_id) {
|
|
||||||
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
|
||||||
|
|
||||||
if (!content::RenderProcessHost::FromID(process_id)) {
|
|
||||||
// Early return if the renderer is not alive.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DCHECK(params);
|
|
||||||
std::move(callback).Run(std::move(params));
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScriptedPrintReplyOnIO(
|
void ScriptedPrintReplyOnIO(
|
||||||
scoped_refptr<PrintQueriesQueue> queue,
|
scoped_refptr<PrintQueriesQueue> queue,
|
||||||
std::unique_ptr<PrinterQuery> printer_query,
|
std::unique_ptr<PrinterQuery> printer_query,
|
||||||
mojom::PrintManagerHost::ScriptedPrintCallback callback,
|
mojom::PrintManagerHost::ScriptedPrintCallback callback) {
|
||||||
int process_id) {
|
|
||||||
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
|
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
|
||||||
mojom::PrintPagesParamsPtr params = CreateEmptyPrintPagesParamsPtr();
|
mojom::PrintPagesParamsPtr params = CreateEmptyPrintPagesParamsPtr();
|
||||||
if (printer_query->last_status() == PrintingContext::OK &&
|
if (printer_query->last_status() == PrintingContext::OK &&
|
||||||
@ -339,8 +300,7 @@ void ScriptedPrintReplyOnIO(
|
|||||||
bool has_valid_cookie = params->params->document_cookie;
|
bool has_valid_cookie = params->params->document_cookie;
|
||||||
bool has_dpi = !params->params->dpi.IsEmpty();
|
bool has_dpi = !params->params->dpi.IsEmpty();
|
||||||
content::GetUIThreadTaskRunner({})->PostTask(
|
content::GetUIThreadTaskRunner({})->PostTask(
|
||||||
FROM_HERE, base::BindOnce(&ScriptedPrintReply, std::move(callback),
|
FROM_HERE, base::BindOnce(std::move(callback), std::move(params)));
|
||||||
std::move(params), process_id));
|
|
||||||
|
|
||||||
if (has_dpi && has_valid_cookie) {
|
if (has_dpi && has_valid_cookie) {
|
||||||
queue->QueuePrinterQuery(std::move(printer_query));
|
queue->QueuePrinterQuery(std::move(printer_query));
|
||||||
@ -370,7 +330,7 @@ void ScriptedPrintOnIO(mojom::ScriptedPrintParamsPtr params,
|
|||||||
params->has_selection, params->margin_type, params->is_scripted,
|
params->has_selection, params->margin_type, params->is_scripted,
|
||||||
params->is_modifiable,
|
params->is_modifiable,
|
||||||
base::BindOnce(&ScriptedPrintReplyOnIO, queue, std::move(printer_query),
|
base::BindOnce(&ScriptedPrintReplyOnIO, queue, std::move(printer_query),
|
||||||
std::move(callback), process_id));
|
std::move(callback)));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
@ -496,6 +456,7 @@ void PrintViewManagerBase::StartLocalPrintJob(
|
|||||||
PrinterHandler::PrintCallback callback) {
|
PrinterHandler::PrintCallback callback) {
|
||||||
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||||
|
|
||||||
|
set_cookie(cookie);
|
||||||
DidGetPrintedPagesCount(cookie, page_count);
|
DidGetPrintedPagesCount(cookie, page_count);
|
||||||
|
|
||||||
if (!PrintJobHasDocument(cookie)) {
|
if (!PrintJobHasDocument(cookie)) {
|
||||||
@ -516,8 +477,41 @@ void PrintViewManagerBase::StartLocalPrintJob(
|
|||||||
settings.page_setup_device_units().printable_area().origin());
|
settings.page_setup_device_units().printable_area().origin());
|
||||||
std::move(callback).Run(base::Value());
|
std::move(callback).Run(base::Value());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PrintViewManagerBase::UpdatePrintSettingsReply(
|
||||||
|
mojom::PrintManagerHost::UpdatePrintSettingsCallback callback,
|
||||||
|
mojom::PrintPagesParamsPtr params,
|
||||||
|
bool canceled) {
|
||||||
|
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||||
|
set_cookie(params->params->document_cookie);
|
||||||
|
std::move(callback).Run(std::move(params), canceled);
|
||||||
|
}
|
||||||
|
|
||||||
#endif // BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
#endif // BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
||||||
|
|
||||||
|
void PrintViewManagerBase::GetDefaultPrintSettingsReply(
|
||||||
|
GetDefaultPrintSettingsCallback callback,
|
||||||
|
mojom::PrintParamsPtr params) {
|
||||||
|
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||||
|
set_cookie(params->document_cookie);
|
||||||
|
std::move(callback).Run(std::move(params));
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintViewManagerBase::ScriptedPrintReply(
|
||||||
|
ScriptedPrintCallback callback,
|
||||||
|
int process_id,
|
||||||
|
mojom::PrintPagesParamsPtr params) {
|
||||||
|
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||||
|
|
||||||
|
if (!content::RenderProcessHost::FromID(process_id)) {
|
||||||
|
// Early return if the renderer is not alive.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
set_cookie(params->params->document_cookie);
|
||||||
|
std::move(callback).Run(std::move(params));
|
||||||
|
}
|
||||||
|
|
||||||
void PrintViewManagerBase::UpdatePrintingEnabled() {
|
void PrintViewManagerBase::UpdatePrintingEnabled() {
|
||||||
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||||
// The Unretained() is safe because ForEachFrame() is synchronous.
|
// The Unretained() is safe because ForEachFrame() is synchronous.
|
||||||
@ -644,10 +638,13 @@ void PrintViewManagerBase::GetDefaultPrintSettings(
|
|||||||
}
|
}
|
||||||
|
|
||||||
content::RenderFrameHost* render_frame_host = GetCurrentTargetFrame();
|
content::RenderFrameHost* render_frame_host = GetCurrentTargetFrame();
|
||||||
|
auto callback_wrapper =
|
||||||
|
base::BindOnce(&PrintViewManagerBase::GetDefaultPrintSettingsReply,
|
||||||
|
weak_ptr_factory_.GetWeakPtr(), std::move(callback));
|
||||||
content::GetIOThreadTaskRunner({})->PostTask(
|
content::GetIOThreadTaskRunner({})->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::BindOnce(&GetDefaultPrintSettingsOnIO, std::move(callback), queue_,
|
base::BindOnce(&GetDefaultPrintSettingsOnIO, std::move(callback_wrapper),
|
||||||
render_frame_host->GetProcess()->GetID(),
|
queue_, render_frame_host->GetProcess()->GetID(),
|
||||||
render_frame_host->GetRoutingID()));
|
render_frame_host->GetRoutingID()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -670,12 +667,15 @@ void PrintViewManagerBase::UpdatePrintSettings(
|
|||||||
}
|
}
|
||||||
|
|
||||||
content::RenderFrameHost* render_frame_host = GetCurrentTargetFrame();
|
content::RenderFrameHost* render_frame_host = GetCurrentTargetFrame();
|
||||||
|
auto callback_wrapper =
|
||||||
|
base::BindOnce(&PrintViewManagerBase::UpdatePrintSettingsReply,
|
||||||
|
weak_ptr_factory_.GetWeakPtr(), std::move(callback));
|
||||||
content::GetIOThreadTaskRunner({})->PostTask(
|
content::GetIOThreadTaskRunner({})->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE, base::BindOnce(&UpdatePrintSettingsOnIO, cookie,
|
||||||
base::BindOnce(&UpdatePrintSettingsOnIO, cookie, std::move(callback),
|
std::move(callback_wrapper), queue_,
|
||||||
queue_, std::move(job_settings),
|
std::move(job_settings),
|
||||||
render_frame_host->GetProcess()->GetID(),
|
render_frame_host->GetProcess()->GetID(),
|
||||||
render_frame_host->GetRoutingID()));
|
render_frame_host->GetRoutingID()));
|
||||||
}
|
}
|
||||||
#endif // BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
#endif // BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
||||||
|
|
||||||
@ -684,11 +684,15 @@ void PrintViewManagerBase::ScriptedPrint(mojom::ScriptedPrintParamsPtr params,
|
|||||||
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
||||||
|
|
||||||
content::RenderFrameHost* render_frame_host = GetCurrentTargetFrame();
|
content::RenderFrameHost* render_frame_host = GetCurrentTargetFrame();
|
||||||
|
int process_id = render_frame_host->GetProcess()->GetID();
|
||||||
|
int routing_id = render_frame_host->GetRoutingID();
|
||||||
|
auto callback_wrapper = base::BindOnce(
|
||||||
|
&PrintViewManagerBase::ScriptedPrintReply, weak_ptr_factory_.GetWeakPtr(),
|
||||||
|
std::move(callback), process_id);
|
||||||
content::GetIOThreadTaskRunner({})->PostTask(
|
content::GetIOThreadTaskRunner({})->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE, base::BindOnce(&ScriptedPrintOnIO, std::move(params),
|
||||||
base::BindOnce(&ScriptedPrintOnIO, std::move(params), std::move(callback),
|
std::move(callback_wrapper), queue_, process_id,
|
||||||
queue_, render_frame_host->GetProcess()->GetID(),
|
routing_id));
|
||||||
render_frame_host->GetRoutingID()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintViewManagerBase::PrintingFailed(int32_t cookie) {
|
void PrintViewManagerBase::PrintingFailed(int32_t cookie) {
|
||||||
|
@ -157,8 +157,23 @@ class PrintViewManagerBase : public content::NotificationObserver,
|
|||||||
uint32_t page_count,
|
uint32_t page_count,
|
||||||
int cookie,
|
int cookie,
|
||||||
PrinterHandler::PrintCallback callback);
|
PrinterHandler::PrintCallback callback);
|
||||||
|
|
||||||
|
// Runs `callback` with `params` to reply to UpdatePrintSettings().
|
||||||
|
void UpdatePrintSettingsReply(
|
||||||
|
mojom::PrintManagerHost::UpdatePrintSettingsCallback callback,
|
||||||
|
mojom::PrintPagesParamsPtr params,
|
||||||
|
bool canceled);
|
||||||
#endif // BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
#endif // BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
||||||
|
|
||||||
|
// Runs `callback` with `params` to reply to GetDefaultPrintSettings().
|
||||||
|
void GetDefaultPrintSettingsReply(GetDefaultPrintSettingsCallback callback,
|
||||||
|
mojom::PrintParamsPtr params);
|
||||||
|
|
||||||
|
// Runs `callback` with `params` to reply to ScriptedPrint().
|
||||||
|
void ScriptedPrintReply(ScriptedPrintCallback callback,
|
||||||
|
int process_id,
|
||||||
|
mojom::PrintPagesParamsPtr params);
|
||||||
|
|
||||||
// Processes a NOTIFY_PRINT_JOB_EVENT notification.
|
// Processes a NOTIFY_PRINT_JOB_EVENT notification.
|
||||||
void OnNotifyPrintJobEvent(const JobEventDetails& event_details);
|
void OnNotifyPrintJobEvent(const JobEventDetails& event_details);
|
||||||
|
|
||||||
|
@ -29,10 +29,6 @@ void PrintManager::DidGetPrintedPagesCount(int32_t cookie,
|
|||||||
number_pages_ = number_pages;
|
number_pages_ = number_pages;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintManager::DidGetDocumentCookie(int32_t cookie) {
|
|
||||||
cookie_ = cookie;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PrintManager::DidShowPrintDialog() {}
|
void PrintManager::DidShowPrintDialog() {}
|
||||||
|
|
||||||
void PrintManager::DidPrintDocument(mojom::DidPrintDocumentParamsPtr params,
|
void PrintManager::DidPrintDocument(mojom::DidPrintDocumentParamsPtr params,
|
||||||
|
@ -40,7 +40,6 @@ class PrintManager : public content::WebContentsObserver,
|
|||||||
|
|
||||||
// printing::mojom::PrintManagerHost:
|
// printing::mojom::PrintManagerHost:
|
||||||
void DidGetPrintedPagesCount(int32_t cookie, uint32_t number_pages) override;
|
void DidGetPrintedPagesCount(int32_t cookie, uint32_t number_pages) override;
|
||||||
void DidGetDocumentCookie(int32_t cookie) override;
|
|
||||||
void DidPrintDocument(mojom::DidPrintDocumentParamsPtr params,
|
void DidPrintDocument(mojom::DidPrintDocumentParamsPtr params,
|
||||||
DidPrintDocumentCallback callback) override;
|
DidPrintDocumentCallback callback) override;
|
||||||
void DidShowPrintDialog() override;
|
void DidShowPrintDialog() override;
|
||||||
|
@ -322,9 +322,6 @@ interface PrintManagerHost {
|
|||||||
// rendered pages according to the specified settings.
|
// rendered pages according to the specified settings.
|
||||||
DidGetPrintedPagesCount(int32 cookie, uint32 number_pages);
|
DidGetPrintedPagesCount(int32 cookie, uint32 number_pages);
|
||||||
|
|
||||||
// Sends the document cookie of the current printer query to the browser.
|
|
||||||
DidGetDocumentCookie(int32 cookie);
|
|
||||||
|
|
||||||
// Request the default print settings.
|
// Request the default print settings.
|
||||||
[Sync]
|
[Sync]
|
||||||
GetDefaultPrintSettings() => (PrintParams default_settings);
|
GetDefaultPrintSettings() => (PrintParams default_settings);
|
||||||
|
@ -2884,7 +2884,6 @@ void PrintRenderFrameHelper::PrintPreviewContext::CalculatePluginAttributes() {
|
|||||||
void PrintRenderFrameHelper::SetPrintPagesParams(
|
void PrintRenderFrameHelper::SetPrintPagesParams(
|
||||||
const mojom::PrintPagesParams& settings) {
|
const mojom::PrintPagesParams& settings) {
|
||||||
print_pages_params_ = settings.Clone();
|
print_pages_params_ = settings.Clone();
|
||||||
GetPrintManagerHost()->DidGetDocumentCookie(settings.params->document_cookie);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintRenderFrameHelper::QuitActiveRunLoops() {
|
void PrintRenderFrameHelper::QuitActiveRunLoops() {
|
||||||
|
@ -297,7 +297,6 @@ class TestPrintManagerHost
|
|||||||
EXPECT_EQ(number_pages, number_pages_);
|
EXPECT_EQ(number_pages, number_pages_);
|
||||||
printer_->SetPrintedPagesCount(cookie, number_pages);
|
printer_->SetPrintedPagesCount(cookie, number_pages);
|
||||||
}
|
}
|
||||||
void DidGetDocumentCookie(int32_t cookie) override {}
|
|
||||||
void DidPrintDocument(mojom::DidPrintDocumentParamsPtr params,
|
void DidPrintDocument(mojom::DidPrintDocumentParamsPtr params,
|
||||||
DidPrintDocumentCallback callback) override {
|
DidPrintDocumentCallback callback) override {
|
||||||
base::RunLoop().RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
@ -166,6 +166,7 @@ void HeadlessPrintManager::GetPDFContents(content::RenderFrameHost* rfh,
|
|||||||
print_params_ = GetPrintParamsFromSettings(settings);
|
print_params_ = GetPrintParamsFromSettings(settings);
|
||||||
page_ranges_text_ = settings.page_ranges;
|
page_ranges_text_ = settings.page_ranges;
|
||||||
ignore_invalid_page_ranges_ = settings.ignore_invalid_page_ranges;
|
ignore_invalid_page_ranges_ = settings.ignore_invalid_page_ranges;
|
||||||
|
set_cookie(print_params_->params->document_cookie);
|
||||||
GetPrintRenderFrame(rfh)->PrintRequestedPages();
|
GetPrintRenderFrame(rfh)->PrintRequestedPages();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user