Chromium Code Reviews| 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 |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..8c362de14edbc97a1cbb6b74741716df7ab26ad3 |
| --- /dev/null |
| +++ b/chrome/service/cloud_print/connector_settings.cc |
| @@ -0,0 +1,63 @@ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/service/cloud_print/connector_settings.h" |
| + |
| +#include "base/values.h" |
| +#include "chrome/common/pref_names.h" |
| +#include "chrome/service/cloud_print/cloud_print_consts.h" |
| +#include "chrome/service/cloud_print/print_system.h" |
| +#include "chrome/service/service_process_prefs.h" |
| + |
| +namespace { |
| + |
| +const char kDeleteOnEnumFail[] = "delete_on_enum_fail"; |
| + |
| +} // namespace |
| + |
| +ConnectorSettings::ConnectorSettings() : remove_missing_printers_(false) { |
| +} |
| + |
| +ConnectorSettings::~ConnectorSettings() { |
| +} |
| + |
| +void ConnectorSettings::InitFrom(ServiceProcessPrefs* prefs) { |
| + CopyFrom(ConnectorSettings()); |
| + |
| + prefs->GetString(prefs::kCloudPrintProxyId, &proxy_id_); |
| + if (proxy_id_.empty()) { |
| + proxy_id_ = cloud_print::PrintSystem::GenerateProxyId(); |
| + prefs->SetString(prefs::kCloudPrintProxyId, proxy_id_); |
| + prefs->WritePrefs(); |
| + } |
| + |
| + // Getting print system specific settings from the preferences. |
| + const base::DictionaryValue* print_system_settings = NULL; |
| + prefs->GetDictionary(prefs::kCloudPrintPrintSystemSettings, |
| + &print_system_settings); |
| + if (print_system_settings) { |
| + print_system_settings_.reset(print_system_settings->DeepCopy()); |
| + // TODO(vitalybuka) : Consider to move option from print_system_settings. |
| + print_system_settings_->GetBoolean(kDeleteOnEnumFail, |
| + &remove_missing_printers_); |
| + } |
| + |
| + // Check if there is an override for the cloud print server URL. |
| + std::string cloud_print_server_url_str; |
| + prefs->GetString(prefs::kCloudPrintServiceURL, |
| + &cloud_print_server_url_str); |
| + if (cloud_print_server_url_str.empty()) { |
| + cloud_print_server_url_str = kDefaultCloudPrintServerUrl; |
| + } |
| + server_url_ = GURL(cloud_print_server_url_str.c_str()); |
| + DCHECK(server_url_.is_valid()); |
| +} |
| + |
| +void ConnectorSettings::CopyFrom(const ConnectorSettings& source) { |
| + server_url_ = source.server_url(); |
| + proxy_id_ = source.proxy_id(); |
| + if (source.print_system_settings()) |
| + print_system_settings_.reset(source.print_system_settings()->DeepCopy()); |
|
gene
2012/09/21 22:08:36
copy remove_missing_printers_ as well here?
Vitaly Buka (NO REVIEWS)
2012/09/21 22:35:28
Done.
|
| +} |
| + |