Index: trunk/src/chrome/browser/chromeos/extensions/device_local_account_external_policy_loader.cc |
=================================================================== |
--- trunk/src/chrome/browser/chromeos/extensions/device_local_account_external_policy_loader.cc (revision 229896) |
+++ trunk/src/chrome/browser/chromeos/extensions/device_local_account_external_policy_loader.cc (working copy) |
@@ -1,114 +0,0 @@ |
-// Copyright 2013 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/chromeos/extensions/device_local_account_external_policy_loader.h" |
- |
-#include "base/callback.h" |
-#include "base/logging.h" |
-#include "base/prefs/pref_value_map.h" |
-#include "base/values.h" |
-#include "chrome/browser/browser_process.h" |
-#include "chrome/browser/policy/configuration_policy_handler.h" |
-#include "chrome/browser/policy/policy_map.h" |
-#include "net/url_request/url_request_context_getter.h" |
- |
-namespace chromeos { |
- |
-namespace { |
- |
-// A dummy pref name under which policy::ExtensionInstallForcelistPolicyHandler |
-// can store the parsed list of force-installed extensions. |
-const char kExtensionInstallForcelist[] = "forcelist"; |
- |
-} // namespace |
- |
-DeviceLocalAccountExternalPolicyLoader:: |
- DeviceLocalAccountExternalPolicyLoader(policy::CloudPolicyStore* store, |
- const base::FilePath& cache_dir) |
- : store_(store), |
- cache_dir_(cache_dir) { |
-} |
- |
-bool DeviceLocalAccountExternalPolicyLoader::IsCacheRunning() const { |
- return external_cache_; |
-} |
- |
-void DeviceLocalAccountExternalPolicyLoader::StartCache( |
- const scoped_refptr<base::SequencedTaskRunner>& cache_task_runner) { |
- DCHECK(!external_cache_); |
- store_->AddObserver(this); |
- external_cache_.reset(new ExternalCache( |
- cache_dir_, |
- g_browser_process->system_request_context(), |
- cache_task_runner, |
- this, |
- true /* always_check_updates */, |
- false /* wait_for_cache_initialization */)); |
- |
- if (store_->is_initialized()) |
- UpdateExtensionListFromStore(); |
-} |
- |
-void DeviceLocalAccountExternalPolicyLoader::StopCache( |
- const base::Closure& callback) { |
- if (external_cache_) { |
- external_cache_->Shutdown(callback); |
- external_cache_.reset(); |
- store_->RemoveObserver(this); |
- } |
- |
- base::DictionaryValue empty_prefs; |
- OnExtensionListsUpdated(&empty_prefs); |
-} |
- |
-void DeviceLocalAccountExternalPolicyLoader::StartLoading() { |
- if (prefs_) |
- LoadFinished(); |
-} |
- |
-void DeviceLocalAccountExternalPolicyLoader::OnStoreLoaded( |
- policy::CloudPolicyStore* store) { |
- DCHECK(external_cache_); |
- DCHECK_EQ(store_, store); |
- UpdateExtensionListFromStore(); |
-} |
- |
-void DeviceLocalAccountExternalPolicyLoader::OnStoreError( |
- policy::CloudPolicyStore* store) { |
- DCHECK(external_cache_); |
- DCHECK_EQ(store_, store); |
-} |
- |
-void DeviceLocalAccountExternalPolicyLoader::OnExtensionListsUpdated( |
- const base::DictionaryValue* prefs) { |
- DCHECK(external_cache_ || prefs->empty()); |
- prefs_.reset(prefs->DeepCopy()); |
- LoadFinished(); |
-} |
- |
-DeviceLocalAccountExternalPolicyLoader:: |
- ~DeviceLocalAccountExternalPolicyLoader() { |
- DCHECK(!external_cache_); |
-} |
- |
-void DeviceLocalAccountExternalPolicyLoader::UpdateExtensionListFromStore() { |
- scoped_ptr<base::DictionaryValue> prefs(new base::DictionaryValue); |
- const policy::PolicyMap& policy_map = store_->policy_map(); |
- policy::ExtensionInstallForcelistPolicyHandler |
- policy_handler(kExtensionInstallForcelist); |
- if (policy_handler.CheckPolicySettings(policy_map, NULL)) { |
- PrefValueMap pref_value_map; |
- policy_handler.ApplyPolicySettings(policy_map, &pref_value_map); |
- const base::Value* value = NULL; |
- const base::DictionaryValue* dict = NULL; |
- if (pref_value_map.GetValue(kExtensionInstallForcelist, &value) && |
- value->GetAsDictionary(&dict)) { |
- prefs.reset(dict->DeepCopy()); |
- } |
- } |
- |
- external_cache_->UpdateExtensionsList(prefs.Pass()); |
-} |
- |
-} // namespace chromeos |