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(
}
PrintDialogGtk::PrintDialogGtk(PrintingContextGtk* context)
: callback_(NULL),
context_(context),
: context_(context),
dialog_(NULL),
gtk_settings_(NULL),
page_setup_(NULL),
......@@ -232,7 +231,7 @@ bool PrintDialogGtk::UpdateSettings(const DictionaryValue& job_settings,
}
void PrintDialogGtk::ShowDialog(
PrintingContextGtk::PrintSettingsCallback* callback) {
const PrintingContextGtk::PrintSettingsCallback& callback) {
callback_ = callback;
GtkWindow* parent = BrowserList::GetLastActive()->window()->GetNativeHandle();
......@@ -343,14 +342,14 @@ void PrintDialogGtk::OnResponse(GtkWidget* dialog, int response_id) {
printing::PrintSettingsInitializerGtk::InitPrintSettings(
gtk_settings_, page_setup_, ranges_vector, false, &settings);
context_->InitWithSettings(settings);
callback_->Run(PrintingContextGtk::OK);
callback_ = NULL;
callback_.Run(PrintingContextGtk::OK);
callback_.Reset();
return;
}
case GTK_RESPONSE_DELETE_EVENT: // Fall through.
case GTK_RESPONSE_CANCEL: {
callback_->Run(PrintingContextGtk::CANCEL);
callback_ = NULL;
callback_.Run(PrintingContextGtk::CANCEL);
callback_.Reset();
return;
}
case GTK_RESPONSE_APPLY:
......
......@@ -41,7 +41,7 @@ class PrintDialogGtk
const printing::PageRanges& ranges,
printing::PrintSettings* settings) OVERRIDE;
virtual void ShowDialog(
PrintingContextGtk::PrintSettingsCallback* callback) OVERRIDE;
const PrintingContextGtk::PrintSettingsCallback& callback) OVERRIDE;
virtual void PrintDocument(const printing::Metafile* metafile,
const string16& document_name) OVERRIDE;
virtual void AddRefToDialog() OVERRIDE;
......@@ -73,7 +73,7 @@ class PrintDialogGtk
printing::PrintSettings* settings);
// Printing dialog callback.
PrintingContextGtk::PrintSettingsCallback* callback_;
PrintingContextGtk::PrintSettingsCallback callback_;
PrintingContextGtk* context_;
// Print dialog settings. PrintDialogGtk owns |dialog_| and holds references
......
......@@ -185,7 +185,8 @@ void PrintJobWorker::GetSettingsWithUI(gfx::NativeView parent_view,
printing_context_->AskUserForSettings(
parent_view, document_page_count, has_selection,
NewCallback(this, &PrintJobWorker::GetSettingsWithUIDone));
base::Bind(&PrintJobWorker::GetSettingsWithUIDone,
base::Unretained(this)));
}
void PrintJobWorker::GetSettingsWithUIDone(PrintingContext::Result result) {
......
......@@ -32,7 +32,7 @@ class PrintDialogGtkInterface {
// Shows the dialog and handles the response with |callback|. Only used when
// printing with the native print dialog.
virtual void ShowDialog(
PrintingContextGtk::PrintSettingsCallback* callback) = 0;
const PrintingContextGtk::PrintSettingsCallback& callback) = 0;
// Prints the document named |document_name| contained in |metafile|.
// Called from the print worker thread. Once called, the
......
......@@ -8,7 +8,7 @@
#include <string>
#include "base/basictypes.h"
#include "base/callback_old.h"
#include "base/callback.h"
#include "base/string16.h"
#include "printing/print_settings.h"
#include "ui/gfx/native_widget_types.h"
......@@ -36,7 +36,7 @@ class PRINTING_EXPORT PrintingContext {
// Callback of AskUserForSettings, used to notify the PrintJobWorker when
// 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
// context with the select device settings. The result of the call is returned
......@@ -45,7 +45,7 @@ class PRINTING_EXPORT PrintingContext {
virtual void AskUserForSettings(gfx::NativeView parent_view,
int max_pages,
bool has_selection,
PrintSettingsCallback* callback) = 0;
const PrintSettingsCallback& callback) = 0;
// Selects the user's default printer and format. Updates the context with the
// default device settings.
......
......@@ -59,7 +59,7 @@ void PrintingContextGtk::AskUserForSettings(
gfx::NativeView parent_view,
int max_pages,
bool has_selection,
PrintSettingsCallback* callback) {
const PrintSettingsCallback& callback) {
print_dialog_->ShowDialog(callback);
}
......
......@@ -32,10 +32,11 @@ class PRINTING_EXPORT PrintingContextGtk : public PrintingContext {
void PrintDocument(const Metafile* metafile);
// PrintingContext implementation.
virtual void AskUserForSettings(gfx::NativeView parent_view,
int max_pages,
bool has_selection,
PrintSettingsCallback* callback) OVERRIDE;
virtual void AskUserForSettings(
gfx::NativeView parent_view,
int max_pages,
bool has_selection,
const PrintSettingsCallback& callback) OVERRIDE;
virtual Result UseDefaultSettings() OVERRIDE;
virtual Result UpdatePrinterSettings(
const base::DictionaryValue& job_settings,
......
......@@ -25,10 +25,11 @@ class PRINTING_EXPORT PrintingContextMac : public PrintingContext {
virtual ~PrintingContextMac();
// PrintingContext implementation.
virtual void AskUserForSettings(gfx::NativeView parent_view,
int max_pages,
bool has_selection,
PrintSettingsCallback* callback) OVERRIDE;
virtual void AskUserForSettings(
gfx::NativeView parent_view,
int max_pages,
bool has_selection,
const PrintSettingsCallback& callback) OVERRIDE;
virtual Result UseDefaultSettings() OVERRIDE;
virtual Result UpdatePrinterSettings(
const base::DictionaryValue& job_settings,
......
......@@ -32,10 +32,11 @@ PrintingContextMac::~PrintingContextMac() {
ReleaseContext();
}
void PrintingContextMac::AskUserForSettings(gfx::NativeView parent_view,
int max_pages,
bool has_selection,
PrintSettingsCallback* callback) {
void PrintingContextMac::AskUserForSettings(
gfx::NativeView parent_view,
int max_pages,
bool has_selection,
const PrintSettingsCallback& callback) {
// 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
// NSPrintPanel appears to have appropriate NSException handlers.
......@@ -80,9 +81,9 @@ void PrintingContextMac::AskUserForSettings(gfx::NativeView parent_view,
if (selection == NSOKButton) {
print_info_.reset([[panel printInfo] retain]);
InitPrintSettingsFromPrintInfo(GetPageRangesFromPrintInfo());
callback->Run(OK);
callback.Run(OK);
} else {
callback->Run(CANCEL);
callback.Run(CANCEL);
}
}
......
......@@ -32,9 +32,9 @@ void PrintingContextNoSystemDialog::AskUserForSettings(
gfx::NativeView parent_view,
int max_pages,
bool has_selection,
PrintSettingsCallback* callback) {
const PrintSettingsCallback& 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() {
......
......@@ -21,22 +21,23 @@ class PRINTING_EXPORT PrintingContextNoSystemDialog : public PrintingContext {
virtual ~PrintingContextNoSystemDialog();
// PrintingContext implementation.
virtual void AskUserForSettings(gfx::NativeView parent_view,
int max_pages,
bool has_selection,
PrintSettingsCallback* callback);
virtual Result UseDefaultSettings();
virtual void AskUserForSettings(
gfx::NativeView parent_view,
int max_pages,
bool has_selection,
const PrintSettingsCallback& callback) OVERRIDE;
virtual Result UseDefaultSettings() OVERRIDE;
virtual Result UpdatePrinterSettings(
const base::DictionaryValue& job_settings,
const PageRanges& ranges);
virtual Result InitWithSettings(const PrintSettings& settings);
virtual Result NewDocument(const string16& document_name);
virtual Result NewPage();
virtual Result PageDone();
virtual Result DocumentDone();
virtual void Cancel();
virtual void ReleaseContext();
virtual gfx::NativeDrawingContext context() const;
const PageRanges& ranges) OVERRIDE;
virtual Result InitWithSettings(const PrintSettings& settings) OVERRIDE;
virtual Result NewDocument(const string16& document_name) OVERRIDE;
virtual Result NewPage() OVERRIDE;
virtual Result PageDone() OVERRIDE;
virtual Result DocumentDone() OVERRIDE;
virtual void Cancel() OVERRIDE;
virtual void ReleaseContext() OVERRIDE;
virtual gfx::NativeDrawingContext context() const OVERRIDE;
private:
DISALLOW_COPY_AND_ASSIGN(PrintingContextNoSystemDialog);
......
......@@ -213,10 +213,9 @@ PrintingContextWin::~PrintingContextWin() {
ReleaseContext();
}
void PrintingContextWin::AskUserForSettings(gfx::NativeView view,
int max_pages,
bool has_selection,
PrintSettingsCallback* callback) {
void PrintingContextWin::AskUserForSettings(
gfx::NativeView view, int max_pages, bool has_selection,
const PrintSettingsCallback& callback) {
#if !defined(USE_AURA)
DCHECK(!in_print_job_);
dialog_box_dismissed_ = false;
......@@ -267,12 +266,11 @@ void PrintingContextWin::AskUserForSettings(gfx::NativeView view,
if ((*print_dialog_func_)(&dialog_options) != S_OK) {
ResetSettings();
callback->Run(FAILED);
callback.Run(FAILED);
}
// TODO(maruel): Support PD_PRINTTOFILE.
callback->Run(ParseDialogResultEx(dialog_options));
delete callback;
callback.Run(ParseDialogResultEx(dialog_options));
#endif
}
......
......@@ -23,22 +23,23 @@ class PRINTING_EXPORT PrintingContextWin : public PrintingContext {
~PrintingContextWin();
// PrintingContext implementation.
virtual void AskUserForSettings(gfx::NativeView parent_view,
int max_pages,
bool has_selection,
PrintSettingsCallback* callback);
virtual Result UseDefaultSettings();
virtual void AskUserForSettings(
gfx::NativeView parent_view,
int max_pages,
bool has_selection,
const PrintSettingsCallback& callback) OVERRIDE;
virtual Result UseDefaultSettings() OVERRIDE;
virtual Result UpdatePrinterSettings(
const base::DictionaryValue& job_settings,
const PageRanges& ranges);
virtual Result InitWithSettings(const PrintSettings& settings);
virtual Result NewDocument(const string16& document_name);
virtual Result NewPage();
virtual Result PageDone();
virtual Result DocumentDone();
virtual void Cancel();
virtual void ReleaseContext();
virtual gfx::NativeDrawingContext context() const;
const PageRanges& ranges) OVERRIDE;
virtual Result InitWithSettings(const PrintSettings& settings) OVERRIDE;
virtual Result NewDocument(const string16& document_name) OVERRIDE;
virtual Result NewPage() OVERRIDE;
virtual Result PageDone() OVERRIDE;
virtual Result DocumentDone() OVERRIDE;
virtual void Cancel() OVERRIDE;
virtual void ReleaseContext() OVERRIDE;
virtual gfx::NativeDrawingContext context() const OVERRIDE;
#if defined(UNIT_TEST) || defined(PRINTING_IMPLEMENTATION)
// Sets a fake PrintDlgEx function pointer in tests.
......
......@@ -7,6 +7,8 @@
#include <string>
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/memory/scoped_ptr.h"
#include "printing/printing_test.h"
#include "printing/printing_context.h"
......@@ -165,12 +167,9 @@ TEST_F(PrintingContextTest, PrintAll) {
printing::PrintingContextWin context(dummy_locale);
context.SetPrintDialog(&PrintDlgExMock);
context.AskUserForSettings(
NULL,
123,
false,
NewCallback(static_cast<PrintingContextTest*>(this),
&PrintingContextTest::PrintSettingsCallback));
ASSERT_EQ(printing::PrintingContext::OK, result());
NULL, 123, false, base::Bind(&PrintingContextTest::PrintSettingsCallback,
base::Unretained(this)));
EXPECT_EQ(printing::PrintingContext::OK, result());
printing::PrintSettings settings = context.settings();
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