Index: chrome/browser/printing/printing_message_filter.cc |
diff --git a/chrome/browser/printing/printing_message_filter.cc b/chrome/browser/printing/printing_message_filter.cc |
index 37c5984dab0db7c4f888126f9d14d1bb6499a3d7..6735e6a30af988a9031032385b723b7fa941644a 100644 |
--- a/chrome/browser/printing/printing_message_filter.cc |
+++ b/chrome/browser/printing/printing_message_filter.cc |
@@ -258,55 +258,13 @@ content::WebContents* PrintingMessageFilter::GetWebContentsForRenderView( |
return view ? content::WebContents::FromRenderViewHost(view) : NULL; |
} |
-struct PrintingMessageFilter::GetPrintSettingsForRenderViewParams { |
- PrinterQuery::GetSettingsAskParam ask_user_for_settings; |
- int expected_page_count; |
- bool has_selection; |
- MarginType margin_type; |
-}; |
- |
-void PrintingMessageFilter::GetPrintSettingsForRenderView( |
- int render_view_id, |
- GetPrintSettingsForRenderViewParams params, |
- const base::Closure& callback, |
- scoped_refptr<PrinterQuery> printer_query) { |
- DCHECK_CURRENTLY_ON(BrowserThread::UI); |
- content::WebContents* wc = GetWebContentsForRenderView(render_view_id); |
- if (wc) { |
- scoped_ptr<PrintingUIWebContentsObserver> wc_observer( |
- new PrintingUIWebContentsObserver(wc)); |
- BrowserThread::PostTask(BrowserThread::IO, |
- FROM_HERE, |
- base::Bind(&PrinterQuery::GetSettings, |
- printer_query, |
- params.ask_user_for_settings, |
- base::Passed(&wc_observer), |
- params.expected_page_count, |
- params.has_selection, |
- params.margin_type, |
- callback)); |
- } else { |
- BrowserThread::PostTask( |
- BrowserThread::IO, FROM_HERE, |
- base::Bind(&PrintingMessageFilter::OnGetPrintSettingsFailed, this, |
- callback, printer_query)); |
- } |
-} |
- |
-void PrintingMessageFilter::OnGetPrintSettingsFailed( |
- const base::Closure& callback, |
- scoped_refptr<PrinterQuery> printer_query) { |
- DCHECK_CURRENTLY_ON(BrowserThread::IO); |
- printer_query->GetSettingsDone(PrintSettings(), PrintingContext::FAILED); |
- callback.Run(); |
-} |
- |
void PrintingMessageFilter::OnIsPrintingEnabled(bool* is_enabled) { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
*is_enabled = profile_io_data_->printing_enabled()->GetValue(); |
} |
-void PrintingMessageFilter::OnGetDefaultPrintSettings(IPC::Message* reply_msg) { |
+void PrintingMessageFilter::OnGetDefaultPrintSettings(int render_view_id, |
+ IPC::Message* reply_msg) { |
DCHECK_CURRENTLY_ON(BrowserThread::IO); |
scoped_refptr<PrinterQuery> printer_query; |
if (!profile_io_data_->printing_enabled()->GetValue()) { |
@@ -315,23 +273,22 @@ void PrintingMessageFilter::OnGetDefaultPrintSettings(IPC::Message* reply_msg) { |
return; |
} |
printer_query = queue_->PopPrinterQuery(0); |
- if (!printer_query) |
- printer_query = queue_->CreatePrinterQuery(); |
+ if (!printer_query) { |
+ printer_query = |
+ queue_->CreatePrinterQuery(render_process_id_, render_view_id); |
+ } |
// Loads default settings. This is asynchronous, only the IPC message sender |
// will hang until the settings are retrieved. |
- GetPrintSettingsForRenderViewParams params; |
- params.ask_user_for_settings = PrinterQuery::DEFAULTS; |
- params.expected_page_count = 0; |
- params.has_selection = false; |
- params.margin_type = DEFAULT_MARGINS; |
- BrowserThread::PostTask( |
- BrowserThread::UI, FROM_HERE, |
- base::Bind(&PrintingMessageFilter::GetPrintSettingsForRenderView, this, |
- reply_msg->routing_id(), params, |
- base::Bind(&PrintingMessageFilter::OnGetDefaultPrintSettingsReply, |
- this, printer_query, reply_msg), |
- printer_query)); |
+ printer_query->GetSettings( |
+ PrinterQuery::DEFAULTS, |
+ 0, |
+ false, |
+ DEFAULT_MARGINS, |
+ base::Bind(&PrintingMessageFilter::OnGetDefaultPrintSettingsReply, |
+ this, |
+ printer_query, |
+ reply_msg)); |
} |
void PrintingMessageFilter::OnGetDefaultPrintSettingsReply( |
@@ -359,25 +316,24 @@ void PrintingMessageFilter::OnGetDefaultPrintSettingsReply( |
} |
void PrintingMessageFilter::OnScriptedPrint( |
+ int render_view_id, |
const PrintHostMsg_ScriptedPrint_Params& params, |
IPC::Message* reply_msg) { |
scoped_refptr<PrinterQuery> printer_query = |
queue_->PopPrinterQuery(params.cookie); |
- if (!printer_query) |
- printer_query = queue_->CreatePrinterQuery(); |
- GetPrintSettingsForRenderViewParams settings_params; |
- settings_params.ask_user_for_settings = PrinterQuery::ASK_USER; |
- settings_params.expected_page_count = params.expected_pages_count; |
- settings_params.has_selection = params.has_selection; |
- settings_params.margin_type = params.margin_type; |
- |
- BrowserThread::PostTask( |
- BrowserThread::UI, FROM_HERE, |
- base::Bind(&PrintingMessageFilter::GetPrintSettingsForRenderView, this, |
- reply_msg->routing_id(), settings_params, |
- base::Bind(&PrintingMessageFilter::OnScriptedPrintReply, this, |
- printer_query, reply_msg), |
- printer_query)); |
+ if (!printer_query) { |
+ printer_query = |
+ queue_->CreatePrinterQuery(render_process_id_, render_view_id); |
+ } |
+ printer_query->GetSettings( |
+ PrinterQuery::ASK_USER, |
+ params.expected_pages_count, |
+ params.has_selection, |
+ params.margin_type, |
+ base::Bind(&PrintingMessageFilter::OnScriptedPrintReply, |
+ this, |
+ printer_query, |
+ reply_msg)); |
} |
void PrintingMessageFilter::OnScriptedPrintReply( |
@@ -429,28 +385,34 @@ void PrintingMessageFilter::UpdateFileDescriptor(int render_view_id, int fd) { |
#endif |
void PrintingMessageFilter::OnUpdatePrintSettings( |
- int document_cookie, const base::DictionaryValue& job_settings, |
+ int render_view_id, |
+ int document_cookie, |
+ const base::DictionaryValue& job_settings, |
IPC::Message* reply_msg) { |
scoped_ptr<base::DictionaryValue> new_settings(job_settings.DeepCopy()); |
scoped_refptr<PrinterQuery> printer_query; |
if (!profile_io_data_->printing_enabled()->GetValue()) { |
// Reply with NULL query. |
- OnUpdatePrintSettingsReply(printer_query, reply_msg); |
+ OnUpdatePrintSettingsReply(reply_msg, printer_query); |
return; |
} |
printer_query = queue_->PopPrinterQuery(document_cookie); |
- if (!printer_query) |
- printer_query = queue_->CreatePrinterQuery(); |
+ if (!printer_query) { |
+ printer_query = |
+ queue_->CreatePrinterQuery(render_process_id_, render_view_id); |
+ } |
printer_query->SetSettings( |
new_settings.Pass(), |
- base::Bind(&PrintingMessageFilter::OnUpdatePrintSettingsReply, this, |
- printer_query, reply_msg)); |
+ base::Bind(&PrintingMessageFilter::OnUpdatePrintSettingsReply, |
+ this, |
+ reply_msg, |
+ printer_query)); |
} |
void PrintingMessageFilter::OnUpdatePrintSettingsReply( |
- scoped_refptr<PrinterQuery> printer_query, |
- IPC::Message* reply_msg) { |
+ IPC::Message* reply_msg, |
+ scoped_refptr<PrinterQuery> printer_query) { |
PrintMsg_PrintPages_Params params; |
if (!printer_query.get() || |
printer_query->last_status() != PrintingContext::OK) { |