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

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 nits 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 if (!args->GetString(0, &callback_id) || !args->GetString(1, &printer_name) ||
1093 callback_id.empty() || printer_name.empty()) {
1094 RejectJavascriptCallback(base::StringValue(callback_id),
1095 base::StringValue(printer_name));
1096 return;
1097 }
1098
1099 printer_backend_proxy()->ConfigurePrinterAndFetchCapabilities(
1100 printer_name,
1101 base::Bind(&PrintPreviewHandler::SendPrinterSetup,
1102 weak_factory_.GetWeakPtr(), callback_id, printer_name));
1103 }
1104
1082 void PrintPreviewHandler::OnSigninComplete() { 1105 void PrintPreviewHandler::OnSigninComplete() {
1083 if (print_preview_ui()) 1106 if (print_preview_ui())
1084 print_preview_ui()->OnReloadPrintersList(); 1107 print_preview_ui()->OnReloadPrintersList();
1085 } 1108 }
1086 1109
1087 void PrintPreviewHandler::HandleSignin(const base::ListValue* args) { 1110 void PrintPreviewHandler::HandleSignin(const base::ListValue* args) {
1088 bool add_account = false; 1111 bool add_account = false;
1089 bool success = args->GetBoolean(0, &add_account); 1112 bool success = args->GetBoolean(0, &add_account);
1090 DCHECK(success); 1113 DCHECK(success);
1091 1114
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
1272 VLOG(1) << "Get printer capabilities failed"; 1295 VLOG(1) << "Get printer capabilities failed";
1273 web_ui()->CallJavascriptFunctionUnsafe("failedToGetPrinterCapabilities", 1296 web_ui()->CallJavascriptFunctionUnsafe("failedToGetPrinterCapabilities",
1274 base::StringValue(printer_name)); 1297 base::StringValue(printer_name));
1275 return; 1298 return;
1276 } 1299 }
1277 VLOG(1) << "Get printer capabilities finished"; 1300 VLOG(1) << "Get printer capabilities finished";
1278 web_ui()->CallJavascriptFunctionUnsafe("updateWithPrinterCapabilities", 1301 web_ui()->CallJavascriptFunctionUnsafe("updateWithPrinterCapabilities",
1279 *settings_info); 1302 *settings_info);
1280 } 1303 }
1281 1304
1305 void PrintPreviewHandler::SendPrinterSetup(
1306 const std::string& callback_id,
1307 const std::string& printer_name,
1308 std::unique_ptr<base::DictionaryValue> destination_info) {
1309 auto response = base::MakeUnique<base::DictionaryValue>();
1310 bool success = true;
1311 auto caps_value = base::Value::CreateNullValue();
1312 auto caps = base::MakeUnique<base::DictionaryValue>();
1313 if (destination_info &&
1314 destination_info->Remove(printing::kPrinterCapabilities, &caps_value) &&
1315 caps_value->IsType(base::Value::Type::DICTIONARY)) {
1316 caps = base::DictionaryValue::From(std::move(caps_value));
1317 } else {
1318 LOG(WARNING) << "Printer setup failed";
1319 success = false;
1320 }
1321
1322 response->SetString("printerId", printer_name);
1323 response->SetBoolean("success", success);
1324 response->Set("capabilities", std::move(caps));
1325
1326 ResolveJavascriptCallback(base::StringValue(callback_id), *response);
1327 }
1328
1282 void PrintPreviewHandler::SetupPrinterList( 1329 void PrintPreviewHandler::SetupPrinterList(
1283 const printing::PrinterList& printer_list) { 1330 const printing::PrinterList& printer_list) {
1284 base::ListValue printers; 1331 base::ListValue printers;
1285 PrintersToValues(printer_list, &printers); 1332 PrintersToValues(printer_list, &printers);
1286 1333
1287 VLOG(1) << "Enumerate printers finished, found " << printers.GetSize() 1334 VLOG(1) << "Enumerate printers finished, found " << printers.GetSize()
1288 << " printers"; 1335 << " printers";
1289 1336
1290 if (!has_logged_printers_count_) { 1337 if (!has_logged_printers_count_) {
1291 UMA_HISTOGRAM_COUNTS("PrintPreview.NumberOfPrinters", printers.GetSize()); 1338 UMA_HISTOGRAM_COUNTS("PrintPreview.NumberOfPrinters", printers.GetSize());
(...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after
1745 1792
1746 void PrintPreviewHandler::UnregisterForGaiaCookieChanges() { 1793 void PrintPreviewHandler::UnregisterForGaiaCookieChanges() {
1747 if (gaia_cookie_manager_service_) 1794 if (gaia_cookie_manager_service_)
1748 gaia_cookie_manager_service_->RemoveObserver(this); 1795 gaia_cookie_manager_service_->RemoveObserver(this);
1749 } 1796 }
1750 1797
1751 void PrintPreviewHandler::SetPdfSavedClosureForTesting( 1798 void PrintPreviewHandler::SetPdfSavedClosureForTesting(
1752 const base::Closure& closure) { 1799 const base::Closure& closure) {
1753 pdf_file_saved_closure_ = closure; 1800 pdf_file_saved_closure_ = closure;
1754 } 1801 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698