Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/webui/print_preview_handler.h" | 5 #include "chrome/browser/ui/webui/print_preview_handler.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/i18n/file_util_icu.h" | 9 #include "base/i18n/file_util_icu.h" |
| 10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 161 PrintSystemTaskProxy(const base::WeakPtr<PrintPreviewHandler>& handler, | 161 PrintSystemTaskProxy(const base::WeakPtr<PrintPreviewHandler>& handler, |
| 162 printing::PrintBackend* print_backend, | 162 printing::PrintBackend* print_backend, |
| 163 bool has_logged_printers_count) | 163 bool has_logged_printers_count) |
| 164 : handler_(handler), | 164 : handler_(handler), |
| 165 print_backend_(print_backend), | 165 print_backend_(print_backend), |
| 166 has_logged_printers_count_(has_logged_printers_count) { | 166 has_logged_printers_count_(has_logged_printers_count) { |
| 167 } | 167 } |
| 168 | 168 |
| 169 void GetDefaultPrinter() { | 169 void GetDefaultPrinter() { |
| 170 VLOG(1) << "Get default printer start"; | 170 VLOG(1) << "Get default printer start"; |
| 171 StringValue* default_printer = | 171 StringValue* default_printer = NULL; |
| 172 new StringValue(print_backend_->GetDefaultPrinterName()); | 172 if (PrintPreviewHandler::last_used_printer_.length() == 0) { |
| 173 VLOG(1) << "Get default printer finished, found: " << default_printer; | 173 default_printer = new StringValue( |
| 174 print_backend_->GetDefaultPrinterName()); | |
| 175 } else { | |
| 176 default_printer = new StringValue( | |
| 177 PrintPreviewHandler::last_used_printer_); | |
| 178 } | |
| 179 std::string default_printer_string; | |
| 180 default_printer->GetAsString(&default_printer_string); | |
| 181 VLOG(1) << "Get default printer finished, found: " | |
| 182 << default_printer_string; | |
|
dpapad
2011/06/07 01:07:45
This is only for debugging purposes.
| |
| 174 | 183 |
| 175 BrowserThread::PostTask( | 184 BrowserThread::PostTask( |
| 176 BrowserThread::UI, FROM_HERE, | 185 BrowserThread::UI, FROM_HERE, |
| 177 NewRunnableMethod(this, | 186 NewRunnableMethod(this, |
| 178 &PrintSystemTaskProxy::SendDefaultPrinter, | 187 &PrintSystemTaskProxy::SendDefaultPrinter, |
| 179 default_printer)); | 188 default_printer)); |
| 180 } | 189 } |
| 181 | 190 |
| 182 void SendDefaultPrinter(StringValue* default_printer) { | 191 void SendDefaultPrinter(StringValue* default_printer) { |
| 183 if (handler_) | 192 if (handler_) |
| 184 handler_->SendDefaultPrinter(*default_printer); | 193 handler_->SendDefaultPrinter(*default_printer); |
| 185 delete default_printer; | 194 delete default_printer; |
| 186 } | 195 } |
| 187 | 196 |
| 188 void EnumeratePrinters() { | 197 void EnumeratePrinters() { |
| 189 VLOG(1) << "Enumerate printers start"; | 198 VLOG(1) << "Enumerate printers start"; |
| 190 ListValue* printers = new ListValue; | 199 ListValue* printers = new ListValue; |
| 191 int default_printer_index = -1; | |
| 192 | 200 |
| 193 printing::PrinterList printer_list; | 201 printing::PrinterList printer_list; |
| 194 print_backend_->EnumeratePrinters(&printer_list); | 202 print_backend_->EnumeratePrinters(&printer_list); |
| 195 | 203 |
| 196 if (!has_logged_printers_count_) { | 204 if (!has_logged_printers_count_) { |
| 197 // Record the total number of printers. | 205 // Record the total number of printers. |
| 198 UMA_HISTOGRAM_COUNTS("PrintPreview.NumberOfPrinters", | 206 UMA_HISTOGRAM_COUNTS("PrintPreview.NumberOfPrinters", |
| 199 printer_list.size()); | 207 printer_list.size()); |
| 200 } | 208 } |
| 201 | 209 |
| 202 int i = 0; | 210 int i = 0; |
| 203 for (printing::PrinterList::iterator iter = printer_list.begin(); | 211 for (printing::PrinterList::iterator iter = printer_list.begin(); |
| 204 iter != printer_list.end(); ++iter, ++i) { | 212 iter != printer_list.end(); ++iter, ++i) { |
| 205 DictionaryValue* printer_info = new DictionaryValue; | 213 DictionaryValue* printer_info = new DictionaryValue; |
| 206 std::string printerName; | 214 std::string printerName; |
| 207 #if defined(OS_MACOSX) | 215 #if defined(OS_MACOSX) |
| 208 // On Mac, |iter->printer_description| specifies the printer name and | 216 // On Mac, |iter->printer_description| specifies the printer name and |
| 209 // |iter->printer_name| specifies the device name / printer queue name. | 217 // |iter->printer_name| specifies the device name / printer queue name. |
| 210 printerName = iter->printer_description; | 218 printerName = iter->printer_description; |
| 211 #else | 219 #else |
| 212 printerName = iter->printer_name; | 220 printerName = iter->printer_name; |
| 213 #endif | 221 #endif |
| 214 printer_info->SetString(printing::kSettingPrinterName, printerName); | 222 printer_info->SetString(printing::kSettingPrinterName, printerName); |
| 215 printer_info->SetString(printing::kSettingDeviceName, iter->printer_name); | 223 printer_info->SetString(printing::kSettingDeviceName, iter->printer_name); |
| 216 printers->Append(printer_info); | 224 printers->Append(printer_info); |
| 217 if (iter->is_default) | |
| 218 default_printer_index = i; | |
| 219 } | 225 } |
| 220 VLOG(1) << "Enumerate printers finished, found " << i << " printers"; | 226 VLOG(1) << "Enumerate printers finished, found " << i << " printers"; |
| 221 | 227 |
| 222 BrowserThread::PostTask( | 228 BrowserThread::PostTask( |
| 223 BrowserThread::UI, FROM_HERE, | 229 BrowserThread::UI, FROM_HERE, |
| 224 NewRunnableMethod(this, | 230 NewRunnableMethod(this, |
| 225 &PrintSystemTaskProxy::SendPrinterList, | 231 &PrintSystemTaskProxy::SendPrinterList, |
| 226 printers, | 232 printers)); |
| 227 new FundamentalValue(default_printer_index))); | |
| 228 } | 233 } |
| 229 | 234 |
| 230 void SendPrinterList(ListValue* printers, | 235 void SendPrinterList(ListValue* printers) { |
| 231 FundamentalValue* default_printer_index) { | |
| 232 if (handler_) | 236 if (handler_) |
| 233 handler_->SendPrinterList(*printers, *default_printer_index); | 237 handler_->SendPrinterList(*printers); |
| 234 delete printers; | 238 delete printers; |
| 235 delete default_printer_index; | |
| 236 } | 239 } |
| 237 | 240 |
| 238 void GetPrinterCapabilities(const std::string& printer_name) { | 241 void GetPrinterCapabilities(const std::string& printer_name) { |
| 239 VLOG(1) << "Get printer capabilities start for " << printer_name; | 242 VLOG(1) << "Get printer capabilities start for " << printer_name; |
| 240 printing::PrinterCapsAndDefaults printer_info; | 243 printing::PrinterCapsAndDefaults printer_info; |
| 241 bool supports_color = true; | 244 bool supports_color = true; |
| 242 if (!print_backend_->GetPrinterCapsAndDefaults(printer_name, | 245 if (!print_backend_->GetPrinterCapsAndDefaults(printer_name, |
| 243 &printer_info)) { | 246 &printer_info)) { |
| 244 return; | 247 return; |
| 245 } | 248 } |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 331 private: | 334 private: |
| 332 // The metafile holding the PDF data. | 335 // The metafile holding the PDF data. |
| 333 scoped_ptr<printing::Metafile> metafile_; | 336 scoped_ptr<printing::Metafile> metafile_; |
| 334 | 337 |
| 335 // The absolute path where the file will be saved. | 338 // The absolute path where the file will be saved. |
| 336 FilePath path_; | 339 FilePath path_; |
| 337 }; | 340 }; |
| 338 | 341 |
| 339 // static | 342 // static |
| 340 FilePath* PrintPreviewHandler::last_saved_path_ = NULL; | 343 FilePath* PrintPreviewHandler::last_saved_path_ = NULL; |
| 344 std::string PrintPreviewHandler::last_used_printer_; | |
| 341 | 345 |
| 342 PrintPreviewHandler::PrintPreviewHandler() | 346 PrintPreviewHandler::PrintPreviewHandler() |
| 343 : print_backend_(printing::PrintBackend::CreateInstance(NULL)), | 347 : print_backend_(printing::PrintBackend::CreateInstance(NULL)), |
| 344 regenerate_preview_request_count_(0), | 348 regenerate_preview_request_count_(0), |
| 345 manage_printers_dialog_request_count_(0), | 349 manage_printers_dialog_request_count_(0), |
| 346 reported_failed_preview_(false), | 350 reported_failed_preview_(false), |
| 347 has_logged_printers_count_(false) { | 351 has_logged_printers_count_(false) { |
| 348 ReportUserActionHistogram(PREVIEW_STARTED); | 352 ReportUserActionHistogram(PREVIEW_STARTED); |
| 349 } | 353 } |
| 350 | 354 |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 433 TabContents* initiator_tab = GetInitiatorTab(); | 437 TabContents* initiator_tab = GetInitiatorTab(); |
| 434 if (initiator_tab) { | 438 if (initiator_tab) { |
| 435 RenderViewHost* rvh = initiator_tab->render_view_host(); | 439 RenderViewHost* rvh = initiator_tab->render_view_host(); |
| 436 rvh->Send(new PrintMsg_ResetScriptedPrintCount(rvh->routing_id())); | 440 rvh->Send(new PrintMsg_ResetScriptedPrintCount(rvh->routing_id())); |
| 437 } | 441 } |
| 438 | 442 |
| 439 scoped_ptr<DictionaryValue> settings(GetSettingsDictionary(args)); | 443 scoped_ptr<DictionaryValue> settings(GetSettingsDictionary(args)); |
| 440 if (!settings.get()) | 444 if (!settings.get()) |
| 441 return; | 445 return; |
| 442 | 446 |
| 447 LOG(INFO) << "before " << last_used_printer_; | |
| 448 settings->GetString("deviceName", &last_used_printer_); | |
| 449 LOG(INFO) << "after " << last_used_printer_; | |
| 450 | |
| 443 bool print_to_pdf = false; | 451 bool print_to_pdf = false; |
| 444 settings->GetBoolean(printing::kSettingPrintToPDF, &print_to_pdf); | 452 settings->GetBoolean(printing::kSettingPrintToPDF, &print_to_pdf); |
| 445 | 453 |
| 446 TabContentsWrapper* preview_tab_wrapper = | 454 TabContentsWrapper* preview_tab_wrapper = |
| 447 TabContentsWrapper::GetCurrentWrapperForContents(preview_tab()); | 455 TabContentsWrapper::GetCurrentWrapperForContents(preview_tab()); |
| 448 | 456 |
| 449 if (print_to_pdf) { | 457 if (print_to_pdf) { |
| 450 ReportUserActionHistogram(PRINT_TO_PDF); | 458 ReportUserActionHistogram(PRINT_TO_PDF); |
| 451 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPDF", | 459 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToPDF", |
| 452 GetPageCountFromSettingsDictionary(*settings)); | 460 GetPageCountFromSettingsDictionary(*settings)); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 552 VLOG(1) << "Get printer capabilities finished"; | 560 VLOG(1) << "Get printer capabilities finished"; |
| 553 web_ui_->CallJavascriptFunction("updateWithPrinterCapabilities", | 561 web_ui_->CallJavascriptFunction("updateWithPrinterCapabilities", |
| 554 settings_info); | 562 settings_info); |
| 555 } | 563 } |
| 556 | 564 |
| 557 void PrintPreviewHandler::SendDefaultPrinter( | 565 void PrintPreviewHandler::SendDefaultPrinter( |
| 558 const StringValue& default_printer) { | 566 const StringValue& default_printer) { |
| 559 web_ui_->CallJavascriptFunction("setDefaultPrinter", default_printer); | 567 web_ui_->CallJavascriptFunction("setDefaultPrinter", default_printer); |
| 560 } | 568 } |
| 561 | 569 |
| 562 void PrintPreviewHandler::SendPrinterList( | 570 void PrintPreviewHandler::SendPrinterList(const ListValue& printers) { |
| 563 const ListValue& printers, | 571 web_ui_->CallJavascriptFunction("setPrinters", printers); |
| 564 const FundamentalValue& default_printer_index) { | |
| 565 web_ui_->CallJavascriptFunction("setPrinters", printers, | |
| 566 default_printer_index); | |
| 567 } | 572 } |
| 568 | 573 |
| 569 TabContents* PrintPreviewHandler::GetInitiatorTab() { | 574 TabContents* PrintPreviewHandler::GetInitiatorTab() { |
| 570 printing::PrintPreviewTabController* tab_controller = | 575 printing::PrintPreviewTabController* tab_controller = |
| 571 printing::PrintPreviewTabController::GetInstance(); | 576 printing::PrintPreviewTabController::GetInstance(); |
| 572 if (!tab_controller) | 577 if (!tab_controller) |
| 573 return NULL; | 578 return NULL; |
| 574 return tab_controller->GetInitiatorTab(preview_tab()); | 579 return tab_controller->GetInitiatorTab(preview_tab()); |
| 575 } | 580 } |
| 576 | 581 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 631 metafile->InitFromData(static_cast<const void*>(data->front()), data->size()); | 636 metafile->InitFromData(static_cast<const void*>(data->front()), data->size()); |
| 632 | 637 |
| 633 // Updating last_saved_path_ to the newly selected folder. | 638 // Updating last_saved_path_ to the newly selected folder. |
| 634 *last_saved_path_ = path.DirName(); | 639 *last_saved_path_ = path.DirName(); |
| 635 | 640 |
| 636 PrintToPdfTask* task = new PrintToPdfTask(metafile, path); | 641 PrintToPdfTask* task = new PrintToPdfTask(metafile, path); |
| 637 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, task); | 642 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, task); |
| 638 | 643 |
| 639 ActivateInitiatorTabAndClosePreviewTab(); | 644 ActivateInitiatorTabAndClosePreviewTab(); |
| 640 } | 645 } |
| OLD | NEW |