Chromium Code Reviews| Index: chrome/browser/sync/test/integration/wifi_credentials_helper_chromeos.cc |
| diff --git a/chrome/browser/sync/test/integration/wifi_credentials_helper_chromeos.cc b/chrome/browser/sync/test/integration/wifi_credentials_helper_chromeos.cc |
| index 8e5400247c21808abee5edcbbdf3b236208d1440..2e1830abc011822f19d8494e60f227bde3ad4a12 100644 |
| --- a/chrome/browser/sync/test/integration/wifi_credentials_helper_chromeos.cc |
| +++ b/chrome/browser/sync/test/integration/wifi_credentials_helper_chromeos.cc |
| @@ -6,14 +6,24 @@ |
| #include <string> |
| +#include "base/bind.h" |
| #include "base/files/file_path.h" |
| #include "base/logging.h" |
| -#include "chrome/browser/profiles/profile.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "base/message_loop/message_loop.h" |
| +#include "base/strings/stringprintf.h" |
| +#include "base/values.h" |
| +#include "chromeos/dbus/dbus_thread_manager.h" |
| +#include "chromeos/dbus/shill_profile_client.h" |
| +#include "chromeos/network/managed_network_configuration_handler.h" |
| #include "chromeos/network/network_handler.h" |
| -#include "chromeos/network/network_state.h" |
| #include "chromeos/network/network_state_handler.h" |
| +#include "components/onc/onc_constants.h" |
| #include "components/wifi_sync/network_state_helper_chromeos.h" |
| -#include "components/wifi_sync/wifi_security_class.h" |
| +#include "components/wifi_sync/wifi_credential_syncable_service_factory.h" |
| +#include "content/public/browser/browser_context.h" |
| + |
| +using wifi_sync::WifiCredential; |
| using WifiCredentialSet = wifi_sync::WifiCredential::CredentialSet; |
| @@ -23,27 +33,98 @@ namespace { |
| const char kProfilePrefix[] = "/profile/"; |
| +void LogCreateConfigurationFailure( |
| + const std::string& debug_hint, |
| + const std::string& /* network_config_error_message */, |
| + scoped_ptr<base::DictionaryValue> /* network_config_error_data */) { |
| + LOG(FATAL) << debug_hint; |
| +} |
| + |
| std::string ChromeOsUserHashForBrowserContext( |
| const content::BrowserContext& context) { |
| return context.GetPath().BaseName().value(); |
| } |
| +// Return value is distinct per |context|, but otherwise arbitrary. |
| std::string ShillProfilePathForBrowserContext( |
| const content::BrowserContext& context) { |
| return kProfilePrefix + ChromeOsUserHashForBrowserContext(context); |
| } |
| -chromeos::NetworkStateHandler* GetNetworkStateHandler() { |
| - DCHECK(chromeos::NetworkHandler::Get()->network_state_handler()); |
| - return chromeos::NetworkHandler::Get()->network_state_handler(); |
| +::chromeos::ShillProfileClient::TestInterface* |
| +GetShillProfileClientTestInterface() { |
| + DCHECK(::chromeos::DBusThreadManager::Get()->GetShillProfileClient()); |
| + DCHECK(::chromeos::DBusThreadManager::Get()->GetShillProfileClient() |
| + ->GetTestInterface()); |
| + return ::chromeos::DBusThreadManager::Get()->GetShillProfileClient() |
| + ->GetTestInterface(); |
| +} |
| + |
| +::chromeos::ManagedNetworkConfigurationHandler* |
| +GetManagedNetworkConfigurationHandler() { |
| + DCHECK(::chromeos::NetworkHandler::Get() |
| + ->managed_network_configuration_handler()); |
| + return ::chromeos::NetworkHandler::Get() |
| + ->managed_network_configuration_handler(); |
| +} |
| + |
| +::chromeos::NetworkStateHandler* GetNetworkStateHandler() { |
| + DCHECK(::chromeos::NetworkHandler::Get()->network_state_handler()); |
| + return ::chromeos::NetworkHandler::Get()->network_state_handler(); |
| } |
| } // namespace |
| -WifiCredentialSet GetWifiCredentialsForProfileChromeOs(const Profile* profile) { |
| - DCHECK(profile); |
| +namespace chromeos { |
| + |
| +void SetUpChromeOs() { |
| + wifi_sync::WifiCredentialSyncableServiceFactory::GetInstance() |
| + ->IgnoreLoginStateForTest(); |
| +} |
| + |
| +void SetupClientForProfileChromeOs( |
| + const content::BrowserContext* browser_context) { |
| + DCHECK(browser_context); |
| + GetShillProfileClientTestInterface() |
| + ->AddProfile(ShillProfilePathForBrowserContext(*browser_context), |
| + ChromeOsUserHashForBrowserContext(*browser_context)); |
| + |
| + const base::ListValue policy_network_configs; |
| + const base::DictionaryValue policy_global_config; |
| + GetManagedNetworkConfigurationHandler() |
| + ->SetPolicy(onc::ONC_SOURCE_UNKNOWN, |
| + ChromeOsUserHashForBrowserContext(*browser_context), |
| + policy_network_configs, |
| + policy_global_config); |
| +} |
| + |
| +void AddWifiCredentialToProfileChromeOs( |
| + const content::BrowserContext* browser_context, |
| + const WifiCredential& credential) { |
| + DCHECK(browser_context); |
| + scoped_ptr<base::DictionaryValue> onc_properties = |
| + credential.ToOncProperties(); |
| + CHECK(onc_properties) << "Failed to generate ONC properties for " |
| + << credential.ToString(); |
| + GetManagedNetworkConfigurationHandler() |
| + ->CreateConfiguration( |
| + ChromeOsUserHashForBrowserContext(*browser_context), |
| + *onc_properties, |
| + ::chromeos::network_handler::StringResultCallback(), |
| + base::Bind(LogCreateConfigurationFailure, |
| + base::StringPrintf("Failed to add credential %s", |
| + credential.ToString().c_str()))); |
| + base::MessageLoop::current()->RunUntilIdle(); |
|
mukesh agrawal
2015/02/02 20:36:40
Needed since CreateConfiguration is asynchronous.
|
| +} |
| + |
| +WifiCredentialSet GetWifiCredentialsForProfileChromeOs( |
| + const content::BrowserContext* browser_context) { |
| + DCHECK(browser_context); |
| return wifi_sync::GetWifiCredentialsForShillProfile( |
| - GetNetworkStateHandler(), ShillProfilePathForBrowserContext(*profile)); |
| + GetNetworkStateHandler(), |
| + ShillProfilePathForBrowserContext(*browser_context)); |
| } |
| +} // namespace chromeos |
| + |
| } // namespace wifi_credentials_helper |