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_SERVICE_PROVIDER_H_ 6 #define CHROMEOS_DBUS_FAKE_BLUETOOTH_AGENT_SERVICE_PROVIDER_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_service_provider.h" 13 #include "dbus/object_path.h" 14 #include "dbus/property.h" 15 16 namespace chromeos { 17 18 class FakeBluetoothAgentManagerClient; 19 20 // FakeBluetoothAgentServiceProvider simulates the behavior of a local 21 // Bluetooth agent object and is used both in test cases in place of a 22 // mock and on the Linux desktop. 23 class CHROMEOS_EXPORT FakeBluetoothAgentServiceProvider 24 : public BluetoothAgentServiceProvider { 25 public: 26 FakeBluetoothAgentServiceProvider(const dbus::ObjectPath& object_path, 27 Delegate *delegate); 28 virtual ~FakeBluetoothAgentServiceProvider(); 29 30 // Each of these calls the equivalent BluetoothAgentServiceProvider::Delegate 31 // method on the object passed on construction. 32 virtual void Release(); 33 virtual void RequestPinCode(const dbus::ObjectPath& device_path, 34 const Delegate::PinCodeCallback& callback); 35 virtual void DisplayPinCode(const dbus::ObjectPath& device_path, 36 const std::string& pincode); 37 virtual void RequestPasskey(const dbus::ObjectPath& device_path, 38 const Delegate::PasskeyCallback& callback); 39 virtual void DisplayPasskey(const dbus::ObjectPath& device_path, 40 uint32 passkey, int16 entered); 41 virtual void RequestConfirmation( 42 const dbus::ObjectPath& device_path, 43 uint32 passkey, 44 const Delegate::ConfirmationCallback& callback); 45 virtual void RequestAuthorization( 46 const dbus::ObjectPath& device_path, 47 const Delegate::ConfirmationCallback& callback); 48 virtual void AuthorizeService( 49 const dbus::ObjectPath& device_path, 50 const std::string& uuid, 51 const Delegate::ConfirmationCallback& callback); 52 virtual void Cancel(); 53 54 private: 55 friend class FakeBluetoothAgentManagerClient; 56 57 // D-Bus object path we are faking. 58 dbus::ObjectPath object_path_; 59 60 // All incoming method calls are passed on to the Delegate and a callback 61 // passed to generate the reply. |delegate_| is generally the object that 62 // owns this one, and must outlive it. 63 Delegate* delegate_; 64 }; 65 66 } // namespace chromeos 67 68 #endif // CHROMEOS_DBUS_FAKE_BLUETOOTH_AGENT_SERVICE_PROVIDER_H_ 69