Home | History | Annotate | Download | only in dbus
      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_PROFILE_MANAGER_CLIENT_H_
      6 #define CHROMEOS_DBUS_FAKE_BLUETOOTH_PROFILE_MANAGER_CLIENT_H_
      7 
      8 #include <map>
      9 #include <string>
     10 
     11 #include "base/bind.h"
     12 #include "base/callback.h"
     13 #include "base/observer_list.h"
     14 #include "chromeos/chromeos_export.h"
     15 #include "chromeos/dbus/bluetooth_profile_manager_client.h"
     16 #include "dbus/object_path.h"
     17 #include "dbus/property.h"
     18 
     19 namespace chromeos {
     20 
     21 class FakeBluetoothProfileServiceProvider;
     22 
     23 // FakeBluetoothProfileManagerClient simulates the behavior of the Bluetooth
     24 // Daemon's profile manager object and is used both in test cases in place of a
     25 // mock and on the Linux desktop.
     26 class CHROMEOS_EXPORT FakeBluetoothProfileManagerClient
     27     : public BluetoothProfileManagerClient {
     28  public:
     29   FakeBluetoothProfileManagerClient();
     30   virtual ~FakeBluetoothProfileManagerClient();
     31 
     32   // BluetoothProfileManagerClient overrides
     33   virtual void Init(dbus::Bus* bus) OVERRIDE;
     34   virtual void RegisterProfile(const dbus::ObjectPath& profile_path,
     35                                const std::string& uuid,
     36                                const Options& options,
     37                                const base::Closure& callback,
     38                                const ErrorCallback& error_callback) OVERRIDE;
     39   virtual void UnregisterProfile(const dbus::ObjectPath& profile_path,
     40                                  const base::Closure& callback,
     41                                  const ErrorCallback& error_callback) OVERRIDE;
     42 
     43   // Register, unregister and retrieve pointers to profile server providers.
     44   void RegisterProfileServiceProvider(
     45       FakeBluetoothProfileServiceProvider* service_provider);
     46   void UnregisterProfileServiceProvider(
     47       FakeBluetoothProfileServiceProvider* service_provider);
     48   FakeBluetoothProfileServiceProvider* GetProfileServiceProvider(
     49       const std::string& uuid);
     50 
     51   // UUIDs recognised for testing.
     52   static const char kL2capUuid[];
     53   static const char kRfcommUuid[];
     54 
     55  private:
     56   // Map of a D-Bus object path to the FakeBluetoothProfileServiceProvider
     57   // registered for it; maintained by RegisterProfileServiceProvider() and
     58   // UnregisterProfileServiceProvicer() called by the constructor and
     59   // destructor of FakeBluetoothProfileServiceProvider.
     60   typedef std::map<dbus::ObjectPath, FakeBluetoothProfileServiceProvider*>
     61       ServiceProviderMap;
     62   ServiceProviderMap service_provider_map_;
     63 
     64   // Map of Profile UUID to the D-Bus object path of the service provider
     65   // in |service_provider_map_|. Maintained by RegisterProfile() and
     66   // UnregisterProfile() in response to BluetoothProfile methods.
     67   typedef std::map<std::string, dbus::ObjectPath> ProfileMap;
     68   ProfileMap profile_map_;
     69 };
     70 
     71 }  // namespace chromeos
     72 
     73 #endif  // CHROMEOS_DBUS_FAKE_BLUETOOTH_PROFILE_MANAGER_CLIENT_H_
     74