| // Copyright 2014 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. |
| |
| #ifndef COMPONENTS_SEARCH_ENGINES_DEFAULT_SEARCH_POLICY_HANDLER_H_ |
| #define COMPONENTS_SEARCH_ENGINES_DEFAULT_SEARCH_POLICY_HANDLER_H_ |
| |
| #include <memory> |
| #include <vector> |
| |
| #include "base/macros.h" |
| #include "components/policy/core/browser/configuration_policy_handler.h" |
| |
| namespace policy { |
| |
| // ConfigurationPolicyHandler for the default search policies. |
| class DefaultSearchPolicyHandler : public ConfigurationPolicyHandler { |
| public: |
| DefaultSearchPolicyHandler(); |
| ~DefaultSearchPolicyHandler() override; |
| |
| // ConfigurationPolicyHandler methods: |
| bool CheckPolicySettings(const PolicyMap& policies, |
| PolicyErrorMap* errors) override; |
| void ApplyPolicySettings(const PolicyMap& policies, |
| PrefValueMap* prefs) override; |
| |
| private: |
| // Checks that value type is valid for each policy and returns whether all of |
| // the policies are valid. |
| bool CheckIndividualPolicies(const PolicyMap& policies, |
| PolicyErrorMap* errors); |
| |
| // Returns whether there is a value for |policy_name| in |policies|. |
| bool HasDefaultSearchPolicy(const PolicyMap& policies, |
| const char* policy_name); |
| |
| // Returns whether any default search policies are specified in |policies|. |
| bool AnyDefaultSearchPoliciesSpecified(const PolicyMap& policies); |
| |
| // Returns whether the default search provider policy has a value. |
| bool DefaultSearchProviderPolicyIsSet(const PolicyMap& policies); |
| |
| // Returns whether the default search provider is disabled. |
| bool DefaultSearchProviderIsDisabled(const PolicyMap& policies); |
| |
| // Returns whether the default search URL is set and valid. On success, both |
| // outparams (which must be non-NULL) are filled with the search URL. |
| bool DefaultSearchURLIsValid(const PolicyMap& policies, |
| const base::Value** url_value, |
| std::string* url_string); |
| |
| // Make sure that the |path| is present in |prefs_|. If not, set it to |
| // a blank string. |
| void EnsureStringPrefExists(PrefValueMap* prefs, const std::string& path); |
| |
| // Make sure that the |path| is present in |prefs_| and is a ListValue. If |
| // not, set it to an empty list. |
| void EnsureListPrefExists(PrefValueMap* prefs, const std::string& path); |
| |
| DISALLOW_COPY_AND_ASSIGN(DefaultSearchPolicyHandler); |
| }; |
| |
| } // namespace policy |
| |
| #endif // COMPONENTS_SEARCH_ENGINES_DEFAULT_SEARCH_POLICY_HANDLER_H_ |