Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4044)

Unified Diff: chrome/browser/printing/print_job_worker.cc

Issue 1083433003: Fix crash from ipc_fuzzer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fri Apr 10 17:22:28 PDT 2015 Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/printing/print_job_worker.h ('k') | chrome/browser/printing/print_view_manager_base.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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() {
« no previous file with comments | « chrome/browser/printing/print_job_worker.h ('k') | chrome/browser/printing/print_view_manager_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698