Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(192)

Side by Side Diff: chrome/browser/ui/webui/print_preview/print_preview_handler.cc

Issue 2606043004: Perform printer setup on Chrome OS before selecting printer. (Closed)
Patch Set: fix unit test Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/print_preview_handler.h" 5 #include "chrome/browser/ui/webui/print_preview/print_preview_handler.h"
6 6
7 #include <ctype.h> 7 #include <ctype.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 9
10 #include <map> 10 #include <map>
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after
563 web_ui()->RegisterMessageCallback("getPreview", 563 web_ui()->RegisterMessageCallback("getPreview",
564 base::Bind(&PrintPreviewHandler::HandleGetPreview, 564 base::Bind(&PrintPreviewHandler::HandleGetPreview,
565 base::Unretained(this))); 565 base::Unretained(this)));
566 web_ui()->RegisterMessageCallback("print", 566 web_ui()->RegisterMessageCallback("print",
567 base::Bind(&PrintPreviewHandler::HandlePrint, 567 base::Bind(&PrintPreviewHandler::HandlePrint,
568 base::Unretained(this))); 568 base::Unretained(this)));
569 web_ui()->RegisterMessageCallback( 569 web_ui()->RegisterMessageCallback(
570 "getPrinterCapabilities", 570 "getPrinterCapabilities",
571 base::Bind(&PrintPreviewHandler::HandleGetPrinterCapabilities, 571 base::Bind(&PrintPreviewHandler::HandleGetPrinterCapabilities,
572 base::Unretained(this))); 572 base::Unretained(this)));
573 web_ui()->RegisterMessageCallback(
574 "setupPrinter", base::Bind(&PrintPreviewHandler::HandlePrinterSetup,
575 base::Unretained(this)));
573 #if BUILDFLAG(ENABLE_BASIC_PRINT_DIALOG) 576 #if BUILDFLAG(ENABLE_BASIC_PRINT_DIALOG)
574 web_ui()->RegisterMessageCallback("showSystemDialog", 577 web_ui()->RegisterMessageCallback("showSystemDialog",
575 base::Bind(&PrintPreviewHandler::HandleShowSystemDialog, 578 base::Bind(&PrintPreviewHandler::HandleShowSystemDialog,
576 base::Unretained(this))); 579 base::Unretained(this)));
577 #endif 580 #endif
578 web_ui()->RegisterMessageCallback("signIn", 581 web_ui()->RegisterMessageCallback("signIn",
579 base::Bind(&PrintPreviewHandler::HandleSignin, 582 base::Bind(&PrintPreviewHandler::HandleSignin,
580 base::Unretained(this))); 583 base::Unretained(this)));
581 web_ui()->RegisterMessageCallback("getAccessToken", 584 web_ui()->RegisterMessageCallback("getAccessToken",
582 base::Bind(&PrintPreviewHandler::HandleGetAccessToken, 585 base::Bind(&PrintPreviewHandler::HandleGetAccessToken,
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after
1072 } 1075 }
1073 1076
1074 printing::PrinterSetupCallback cb = 1077 printing::PrinterSetupCallback cb =
1075 base::Bind(&PrintPreviewHandler::SendPrinterCapabilities, 1078 base::Bind(&PrintPreviewHandler::SendPrinterCapabilities,
1076 weak_factory_.GetWeakPtr(), printer_name); 1079 weak_factory_.GetWeakPtr(), printer_name);
1077 1080
1078 printer_backend_proxy()->ConfigurePrinterAndFetchCapabilities(printer_name, 1081 printer_backend_proxy()->ConfigurePrinterAndFetchCapabilities(printer_name,
1079 cb); 1082 cb);
1080 } 1083 }
1081 1084
1085 // |args| is expected to contain a string with representing the callback id
1086 // followed by a list of arguments the first of which should be the printer id.
1087 void PrintPreviewHandler::HandlePrinterSetup(const base::ListValue* args) {
1088 AllowJavascript();
1089
1090 std::string callback_id;
1091 std::string printer_name;
1092 const base::ListValue* real_args;
1093 if (!args->GetString(0, &callback_id) || !args->GetList(1, &real_args) ||
1094 !real_args->GetString(0, &printer_name) || callback_id.empty() ||
1095 printer_name.empty()) {
1096 RejectJavascriptCallback(base::StringValue(callback_id),
1097 base::StringValue(printer_name));
1098 return;
1099 }
1100
1101 printer_backend_proxy()->ConfigurePrinterAndFetchCapabilities(
1102 printer_name,
1103 base::Bind(&PrintPreviewHandler::SendPrinterSetup,
1104 weak_factory_.GetWeakPtr(), callback_id, printer_name));
1105 }
1106
1082 void PrintPreviewHandler::OnSigninComplete() { 1107 void PrintPreviewHandler::OnSigninComplete() {
1083 if (print_preview_ui()) 1108 if (print_preview_ui())
1084 print_preview_ui()->OnReloadPrintersList(); 1109 print_preview_ui()->OnReloadPrintersList();
1085 } 1110 }
1086 1111
1087 void PrintPreviewHandler::HandleSignin(const base::ListValue* args) { 1112 void PrintPreviewHandler::HandleSignin(const base::ListValue* args) {
1088 bool add_account = false; 1113 bool add_account = false;
1089 bool success = args->GetBoolean(0, &add_account); 1114 bool success = args->GetBoolean(0, &add_account);
1090 DCHECK(success); 1115 DCHECK(success);
1091 1116
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
1272 VLOG(1) << "Get printer capabilities failed"; 1297 VLOG(1) << "Get printer capabilities failed";
1273 web_ui()->CallJavascriptFunctionUnsafe("failedToGetPrinterCapabilities", 1298 web_ui()->CallJavascriptFunctionUnsafe("failedToGetPrinterCapabilities",
1274 base::StringValue(printer_name)); 1299 base::StringValue(printer_name));
1275 return; 1300 return;
1276 } 1301 }
1277 VLOG(1) << "Get printer capabilities finished"; 1302 VLOG(1) << "Get printer capabilities finished";
1278 web_ui()->CallJavascriptFunctionUnsafe("updateWithPrinterCapabilities", 1303 web_ui()->CallJavascriptFunctionUnsafe("updateWithPrinterCapabilities",
1279 *settings_info); 1304 *settings_info);
1280 } 1305 }
1281 1306
1307 void PrintPreviewHandler::SendPrinterSetup(
1308 const std::string& callback_id,
1309 const std::string& printer_name,
1310 std::unique_ptr<base::DictionaryValue> destination_info) {
1311 auto response = base::MakeUnique<base::DictionaryValue>();
1312 bool success = true;
1313 auto caps_value = base::Value::CreateNullValue();
1314 auto caps = base::MakeUnique<base::DictionaryValue>();
1315 if (destination_info &&
1316 destination_info->Remove(printing::kPrinterCapabilities, &caps_value) &&
1317 caps_value->IsType(base::Value::Type::DICTIONARY)) {
1318 caps = base::DictionaryValue::From(std::move(caps_value));
1319 } else {
1320 LOG(WARNING) << "Printer setup failed";
1321 success = false;
1322 }
1323
1324 response->SetString("printerId", printer_name);
1325 response->SetBoolean("success", success);
1326 response->Set("capabilities", std::move(caps));
1327
1328 ResolveJavascriptCallback(base::StringValue(callback_id), *response);
1329 }
1330
1282 void PrintPreviewHandler::SetupPrinterList( 1331 void PrintPreviewHandler::SetupPrinterList(
1283 const printing::PrinterList& printer_list) { 1332 const printing::PrinterList& printer_list) {
1284 base::ListValue printers; 1333 base::ListValue printers;
1285 PrintersToValues(printer_list, &printers); 1334 PrintersToValues(printer_list, &printers);
1286 1335
1287 VLOG(1) << "Enumerate printers finished, found " << printers.GetSize() 1336 VLOG(1) << "Enumerate printers finished, found " << printers.GetSize()
1288 << " printers"; 1337 << " printers";
1289 1338
1290 if (!has_logged_printers_count_) { 1339 if (!has_logged_printers_count_) {
1291 UMA_HISTOGRAM_COUNTS("PrintPreview.NumberOfPrinters", printers.GetSize()); 1340 UMA_HISTOGRAM_COUNTS("PrintPreview.NumberOfPrinters", printers.GetSize());
(...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after
1745 1794
1746 void PrintPreviewHandler::UnregisterForGaiaCookieChanges() { 1795 void PrintPreviewHandler::UnregisterForGaiaCookieChanges() {
1747 if (gaia_cookie_manager_service_) 1796 if (gaia_cookie_manager_service_)
1748 gaia_cookie_manager_service_->RemoveObserver(this); 1797 gaia_cookie_manager_service_->RemoveObserver(this);
1749 } 1798 }
1750 1799
1751 void PrintPreviewHandler::SetPdfSavedClosureForTesting( 1800 void PrintPreviewHandler::SetPdfSavedClosureForTesting(
1752 const base::Closure& closure) { 1801 const base::Closure& closure) {
1753 pdf_file_saved_closure_ = closure; 1802 pdf_file_saved_closure_ = closure;
1754 } 1803 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698