Add a callback option to webContents.print

This commit is contained in:
renaesop 2017-07-21 15:16:27 +08:00
parent 3283238555
commit 6d16eb81d2
4 changed files with 30 additions and 8 deletions

View file

@ -377,9 +377,12 @@ void PrintViewManagerBase::DisconnectFromCurrentPrintJob() {
}
void PrintViewManagerBase::PrintingDone(bool success) {
if (!print_job_.get())
return;
Send(new PrintMsg_PrintingDone(routing_id(), success));
if (print_job_.get()) {
Send(new PrintMsg_PrintingDone(routing_id(), success));
}
if (!callback.is_null()) {
callback.Run(success && print_job_);
}
}
void PrintViewManagerBase::TerminatePrintJob(bool cancel) {

View file

@ -5,6 +5,9 @@
#ifndef CHROME_BROWSER_PRINTING_PRINT_VIEW_MANAGER_BASE_H_
#define CHROME_BROWSER_PRINTING_PRINT_VIEW_MANAGER_BASE_H_
#include <memory>
#include "base/callback.h"
#include "base/memory/ref_counted.h"
#include "components/prefs/pref_member.h"
#include "base/strings/string16.h"
@ -47,6 +50,10 @@ class PrintViewManagerBase : public content::NotificationObserver,
// PrintedPagesSource implementation.
virtual base::string16 RenderSourceName() override;
void SetCallback(const base::Callback<void(bool)>& cb) {
callback = cb;
};
protected:
explicit PrintViewManagerBase(content::WebContents* web_contents);
@ -159,6 +166,8 @@ class PrintViewManagerBase : public content::NotificationObserver,
scoped_refptr<printing::PrintQueriesQueue> queue_;
base::Callback<void(bool)> callback;
DISALLOW_COPY_AND_ASSIGN(PrintViewManagerBase);
};