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

Unified Diff: chrome/browser/ui/webui/print_preview/printer_backend_proxy_chromeos.cc

Issue 2613683004: Completely rewrite the PpdProvider/PpdCache to use the SCS backend. Along the way, clean it up a l… (Closed)
Patch Set: Address michealpg@ comments Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/print_preview/printer_backend_proxy_chromeos.cc
diff --git a/chrome/browser/ui/webui/print_preview/printer_backend_proxy_chromeos.cc b/chrome/browser/ui/webui/print_preview/printer_backend_proxy_chromeos.cc
index 6b757659c4a009775b65ef272600eb3c3f06805c..b41cffa6a5c944fc2a2e9deefb3ccbcafdaa569e 100644
--- a/chrome/browser/ui/webui/print_preview/printer_backend_proxy_chromeos.cc
+++ b/chrome/browser/ui/webui/print_preview/printer_backend_proxy_chromeos.cc
@@ -96,11 +96,12 @@ void HandlePrinterSetup(std::unique_ptr<chromeos::Printer> printer,
void OnPrinterAddResult(std::unique_ptr<chromeos::Printer> printer,
const PrinterSetupCallback& cb,
- bool success) {
+ int32_t result_code) {
// It's expected that debug daemon posts callbacks on the UI thread.
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- HandlePrinterSetup(std::move(printer), success ? SUCCESS : FAILURE, cb);
+ HandlePrinterSetup(std::move(printer), (result_code == 0) ? SUCCESS : FAILURE,
+ cb);
}
void OnPrinterAddError(const PrinterSetupCallback& cb) {
@@ -112,28 +113,39 @@ void OnPrinterAddError(const PrinterSetupCallback& cb) {
}
void AddPrinter(std::unique_ptr<chromeos::Printer> printer,
- const std::string& ppd_path,
- bool ipp_everywhere,
+ const std::string& ppd_contents,
const PrinterSetupCallback& cb) {
// Always push configuration to CUPS. It may need an update.
const std::string printer_name = printer->id();
const std::string printer_uri = printer->uri();
- chromeos::DBusThreadManager::Get()->GetDebugDaemonClient()->CupsAddPrinter(
- printer_name, printer_uri, ppd_path, ipp_everywhere,
- base::Bind(&OnPrinterAddResult, base::Passed(&printer), cb),
- base::Bind(&OnPrinterAddError, cb));
+ if (!ppd_contents.empty()) {
+ chromeos::DBusThreadManager::Get()
+ ->GetDebugDaemonClient()
+ ->CupsAddManuallyConfiguredPrinter(
+ printer_name, printer_uri, ppd_contents,
+ base::Bind(&OnPrinterAddResult, base::Passed(&printer), cb),
+ base::Bind(&OnPrinterAddError, cb));
+ } else {
+ // If we weren't given a ppd to use, we'd better be auto-configurable.
+ DCHECK(printer->IsIppEverywhere());
+ chromeos::DBusThreadManager::Get()
+ ->GetDebugDaemonClient()
+ ->CupsAddAutoConfiguredPrinter(
+ printer_name, printer_uri,
+ base::Bind(&OnPrinterAddResult, base::Passed(&printer), cb),
+ base::Bind(&OnPrinterAddError, cb));
+ }
}
void PPDResolve(std::unique_ptr<chromeos::Printer> printer,
const PrinterSetupCallback& cb,
chromeos::printing::PpdProvider::CallbackResultCode result,
- base::FilePath path) {
+ const std::string& ppd_contents) {
switch (result) {
case chromeos::printing::PpdProvider::SUCCESS: {
- DCHECK(!path.empty());
- AddPrinter(std::move(printer), path.value() /* ppd path */,
- false /* non-ipp-everywhere */, cb);
+ DCHECK(!ppd_contents.empty());
+ AddPrinter(std::move(printer), ppd_contents, cb);
break;
}
case chromeos::printing::PpdProvider::NOT_FOUND:
@@ -200,20 +212,18 @@ class PrinterBackendProxyChromeos : public PrinterBackendProxy {
if (printer->IsIppEverywhere()) {
// ChromeOS registers printer by GUID rather than display name.
- AddPrinter(std::move(printer), "" /* empty ppd path */,
- true /* ipp everywhere */, cb);
- return;
+ AddPrinter(std::move(printer), "", cb);
+ } else {
+ // Ref taken because printer is moved.
+ const chromeos::Printer::PpdReference& ppd_ref = printer->ppd_reference();
+ ppd_provider_->ResolvePpd(
+ ppd_ref, base::Bind(&PPDResolve, base::Passed(&printer), cb));
}
-
- // Ref taken because printer is moved.
- const chromeos::Printer::PpdReference& ppd_ref = printer->ppd_reference();
- ppd_provider_->Resolve(ppd_ref,
- base::Bind(&PPDResolve, base::Passed(&printer), cb));
};
private:
chromeos::PrinterPrefManager* prefs_;
- std::unique_ptr<chromeos::printing::PpdProvider> ppd_provider_;
+ scoped_refptr<chromeos::printing::PpdProvider> ppd_provider_;
DISALLOW_COPY_AND_ASSIGN(PrinterBackendProxyChromeos);
};

Powered by Google App Engine
This is Rietveld 408576698