Commit abe4811d authored by jhawkins@chromium.org's avatar jhawkins@chromium.org

base::Bind: Convert PrintingContext::PrintSettingsCallback.

BUG=none
TEST=none

R=csilv@chromium.org

Review URL: http://codereview.chromium.org/8549031

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@110813 0039d316-1c4b-4281-b951-d872f2087c98
parent cd8b4c7f
...@@ -100,8 +100,7 @@ printing::PrintDialogGtkInterface* PrintDialogGtk::CreatePrintDialog( ...@@ -100,8 +100,7 @@ printing::PrintDialogGtkInterface* PrintDialogGtk::CreatePrintDialog(
} }
PrintDialogGtk::PrintDialogGtk(PrintingContextGtk* context) PrintDialogGtk::PrintDialogGtk(PrintingContextGtk* context)
: callback_(NULL), : context_(context),
context_(context),
dialog_(NULL), dialog_(NULL),
gtk_settings_(NULL), gtk_settings_(NULL),
page_setup_(NULL), page_setup_(NULL),
...@@ -232,7 +231,7 @@ bool PrintDialogGtk::UpdateSettings(const DictionaryValue& job_settings, ...@@ -232,7 +231,7 @@ bool PrintDialogGtk::UpdateSettings(const DictionaryValue& job_settings,
} }
void PrintDialogGtk::ShowDialog( void PrintDialogGtk::ShowDialog(
PrintingContextGtk::PrintSettingsCallback* callback) { const PrintingContextGtk::PrintSettingsCallback& callback) {
callback_ = callback; callback_ = callback;
GtkWindow* parent = BrowserList::GetLastActive()->window()->GetNativeHandle(); GtkWindow* parent = BrowserList::GetLastActive()->window()->GetNativeHandle();
...@@ -343,14 +342,14 @@ void PrintDialogGtk::OnResponse(GtkWidget* dialog, int response_id) { ...@@ -343,14 +342,14 @@ void PrintDialogGtk::OnResponse(GtkWidget* dialog, int response_id) {
printing::PrintSettingsInitializerGtk::InitPrintSettings( printing::PrintSettingsInitializerGtk::InitPrintSettings(
gtk_settings_, page_setup_, ranges_vector, false, &settings); gtk_settings_, page_setup_, ranges_vector, false, &settings);
context_->InitWithSettings(settings); context_->InitWithSettings(settings);
callback_->Run(PrintingContextGtk::OK); callback_.Run(PrintingContextGtk::OK);
callback_ = NULL; callback_.Reset();
return; return;
} }
case GTK_RESPONSE_DELETE_EVENT: // Fall through. case GTK_RESPONSE_DELETE_EVENT: // Fall through.
case GTK_RESPONSE_CANCEL: { case GTK_RESPONSE_CANCEL: {
callback_->Run(PrintingContextGtk::CANCEL); callback_.Run(PrintingContextGtk::CANCEL);
callback_ = NULL; callback_.Reset();
return; return;
} }
case GTK_RESPONSE_APPLY: case GTK_RESPONSE_APPLY:
......
...@@ -41,7 +41,7 @@ class PrintDialogGtk ...@@ -41,7 +41,7 @@ class PrintDialogGtk
const printing::PageRanges& ranges, const printing::PageRanges& ranges,
printing::PrintSettings* settings) OVERRIDE; printing::PrintSettings* settings) OVERRIDE;
virtual void ShowDialog( virtual void ShowDialog(
PrintingContextGtk::PrintSettingsCallback* callback) OVERRIDE; const PrintingContextGtk::PrintSettingsCallback& callback) OVERRIDE;
virtual void PrintDocument(const printing::Metafile* metafile, virtual void PrintDocument(const printing::Metafile* metafile,
const string16& document_name) OVERRIDE; const string16& document_name) OVERRIDE;
virtual void AddRefToDialog() OVERRIDE; virtual void AddRefToDialog() OVERRIDE;
...@@ -73,7 +73,7 @@ class PrintDialogGtk ...@@ -73,7 +73,7 @@ class PrintDialogGtk
printing::PrintSettings* settings); printing::PrintSettings* settings);
// Printing dialog callback. // Printing dialog callback.
PrintingContextGtk::PrintSettingsCallback* callback_; PrintingContextGtk::PrintSettingsCallback callback_;
PrintingContextGtk* context_; PrintingContextGtk* context_;
// Print dialog settings. PrintDialogGtk owns |dialog_| and holds references // Print dialog settings. PrintDialogGtk owns |dialog_| and holds references
......
...@@ -185,7 +185,8 @@ void PrintJobWorker::GetSettingsWithUI(gfx::NativeView parent_view, ...@@ -185,7 +185,8 @@ void PrintJobWorker::GetSettingsWithUI(gfx::NativeView parent_view,
printing_context_->AskUserForSettings( printing_context_->AskUserForSettings(
parent_view, document_page_count, has_selection, parent_view, document_page_count, has_selection,
NewCallback(this, &PrintJobWorker::GetSettingsWithUIDone)); base::Bind(&PrintJobWorker::GetSettingsWithUIDone,
base::Unretained(this)));
} }
void PrintJobWorker::GetSettingsWithUIDone(PrintingContext::Result result) { void PrintJobWorker::GetSettingsWithUIDone(PrintingContext::Result result) {
......
...@@ -32,7 +32,7 @@ class PrintDialogGtkInterface { ...@@ -32,7 +32,7 @@ class PrintDialogGtkInterface {
// Shows the dialog and handles the response with |callback|. Only used when // Shows the dialog and handles the response with |callback|. Only used when
// printing with the native print dialog. // printing with the native print dialog.
virtual void ShowDialog( virtual void ShowDialog(
PrintingContextGtk::PrintSettingsCallback* callback) = 0; const PrintingContextGtk::PrintSettingsCallback& callback) = 0;
// Prints the document named |document_name| contained in |metafile|. // Prints the document named |document_name| contained in |metafile|.
// Called from the print worker thread. Once called, the // Called from the print worker thread. Once called, the
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#include <string> #include <string>
#include "base/basictypes.h" #include "base/basictypes.h"
#include "base/callback_old.h" #include "base/callback.h"
#include "base/string16.h" #include "base/string16.h"
#include "printing/print_settings.h" #include "printing/print_settings.h"
#include "ui/gfx/native_widget_types.h" #include "ui/gfx/native_widget_types.h"
...@@ -36,7 +36,7 @@ class PRINTING_EXPORT PrintingContext { ...@@ -36,7 +36,7 @@ class PRINTING_EXPORT PrintingContext {
// Callback of AskUserForSettings, used to notify the PrintJobWorker when // Callback of AskUserForSettings, used to notify the PrintJobWorker when
// print settings are available. // print settings are available.
typedef Callback1<Result>::Type PrintSettingsCallback; typedef base::Callback<void(Result)> PrintSettingsCallback;
// Asks the user what printer and format should be used to print. Updates the // Asks the user what printer and format should be used to print. Updates the
// context with the select device settings. The result of the call is returned // context with the select device settings. The result of the call is returned
...@@ -45,7 +45,7 @@ class PRINTING_EXPORT PrintingContext { ...@@ -45,7 +45,7 @@ class PRINTING_EXPORT PrintingContext {
virtual void AskUserForSettings(gfx::NativeView parent_view, virtual void AskUserForSettings(gfx::NativeView parent_view,
int max_pages, int max_pages,
bool has_selection, bool has_selection,
PrintSettingsCallback* callback) = 0; const PrintSettingsCallback& callback) = 0;
// Selects the user's default printer and format. Updates the context with the // Selects the user's default printer and format. Updates the context with the
// default device settings. // default device settings.
......
...@@ -59,7 +59,7 @@ void PrintingContextGtk::AskUserForSettings( ...@@ -59,7 +59,7 @@ void PrintingContextGtk::AskUserForSettings(
gfx::NativeView parent_view, gfx::NativeView parent_view,
int max_pages, int max_pages,
bool has_selection, bool has_selection,
PrintSettingsCallback* callback) { const PrintSettingsCallback& callback) {
print_dialog_->ShowDialog(callback); print_dialog_->ShowDialog(callback);
} }
......
...@@ -32,10 +32,11 @@ class PRINTING_EXPORT PrintingContextGtk : public PrintingContext { ...@@ -32,10 +32,11 @@ class PRINTING_EXPORT PrintingContextGtk : public PrintingContext {
void PrintDocument(const Metafile* metafile); void PrintDocument(const Metafile* metafile);
// PrintingContext implementation. // PrintingContext implementation.
virtual void AskUserForSettings(gfx::NativeView parent_view, virtual void AskUserForSettings(
int max_pages, gfx::NativeView parent_view,
bool has_selection, int max_pages,
PrintSettingsCallback* callback) OVERRIDE; bool has_selection,
const PrintSettingsCallback& callback) OVERRIDE;
virtual Result UseDefaultSettings() OVERRIDE; virtual Result UseDefaultSettings() OVERRIDE;
virtual Result UpdatePrinterSettings( virtual Result UpdatePrinterSettings(
const base::DictionaryValue& job_settings, const base::DictionaryValue& job_settings,
......
...@@ -25,10 +25,11 @@ class PRINTING_EXPORT PrintingContextMac : public PrintingContext { ...@@ -25,10 +25,11 @@ class PRINTING_EXPORT PrintingContextMac : public PrintingContext {
virtual ~PrintingContextMac(); virtual ~PrintingContextMac();
// PrintingContext implementation. // PrintingContext implementation.
virtual void AskUserForSettings(gfx::NativeView parent_view, virtual void AskUserForSettings(
int max_pages, gfx::NativeView parent_view,
bool has_selection, int max_pages,
PrintSettingsCallback* callback) OVERRIDE; bool has_selection,
const PrintSettingsCallback& callback) OVERRIDE;
virtual Result UseDefaultSettings() OVERRIDE; virtual Result UseDefaultSettings() OVERRIDE;
virtual Result UpdatePrinterSettings( virtual Result UpdatePrinterSettings(
const base::DictionaryValue& job_settings, const base::DictionaryValue& job_settings,
......
...@@ -32,10 +32,11 @@ PrintingContextMac::~PrintingContextMac() { ...@@ -32,10 +32,11 @@ PrintingContextMac::~PrintingContextMac() {
ReleaseContext(); ReleaseContext();
} }
void PrintingContextMac::AskUserForSettings(gfx::NativeView parent_view, void PrintingContextMac::AskUserForSettings(
int max_pages, gfx::NativeView parent_view,
bool has_selection, int max_pages,
PrintSettingsCallback* callback) { bool has_selection,
const PrintSettingsCallback& callback) {
// Third-party print drivers seem to be an area prone to raising exceptions. // Third-party print drivers seem to be an area prone to raising exceptions.
// This will allow exceptions to be raised, but does not handle them. The // This will allow exceptions to be raised, but does not handle them. The
// NSPrintPanel appears to have appropriate NSException handlers. // NSPrintPanel appears to have appropriate NSException handlers.
...@@ -80,9 +81,9 @@ void PrintingContextMac::AskUserForSettings(gfx::NativeView parent_view, ...@@ -80,9 +81,9 @@ void PrintingContextMac::AskUserForSettings(gfx::NativeView parent_view,
if (selection == NSOKButton) { if (selection == NSOKButton) {
print_info_.reset([[panel printInfo] retain]); print_info_.reset([[panel printInfo] retain]);
InitPrintSettingsFromPrintInfo(GetPageRangesFromPrintInfo()); InitPrintSettingsFromPrintInfo(GetPageRangesFromPrintInfo());
callback->Run(OK); callback.Run(OK);
} else { } else {
callback->Run(CANCEL); callback.Run(CANCEL);
} }
} }
......
...@@ -32,9 +32,9 @@ void PrintingContextNoSystemDialog::AskUserForSettings( ...@@ -32,9 +32,9 @@ void PrintingContextNoSystemDialog::AskUserForSettings(
gfx::NativeView parent_view, gfx::NativeView parent_view,
int max_pages, int max_pages,
bool has_selection, bool has_selection,
PrintSettingsCallback* callback) { const PrintSettingsCallback& callback) {
// We don't want to bring up a dialog here. Ever. Just signal the callback. // We don't want to bring up a dialog here. Ever. Just signal the callback.
callback->Run(OK); callback.Run(OK);
} }
PrintingContext::Result PrintingContextNoSystemDialog::UseDefaultSettings() { PrintingContext::Result PrintingContextNoSystemDialog::UseDefaultSettings() {
......
...@@ -21,22 +21,23 @@ class PRINTING_EXPORT PrintingContextNoSystemDialog : public PrintingContext { ...@@ -21,22 +21,23 @@ class PRINTING_EXPORT PrintingContextNoSystemDialog : public PrintingContext {
virtual ~PrintingContextNoSystemDialog(); virtual ~PrintingContextNoSystemDialog();
// PrintingContext implementation. // PrintingContext implementation.
virtual void AskUserForSettings(gfx::NativeView parent_view, virtual void AskUserForSettings(
int max_pages, gfx::NativeView parent_view,
bool has_selection, int max_pages,
PrintSettingsCallback* callback); bool has_selection,
virtual Result UseDefaultSettings(); const PrintSettingsCallback& callback) OVERRIDE;
virtual Result UseDefaultSettings() OVERRIDE;
virtual Result UpdatePrinterSettings( virtual Result UpdatePrinterSettings(
const base::DictionaryValue& job_settings, const base::DictionaryValue& job_settings,
const PageRanges& ranges); const PageRanges& ranges) OVERRIDE;
virtual Result InitWithSettings(const PrintSettings& settings); virtual Result InitWithSettings(const PrintSettings& settings) OVERRIDE;
virtual Result NewDocument(const string16& document_name); virtual Result NewDocument(const string16& document_name) OVERRIDE;
virtual Result NewPage(); virtual Result NewPage() OVERRIDE;
virtual Result PageDone(); virtual Result PageDone() OVERRIDE;
virtual Result DocumentDone(); virtual Result DocumentDone() OVERRIDE;
virtual void Cancel(); virtual void Cancel() OVERRIDE;
virtual void ReleaseContext(); virtual void ReleaseContext() OVERRIDE;
virtual gfx::NativeDrawingContext context() const; virtual gfx::NativeDrawingContext context() const OVERRIDE;
private: private:
DISALLOW_COPY_AND_ASSIGN(PrintingContextNoSystemDialog); DISALLOW_COPY_AND_ASSIGN(PrintingContextNoSystemDialog);
......
...@@ -213,10 +213,9 @@ PrintingContextWin::~PrintingContextWin() { ...@@ -213,10 +213,9 @@ PrintingContextWin::~PrintingContextWin() {
ReleaseContext(); ReleaseContext();
} }
void PrintingContextWin::AskUserForSettings(gfx::NativeView view, void PrintingContextWin::AskUserForSettings(
int max_pages, gfx::NativeView view, int max_pages, bool has_selection,
bool has_selection, const PrintSettingsCallback& callback) {
PrintSettingsCallback* callback) {
#if !defined(USE_AURA) #if !defined(USE_AURA)
DCHECK(!in_print_job_); DCHECK(!in_print_job_);
dialog_box_dismissed_ = false; dialog_box_dismissed_ = false;
...@@ -267,12 +266,11 @@ void PrintingContextWin::AskUserForSettings(gfx::NativeView view, ...@@ -267,12 +266,11 @@ void PrintingContextWin::AskUserForSettings(gfx::NativeView view,
if ((*print_dialog_func_)(&dialog_options) != S_OK) { if ((*print_dialog_func_)(&dialog_options) != S_OK) {
ResetSettings(); ResetSettings();
callback->Run(FAILED); callback.Run(FAILED);
} }
// TODO(maruel): Support PD_PRINTTOFILE. // TODO(maruel): Support PD_PRINTTOFILE.
callback->Run(ParseDialogResultEx(dialog_options)); callback.Run(ParseDialogResultEx(dialog_options));
delete callback;
#endif #endif
} }
......
...@@ -23,22 +23,23 @@ class PRINTING_EXPORT PrintingContextWin : public PrintingContext { ...@@ -23,22 +23,23 @@ class PRINTING_EXPORT PrintingContextWin : public PrintingContext {
~PrintingContextWin(); ~PrintingContextWin();
// PrintingContext implementation. // PrintingContext implementation.
virtual void AskUserForSettings(gfx::NativeView parent_view, virtual void AskUserForSettings(
int max_pages, gfx::NativeView parent_view,
bool has_selection, int max_pages,
PrintSettingsCallback* callback); bool has_selection,
virtual Result UseDefaultSettings(); const PrintSettingsCallback& callback) OVERRIDE;
virtual Result UseDefaultSettings() OVERRIDE;
virtual Result UpdatePrinterSettings( virtual Result UpdatePrinterSettings(
const base::DictionaryValue& job_settings, const base::DictionaryValue& job_settings,
const PageRanges& ranges); const PageRanges& ranges) OVERRIDE;
virtual Result InitWithSettings(const PrintSettings& settings); virtual Result InitWithSettings(const PrintSettings& settings) OVERRIDE;
virtual Result NewDocument(const string16& document_name); virtual Result NewDocument(const string16& document_name) OVERRIDE;
virtual Result NewPage(); virtual Result NewPage() OVERRIDE;
virtual Result PageDone(); virtual Result PageDone() OVERRIDE;
virtual Result DocumentDone(); virtual Result DocumentDone() OVERRIDE;
virtual void Cancel(); virtual void Cancel() OVERRIDE;
virtual void ReleaseContext(); virtual void ReleaseContext() OVERRIDE;
virtual gfx::NativeDrawingContext context() const; virtual gfx::NativeDrawingContext context() const OVERRIDE;
#if defined(UNIT_TEST) || defined(PRINTING_IMPLEMENTATION) #if defined(UNIT_TEST) || defined(PRINTING_IMPLEMENTATION)
// Sets a fake PrintDlgEx function pointer in tests. // Sets a fake PrintDlgEx function pointer in tests.
......
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
#include <string> #include <string>
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/memory/scoped_ptr.h" #include "base/memory/scoped_ptr.h"
#include "printing/printing_test.h" #include "printing/printing_test.h"
#include "printing/printing_context.h" #include "printing/printing_context.h"
...@@ -165,12 +167,9 @@ TEST_F(PrintingContextTest, PrintAll) { ...@@ -165,12 +167,9 @@ TEST_F(PrintingContextTest, PrintAll) {
printing::PrintingContextWin context(dummy_locale); printing::PrintingContextWin context(dummy_locale);
context.SetPrintDialog(&PrintDlgExMock); context.SetPrintDialog(&PrintDlgExMock);
context.AskUserForSettings( context.AskUserForSettings(
NULL, NULL, 123, false, base::Bind(&PrintingContextTest::PrintSettingsCallback,
123, base::Unretained(this)));
false, EXPECT_EQ(printing::PrintingContext::OK, result());
NewCallback(static_cast<PrintingContextTest*>(this),
&PrintingContextTest::PrintSettingsCallback));
ASSERT_EQ(printing::PrintingContext::OK, result());
printing::PrintSettings settings = context.settings(); printing::PrintSettings settings = context.settings();
EXPECT_EQ(settings.ranges.size(), 0); EXPECT_EQ(settings.ranges.size(), 0);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment