| 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..76b4b48abf0f1cface6651c5229ec4fb83313121 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();
|
| + 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_) {
|
| + 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) {
|
|
|