1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// found in the LICENSE file. 4513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 5513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#ifndef CHROME_BROWSER_POLICY_DEVICE_MANAGEMENT_BACKEND_H_ 6513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#define CHROME_BROWSER_POLICY_DEVICE_MANAGEMENT_BACKEND_H_ 7513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#pragma once 8513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 9513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#include <string> 10513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 11513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#include "base/basictypes.h" 123f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "base/threading/non_thread_safe.h" 13513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#include "chrome/browser/policy/proto/device_management_backend.pb.h" 14513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 15513209b27ff55e2841eac0e4120199c23acce758Ben Murdochnamespace policy { 16513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 17513209b27ff55e2841eac0e4120199c23acce758Ben Murdochnamespace em = enterprise_management; 18513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 19513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Interface for clients that need to converse with the device management 20513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// server, which provides services to register Chrome installations and CrOS 21513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// devices for the purpose of fetching centrally-administered policy from the 22513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// cloud. 233f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsenclass DeviceManagementBackend : base::NonThreadSafe { 24513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch public: 25513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch enum ErrorCode { 26513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Request payload invalid. 27513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kErrorRequestInvalid, 28513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // The HTTP request failed. 29513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kErrorRequestFailed, 30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // The server returned an error code that points to a temporary problem. 31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen kErrorTemporaryUnavailable, 32513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // The HTTP request returned a non-success code. 33513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kErrorHttpStatus, 34513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Response could not be decoded. 35513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kErrorResponseDecoding, 36513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Service error: Management not supported. 37513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kErrorServiceManagementNotSupported, 38513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Service error: Device not found. 39513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kErrorServiceDeviceNotFound, 40513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Service error: Device token invalid. 41513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kErrorServiceManagementTokenInvalid, 42513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch // Service error: Activation pending. 43513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch kErrorServiceActivationPending, 44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Service error: Policy not found. Error code defined by the DM folks. 45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen kErrorServicePolicyNotFound = 902, 46513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch }; 47513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 48513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch class DeviceRegisterResponseDelegate { 49513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch public: 50513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual ~DeviceRegisterResponseDelegate() {} 51513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void HandleRegisterResponse( 52513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const em::DeviceRegisterResponse& response) = 0; 53513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void OnError(ErrorCode code) = 0; 54513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 55513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch protected: 56513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch DeviceRegisterResponseDelegate() {} 57513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 58513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch private: 59513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch DISALLOW_COPY_AND_ASSIGN(DeviceRegisterResponseDelegate); 60513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch }; 61513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 62513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch class DeviceUnregisterResponseDelegate { 63513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch public: 64513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual ~DeviceUnregisterResponseDelegate() {} 65513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void HandleUnregisterResponse( 66513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const em::DeviceUnregisterResponse& response) = 0; 67513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void OnError(ErrorCode code) = 0; 68513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 69513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch protected: 70513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch DeviceUnregisterResponseDelegate() {} 71513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 72513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch private: 73513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch DISALLOW_COPY_AND_ASSIGN(DeviceUnregisterResponseDelegate); 74513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch }; 75513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 76513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch class DevicePolicyResponseDelegate { 77513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch public: 78513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual ~DevicePolicyResponseDelegate() {} 79513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 80513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void HandlePolicyResponse( 81513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const em::DevicePolicyResponse& response) = 0; 82513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void OnError(ErrorCode code) = 0; 83513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 84513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch protected: 85513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch DevicePolicyResponseDelegate() {} 86513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 87513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch private: 88513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch DISALLOW_COPY_AND_ASSIGN(DevicePolicyResponseDelegate); 89513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch }; 90513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 91513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual ~DeviceManagementBackend() {} 92513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 93513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ProcessRegisterRequest( 94513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const std::string& auth_token, 95513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const std::string& device_id, 96513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const em::DeviceRegisterRequest& request, 97513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch DeviceRegisterResponseDelegate* delegate) = 0; 98513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 99513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ProcessUnregisterRequest( 100513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const std::string& device_management_token, 101201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch const std::string& device_id, 102513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const em::DeviceUnregisterRequest& request, 103513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch DeviceUnregisterResponseDelegate* delegate) = 0; 104513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 105513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch virtual void ProcessPolicyRequest( 106513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const std::string& device_management_token, 107201ade2fbba22bfb27ae029f4d23fca6ded109a0Ben Murdoch const std::string& device_id, 108513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch const em::DevicePolicyRequest& request, 109513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch DevicePolicyResponseDelegate* delegate) = 0; 110513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 111513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch protected: 112513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch DeviceManagementBackend() {} 113513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 114513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch private: 115513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch DISALLOW_COPY_AND_ASSIGN(DeviceManagementBackend); 116513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch}; 117513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 118513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch} // namespace policy 119513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch 120513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#endif // CHROME_BROWSER_POLICY_DEVICE_MANAGEMENT_BACKEND_H_ 121