1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// found in the LICENSE file.
4ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#ifndef CHROME_BROWSER_POLICY_MOCK_DEVICE_MANAGEMENT_SERVICE_H_
6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#define CHROME_BROWSER_POLICY_MOCK_DEVICE_MANAGEMENT_SERVICE_H_
7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#pragma once
8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include <string>
10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/policy/device_management_backend.h"
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/policy/device_management_service.h"
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/policy/proto/device_management_backend.pb.h"
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace policy {
16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// This proxy class is used so that expectations can be defined for a single
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// persistent instance of DMBackend while the DeviceTokenFetcher under test
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// merrily creates and destroys proxies.
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass ProxyDeviceManagementBackend : public DeviceManagementBackend {
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public:
22ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  explicit ProxyDeviceManagementBackend(DeviceManagementBackend* backend);
23ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual ~ProxyDeviceManagementBackend();
24ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void ProcessRegisterRequest(
26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const std::string& auth_token,
27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const std::string& device_id,
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const em::DeviceRegisterRequest& request,
29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      DeviceRegisterResponseDelegate* delegate);
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void ProcessUnregisterRequest(
32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const std::string& device_management_token,
33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const std::string& device_id,
34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const em::DeviceUnregisterRequest& request,
35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      DeviceUnregisterResponseDelegate* delegate);
36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void ProcessPolicyRequest(
38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const std::string& device_management_token,
39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const std::string& device_id,
40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      const em::DevicePolicyRequest& request,
41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      DevicePolicyResponseDelegate* delegate);
42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private:
44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  DeviceManagementBackend* backend_;  // weak
45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  DISALLOW_COPY_AND_ASSIGN(ProxyDeviceManagementBackend);
46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen};
47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass MockDeviceManagementService : public DeviceManagementService {
49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public:
50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  MockDeviceManagementService();
51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual ~MockDeviceManagementService();
52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  void set_backend(DeviceManagementBackend* backend) {
54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    backend_ = backend;
55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  }
56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual DeviceManagementBackend* CreateBackend();
58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen private:
60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  DeviceManagementBackend* backend_;  // weak
61ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  DISALLOW_COPY_AND_ASSIGN(MockDeviceManagementService);
62ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen};
63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}  // namespace policy
65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif  // CHROME_BROWSER_POLICY_MOCK_DEVICE_MANAGEMENT_SERVICE_H_
67