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

Side by Side Diff: chrome/browser/chromeos/policy/device_local_account_policy_provider.cc

Issue 2714493002: Load DeviceLocalAccount policy and DeviceSettings immediately on restore after Chrome crash. (Closed)
Patch Set: wrap Validator in unique_ptr Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/policy/device_local_account_policy_provider.h" 5 #include "chrome/browser/chromeos/policy/device_local_account_policy_provider.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 27 matching lines...) Expand all
38 } 38 }
39 39
40 DeviceLocalAccountPolicyProvider::~DeviceLocalAccountPolicyProvider() { 40 DeviceLocalAccountPolicyProvider::~DeviceLocalAccountPolicyProvider() {
41 service_->RemoveObserver(this); 41 service_->RemoveObserver(this);
42 } 42 }
43 43
44 // static 44 // static
45 std::unique_ptr<DeviceLocalAccountPolicyProvider> 45 std::unique_ptr<DeviceLocalAccountPolicyProvider>
46 DeviceLocalAccountPolicyProvider::Create( 46 DeviceLocalAccountPolicyProvider::Create(
47 const std::string& user_id, 47 const std::string& user_id,
48 DeviceLocalAccountPolicyService* device_local_account_policy_service) { 48 DeviceLocalAccountPolicyService* device_local_account_policy_service,
49 bool force_immediate_load) {
49 DeviceLocalAccount::Type type; 50 DeviceLocalAccount::Type type;
50 if (!device_local_account_policy_service || 51 if (!device_local_account_policy_service ||
51 !IsDeviceLocalAccountUser(user_id, &type)) { 52 !IsDeviceLocalAccountUser(user_id, &type)) {
52 return std::unique_ptr<DeviceLocalAccountPolicyProvider>(); 53 return std::unique_ptr<DeviceLocalAccountPolicyProvider>();
53 } 54 }
54 55
55 std::unique_ptr<PolicyMap> chrome_policy_overrides; 56 std::unique_ptr<PolicyMap> chrome_policy_overrides;
56 if (type == DeviceLocalAccount::TYPE_PUBLIC_SESSION) { 57 if (type == DeviceLocalAccount::TYPE_PUBLIC_SESSION) {
57 chrome_policy_overrides.reset(new PolicyMap()); 58 chrome_policy_overrides.reset(new PolicyMap());
58 59
(...skipping 23 matching lines...) Expand all
82 chrome_policy_overrides->Set( 83 chrome_policy_overrides->Set(
83 key::kFullscreenAllowed, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, 84 key::kFullscreenAllowed, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
84 POLICY_SOURCE_PUBLIC_SESSION_OVERRIDE, 85 POLICY_SOURCE_PUBLIC_SESSION_OVERRIDE,
85 base::MakeUnique<base::FundamentalValue>(false), nullptr); 86 base::MakeUnique<base::FundamentalValue>(false), nullptr);
86 } 87 }
87 88
88 std::unique_ptr<DeviceLocalAccountPolicyProvider> provider( 89 std::unique_ptr<DeviceLocalAccountPolicyProvider> provider(
89 new DeviceLocalAccountPolicyProvider(user_id, 90 new DeviceLocalAccountPolicyProvider(user_id,
90 device_local_account_policy_service, 91 device_local_account_policy_service,
91 std::move(chrome_policy_overrides))); 92 std::move(chrome_policy_overrides)));
93 // In case of restore-after-restart broker should already be initialized.
94 if (force_immediate_load && provider->GetBroker())
95 provider->GetBroker()->LoadImmediately();
92 return provider; 96 return provider;
93 } 97 }
94 98
95 bool DeviceLocalAccountPolicyProvider::IsInitializationComplete( 99 bool DeviceLocalAccountPolicyProvider::IsInitializationComplete(
96 PolicyDomain domain) const { 100 PolicyDomain domain) const {
97 if (domain == POLICY_DOMAIN_CHROME) 101 if (domain == POLICY_DOMAIN_CHROME)
98 return store_initialized_; 102 return store_initialized_;
99 if (ComponentCloudPolicyService::SupportsDomain(domain) && 103 if (ComponentCloudPolicyService::SupportsDomain(domain) &&
100 GetBroker() && GetBroker()->component_policy_service()) { 104 GetBroker() && GetBroker()->component_policy_service()) {
101 return GetBroker()->component_policy_service()->is_initialized(); 105 return GetBroker()->component_policy_service()->is_initialized();
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 const PolicyMap::Entry& entry = policy_override.second; 175 const PolicyMap::Entry& entry = policy_override.second;
172 chrome_policy.Set(policy_override.first, entry.level, entry.scope, 176 chrome_policy.Set(policy_override.first, entry.level, entry.scope,
173 entry.source, entry.value->CreateDeepCopy(), nullptr); 177 entry.source, entry.value->CreateDeepCopy(), nullptr);
174 } 178 }
175 } 179 }
176 180
177 UpdatePolicy(std::move(bundle)); 181 UpdatePolicy(std::move(bundle));
178 } 182 }
179 183
180 } // namespace policy 184 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698