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

Unified Diff: chrome/service/cloud_print/print_system_cups.cc

Issue 6356007: Added a diagnostic user message when enumerating printers fails. Also tweaked... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Fixed build errors Created 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/service/cloud_print/print_system_cups.cc
===================================================================
--- chrome/service/cloud_print/print_system_cups.cc (revision 72357)
+++ chrome/service/cloud_print/print_system_cups.cc (working copy)
@@ -28,9 +28,11 @@
#include "chrome/service/cloud_print/cloud_print_consts.h"
#include "chrome/service/cloud_print/cloud_print_helpers.h"
#include "googleurl/src/gurl.h"
+#include "grit/generated_resources.h"
#include "printing/backend/cups_helper.h"
#include "printing/backend/print_backend.h"
#include "printing/backend/print_backend_consts.h"
+#include "ui/base/l10n/l10n_util.h"
namespace {
static const char kCUPSPrinterInfoOpt[] = "printer-info";
@@ -73,7 +75,8 @@
// PrintSystem implementation.
virtual PrintSystemResult Init();
- virtual void EnumeratePrinters(printing::PrinterList* printer_list);
+ virtual PrintSystem::PrintSystemResult EnumeratePrinters(
+ printing::PrinterList* printer_list);
virtual void GetPrinterCapsAndDefaults(
const std::string& printer_name,
@@ -151,6 +154,9 @@
int update_timeout_;
bool initialized_;
+ // A comma separated string of print server names for which enumeration of
+ // printers failed. This is used to prepare a diagnostic error message.
+ std::string enum_failed_server_list_;
gene1 2011/01/24 19:46:47 Can we keep it as a bool flag? I understand that i
Scott Byer 2011/01/24 20:02:07 Since it's not being used, how about making it a b
};
class PrintServerWatcherCUPS
@@ -412,8 +418,12 @@
void PrintSystemCUPS::UpdatePrinters() {
PrintServerList::iterator it;
+ enum_failed_server_list_.clear();
for (it = print_servers_.begin(); it != print_servers_.end(); ++it) {
- it->backend->EnumeratePrinters(&it->printers);
+ if (!it->backend->EnumeratePrinters(&it->printers)) {
+ enum_failed_server_list_.append(it->url.spec());
+ enum_failed_server_list_.append(",");
+ }
it->caps_cache.clear();
printing::PrinterList::iterator printer_it;
for (printer_it = it->printers.begin();
@@ -431,7 +441,8 @@
GetUpdateTimeoutMs());
}
-void PrintSystemCUPS::EnumeratePrinters(printing::PrinterList* printer_list) {
+PrintSystem::PrintSystemResult PrintSystemCUPS::EnumeratePrinters(
+ printing::PrinterList* printer_list) {
DCHECK(initialized_);
printer_list->clear();
PrintServerList::iterator it;
@@ -440,6 +451,13 @@
it->printers.begin(), it->printers.end());
}
VLOG(1) << "CUPS: Total " << printer_list->size() << " printers enumerated.";
+ if (!enum_failed_server_list_.empty()) {
+ // The enumeration failed on some servers.
+ // TODO(sanjeevr): Maybe some day we want to report the actual server names.
+ std::string message = l10n_util::GetStringUTF8(IDS_CLOUD_PRINT_ENUM_FAILED);
+ return PrintSystemResult(false, message);
+ }
+ return PrintSystemResult(true, std::string());
}
void PrintSystemCUPS::GetPrinterCapsAndDefaults(

Powered by Google App Engine
This is Rietveld 408576698