summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host
diff options
context:
space:
mode:
authorgfeher@chromium.org <gfeher@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-01 20:12:09 +0000
committergfeher@chromium.org <gfeher@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-10-01 20:12:09 +0000
commit2a7e7c15ee743901d9384a08fe6b751b6644f16a (patch)
treea863d5e65767047f3e38ab3d5cdb937e6bac13a9 /chrome/browser/renderer_host
parent3491148530fd60dbd8e92cf4ee2954f948cc72d7 (diff)
downloadchromium_src-2a7e7c15ee743901d9384a08fe6b751b6644f16a.zip
chromium_src-2a7e7c15ee743901d9384a08fe6b751b6644f16a.tar.gz
chromium_src-2a7e7c15ee743901d9384a08fe6b751b6644f16a.tar.bz2
Policy to disable printing
Make Chrome refuse to print if the preference kPrintingEnabled is set to false. In this case, the 'Print...' option in the wrench menu is disabled, and if printing is invoked from JavaScript, then Chrome reports that no printer is installed. Changes to this preference after startup are also respected. BUG=54380 TEST=manual Review URL: http://codereview.chromium.org/3357011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@61222 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r--chrome/browser/renderer_host/resource_message_filter.cc22
1 files changed, 16 insertions, 6 deletions
diff --git a/chrome/browser/renderer_host/resource_message_filter.cc b/chrome/browser/renderer_host/resource_message_filter.cc
index de09a9f..2f42aab 100644
--- a/chrome/browser/renderer_host/resource_message_filter.cc
+++ b/chrome/browser/renderer_host/resource_message_filter.cc
@@ -1144,6 +1144,12 @@ void ResourceMessageFilter::OnResolveProxyCompleted(
void ResourceMessageFilter::OnGetDefaultPrintSettings(IPC::Message* reply_msg) {
scoped_refptr<printing::PrinterQuery> printer_query;
+ if (!print_job_manager_->printing_enabled()) {
+ // Reply with NULL query.
+ OnGetDefaultPrintSettingsReply(printer_query, reply_msg);
+ return;
+ }
+
print_job_manager_->PopPrinterQuery(0, &printer_query);
if (!printer_query.get()) {
printer_query = new printing::PrinterQuery;
@@ -1168,7 +1174,8 @@ void ResourceMessageFilter::OnGetDefaultPrintSettingsReply(
scoped_refptr<printing::PrinterQuery> printer_query,
IPC::Message* reply_msg) {
ViewMsg_Print_Params params;
- if (printer_query->last_status() != printing::PrintingContext::OK) {
+ if (!printer_query.get() ||
+ printer_query->last_status() != printing::PrintingContext::OK) {
memset(&params, 0, sizeof(params));
} else {
RenderParamsFromPrintSettings(printer_query->settings(), &params);
@@ -1176,11 +1183,14 @@ void ResourceMessageFilter::OnGetDefaultPrintSettingsReply(
}
ViewHostMsg_GetDefaultPrintSettings::WriteReplyParams(reply_msg, params);
Send(reply_msg);
- // If user hasn't cancelled.
- if (printer_query->cookie() && printer_query->settings().dpi()) {
- print_job_manager_->QueuePrinterQuery(printer_query.get());
- } else {
- printer_query->StopWorker();
+ // If printing was enabled.
+ if (printer_query.get()) {
+ // If user hasn't cancelled.
+ if (printer_query->cookie() && printer_query->settings().dpi()) {
+ print_job_manager_->QueuePrinterQuery(printer_query.get());
+ } else {
+ printer_query->StopWorker();
+ }
}
}