1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ash/net/network_pref_state_observer.h"
#include "chrome/browser/ash/profiles/profile_helper.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/sync/wifi_configuration_sync_service_factory.h"
#include "chromeos/ash/components/install_attributes/install_attributes.h"
#include "chromeos/ash/components/network/network_handler.h"
#include "chromeos/ash/components/network/network_metadata_store.h"
#include "chromeos/ash/components/sync_wifi/wifi_configuration_sync_service.h"
#include "components/prefs/pref_service.h"
namespace ash {
namespace {
void InitializeNetworkPrefServices(Profile* profile, PrefService* local_state) {
NetworkHandler::Get()->InitializePrefServices(
profile ? profile->GetPrefs() : nullptr, local_state);
}
} // namespace
NetworkPrefStateObserver::NetworkPrefStateObserver(PrefService& local_state)
: local_state_(local_state) {
// Initialize NetworkHandler with device prefs only.
InitializeNetworkPrefServices(/*profile=*/nullptr, &local_state);
session_observation_.Observe(session_manager::SessionManager::Get());
}
NetworkPrefStateObserver::~NetworkPrefStateObserver() {
NetworkHandler::Get()->ShutdownPrefServices();
}
void NetworkPrefStateObserver::OnUserProfileLoaded(
const AccountId& account_id) {
Profile* profile = ProfileHelper::Get()->GetProfileByAccountId(account_id);
CHECK(profile);
// Reinitialize the NetworkHandler's pref service when the primary user logs
// in. Other profiles are ignored because only the primary user's network
// configuration is used on Chrome OS.
if (ProfileHelper::IsPrimaryProfile(profile)) {
NetworkHandler::Get()->SetIsEnterpriseManaged(
InstallAttributes::Get()->IsEnterpriseManaged());
InitializeNetworkPrefServices(profile, &local_state_.get());
session_observation_.Reset();
auto* wifi_sync_service =
WifiConfigurationSyncServiceFactory::GetForProfile(profile,
/*create=*/false);
if (wifi_sync_service) {
wifi_sync_service->SetNetworkMetadataStore(
NetworkHandler::Get()->network_metadata_store()->GetWeakPtr());
}
}
}
} // namespace ash
|