Chromium Code Reviews| Index: chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc |
| diff --git a/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc b/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc |
| index d21d63b191fb282dd5da2d36fa616a3fd9db40e0..7704c0dcf0195933c4e7a2f1abcc2812a0712b80 100644 |
| --- a/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc |
| +++ b/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc |
| @@ -208,7 +208,6 @@ void CupsPrintersHandler::HandleAddCupsPrinter(const base::ListValue* args) { |
| printer_protocol + "://" + printer_address + "/" + printer_queue; |
| std::unique_ptr<Printer> printer = base::MakeUnique<Printer>(printer_id); |
| - printer_id = printer->id(); |
| printer->set_display_name(printer_name); |
| printer->set_description(printer_description); |
| printer->set_manufacturer(printer_manufacturer); |
| @@ -216,23 +215,20 @@ void CupsPrintersHandler::HandleAddCupsPrinter(const base::ListValue* args) { |
| printer->set_uri(printer_uri); |
| if (!printer_ppd_path.empty()) { |
| printer->mutable_ppd_reference()->user_supplied_ppd_url = printer_ppd_path; |
| + bool cached = ppd_provider_->CachePpd(printer->ppd_reference(), |
| + base::FilePath(printer_ppd_path)); |
| + VLOG(1) << "PPD Cached: " << cached; |
| } else if (!printer_manufacturer.empty() && !printer_model.empty()) { |
| Printer::PpdReference* ppd = printer->mutable_ppd_reference(); |
| ppd->effective_manufacturer = printer_manufacturer; |
| ppd->effective_model = printer_model; |
| } |
| - chromeos::DebugDaemonClient* client = |
| - chromeos::DBusThreadManager::Get()->GetDebugDaemonClient(); |
| - client->CupsAddPrinter( |
| - printer_id, // record id |
| - printer_uri, // uri |
| - printer_ppd_path, // ppd location |
| - printer_ppd_path.empty() ? true : false, // ipp everywhere |
| - base::Bind(&CupsPrintersHandler::OnAddedPrinter, |
| - weak_factory_.GetWeakPtr(), base::Passed(std::move(printer))), |
| - base::Bind(&CupsPrintersHandler::OnAddPrinterError, |
| - weak_factory_.GetWeakPtr())); |
| + const Printer::PpdReference& ppd_reference = printer->ppd_reference(); |
|
Carlson
2016/12/01 01:58:44
Add a comment about why you're doing this? Someon
skau
2016/12/01 21:45:12
I really wish this was a compiler warning. I've a
|
| + ppd_provider_->Resolve( |
| + ppd_reference, |
| + base::Bind(&CupsPrintersHandler::OnPPDResolved, |
| + weak_factory_.GetWeakPtr(), base::Passed(&printer))); |
| } |
| void CupsPrintersHandler::OnAddedPrinter(std::unique_ptr<Printer> printer, |
| @@ -391,5 +387,30 @@ void CupsPrintersHandler::OnDiscoveryDone() { |
| base::StringValue("on-printer-discovery-done")); |
| } |
| +void CupsPrintersHandler::OnPPDResolved( |
| + std::unique_ptr<Printer> printer, |
| + printing::PpdProvider::CallbackResultCode result, |
| + base::FilePath path) { |
| + if (result != printing::PpdProvider::SUCCESS) { |
| + // TODO(skau): Add appropriate failure modes crbug.com/670068. |
| + OnAddPrinterError(); |
| + return; |
| + } |
| + |
| + bool ipp_everywhere = Printer::IsIppEverywhere(*printer); |
| + std::string ppd_path = ipp_everywhere ? "" : path.value(); |
|
Carlson
2016/12/01 01:58:44
Wait, what? So if it's an ipp everywhere printer
skau
2016/12/01 21:45:12
What I'm doing here makes no sense. I've moved th
|
| + std::string printer_id = printer->id(); |
| + std::string printer_uri = printer->uri(); |
| + |
| + chromeos::DebugDaemonClient* client = |
| + chromeos::DBusThreadManager::Get()->GetDebugDaemonClient(); |
| + client->CupsAddPrinter( |
| + printer_id, printer_uri, ppd_path, ipp_everywhere, |
| + base::Bind(&CupsPrintersHandler::OnAddedPrinter, |
| + weak_factory_.GetWeakPtr(), base::Passed(&printer)), |
| + base::Bind(&CupsPrintersHandler::OnAddPrinterError, |
| + weak_factory_.GetWeakPtr())); |
| +} |
| + |
| } // namespace settings |
| } // namespace chromeos |