summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/webui/print_preview_handler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/webui/print_preview_handler.cc')
-rw-r--r--chrome/browser/ui/webui/print_preview_handler.cc138
1 files changed, 54 insertions, 84 deletions
diff --git a/chrome/browser/ui/webui/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview_handler.cc
index ba09a0b..66e4aa3 100644
--- a/chrome/browser/ui/webui/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview_handler.cc
@@ -50,7 +50,6 @@
#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"
@@ -97,17 +96,6 @@ void ReportPrintSettingHistogram(enum PrintSettingsBuckets setting) {
PRINT_SETTINGS_BUCKET_BOUNDARY);
}
-// Name of a dictionary fielad holdong cloud print related data;
-const char kCloudPrintData[] = "cloudPrintData";
-// Name of a dictionary field holding the initiator tab title.
-const char kInitiatorTabTitle[] = "initiatorTabTitle";
-// Name of a dictionary field holding the measurement system according to the
-// locale.
-const char kMeasurementSystem[] = "measurementSystem";
-// Name of a dictionary field holding the number format according to the locale.
-const char kNumberFormat[] = "numberFormat";
-
-
// Get the print job settings dictionary from |args|. The caller takes
// ownership of the returned DictionaryValue. Returns NULL on failure.
DictionaryValue* GetSettingsDictionary(const ListValue* args) {
@@ -218,8 +206,6 @@ 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)),
@@ -236,6 +222,9 @@ PrintPreviewHandler::~PrintPreviewHandler() {
}
void PrintPreviewHandler::RegisterMessages() {
+ web_ui_->RegisterMessageCallback("getDefaultPrinter",
+ base::Bind(&PrintPreviewHandler::HandleGetDefaultPrinter,
+ base::Unretained(this)));
web_ui_->RegisterMessageCallback("getPrinters",
base::Bind(&PrintPreviewHandler::HandleGetPrinters,
base::Unretained(this)));
@@ -275,9 +264,13 @@ void PrintPreviewHandler::RegisterMessages() {
web_ui_->RegisterMessageCallback("saveLastPrinter",
base::Bind(&PrintPreviewHandler::HandleSaveLastPrinter,
base::Unretained(this)));
- web_ui_->RegisterMessageCallback("getInitialSettings",
- base::Bind(&PrintPreviewHandler::HandleGetInitialSettings,
+ web_ui_->RegisterMessageCallback("getInitiatorTabTitle",
+ base::Bind(&PrintPreviewHandler::HandleGetInitiatorTabTitle,
base::Unretained(this)));
+ web_ui_->RegisterMessageCallback("getNumberFormatAndMeasurementSystem",
+ base::Bind(
+ &PrintPreviewHandler::HandleGetNumberFormatAndMeasurementSystem,
+ base::Unretained(this)));
}
TabContentsWrapper* PrintPreviewHandler::preview_tab_wrapper() const {
@@ -287,6 +280,16 @@ TabContents* PrintPreviewHandler::preview_tab() const {
return web_ui_->tab_contents();
}
+void PrintPreviewHandler::HandleGetDefaultPrinter(const ListValue* /*args*/) {
+ scoped_refptr<PrintSystemTaskProxy> task =
+ new PrintSystemTaskProxy(AsWeakPtr(),
+ print_backend_.get(),
+ has_logged_printers_count_);
+ BrowserThread::PostTask(
+ BrowserThread::FILE, FROM_HERE,
+ base::Bind(&PrintSystemTaskProxy::GetDefaultPrinter, task.get()));
+}
+
void PrintPreviewHandler::HandleGetPrinters(const ListValue* /*args*/) {
scoped_refptr<PrintSystemTaskProxy> task =
new PrintSystemTaskProxy(AsWeakPtr(),
@@ -394,19 +397,10 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) {
last_used_color_model_ = static_cast<printing::ColorModels>(color_model);
// Storing last used margin settings.
- bool is_modifiable;
- settings->GetBoolean(printing::kSettingPreviewModifiable, &is_modifiable);
- if (is_modifiable) {
- int margin_type;
- 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) {
- if (!last_used_page_size_margins_)
- last_used_page_size_margins_ = new printing::PageSizeMargins();
- getCustomMarginsFromJobSettings(*settings, last_used_page_size_margins_);
- }
- }
+ int margin_type;
+ if (!settings->GetInteger(printing::kSettingMarginsType, &margin_type))
+ margin_type = printing::DEFAULT_MARGINS;
+ last_used_margins_type_ = static_cast<printing::MarginType>(margin_type);
bool print_to_pdf = false;
settings->GetBoolean(printing::kSettingPrintToPDF, &print_to_pdf);
@@ -619,67 +613,32 @@ void PrintPreviewHandler::ReportStats() {
manage_printers_dialog_request_count_);
}
-void PrintPreviewHandler::GetNumberFormatAndMeasurementSystem(
- base::DictionaryValue* settings) {
+void PrintPreviewHandler::HandleGetInitiatorTabTitle(
+ const ListValue* /*args*/) {
+ PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(web_ui_);
+ base::StringValue tab_title(print_preview_ui->initiator_tab_title());
+ web_ui_->CallJavascriptFunction("setInitiatorTabTitle", tab_title);
+}
+
+void PrintPreviewHandler::HandleGetNumberFormatAndMeasurementSystem(
+ const ListValue* /*args*/) {
// Getting the measurement system based on the locale.
UErrorCode errorCode = U_ZERO_ERROR;
const char* locale = g_browser_process->GetApplicationLocale().c_str();
- UMeasurementSystem system = ulocdata_getMeasurementSystem(locale, &errorCode);
- if (errorCode > U_ZERO_ERROR || system == UMS_LIMIT)
- system = UMS_SI;
-
- // Getting the number formatting based on the locale and writing to
- // dictionary.
- settings->SetString(kNumberFormat, base::FormatDouble(123456.78, 2));
- settings->SetInteger(kMeasurementSystem, system);
-}
-
-void PrintPreviewHandler::GetLastUsedMarginSettings(
- base::DictionaryValue* custom_margins) {
- custom_margins->SetInteger(printing::kSettingMarginsType,
- PrintPreviewHandler::last_used_margins_type_);
- if (last_used_page_size_margins_) {
- custom_margins->SetDouble(printing::kSettingMarginTop,
- last_used_page_size_margins_->margin_top);
- custom_margins->SetDouble(printing::kSettingMarginBottom,
- last_used_page_size_margins_->margin_bottom);
- custom_margins->SetDouble(printing::kSettingMarginLeft,
- last_used_page_size_margins_->margin_left);
- custom_margins->SetDouble(printing::kSettingMarginRight,
- last_used_page_size_margins_->margin_right);
- }
-}
+ UMeasurementSystem measurement_system =
+ ulocdata_getMeasurementSystem(locale, &errorCode);
+ if (errorCode > U_ZERO_ERROR || measurement_system == UMS_LIMIT)
+ measurement_system = UMS_SI;
-void PrintPreviewHandler::HandleGetInitialSettings(const ListValue* /*args*/) {
- scoped_refptr<PrintSystemTaskProxy> task =
- new PrintSystemTaskProxy(AsWeakPtr(),
- print_backend_.get(),
- has_logged_printers_count_);
- BrowserThread::PostTask(
- BrowserThread::FILE, FROM_HERE,
- base::Bind(&PrintSystemTaskProxy::GetDefaultPrinter, task.get()));
-}
-
-void PrintPreviewHandler::SendInitialSettings(
- const std::string& default_printer,
- const std::string& cloud_print_data) {
- PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(web_ui_);
+ // Getting the number formatting based on the locale.
+ StringValue number_format(base::FormatDouble(123456.78, 2));
+ base::FundamentalValue system(measurement_system);
- base::DictionaryValue initial_settings;
- initial_settings.SetString(kInitiatorTabTitle,
- print_preview_ui->initiator_tab_title());
- initial_settings.SetBoolean(printing::kSettingPreviewModifiable,
- print_preview_ui->source_is_modifiable());
- initial_settings.SetString(printing::kSettingPrinterName,
- default_printer);
- initial_settings.SetString(kCloudPrintData, cloud_print_data);
-
- if (print_preview_ui->source_is_modifiable()) {
- GetLastUsedMarginSettings(&initial_settings);
- GetNumberFormatAndMeasurementSystem(&initial_settings);
- }
- web_ui_->CallJavascriptFunction("setInitialSettings", initial_settings);
+ web_ui_->CallJavascriptFunction(
+ "print_preview.setNumberFormatAndMeasurementSystem",
+ number_format,
+ system);
}
void PrintPreviewHandler::ActivateInitiatorTabAndClosePreviewTab() {
@@ -698,6 +657,17 @@ void PrintPreviewHandler::SendPrinterCapabilities(
settings_info);
}
+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);
+}
+
void PrintPreviewHandler::SetupPrinterList(const ListValue& printers) {
SendCloudPrintEnabled();
web_ui_->CallJavascriptFunction("setPrinters", printers);