Skip to content

Commit

Permalink
Move margin processing code to the browser process.
Browse files Browse the repository at this point in the history
It seems that this is where it is supposed to live and it was erroneously added to PrintWebViewHelper.

BUG=67091, 92045, 91880, 92000, 92218, 95905
TEST=NONE


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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105688 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
vandebo@chromium.org committed Oct 15, 2011
1 parent 0374b16 commit 1c23b4e
Show file tree
Hide file tree
Showing 19 changed files with 262 additions and 206 deletions.
33 changes: 18 additions & 15 deletions chrome/browser/printing/print_dialog_gtk.cc
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include "chrome/browser/ui/browser_window.h"
#include "printing/metafile.h"
#include "printing/print_job_constants.h"
#include "printing/print_settings.h"
#include "printing/print_settings_initializer_gtk.h"

using printing::PageRanges;
Expand Down Expand Up @@ -146,11 +147,13 @@ void PrintDialogGtk::UseDefaultSettings() {

// No page range to initialize for default settings.
PageRanges ranges_vector;
InitPrintSettings(ranges_vector);
PrintSettings settings;
InitPrintSettings(ranges_vector, &settings);
}

bool PrintDialogGtk::UpdateSettings(const DictionaryValue& settings,
const printing::PageRanges& ranges) {
bool PrintDialogGtk::UpdateSettings(const DictionaryValue& job_settings,
const printing::PageRanges& ranges,
printing::PrintSettings* settings) {
bool collate;
int color;
bool landscape;
Expand All @@ -159,13 +162,13 @@ bool PrintDialogGtk::UpdateSettings(const DictionaryValue& settings,
int duplex_mode;
std::string device_name;

if (!settings.GetBoolean(printing::kSettingLandscape, &landscape) ||
!settings.GetBoolean(printing::kSettingCollate, &collate) ||
!settings.GetInteger(printing::kSettingColor, &color) ||
!settings.GetBoolean(printing::kSettingPrintToPDF, &print_to_pdf) ||
!settings.GetInteger(printing::kSettingDuplexMode, &duplex_mode) ||
!settings.GetInteger(printing::kSettingCopies, &copies) ||
!settings.GetString(printing::kSettingDeviceName, &device_name)) {
if (!job_settings.GetBoolean(printing::kSettingLandscape, &landscape) ||
!job_settings.GetBoolean(printing::kSettingCollate, &collate) ||
!job_settings.GetInteger(printing::kSettingColor, &color) ||
!job_settings.GetBoolean(printing::kSettingPrintToPDF, &print_to_pdf) ||
!job_settings.GetInteger(printing::kSettingDuplexMode, &duplex_mode) ||
!job_settings.GetInteger(printing::kSettingCopies, &copies) ||
!job_settings.GetString(printing::kSettingDeviceName, &device_name)) {
return false;
}

Expand Down Expand Up @@ -220,7 +223,7 @@ bool PrintDialogGtk::UpdateSettings(const DictionaryValue& settings,
landscape ? GTK_PAGE_ORIENTATION_LANDSCAPE :
GTK_PAGE_ORIENTATION_PORTRAIT);

InitPrintSettings(ranges);
InitPrintSettings(ranges, settings);
return true;
}

Expand Down Expand Up @@ -395,9 +398,9 @@ void PrintDialogGtk::OnJobCompleted(GtkPrintJob* print_job, GError* error) {
Release();
}

void PrintDialogGtk::InitPrintSettings(const PageRanges& page_ranges) {
PrintSettings settings;
void PrintDialogGtk::InitPrintSettings(const PageRanges& page_ranges,
PrintSettings* settings) {
printing::PrintSettingsInitializerGtk::InitPrintSettings(
gtk_settings_, page_setup_, page_ranges, false, &settings);
context_->InitWithSettings(settings);
gtk_settings_, page_setup_, page_ranges, false, settings);
context_->InitWithSettings(*settings);
}
22 changes: 13 additions & 9 deletions chrome/browser/printing/print_dialog_gtk.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include <gtk/gtk.h>
#include <gtk/gtkprintunixdialog.h>

#include "base/compiler_specific.h"
#include "base/file_path.h"
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
Expand All @@ -19,6 +20,7 @@

namespace printing {
class Metafile;
class PrintSettings;
}

using printing::PrintingContextCairo;
Expand All @@ -34,15 +36,16 @@ class PrintDialogGtk
PrintingContextCairo* context);

// printing::PrintDialogGtkInterface implementation.
virtual void UseDefaultSettings();
virtual bool UpdateSettings(const base::DictionaryValue& settings,
const printing::PageRanges& ranges);
virtual void UseDefaultSettings() OVERRIDE;
virtual bool UpdateSettings(const base::DictionaryValue& job_settings,
const printing::PageRanges& ranges,
printing::PrintSettings* settings) OVERRIDE;
virtual void ShowDialog(
PrintingContextCairo::PrintSettingsCallback* callback);
PrintingContextCairo::PrintSettingsCallback* callback) OVERRIDE;
virtual void PrintDocument(const printing::Metafile* metafile,
const string16& document_name);
virtual void AddRefToDialog();
virtual void ReleaseDialog();
const string16& document_name) OVERRIDE;
virtual void AddRefToDialog() OVERRIDE;
virtual void ReleaseDialog() OVERRIDE;

private:
friend struct BrowserThread::DeleteOnThread<BrowserThread::UI>;
Expand All @@ -64,8 +67,9 @@ class PrintDialogGtk
void OnJobCompleted(GtkPrintJob* print_job, GError* error);

// Helper function for initializing |context_|'s PrintSettings with a given
// set of |page_ranges|.
void InitPrintSettings(const printing::PageRanges& page_ranges);
// set of |page_ranges| and |settings|.
void InitPrintSettings(const printing::PageRanges& page_ranges,
printing::PrintSettings* settings);

