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

Unified Diff: components/policy/core/common/policy_loader_mac.cc

Issue 830193002: Using PolicyServiceWatcher instead of PolicyWatcherLinux/Win/Mac. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebasing... Created 5 years, 11 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: components/policy/core/common/policy_loader_mac.cc
diff --git a/components/policy/core/common/policy_loader_mac.cc b/components/policy/core/common/policy_loader_mac.cc
deleted file mode 100644
index 04e6314887de0c770a925f585ae71b6f8a9a14b2..0000000000000000000000000000000000000000
--- a/components/policy/core/common/policy_loader_mac.cc
+++ /dev/null
@@ -1,160 +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 "components/policy/core/common/policy_loader_mac.h"
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/callback.h"
-#include "base/files/file_util.h"
-#include "base/mac/foundation_util.h"
-#include "base/mac/scoped_cftyperef.h"
-#include "base/sequenced_task_runner.h"
-#include "base/strings/sys_string_conversions.h"
-#include "base/values.h"
-#include "components/policy/core/common/external_data_fetcher.h"
-#include "components/policy/core/common/mac_util.h"
-#include "components/policy/core/common/policy_bundle.h"
-#include "components/policy/core/common/policy_load_status.h"
-#include "components/policy/core/common/policy_map.h"
-#include "components/policy/core/common/preferences_mac.h"
-#include "components/policy/core/common/schema.h"
-#include "components/policy/core/common/schema_map.h"
-
-using base::ScopedCFTypeRef;
-
-namespace policy {
-
-PolicyLoaderMac::PolicyLoaderMac(
- scoped_refptr<base::SequencedTaskRunner> task_runner,
- const base::FilePath& managed_policy_path,
- MacPreferences* preferences)
- : AsyncPolicyLoader(task_runner),
- preferences_(preferences),
- managed_policy_path_(managed_policy_path) {}
-
-PolicyLoaderMac::~PolicyLoaderMac() {}
-
-void PolicyLoaderMac::InitOnBackgroundThread() {
- if (!managed_policy_path_.empty()) {
- watcher_.Watch(
- managed_policy_path_, false,
- base::Bind(&PolicyLoaderMac::OnFileUpdated, base::Unretained(this)));
- }
-}
-
-scoped_ptr<PolicyBundle> PolicyLoaderMac::Load() {
- preferences_->AppSynchronize(kCFPreferencesCurrentApplication);
- scoped_ptr<PolicyBundle> bundle(new PolicyBundle());
-
- // Load Chrome's policy.
- PolicyMap& chrome_policy =
- bundle->Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()));
-
- PolicyLoadStatusSample status;
- bool policy_present = false;
- const Schema* schema =
- schema_map()->GetSchema(PolicyNamespace(POLICY_DOMAIN_CHROME, ""));
- for (Schema::Iterator it = schema->GetPropertiesIterator();
- !it.IsAtEnd(); it.Advance()) {
- base::ScopedCFTypeRef<CFStringRef> name(
- base::SysUTF8ToCFStringRef(it.key()));
- base::ScopedCFTypeRef<CFPropertyListRef> value(
- preferences_->CopyAppValue(name, kCFPreferencesCurrentApplication));
- if (!value.get())
- continue;
- policy_present = true;
- bool forced =
- preferences_->AppValueIsForced(name, kCFPreferencesCurrentApplication);
- PolicyLevel level = forced ? POLICY_LEVEL_MANDATORY :
- POLICY_LEVEL_RECOMMENDED;
- // TODO(joaodasilva): figure the policy scope.
- scoped_ptr<base::Value> policy = PropertyToValue(value);
- if (policy) {
- chrome_policy.Set(
- it.key(), level, POLICY_SCOPE_USER, policy.release(), NULL);
- } else {
- status.Add(POLICY_LOAD_STATUS_PARSE_ERROR);
- }
- }
-
- if (!policy_present)
- status.Add(POLICY_LOAD_STATUS_NO_POLICY);
-
- // Load policy for the registered components.
- LoadPolicyForDomain(POLICY_DOMAIN_EXTENSIONS, "extensions", bundle.get());
-
- return bundle.Pass();
-}
-
-base::Time PolicyLoaderMac::LastModificationTime() {
- base::File::Info file_info;
- if (!base::GetFileInfo(managed_policy_path_, &file_info) ||
- file_info.is_directory) {
- return base::Time();
- }
-
- return file_info.last_modified;
-}
-
-void PolicyLoaderMac::LoadPolicyForDomain(
- PolicyDomain domain,
- const std::string& domain_name,
- PolicyBundle* bundle) {
- std::string id_prefix(base::mac::BaseBundleID());
- id_prefix.append(".").append(domain_name).append(".");
-
- const ComponentMap* components = schema_map()->GetComponents(domain);
- if (!components)
- return;
-
- for (ComponentMap::const_iterator it = components->begin();
- it != components->end(); ++it) {
- PolicyMap policy;
- LoadPolicyForComponent(id_prefix + it->first, it->second, &policy);
- if (!policy.empty())
- bundle->Get(PolicyNamespace(domain, it->first)).Swap(&policy);
- }
-}
-
-void PolicyLoaderMac::LoadPolicyForComponent(
- const std::string& bundle_id_string,
- const Schema& schema,
- PolicyMap* policy) {
- // TODO(joaodasilva): Extensions may be registered in a ComponentMap
- // without a schema, to allow a graceful update of the Legacy Browser Support
- // extension on Windows. Remove this check once that support is removed.
- if (!schema.valid())
- return;
-
- base::ScopedCFTypeRef<CFStringRef> bundle_id(
- base::SysUTF8ToCFStringRef(bundle_id_string));
- preferences_->AppSynchronize(bundle_id);
-
- for (Schema::Iterator it = schema.GetPropertiesIterator();
- !it.IsAtEnd(); it.Advance()) {
- base::ScopedCFTypeRef<CFStringRef> pref_name(
- base::SysUTF8ToCFStringRef(it.key()));
- base::ScopedCFTypeRef<CFPropertyListRef> value(
- preferences_->CopyAppValue(pref_name, bundle_id));
- if (!value.get())
- continue;
- bool forced =
- preferences_->AppValueIsForced(pref_name, bundle_id);
- PolicyLevel level = forced ? POLICY_LEVEL_MANDATORY :
- POLICY_LEVEL_RECOMMENDED;
- scoped_ptr<base::Value> policy_value = PropertyToValue(value);
- if (policy_value) {
- policy->Set(it.key(), level, POLICY_SCOPE_USER,
- policy_value.release(), NULL);
- }
- }
-}
-
-void PolicyLoaderMac::OnFileUpdated(const base::FilePath& path, bool error) {
- if (!error)
- Reload(false);
-}
-
-} // namespace policy
« no previous file with comments | « components/policy/core/common/policy_loader_mac.h ('k') | components/policy/core/common/policy_loader_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698