diff options
author | quiche <quiche@chromium.org> | 2015-01-16 16:35:22 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-01-17 00:36:23 +0000 |
commit | 9d40dcfee9aa0ca890d187df2b31365e6c96878f (patch) | |
tree | 09e9754352023e671bdd9e501df32ab13f6197cc /components/wifi_sync/wifi_config_delegate_chromeos.cc | |
parent | 4069d9b15ca7d8744728161df7e70945cfb8cccc (diff) | |
download | chromium_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.cc | 61 |
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 |