| 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 34a3483b5e41ba79c37265728b9b66f9ab14364e..5edd02cbfb31eab728c559ddc60ac6d49eed24f0 100644
|
| --- a/chrome/browser/printing/print_job_worker.cc
|
| +++ b/chrome/browser/printing/print_job_worker.cc
|
| @@ -93,6 +93,13 @@ void NotificationCallback(PrintJobWorkerOwner* print_job,
|
| content::Details<JobEventDetails>(details));
|
| }
|
|
|
| +void PostOnOwnerThread(const scoped_refptr<PrintJobWorkerOwner>& owner,
|
| + const PrintingContext::PrintSettingsCallback& callback,
|
| + PrintingContext::Result result) {
|
| + owner->PostTask(FROM_HERE, base::Bind(&HoldRefCallback, owner,
|
| + base::Bind(callback, result)));
|
| +}
|
| +
|
| } // namespace
|
|
|
| PrintJobWorker::PrintJobWorker(int render_process_id,
|
| @@ -219,21 +226,12 @@ void PrintJobWorker::GetSettingsWithUI(
|
| }
|
| #endif
|
|
|
| + // weak_factory_ creates pointers valid only on owner_ thread.
|
| printing_context_->AskUserForSettings(
|
| - document_page_count,
|
| - has_selection,
|
| - is_scripted,
|
| - base::Bind(&PrintJobWorker::GetSettingsWithUIDone,
|
| - base::Unretained(this)));
|
| -}
|
| -
|
| -void PrintJobWorker::GetSettingsWithUIDone(PrintingContext::Result result) {
|
| - PostTask(FROM_HERE,
|
| - base::Bind(&HoldRefCallback,
|
| - make_scoped_refptr(owner_),
|
| - base::Bind(&PrintJobWorker::GetSettingsDone,
|
| - base::Unretained(this),
|
| - result)));
|
| + document_page_count, has_selection, is_scripted,
|
| + base::Bind(&PostOnOwnerThread, make_scoped_refptr(owner_),
|
| + base::Bind(&PrintJobWorker::GetSettingsDone,
|
| + weak_factory_.GetWeakPtr())));
|
| }
|
|
|
| void PrintJobWorker::UseDefaultSettings() {
|
|
|