Index: chrome/browser/printing/print_job_worker.cc |
diff --git a/chrome/browser/printing/print_job_worker.cc b/chrome/browser/printing/print_job_worker.cc |
index a3298f5998010f0ce44cea7ed1a7d507b0508516..66477b1beb1d220d00518d97098b6470b4a25375 100644 |
--- a/chrome/browser/printing/print_job_worker.cc |
+++ b/chrome/browser/printing/print_job_worker.cc |
@@ -13,6 +13,7 @@ |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/chrome_notification_types.h" |
#include "chrome/browser/printing/print_job.h" |
+#include "chrome/browser/printing/printing_ui_web_contents_observer.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/notification_service.h" |
#include "grit/generated_resources.h" |
@@ -77,11 +78,12 @@ void PrintJobWorker::SetPrintDestination( |
destination_ = destination; |
} |
-void PrintJobWorker::GetSettings(bool ask_user_for_settings, |
- gfx::NativeView parent_view, |
- int document_page_count, |
- bool has_selection, |
- MarginType margin_type) { |
+void PrintJobWorker::GetSettings( |
+ bool ask_user_for_settings, |
+ scoped_ptr<PrintingUIWebContentsObserver> web_contents_observer, |
+ int document_page_count, |
+ bool has_selection, |
+ MarginType margin_type) { |
DCHECK_EQ(message_loop(), base::MessageLoop::current()); |
DCHECK_EQ(page_number_, PageNumber::npos()); |
@@ -100,8 +102,10 @@ void PrintJobWorker::GetSettings(bool ask_user_for_settings, |
BrowserThread::UI, FROM_HERE, |
base::Bind(&HoldRefCallback, make_scoped_refptr(owner_), |
base::Bind(&PrintJobWorker::GetSettingsWithUI, |
- base::Unretained(this), parent_view, |
- document_page_count, has_selection))); |
+ base::Unretained(this), |
+ base::Passed(&web_contents_observer), |
+ document_page_count, |
+ has_selection))); |
} else { |
BrowserThread::PostTask( |
BrowserThread::UI, FROM_HERE, |
@@ -169,11 +173,17 @@ void PrintJobWorker::GetSettingsDone(PrintingContext::Result result) { |
result)); |
} |
-void PrintJobWorker::GetSettingsWithUI(gfx::NativeView parent_view, |
- int document_page_count, |
- bool has_selection) { |
+void PrintJobWorker::GetSettingsWithUI( |
+ scoped_ptr<PrintingUIWebContentsObserver> web_contents_observer, |
+ int document_page_count, |
+ bool has_selection) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ gfx::NativeView parent_view = web_contents_observer->GetParentView(); |
+ if (!parent_view) { |
+ GetSettingsWithUIDone(printing::PrintingContext::FAILED); |
+ return; |
+ } |
printing_context_->AskUserForSettings( |
parent_view, document_page_count, has_selection, |
base::Bind(&PrintJobWorker::GetSettingsWithUIDone, |