18bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 28bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 38bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// found in the LICENSE file. 48bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 58bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#ifndef CHROME_BROWSER_EXTENSIONS_POLICY_HANDLERS_H_ 68bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#define CHROME_BROWSER_EXTENSIONS_POLICY_HANDLERS_H_ 78bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 88bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 98bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "base/values.h" 10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/browser/configuration_policy_handler.h" 118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 128bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)namespace policy { 138bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class PolicyMap; 148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class PolicyErrorMap; 158bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} // namespace policy 168bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 178bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)namespace extensions { 188bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 198bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Implements additional checks for policies that are lists of extension IDs. 208bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class ExtensionListPolicyHandler 218bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) : public policy::TypeCheckingPolicyHandler { 228bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) public: 238bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) ExtensionListPolicyHandler(const char* policy_name, 248bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const char* pref_path, 258bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) bool allow_wildcards); 268bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual ~ExtensionListPolicyHandler(); 278bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // ConfigurationPolicyHandler methods: 298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual bool CheckPolicySettings(const policy::PolicyMap& policies, 308bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) policy::PolicyErrorMap* errors) OVERRIDE; 318bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual void ApplyPolicySettings(const policy::PolicyMap& policies, 328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) PrefValueMap* prefs) OVERRIDE; 338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) protected: 358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const char* pref_path() const; 368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Runs sanity checks on the policy value and returns it in |extension_ids|. 388bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) bool CheckAndGetList(const policy::PolicyMap& policies, 398bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) policy::PolicyErrorMap* errors, 408bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) scoped_ptr<base::ListValue>* extension_ids); 418bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 428bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) private: 438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const char* pref_path_; 448bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) bool allow_wildcards_; 458bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 468bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ExtensionListPolicyHandler); 478bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}; 488bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 498bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class ExtensionInstallForcelistPolicyHandler 508bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) : public policy::TypeCheckingPolicyHandler { 518bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) public: 528bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) ExtensionInstallForcelistPolicyHandler(); 538bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual ~ExtensionInstallForcelistPolicyHandler(); 548bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 558bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // ConfigurationPolicyHandler methods: 568bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual bool CheckPolicySettings(const policy::PolicyMap& policies, 578bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) policy::PolicyErrorMap* errors) OVERRIDE; 588bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual void ApplyPolicySettings(const policy::PolicyMap& policies, 598bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) PrefValueMap* prefs) OVERRIDE; 608bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 618bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) private: 628bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Parses the data in |policy_value| and writes them to |extension_dict|. 638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) bool ParseList(const base::Value* policy_value, 648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) base::DictionaryValue* extension_dict, 658bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) policy::PolicyErrorMap* errors); 668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 678bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ExtensionInstallForcelistPolicyHandler); 688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}; 698bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Implements additional checks for policies that are lists of extension 718bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// URLPatterns. 728bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class ExtensionURLPatternListPolicyHandler 738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) : public policy::TypeCheckingPolicyHandler { 748bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) public: 758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) ExtensionURLPatternListPolicyHandler(const char* policy_name, 768bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const char* pref_path); 778bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual ~ExtensionURLPatternListPolicyHandler(); 788bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 798bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // ConfigurationPolicyHandler methods: 808bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual bool CheckPolicySettings(const policy::PolicyMap& policies, 818bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) policy::PolicyErrorMap* errors) OVERRIDE; 828bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual void ApplyPolicySettings(const policy::PolicyMap& policies, 838bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) PrefValueMap* prefs) OVERRIDE; 848bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 858bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) private: 868bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const char* pref_path_; 878bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 888bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ExtensionURLPatternListPolicyHandler); 898bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}; 908bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 918bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} // namespace extensions 928bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 938bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif // CHROME_BROWSER_EXTENSIONS_POLICY_HANDLERS_H_ 94