| 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) {
|
|
|