Chromium Code Reviews| Index: chrome/browser/ui/webui/print_preview_handler.cc |
| diff --git a/chrome/browser/ui/webui/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview_handler.cc |
| index 66e4aa3f243d49b59090e79b268394955acda618..b5856cb83f1ee0cc585010dfb08bf319a02755a1 100644 |
| --- a/chrome/browser/ui/webui/print_preview_handler.cc |
| +++ b/chrome/browser/ui/webui/print_preview_handler.cc |
| @@ -50,6 +50,7 @@ |
| #include "printing/metafile.h" |
| #include "printing/metafile_impl.h" |
| #include "printing/page_range.h" |
| +#include "printing/page_size_margins.h" |
| #include "printing/print_settings.h" |
| #include "unicode/ulocdata.h" |
| @@ -206,6 +207,8 @@ printing::ColorModels PrintPreviewHandler::last_used_color_model_ = |
| printing::UNKNOWN_COLOR_MODEL; |
| printing::MarginType PrintPreviewHandler::last_used_margins_type_ = |
| printing::DEFAULT_MARGINS; |
| +printing::PageSizeMargins* |
| + PrintPreviewHandler::last_used_page_size_margins_ = NULL; |
| PrintPreviewHandler::PrintPreviewHandler() |
| : print_backend_(printing::PrintBackend::CreateInstance(NULL)), |
| @@ -271,6 +274,9 @@ void PrintPreviewHandler::RegisterMessages() { |
| base::Bind( |
| &PrintPreviewHandler::HandleGetNumberFormatAndMeasurementSystem, |
| base::Unretained(this))); |
| + web_ui_->RegisterMessageCallback("getLastUsedMarginSettings", |
| + base::Bind(&PrintPreviewHandler::HandleGetLastUsedMarginSettings, |
| + base::Unretained(this))); |
| } |
| TabContentsWrapper* PrintPreviewHandler::preview_tab_wrapper() const { |
| @@ -401,6 +407,10 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) { |
| if (!settings->GetInteger(printing::kSettingMarginsType, &margin_type)) |
| margin_type = printing::DEFAULT_MARGINS; |
| last_used_margins_type_ = static_cast<printing::MarginType>(margin_type); |
| + if (last_used_margins_type_ == printing::CUSTOM_MARGINS) { |
| + last_used_page_size_margins_ = new printing::PageSizeMargins(); |
|
kmadhusu
2011/11/02 20:40:05
where do you release this object?
dpapad
2011/11/02 21:33:57
This object is never realeased (it is an intention
kmadhusu
2011/11/02 23:46:16
(repeating our conversation): Instantiate once and
dpapad
2011/11/03 00:15:27
Done. This was meant to use "new" only once. Good
|
| + extractPageSizeMargins(*settings, last_used_page_size_margins_); |
| + } |
| bool print_to_pdf = false; |
| settings->GetBoolean(printing::kSettingPrintToPDF, &print_to_pdf); |
| @@ -641,6 +651,29 @@ void PrintPreviewHandler::HandleGetNumberFormatAndMeasurementSystem( |
| system); |
| } |
| +void PrintPreviewHandler::HandleGetLastUsedMarginSettings( |
| + const ListValue* /*args*/) { |
| + base::FundamentalValue margins_type( |
| + PrintPreviewHandler::last_used_margins_type_); |
| + if (last_used_page_size_margins_ != NULL) { |
|
kmadhusu
2011/11/02 20:40:05
nit: if (last_used_page_size_margins_) {
}
dpapad
2011/11/02 21:33:57
Done.
|
| + base::DictionaryValue page_size_margins; |
| + page_size_margins.SetDouble(printing::kSettingMarginTop, |
| + last_used_page_size_margins_->margin_top); |
| + page_size_margins.SetDouble(printing::kSettingMarginBottom, |
| + last_used_page_size_margins_->margin_bottom); |
| + page_size_margins.SetDouble(printing::kSettingMarginLeft, |
| + last_used_page_size_margins_->margin_left); |
| + page_size_margins.SetDouble(printing::kSettingMarginRight, |
| + last_used_page_size_margins_->margin_right); |
| + web_ui_->CallJavascriptFunction("print_preview.setLastUsedMargins", |
| + margins_type, |
| + page_size_margins); |
| + } else { |
| + web_ui_->CallJavascriptFunction("print_preview.setLastUsedMargins", |
| + margins_type); |
| + } |
| +} |
| + |
| void PrintPreviewHandler::ActivateInitiatorTabAndClosePreviewTab() { |
| TabContentsWrapper* initiator_tab = GetInitiatorTab(); |
| if (initiator_tab) { |
| @@ -660,12 +693,8 @@ void PrintPreviewHandler::SendPrinterCapabilities( |
| void PrintPreviewHandler::SendDefaultPrinter( |
| const StringValue& default_printer, |
| const StringValue& cloud_print_data) { |
| - base::FundamentalValue margins_type( |
| - PrintPreviewHandler::last_used_margins_type_); |
| - web_ui_->CallJavascriptFunction("setDefaultPrinter", |
| - default_printer, |
| - cloud_print_data, |
| - margins_type); |
| + web_ui_->CallJavascriptFunction( |
| + "setDefaultPrinter", default_printer, cloud_print_data); |
| } |
| void PrintPreviewHandler::SetupPrinterList(const ListValue& printers) { |