| Index: components/wifi_sync/wifi_credential_syncable_service_factory.cc
|
| diff --git a/components/wifi_sync/wifi_credential_syncable_service_factory.cc b/components/wifi_sync/wifi_credential_syncable_service_factory.cc
|
| index cf3b46020cc7d1c61b50313e0da097190e90d282..e2ce0e4788edc199197591b1e20998ee4bf16d86 100644
|
| --- a/components/wifi_sync/wifi_credential_syncable_service_factory.cc
|
| +++ b/components/wifi_sync/wifi_credential_syncable_service_factory.cc
|
| @@ -7,9 +7,12 @@
|
| #include "base/logging.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "components/keyed_service/content/browser_context_dependency_manager.h"
|
| +#include "components/wifi_sync/wifi_config_delegate.h"
|
| #include "components/wifi_sync/wifi_credential_syncable_service.h"
|
| +#include "content/public/browser/browser_context.h"
|
|
|
| #if defined(OS_CHROMEOS)
|
| +#include "base/files/file_path.h"
|
| #include "chromeos/login/login_state.h"
|
| #include "chromeos/network/network_handler.h"
|
| #include "components/wifi_sync/wifi_config_delegate_chromeos.h"
|
| @@ -17,31 +20,6 @@
|
|
|
| namespace wifi_sync {
|
|
|
| -namespace {
|
| -
|
| -scoped_ptr<WifiConfigDelegate> BuildConfigDelegate(
|
| - content::BrowserContext* context) {
|
| -#if defined(OS_CHROMEOS)
|
| - const chromeos::LoginState* login_state = chromeos::LoginState::Get();
|
| - DCHECK(login_state->IsUserLoggedIn());
|
| - DCHECK(!login_state->primary_user_hash().empty());
|
| - // TODO(quiche): Verify that |context| is the primary user's context.
|
| -
|
| - // Note: NetworkHandler is a singleton that is managed by
|
| - // ChromeBrowserMainPartsChromeos, and destroyed after all
|
| - // KeyedService instances are destroyed.
|
| - chromeos::NetworkHandler* network_handler = chromeos::NetworkHandler::Get();
|
| - return make_scoped_ptr(new WifiConfigDelegateChromeOs(
|
| - login_state->primary_user_hash(),
|
| - network_handler->managed_network_configuration_handler()));
|
| -#else
|
| - NOTREACHED();
|
| - return nullptr;
|
| -#endif
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| // static
|
| WifiCredentialSyncableService*
|
| WifiCredentialSyncableServiceFactory::GetForBrowserContext(
|
| @@ -56,12 +34,19 @@ WifiCredentialSyncableServiceFactory::GetInstance() {
|
| return Singleton<WifiCredentialSyncableServiceFactory>::get();
|
| }
|
|
|
| +#if defined(OS_CHROMEOS)
|
| +void WifiCredentialSyncableServiceFactory::IgnoreLoginStateForTest() {
|
| + use_login_state_chrome_os_ = false;
|
| +}
|
| +#endif
|
| +
|
| // Private methods.
|
|
|
| WifiCredentialSyncableServiceFactory::WifiCredentialSyncableServiceFactory()
|
| : BrowserContextKeyedServiceFactory(
|
| "WifiCredentialSyncableService",
|
| - BrowserContextDependencyManager::GetInstance()) {
|
| + BrowserContextDependencyManager::GetInstance()),
|
| + use_login_state_chrome_os_(true) {
|
| }
|
|
|
| WifiCredentialSyncableServiceFactory::~WifiCredentialSyncableServiceFactory() {
|
| @@ -71,7 +56,40 @@ KeyedService* WifiCredentialSyncableServiceFactory::BuildServiceInstanceFor(
|
| content::BrowserContext* context) const {
|
| // TODO(quiche): Figure out if this behaves properly for multi-profile.
|
| // crbug.com/430681.
|
| - return new WifiCredentialSyncableService(BuildConfigDelegate(context));
|
| +#if defined(OS_CHROMEOS)
|
| + return new WifiCredentialSyncableService(
|
| + BuildWifiConfigDelegateChromeOs(context));
|
| +#else
|
| + NOTREACHED();
|
| + return nullptr;
|
| +#endif
|
| }
|
|
|
| +#if defined(OS_CHROMEOS)
|
| +scoped_ptr<WifiConfigDelegate>
|
| +WifiCredentialSyncableServiceFactory::BuildWifiConfigDelegateChromeOs(
|
| + content::BrowserContext* context) const {
|
| + // Note: NetworkHandler is a singleton that is managed by
|
| + // ChromeBrowserMainPartsChromeos, and destroyed after all
|
| + // KeyedService instances are destroyed.
|
| + chromeos::NetworkHandler* network_handler = chromeos::NetworkHandler::Get();
|
| + return make_scoped_ptr(new WifiConfigDelegateChromeOs(
|
| + GetUserHash(context),
|
| + network_handler->managed_network_configuration_handler()));
|
| +}
|
| +
|
| +std::string WifiCredentialSyncableServiceFactory::GetUserHash(
|
| + content::BrowserContext* context) const {
|
| + if (use_login_state_chrome_os_) {
|
| + const chromeos::LoginState* login_state = chromeos::LoginState::Get();
|
| + DCHECK(login_state->IsUserLoggedIn());
|
| + DCHECK(!login_state->primary_user_hash().empty());
|
| + // TODO(quiche): Verify that |context| is the primary user's context.
|
| + return login_state->primary_user_hash();
|
| + } else {
|
| + return context->GetPath().BaseName().value();
|
| + }
|
| +}
|
| +#endif
|
| +
|
| } // namespace wifi_sync
|
|
|