// Printing dialog callback.
PrintingContextCairo::PrintSettingsCallback* callback_;
Expand Down
4 changes: 2 additions & 2 deletions chrome/browser/printing/print_job_worker.cc
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ void PrintJobWorker::GetSettings(bool ask_user_for_settings,
gfx::NativeView parent_view,
int document_page_count,
bool has_selection,
bool use_overlays) {
MarginType margin_type) {
DCHECK_EQ(message_loop(), MessageLoop::current());
DCHECK_EQ(page_number_, PageNumber::npos());

Expand All @@ -87,7 +87,7 @@ void PrintJobWorker::GetSettings(bool ask_user_for_settings,
// on the thread where the PrintDlgEx is called, and definitely both calls
// should happen on the same thread. See http://crbug.com/73466
// MessageLoop::current()->SetNestableTasksAllowed(true);
printing_context_->set_use_overlays(use_overlays);
printing_context_->set_margin_type(margin_type);

if (ask_user_for_settings) {
BrowserThread::PostTask(
Expand Down
3 changes: 2 additions & 1 deletion chrome/browser/printing/print_job_worker.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include "base/threading/thread.h"
#include "printing/page_number.h"
#include "printing/printing_context.h"
#include "printing/print_job_constants.h"
#include "ui/gfx/native_widget_types.h"

namespace base {
Expand Down Expand Up @@ -44,7 +45,7 @@ class PrintJobWorker : public base::Thread {
gfx::NativeView parent_view,
int document_page_count,
bool has_selection,
bool use_overlays);
MarginType margin_type);

// Set the new print settings. This function takes ownership of
// |new_settings|.
Expand Down
4 changes: 2 additions & 2 deletions chrome/browser/printing/printer_query.cc
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ void PrinterQuery::GetSettings(GetSettingsAskParam ask_user_for_settings,
gfx::NativeView parent_view,
int expected_page_count,
bool has_selection,
bool use_overlays,
MarginType margin_type,
CancelableTask* callback) {
DCHECK_EQ(io_message_loop_, MessageLoop::current());
DCHECK(!is_print_dialog_box_shown_);
Expand All @@ -91,7 +91,7 @@ void PrinterQuery::GetSettings(GetSettingsAskParam ask_user_for_settings,
parent_view,
expected_page_count,
has_selection,
use_overlays));
margin_type));
}

void PrinterQuery::SetSettings(const DictionaryValue& new_settings,
Expand Down
3 changes: 2 additions & 1 deletion chrome/browser/printing/printer_query.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#include "base/memory/scoped_ptr.h"
#include "chrome/browser/printing/print_job_worker_owner.h"
#include "printing/print_job_constants.h"
#include "ui/gfx/native_widget_types.h"

class CancelableTask;
Expand Down Expand Up @@ -49,7 +50,7 @@ class PrinterQuery : public PrintJobWorkerOwner {
gfx::NativeView parent_view,
int expected_page_count,
bool has_selection,
bool use_overlays,
MarginType margin_type,
CancelableTask* callback);

// Updates the current settings with |new_settings| dictionary values.
Expand Down
8 changes: 4 additions & 4 deletions chrome/browser/printing/printing_message_filter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ void RenderParamsFromPrintSettings(const printing::PrintSettings& settings,
params->printable_size.SetSize(
settings.page_setup_device_units().content_area().width(),
settings.page_setup_device_units().content_area().height());
params->margin_top = settings.page_setup_device_units().content_area().x();
params->margin_left = settings.page_setup_device_units().content_area().y();
params->margin_top = settings.page_setup_device_units().content_area().y();
params->margin_left = settings.page_setup_device_units().content_area().x();
params->dpi = settings.dpi();
// Currently hardcoded at 1.25. See PrintSettings' constructor.
params->min_shrink = settings.min_shrink;
Expand Down Expand Up @@ -197,7 +197,7 @@ void PrintingMessageFilter::OnGetDefaultPrintSettings(IPC::Message* reply_msg) {
NULL,
0,
false,
true,
printing::DEFAULT_MARGINS,
task);
}

Expand Down Expand Up @@ -248,7 +248,7 @@ void PrintingMessageFilter::OnScriptedPrint(
host_view,
params.expected_pages_count,
params.has_selection,
params.use_overlays,
params.margin_type,
task);
}

Expand Down
5 changes: 4 additions & 1 deletion chrome/common/print_messages.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include "base/shared_memory.h"
#include "ipc/ipc_message_macros.h"
#include "printing/page_size_margins.h"
#include "printing/print_job_constants.h"
#include "ui/gfx/native_widget_types.h"
#include "ui/gfx/rect.h"

Expand Down Expand Up @@ -60,6 +61,8 @@ struct PrintMsg_PrintPages_Params {

#define IPC_MESSAGE_START PrintMsgStart

IPC_ENUM_TRAITS(printing::MarginType)

// Parameters for a render request.
IPC_STRUCT_TRAITS_BEGIN(PrintMsg_Print_Params)
// Physical size of the page, including non-printable margins,
Expand Down Expand Up @@ -239,7 +242,7 @@ IPC_STRUCT_BEGIN(PrintHostMsg_ScriptedPrint_Params)
IPC_STRUCT_MEMBER(int, cookie)
IPC_STRUCT_MEMBER(int, expected_pages_count)
IPC_STRUCT_MEMBER(bool, has_selection)
IPC_STRUCT_MEMBER(bool, use_overlays)
IPC_STRUCT_MEMBER(printing::MarginType, margin_type)
IPC_STRUCT_END()


Expand Down
Loading

0 comments on commit 1c23b4e

Please sign in to comment.