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

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

Issue 10837320: Add flag to allow deletion of printers when enumerate fails. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review feedback Created 8 years, 4 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
« no previous file with comments | « chrome/service/cloud_print/cloud_print_connector.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/service/cloud_print/cloud_print_connector.cc
diff --git a/chrome/service/cloud_print/cloud_print_connector.cc b/chrome/service/cloud_print/cloud_print_connector.cc
index 1b01169ef61a4329cb4b23f436498f5e6c380ebe..4187ab0a8ea6e2f6966ee7fc683ccee8e96e4156 100644
--- a/chrome/service/cloud_print/cloud_print_connector.cc
+++ b/chrome/service/cloud_print/cloud_print_connector.cc
@@ -19,6 +19,8 @@
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
+const char kDeleteOnEnumFail[] = "delete_on_enum_fail";
+
CloudPrintConnector::CloudPrintConnector(
Client* client,
const std::string& proxy_id,
@@ -27,7 +29,8 @@ CloudPrintConnector::CloudPrintConnector(
: client_(client),
proxy_id_(proxy_id),
cloud_print_server_url_(cloud_print_server_url),
- next_response_handler_(NULL) {
+ next_response_handler_(NULL),
+ delete_on_enum_fail_(false) {
if (print_system_settings) {
// It is possible to have no print settings specified.
print_system_settings_.reset(print_system_settings->DeepCopy());
@@ -43,6 +46,12 @@ bool CloudPrintConnector::InitPrintSystem() {
NOTREACHED();
return false; // No memory.
}
+ if (print_system_settings_.get()) {
+ bool delete_on_enum_fail = false;
+ print_system_settings_->GetBoolean(kDeleteOnEnumFail,
+ &delete_on_enum_fail);
+ delete_on_enum_fail_ = delete_on_enum_fail;
+ }
cloud_print::PrintSystem::PrintSystemResult result = print_system_->Init();
if (!result.succeeded()) {
print_system_.release();
@@ -222,7 +231,13 @@ CloudPrintConnector::HandlePrinterListResponse(
// Cloud printer is not found on the local system.
std::string printer_id;
printer_data->GetString(kIdValue, &printer_id);
- if (full_list) { // Delete only if we get the full list of printer.
+ if (full_list || delete_on_enum_fail_) {
+ // Delete if we get the full list of printers or
+ // |delete_on_enum_fail_| is set.
+ VLOG(1) << "CP_CONNECTOR: Deleting " << printer_name <<
+ " id: " << printer_id <<
+ " full_list: " << full_list <<
+ " delete_on_enum_fail: " << delete_on_enum_fail_;
AddPendingDeleteTask(printer_id);
} else {
LOG(ERROR) << "CP_CONNECTOR: Printer: " << printer_name <<
« no previous file with comments | « chrome/service/cloud_print/cloud_print_connector.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698