Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2283)

Unified Diff: chrome/browser/policy/device_local_account_policy_service.cc

Issue 12189011: Split up chrome/browser/policy subdirectory (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase, add chrome/browser/chromeos/policy/OWNERS Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/policy/device_local_account_policy_service.cc
diff --git a/chrome/browser/policy/device_local_account_policy_service.cc b/chrome/browser/policy/device_local_account_policy_service.cc
deleted file mode 100644
index 69de8e3e17f60f7a84e03d012233254ae116c6f2..0000000000000000000000000000000000000000
--- a/chrome/browser/policy/device_local_account_policy_service.cc
+++ /dev/null
@@ -1,258 +0,0 @@
-// Copyright (c) 2012 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 "chrome/browser/policy/device_local_account_policy_service.h"
-
-#include "base/logging.h"
-#include "base/message_loop.h"
-#include "chrome/browser/policy/cloud_policy_client.h"
-#include "chrome/browser/policy/cloud_policy_constants.h"
-#include "chrome/browser/policy/cloud_policy_refresh_scheduler.h"
-#include "chrome/browser/policy/device_local_account_policy_store.h"
-#include "chrome/browser/policy/device_management_service.h"
-#include "chrome/browser/policy/proto/chrome_device_policy.pb.h"
-#include "chrome/browser/policy/proto/device_management_backend.pb.h"
-#include "chromeos/dbus/session_manager_client.h"
-#include "policy/policy_constants.h"
-
-namespace em = enterprise_management;
-
-namespace policy {
-
-DeviceLocalAccountPolicyBroker::DeviceLocalAccountPolicyBroker(
- scoped_ptr<DeviceLocalAccountPolicyStore> store)
- : store_(store.Pass()),
- core_(PolicyNamespaceKey(dm_protocol::kChromePublicAccountPolicyType,
- store_->account_id()),
- store_.get()) {}
-
-DeviceLocalAccountPolicyBroker::~DeviceLocalAccountPolicyBroker() {}
-
-const std::string& DeviceLocalAccountPolicyBroker::account_id() const {
- return store_->account_id();
-}
-
-void DeviceLocalAccountPolicyBroker::Connect(
- scoped_ptr<CloudPolicyClient> client) {
- core_.Connect(client.Pass());
- core_.StartRefreshScheduler();
- UpdateRefreshDelay();
-}
-
-void DeviceLocalAccountPolicyBroker::Disconnect() {
- core_.Disconnect();
-}
-
-void DeviceLocalAccountPolicyBroker::UpdateRefreshDelay() {
- if (core_.refresh_scheduler()) {
- const Value* policy_value =
- store_->policy_map().GetValue(key::kPolicyRefreshRate);
- int delay = 0;
- if (policy_value && policy_value->GetAsInteger(&delay))
- core_.refresh_scheduler()->SetRefreshDelay(delay);
- }
-}
-
-std::string DeviceLocalAccountPolicyBroker::GetDisplayName() const {
- std::string display_name;
- const base::Value* display_name_value =
- store_->policy_map().GetValue(policy::key::kUserDisplayName);
- if (display_name_value)
- display_name_value->GetAsString(&display_name);
- return display_name;
-}
-
-DeviceLocalAccountPolicyService::DeviceLocalAccountPolicyService(
- chromeos::SessionManagerClient* session_manager_client,
- chromeos::DeviceSettingsService* device_settings_service)
- : session_manager_client_(session_manager_client),
- device_settings_service_(device_settings_service),
- device_management_service_(NULL) {
- device_settings_service_->AddObserver(this);
- DeviceSettingsUpdated();
-}
-
-DeviceLocalAccountPolicyService::~DeviceLocalAccountPolicyService() {
- device_settings_service_->RemoveObserver(this);
- DeleteBrokers(&policy_brokers_);
-}
-
-void DeviceLocalAccountPolicyService::Connect(
- DeviceManagementService* device_management_service) {
- DCHECK(!device_management_service_);
- device_management_service_ = device_management_service;
-
- // Connect the brokers.
- for (PolicyBrokerMap::iterator broker(policy_brokers_.begin());
- broker != policy_brokers_.end(); ++broker) {
- DCHECK(!broker->second->core()->client());
- broker->second->Connect(
- CreateClientForAccount(broker->second->account_id()).Pass());
- }
-}
-
-void DeviceLocalAccountPolicyService::Disconnect() {
- DCHECK(device_management_service_);
- device_management_service_ = NULL;
-
- // Disconnect the brokers.
- for (PolicyBrokerMap::iterator broker(policy_brokers_.begin());
- broker != policy_brokers_.end(); ++broker) {
- broker->second->Disconnect();
- }
-}
-
-DeviceLocalAccountPolicyBroker*
- DeviceLocalAccountPolicyService::GetBrokerForAccount(
- const std::string& account_id) {
- PolicyBrokerMap::iterator entry = policy_brokers_.find(account_id);
- if (entry == policy_brokers_.end())
- return NULL;
-
- if (!entry->second)
- entry->second = CreateBroker(account_id).release();
-
- return entry->second;
-}
-
-bool DeviceLocalAccountPolicyService::IsPolicyAvailableForAccount(
- const std::string& account_id) {
- DeviceLocalAccountPolicyBroker* broker = GetBrokerForAccount(account_id);
- return broker && broker->core()->store()->is_managed();
-}
-
-void DeviceLocalAccountPolicyService::AddObserver(Observer* observer) {
- observers_.AddObserver(observer);
-}
-
-void DeviceLocalAccountPolicyService::RemoveObserver(Observer* observer) {
- observers_.RemoveObserver(observer);
-}
-
-void DeviceLocalAccountPolicyService::OwnershipStatusChanged() {
- // TODO(mnissler): The policy key has changed, re-fetch policy. For
- // consumer devices, re-sign the current settings and send updates to
- // session_manager.
-}
-
-void DeviceLocalAccountPolicyService::DeviceSettingsUpdated() {
- const em::ChromeDeviceSettingsProto* device_settings =
- device_settings_service_->device_settings();
- if (device_settings)
- UpdateAccountList(*device_settings);
-}
-
-void DeviceLocalAccountPolicyService::OnStoreLoaded(CloudPolicyStore* store) {
- DeviceLocalAccountPolicyBroker* broker = GetBrokerForStore(store);
- broker->UpdateRefreshDelay();
- FOR_EACH_OBSERVER(Observer, observers_,
- OnPolicyUpdated(broker->account_id()));
-}
-
-void DeviceLocalAccountPolicyService::OnStoreError(CloudPolicyStore* store) {
- DeviceLocalAccountPolicyBroker* broker = GetBrokerForStore(store);
- FOR_EACH_OBSERVER(Observer, observers_,
- OnPolicyUpdated(broker->account_id()));
-}
-
-void DeviceLocalAccountPolicyService::UpdateAccountList(
- const em::ChromeDeviceSettingsProto& device_settings) {
- using google::protobuf::RepeatedPtrField;
-
- // Update |policy_brokers_|, keeping existing entries.
- PolicyBrokerMap new_policy_brokers;
- const RepeatedPtrField<em::DeviceLocalAccountInfoProto>& accounts =
- device_settings.device_local_accounts().account();
- RepeatedPtrField<em::DeviceLocalAccountInfoProto>::const_iterator entry;
- for (entry = accounts.begin(); entry != accounts.end(); ++entry) {
- if (entry->has_id()) {
- // Sanity check for whether this account ID has already been processed.
- DeviceLocalAccountPolicyBroker*& new_broker =
- new_policy_brokers[entry->id()];
- if (new_broker) {
- LOG(WARNING) << "Duplicate public account " << entry->id();
- continue;
- }
-
- // Reuse the existing broker if present.
- DeviceLocalAccountPolicyBroker*& existing_broker =
- policy_brokers_[entry->id()];
- new_broker = existing_broker;
- existing_broker = NULL;
-
- // Fire up the cloud connection for fetching policy for the account from
- // the cloud if this is an enterprise-managed device.
- if (!new_broker || !new_broker->core()->client()) {
- scoped_ptr<CloudPolicyClient> client(
- CreateClientForAccount(entry->id()));
- if (client.get()) {
- if (!new_broker)
- new_broker = CreateBroker(entry->id()).release();
- new_broker->Connect(client.Pass());
- }
- }
- }
- }
- policy_brokers_.swap(new_policy_brokers);
- DeleteBrokers(&new_policy_brokers);
-
- FOR_EACH_OBSERVER(Observer, observers_, OnDeviceLocalAccountsChanged());
-}
-
-scoped_ptr<DeviceLocalAccountPolicyBroker>
- DeviceLocalAccountPolicyService::CreateBroker(
- const std::string& account_id) {
- scoped_ptr<DeviceLocalAccountPolicyStore> store(
- new DeviceLocalAccountPolicyStore(account_id, session_manager_client_,
- device_settings_service_));
- scoped_ptr<DeviceLocalAccountPolicyBroker> broker(
- new DeviceLocalAccountPolicyBroker(store.Pass()));
- broker->core()->store()->AddObserver(this);
- broker->core()->store()->Load();
- return broker.Pass();
-}
-
-void DeviceLocalAccountPolicyService::DeleteBrokers(PolicyBrokerMap* map) {
- for (PolicyBrokerMap::iterator broker = map->begin(); broker != map->end();
- ++broker) {
- if (broker->second) {
- broker->second->core()->store()->RemoveObserver(this);
- delete broker->second;
- }
- }
- map->clear();
-}
-
-DeviceLocalAccountPolicyBroker*
- DeviceLocalAccountPolicyService::GetBrokerForStore(
- CloudPolicyStore* store) {
- for (PolicyBrokerMap::iterator broker(policy_brokers_.begin());
- broker != policy_brokers_.end(); ++broker) {
- if (broker->second->core()->store() == store)
- return broker->second;
- }
- return NULL;
-}
-
-scoped_ptr<CloudPolicyClient>
- DeviceLocalAccountPolicyService::CreateClientForAccount(
- const std::string& account_id) {
- const em::PolicyData* policy_data = device_settings_service_->policy_data();
- if (!policy_data ||
- !policy_data->has_request_token() ||
- !policy_data->has_device_id() ||
- !device_management_service_) {
- return scoped_ptr<CloudPolicyClient>();
- }
-
- scoped_ptr<CloudPolicyClient> client(
- new CloudPolicyClient(std::string(), std::string(),
- USER_AFFILIATION_MANAGED,
- NULL, device_management_service_));
- client->SetupRegistration(policy_data->request_token(),
- policy_data->device_id());
- return client.Pass();
-}
-
-} // namespace policy

Powered by Google App Engine
This is Rietveld 408576698