1bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file.
4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
5bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#ifndef CHROME_BROWSER_POLICY_MOCK_CONFIGURATION_POLICY_STORE_H_
6bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#define CHROME_BROWSER_POLICY_MOCK_CONFIGURATION_POLICY_STORE_H_
7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#pragma once
8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
9bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include <map>
10bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include <utility>
11bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
12bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "base/stl_util-inl.h"
134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "base/values.h"
14513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#include "chrome/browser/policy/configuration_policy_store_interface.h"
15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/policy/policy_map.h"
164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "testing/gmock/include/gmock/gmock.h"
17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
18bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsennamespace policy {
19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Mock ConfigurationPolicyStore implementation that records values for policy
21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// settings as they get set.
22513209b27ff55e2841eac0e4120199c23acce758Ben Murdochclass MockConfigurationPolicyStore : public ConfigurationPolicyStoreInterface {
23bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public:
244a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  MockConfigurationPolicyStore();
254a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual ~MockConfigurationPolicyStore();
26bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
27513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const PolicyMap& policy_map() const { return policy_map_; }
28bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
29bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // Get a value for the given policy. Returns NULL if that key doesn't exist.
304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  const Value* Get(ConfigurationPolicyType type) const;
31bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // ConfigurationPolicyStore implementation.
324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  void ApplyToMap(ConfigurationPolicyType policy, Value* value);
334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  MOCK_METHOD2(Apply, void(ConfigurationPolicyType policy, Value* value));
35bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
36bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen private:
37bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  PolicyMap policy_map_;
384a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch
394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  DISALLOW_COPY_AND_ASSIGN(MockConfigurationPolicyStore);
40bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
41bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
42bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}  // namespace policy
43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
44bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#endif  // CHROME_BROWSER_POLICY_MOCK_CONFIGURATION_POLICY_STORE_H_
45