Index: chrome/service/cloud_print/connector_settings.cc |
diff --git a/chrome/service/cloud_print/connector_settings.cc b/chrome/service/cloud_print/connector_settings.cc |
index 1e9b761a1c35e416165a15702d771dd71add902a..fb1dd7e7d383827d3ea1022eefe19b252c4f6017 100644 |
--- a/chrome/service/cloud_print/connector_settings.cc |
+++ b/chrome/service/cloud_print/connector_settings.cc |
@@ -14,6 +14,9 @@ namespace { |
const char kDefaultCloudPrintServerUrl[] = "https://www.google.com/cloudprint"; |
const char kDeleteOnEnumFail[] = "delete_on_enum_fail"; |
+const char kName[] = "name"; |
+const char kConnect[] = "connect"; |
+const char kDisplayName[] = "displayName"; |
} // namespace |
@@ -68,29 +71,48 @@ void ConnectorSettings::InitFrom(ServiceProcessPrefs* prefs) { |
prefs::kCloudPrintXmppPingTimeout, kDefaultXmppPingTimeoutSecs); |
SetXmppPingTimeoutSec(timeout); |
- const base::ListValue* printers = prefs->GetList( |
- prefs::kCloudPrintPrinterBlacklist); |
+ const base::ListValue* printers = prefs->GetList(prefs::kCloudPrintPrinters); |
if (printers) { |
for (size_t i = 0; i < printers->GetSize(); ++i) { |
- std::string printer; |
- if (printers->GetString(i, &printer)) |
- printer_blacklist_.insert(printer); |
+ const base::DictionaryValue* dictionary = NULL; |
+ if (printers->GetDictionary(i, &dictionary) && dictionary) { |
+ std::string name; |
+ dictionary->GetString(kName, &name); |
+ if (!name.empty()) { |
+ bool connect = connect_new_printers_; |
+ dictionary->GetBoolean(kConnect, &connect); |
+ std::string display_name; |
+ dictionary->GetString(kDisplayName, &display_name); |
+ printers_[name] = std::make_pair(connect, display_name); |
+ } |
+ } |
} |
} |
} |
-bool ConnectorSettings::IsPrinterBlacklisted(const std::string& name) const { |
- return printer_blacklist_.find(name) != printer_blacklist_.end(); |
-}; |
+bool ConnectorSettings::ShouldConnect(const std::string& printer_name) const { |
+ Printers::const_iterator printer = printers_.find(printer_name); |
+ if (printer == printers_.end()) |
+ return connect_new_printers_; |
+ return printer->second.first; |
+} |
+ |
+std::string ConnectorSettings::GetDisplayName( |
+ const std::string& printer_name) const { |
+ Printers::const_iterator printer = printers_.find(printer_name); |
+ if (printer == printers_.end() || printer->second.second.empty()) |
+ return std::string(); |
+ return printer->second.second; |
+} |
void ConnectorSettings::CopyFrom(const ConnectorSettings& source) { |
server_url_ = source.server_url(); |
proxy_id_ = source.proxy_id(); |
delete_on_enum_fail_ = source.delete_on_enum_fail(); |
- connect_new_printers_ = source.connect_new_printers(); |
+ connect_new_printers_ = source.connect_new_printers_; |
xmpp_ping_enabled_ = source.xmpp_ping_enabled(); |
xmpp_ping_timeout_sec_ = source.xmpp_ping_timeout_sec(); |
- printer_blacklist_ = source.printer_blacklist_; |
+ printers_ = source.printers_; |
if (source.print_system_settings()) |
print_system_settings_.reset(source.print_system_settings()->DeepCopy()); |
} |