libpolicy: Add a MockPolicyProvider.

This patch adds a mock of the PolicyProvider and makes all the
PolicyProvider methods virtual.

BUG=chromium:362370
TEST=emerge-link platform2; compiled/used mock in update_engine unittests.

Change-Id: Ic716c0b83ea2f72cedcf77defd08b1b27ff88e8f
Reviewed-on: https://chromium-review.googlesource.com/194493
Tested-by: Alex Deymo <deymo@chromium.org>
Reviewed-by: Julian Pastarmov <pastarmovj@chromium.org>
Commit-Queue: Alex Deymo <deymo@chromium.org>
diff --git a/chromeos/policy/libpolicy.h b/chromeos/policy/libpolicy.h
index 3e10544..cd3aaf5 100644
--- a/chromeos/policy/libpolicy.h
+++ b/chromeos/policy/libpolicy.h
@@ -30,9 +30,9 @@
 
   // This function will ensure the freshnes of the contents that the getters
   // are delivering. Normally contents are cached to prevent unneccessary load.
-  bool Reload();
+  virtual bool Reload();
 
-  bool device_policy_is_loaded() const;
+  virtual bool device_policy_is_loaded() const;
 
   // Returns a value from the device policy cache.
   virtual const DevicePolicy& GetDevicePolicy() const;
diff --git a/chromeos/policy/mock_libpolicy.h b/chromeos/policy/mock_libpolicy.h
new file mode 100644
index 0000000..57a7ec9
--- /dev/null
+++ b/chromeos/policy/mock_libpolicy.h
@@ -0,0 +1,33 @@
+// Copyright 2014 The Chromium OS 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 POLICY_MOCK_LIBPOLICY_H_
+#define POLICY_MOCK_LIBPOLICY_H_
+
+#include <gmock/gmock.h>
+
+#include "policy/libpolicy.h"
+
+#pragma GCC visibility push(default)
+
+namespace policy {
+
+// This is a generic mock of the PolicyProvider class.
+class MockPolicyProvider : public PolicyProvider {
+ public:
+  MockPolicyProvider() {}
+
+  MOCK_METHOD0(Reload, bool(void));
+  MOCK_CONST_METHOD0(device_policy_is_loaded, bool(void));
+  MOCK_CONST_METHOD0(GetDevicePolicy, const DevicePolicy&(void));
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(MockPolicyProvider);
+};
+
+}  // namespace policy
+
+#pragma GCC visibility pop
+
+#endif  // POLICY_MOCK_LIBPOLICY_H_
diff --git a/libpolicy.gyp b/libpolicy.gyp
index 876760c..b22d690 100644
--- a/libpolicy.gyp
+++ b/libpolicy.gyp
@@ -10,6 +10,7 @@
             'chromeos/policy/device_policy.h',
             'chromeos/policy/device_policy_impl.h',
             'chromeos/policy/libpolicy.h',
+            'chromeos/policy/mock_libpolicy.h',
             'chromeos/policy/mock_device_policy.h',
           ],
         },