summaryrefslogtreecommitdiffstats
path: root/components/wifi_sync/wifi_config_delegate_chromeos.cc
diff options
context:
space:
mode:
authorquiche <quiche@chromium.org>2015-01-16 16:35:22 -0800
committerCommit bot <commit-bot@chromium.org>2015-01-17 00:36:23 +0000
commit9d40dcfee9aa0ca890d187df2b31365e6c96878f (patch)
tree09e9754352023e671bdd9e501df32ab13f6197cc /components/wifi_sync/wifi_config_delegate_chromeos.cc
parent4069d9b15ca7d8744728161df7e70945cfb8cccc (diff)
downloadchromium_src-9d40dcfee9aa0ca890d187df2b31365e6c96878f.zip
chromium_src-9d40dcfee9aa0ca890d187df2b31365e6c96878f.tar.gz
chromium_src-9d40dcfee9aa0ca890d187df2b31365e6c96878f.tar.bz2
wifi_sync: add WifiConfigDelegate
WifiConfigDelegate provides the ability to modify the platform's Wi-Fi settings. This CL includes an abstract interface class, and a concrete implementatin for ChromeOS. This class will be used by WifiCredentialSyncableService, to effect the changes requested by Chrome Sync. BUG=chromium:431435 TEST=components_unittests --gtest_filter="Wifi*" Review URL: https://codereview.chromium.org/836363002 Cr-Commit-Position: refs/heads/master@{#311991}
Diffstat (limited to 'components/wifi_sync/wifi_config_delegate_chromeos.cc')
-rw-r--r--components/wifi_sync/wifi_config_delegate_chromeos.cc61
1 files changed, 61 insertions, 0 deletions
diff --git a/components/wifi_sync/wifi_config_delegate_chromeos.cc b/components/wifi_sync/wifi_config_delegate_chromeos.cc
new file mode 100644
index 0000000..d8d241f
--- /dev/null
+++ b/components/wifi_sync/wifi_config_delegate_chromeos.cc
@@ -0,0 +1,61 @@
+// Copyright 2015 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 "components/wifi_sync/wifi_config_delegate_chromeos.h"
+
+#include "base/bind.h"
+#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/values.h"
+#include "chromeos/network/managed_network_configuration_handler.h"
+#include "components/wifi_sync/wifi_credential.h"
+
+namespace wifi_sync {
+
+namespace {
+
+void OnCreateConfigurationFailed(
+ const WifiCredential& wifi_credential,
+ const std::string& config_handler_error_message,
+ scoped_ptr<base::DictionaryValue> error_data) {
+ LOG(ERROR) << "Create configuration failed";
+ // TODO(quiche): check if there is a matching network already. If
+ // so, try to configure it with |wifi_credential|.
+}
+
+} // namespace
+
+WifiConfigDelegateChromeOs::WifiConfigDelegateChromeOs(
+ const std::string& user_hash,
+ chromeos::ManagedNetworkConfigurationHandler* managed_net_config_handler)
+ : user_hash_(user_hash),
+ managed_network_configuration_handler_(managed_net_config_handler) {
+ DCHECK(!user_hash_.empty());
+ DCHECK(managed_network_configuration_handler_);
+}
+
+WifiConfigDelegateChromeOs::~WifiConfigDelegateChromeOs() {
+}
+
+void WifiConfigDelegateChromeOs::AddToLocalNetworks(
+ const WifiCredential& network_credential) {
+ scoped_ptr<base::DictionaryValue> onc_properties(
+ network_credential.ToOncProperties());
+ // TODO(quiche): Replace with DCHECK, once ONC supports non-UTF-8 SSIDs.
+ // crbug.com/432546
+ if (!onc_properties) {
+ LOG(ERROR) << "Failed to generate ONC properties for "
+ << network_credential.ToString();
+ return;
+ }
+
+ managed_network_configuration_handler_
+ ->CreateConfiguration(
+ user_hash_,
+ *onc_properties,
+ chromeos::network_handler::StringResultCallback(),
+ base::Bind(OnCreateConfigurationFailed, network_credential));
+}
+
+} // namespace wifi_sync