15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/policy/core/common/policy_provider_android.h" 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/policy/core/common/policy_provider_android_delegate.h" 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace policy { 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace { 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool g_wait_for_policies = false; 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PolicyProviderAndroid::PolicyProviderAndroid() 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) : delegate_(NULL), 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) initialized_(!g_wait_for_policies) {} 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)PolicyProviderAndroid::~PolicyProviderAndroid() {} 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)const Schema* PolicyProviderAndroid::GetChromeSchema() const { 23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) PolicyNamespace ns(POLICY_DOMAIN_CHROME, std::string()); 24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return schema_map()->GetSchema(ns); 25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// static 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void PolicyProviderAndroid::SetShouldWaitForPolicy( 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool should_wait_for_policy) { 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) g_wait_for_policies = should_wait_for_policy; 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void PolicyProviderAndroid::SetDelegate( 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PolicyProviderAndroidDelegate* delegate) { 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) delegate_ = delegate; 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void PolicyProviderAndroid::SetPolicies(scoped_ptr<PolicyBundle> policy) { 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) initialized_ = true; 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) UpdatePolicy(policy.Pass()); 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void PolicyProviderAndroid::Shutdown() { 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (delegate_) 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) delegate_->PolicyProviderShutdown(); 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ConfigurationPolicyProvider::Shutdown(); 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool PolicyProviderAndroid::IsInitializationComplete( 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PolicyDomain domain) const { 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return initialized_; 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void PolicyProviderAndroid::RefreshPolicies() { 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (delegate_) { 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) delegate_->RefreshPolicies(); 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } else { 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // If we don't have a delegate, pass a copy of the current policies. 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_ptr<PolicyBundle> bundle(new PolicyBundle()); 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bundle->CopyFrom(policies()); 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) UpdatePolicy(bundle.Pass()); 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace policy 67