| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 // Most of this code is copied from: | 5 // Most of this code is copied from: |
| 6 // src/chrome/browser/policy/asynchronous_policy_loader.{h,cc} | 6 // src/chrome/browser/policy/asynchronous_policy_loader.{h,cc} |
| 7 | 7 |
| 8 #include "remoting/host/policy_watcher.h" | 8 #include "remoting/host/policy_watcher.h" |
| 9 | 9 |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 | 151 |
| 152 // Listen for future policy changes. | 152 // Listen for future policy changes. |
| 153 policy_service_->AddObserver(policy::POLICY_DOMAIN_CHROME, this); | 153 policy_service_->AddObserver(policy::POLICY_DOMAIN_CHROME, this); |
| 154 | 154 |
| 155 // Process current policy state. | 155 // Process current policy state. |
| 156 if (policy_service_->IsInitializationComplete(policy::POLICY_DOMAIN_CHROME)) { | 156 if (policy_service_->IsInitializationComplete(policy::POLICY_DOMAIN_CHROME)) { |
| 157 OnPolicyServiceInitialized(policy::POLICY_DOMAIN_CHROME); | 157 OnPolicyServiceInitialized(policy::POLICY_DOMAIN_CHROME); |
| 158 } | 158 } |
| 159 } | 159 } |
| 160 | 160 |
| 161 std::unique_ptr<base::DictionaryValue> PolicyWatcher::GetCurrentPolicies() { |
| 162 // If |old_policies_| is empty, then the PolicyService has not yet provided |
| 163 // policies, so just return the default values. Otherwise, |old_policies_| |
| 164 // already contains all the supported policies, defaults and overrides. |
| 165 return old_policies_->size() == 0 ? GetDefaultPolicies() |
| 166 : old_policies_->CreateDeepCopy(); |
| 167 } |
| 168 |
| 169 std::unique_ptr<base::DictionaryValue> PolicyWatcher::GetDefaultPolicies() { |
| 170 auto result = base::MakeUnique<base::DictionaryValue>(); |
| 171 result->SetBoolean(key::kRemoteAccessHostFirewallTraversal, true); |
| 172 result->SetBoolean(key::kRemoteAccessHostRequireCurtain, false); |
| 173 result->SetBoolean(key::kRemoteAccessHostMatchUsername, false); |
| 174 result->Set(key::kRemoteAccessHostClientDomainList, |
| 175 base::MakeUnique<base::ListValue>()); |
| 176 result->Set(key::kRemoteAccessHostDomainList, |
| 177 base::MakeUnique<base::ListValue>()); |
| 178 result->SetString(key::kRemoteAccessHostTalkGadgetPrefix, |
| 179 kDefaultHostTalkGadgetPrefix); |
| 180 result->SetString(key::kRemoteAccessHostTokenUrl, std::string()); |
| 181 result->SetString(key::kRemoteAccessHostTokenValidationUrl, std::string()); |
| 182 result->SetString(key::kRemoteAccessHostTokenValidationCertificateIssuer, |
| 183 std::string()); |
| 184 result->SetBoolean(key::kRemoteAccessHostAllowClientPairing, true); |
| 185 result->SetBoolean(key::kRemoteAccessHostAllowGnubbyAuth, true); |
| 186 result->SetBoolean(key::kRemoteAccessHostAllowRelayedConnection, true); |
| 187 result->SetString(key::kRemoteAccessHostUdpPortRange, ""); |
| 188 result->SetBoolean(key::kRemoteAccessHostAllowUiAccessForRemoteAssistance, |
| 189 false); |
| 190 return result; |
| 191 } |
| 192 |
| 161 void PolicyWatcher::SignalPolicyError() { | 193 void PolicyWatcher::SignalPolicyError() { |
| 162 old_policies_->Clear(); | 194 old_policies_->Clear(); |
| 163 policy_error_callback_.Run(); | 195 policy_error_callback_.Run(); |
| 164 } | 196 } |
| 165 | 197 |
| 166 PolicyWatcher::PolicyWatcher( | 198 PolicyWatcher::PolicyWatcher( |
| 167 policy::PolicyService* policy_service, | 199 policy::PolicyService* policy_service, |
| 168 std::unique_ptr<policy::PolicyService> owned_policy_service, | 200 std::unique_ptr<policy::PolicyService> owned_policy_service, |
| 169 std::unique_ptr<policy::ConfigurationPolicyProvider> owned_policy_provider, | 201 std::unique_ptr<policy::ConfigurationPolicyProvider> owned_policy_provider, |
| 170 std::unique_ptr<policy::SchemaRegistry> owned_schema_registry) | 202 std::unique_ptr<policy::SchemaRegistry> owned_schema_registry) |
| 171 : old_policies_(new base::DictionaryValue()), | 203 : old_policies_(new base::DictionaryValue()), |
| 172 default_values_(new base::DictionaryValue()), | 204 default_values_(GetDefaultPolicies()), |
| 173 policy_service_(policy_service), | 205 policy_service_(policy_service), |
| 174 owned_schema_registry_(std::move(owned_schema_registry)), | 206 owned_schema_registry_(std::move(owned_schema_registry)), |
| 175 owned_policy_provider_(std::move(owned_policy_provider)), | 207 owned_policy_provider_(std::move(owned_policy_provider)), |
| 176 owned_policy_service_(std::move(owned_policy_service)) { | 208 owned_policy_service_(std::move(owned_policy_service)) { |
| 177 DCHECK(policy_service_); | 209 DCHECK(policy_service_); |
| 178 DCHECK(owned_schema_registry_); | 210 DCHECK(owned_schema_registry_); |
| 179 | |
| 180 // Initialize the default values for each policy. | |
| 181 default_values_->SetBoolean(key::kRemoteAccessHostFirewallTraversal, true); | |
| 182 default_values_->SetBoolean(key::kRemoteAccessHostRequireCurtain, false); | |
| 183 default_values_->SetBoolean(key::kRemoteAccessHostMatchUsername, false); | |
| 184 default_values_->Set(key::kRemoteAccessHostClientDomainList, | |
| 185 base::MakeUnique<base::ListValue>()); | |
| 186 default_values_->Set(key::kRemoteAccessHostDomainList, | |
| 187 base::MakeUnique<base::ListValue>()); | |
| 188 default_values_->SetString(key::kRemoteAccessHostTalkGadgetPrefix, | |
| 189 kDefaultHostTalkGadgetPrefix); | |
| 190 default_values_->SetString(key::kRemoteAccessHostTokenUrl, std::string()); | |
| 191 default_values_->SetString(key::kRemoteAccessHostTokenValidationUrl, | |
| 192 std::string()); | |
| 193 default_values_->SetString( | |
| 194 key::kRemoteAccessHostTokenValidationCertificateIssuer, std::string()); | |
| 195 default_values_->SetBoolean(key::kRemoteAccessHostAllowClientPairing, true); | |
| 196 default_values_->SetBoolean(key::kRemoteAccessHostAllowGnubbyAuth, true); | |
| 197 default_values_->SetBoolean(key::kRemoteAccessHostAllowRelayedConnection, | |
| 198 true); | |
| 199 default_values_->SetString(key::kRemoteAccessHostUdpPortRange, ""); | |
| 200 default_values_->SetBoolean( | |
| 201 key::kRemoteAccessHostAllowUiAccessForRemoteAssistance, false); | |
| 202 } | 211 } |
| 203 | 212 |
| 204 PolicyWatcher::~PolicyWatcher() { | 213 PolicyWatcher::~PolicyWatcher() { |
| 205 // Stop observing |policy_service_| if StartWatching() has been called. | 214 // Stop observing |policy_service_| if StartWatching() has been called. |
| 206 if (!policy_updated_callback_.is_null()) { | 215 if (!policy_updated_callback_.is_null()) { |
| 207 policy_service_->RemoveObserver(policy::POLICY_DOMAIN_CHROME, this); | 216 policy_service_->RemoveObserver(policy::POLICY_DOMAIN_CHROME, this); |
| 208 } | 217 } |
| 209 | 218 |
| 210 if (owned_policy_provider_) { | 219 if (owned_policy_provider_) { |
| 211 owned_policy_provider_->Shutdown(); | 220 owned_policy_provider_->Shutdown(); |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 423 return PolicyWatcher::CreateFromPolicyLoader(std::move(policy_loader)); | 432 return PolicyWatcher::CreateFromPolicyLoader(std::move(policy_loader)); |
| 424 #endif // !(OS_CHROMEOS) | 433 #endif // !(OS_CHROMEOS) |
| 425 } | 434 } |
| 426 | 435 |
| 427 std::unique_ptr<PolicyWatcher> PolicyWatcher::CreateFromPolicyLoaderForTesting( | 436 std::unique_ptr<PolicyWatcher> PolicyWatcher::CreateFromPolicyLoaderForTesting( |
| 428 std::unique_ptr<policy::AsyncPolicyLoader> async_policy_loader) { | 437 std::unique_ptr<policy::AsyncPolicyLoader> async_policy_loader) { |
| 429 return CreateFromPolicyLoader(std::move(async_policy_loader)); | 438 return CreateFromPolicyLoader(std::move(async_policy_loader)); |
| 430 } | 439 } |
| 431 | 440 |
| 432 } // namespace remoting | 441 } // namespace remoting |
| OLD | NEW |