1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROMEOS_DBUS_FAKE_BLUETOOTH_AGENT_MANAGER_CLIENT_H_
6#define CHROMEOS_DBUS_FAKE_BLUETOOTH_AGENT_MANAGER_CLIENT_H_
7
8#include "base/bind.h"
9#include "base/callback.h"
10#include "base/observer_list.h"
11#include "chromeos/chromeos_export.h"
12#include "chromeos/dbus/bluetooth_agent_manager_client.h"
13#include "dbus/object_path.h"
14#include "dbus/property.h"
15
16namespace chromeos {
17
18class FakeBluetoothAgentServiceProvider;
19
20// FakeBluetoothAgentManagerClient simulates the behavior of the Bluetooth
21// Daemon's agent manager object and is used both in test cases in place of a
22// mock and on the Linux desktop.
23class CHROMEOS_EXPORT FakeBluetoothAgentManagerClient
24    : public BluetoothAgentManagerClient {
25 public:
26  FakeBluetoothAgentManagerClient();
27  virtual ~FakeBluetoothAgentManagerClient();
28
29  // BluetoothAgentManagerClient overrides
30  virtual void Init(dbus::Bus* bus) OVERRIDE;
31  virtual void RegisterAgent(const dbus::ObjectPath& agent_path,
32                             const std::string& capability,
33                             const base::Closure& callback,
34                             const ErrorCallback& error_callback) OVERRIDE;
35  virtual void UnregisterAgent(const dbus::ObjectPath& agent_path,
36                               const base::Closure& callback,
37                               const ErrorCallback& error_callback) OVERRIDE;
38  virtual void RequestDefaultAgent(const dbus::ObjectPath& agent_path,
39                                   const base::Closure& callback,
40                                   const ErrorCallback& error_callback)
41      OVERRIDE;
42
43  // Register, unregister and retrieve pointers to agent service providers.
44  void RegisterAgentServiceProvider(
45      FakeBluetoothAgentServiceProvider* service_provider);
46  void UnregisterAgentServiceProvider(
47      FakeBluetoothAgentServiceProvider* service_provider);
48  FakeBluetoothAgentServiceProvider* GetAgentServiceProvider();
49
50 private:
51  // The single agent service provider we permit, owned by the application
52  // using it.
53  FakeBluetoothAgentServiceProvider* service_provider_;
54};
55
56}  // namespace chromeos
57
58#endif  // CHROMEOS_DBUS_FAKE_BLUETOOTH_AGENT_MANAGER_CLIENT_H_
59