Bug 880610: Part3-[Bluetooth]bluedroid-Prototype: BluetootServiceBluedroid, r=echou
authorShawn Huang <shuang@mozilla.com>
Wed, 23 Oct 2013 14:12:24 +0800
changeset 165600 eab840351f8f419eaa9564344ee02017863d6638
parent 165599 fd785d92d5f42dc4701e2c5d8e95ac9450a223af
child 165601 eb18aaa10dd9cc90f53837802fbcb3266de59012
push id3066
push userakeybl@mozilla.com
push dateMon, 09 Dec 2013 19:58:46 +0000
treeherdermozilla-beta@a31a0dce83aa [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersechou
bugs880610
milestone27.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 880610: Part3-[Bluetooth]bluedroid-Prototype: BluetootServiceBluedroid, r=echou
dom/bluetooth/BluetoothService.cpp
dom/bluetooth/BluetoothServiceBluedroid.cpp
dom/bluetooth/BluetoothServiceBluedroid.h
dom/bluetooth/moz.build
--- a/dom/bluetooth/BluetoothService.cpp
+++ b/dom/bluetooth/BluetoothService.cpp
@@ -39,18 +39,20 @@
 #include "nsXPCOM.h"
 
 #if defined(MOZ_WIDGET_GONK)
 #include "cutils/properties.h"
 #endif
 
 #if defined(MOZ_B2G_BT)
 # if defined(MOZ_BLUETOOTH_GONK)
-#ifndef MOZ_B2G_BT_BLUEDROID
+#ifdef MOZ_B2G_BT_BLUEZ
 #include "BluetoothGonkService.h"
+#else
+#include "BluetoothServiceBluedroid.h"
 #endif
 # elif defined(MOZ_BLUETOOTH_DBUS)
 #  include "BluetoothDBusService.h"
 # else
 #  error No_suitable_backend_for_bluetooth!
 # endif
 #endif
 
@@ -301,17 +303,19 @@ BluetoothService::Create()
 {
 #if defined(MOZ_B2G_BT)
   if (!IsMainProcess()) {
     return BluetoothServiceChildProcess::Create();
   }
 #endif
 
 #if defined(MOZ_BLUETOOTH_GONK)
-#ifndef MOZ_B2G_BT_BLUEDROID
+#ifdef MOZ_B2G_BT_BLUEDROID
+  return new BluetoothServiceBluedroid();
+#else
   return new BluetoothGonkService();
 #endif
 #elif defined(MOZ_BLUETOOTH_DBUS)
 #ifdef MOZ_B2G_BT_BLUEZ
   return new BluetoothDBusService();
 #endif
 #endif
   BT_WARNING("No platform support for bluetooth!");
new file mode 100644
--- /dev/null
+++ b/dom/bluetooth/BluetoothServiceBluedroid.cpp
@@ -0,0 +1,341 @@
+/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*-
+/* vim: set ts=2 et sw=2 tw=80: */
+/*
+** Copyright 2006, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+
+#include "BluetoothServiceBluedroid.h"
+#include "BluetoothReplyRunnable.h"
+#include "BluetoothUtils.h"
+#include "BluetoothUuid.h"
+#include "mozilla/dom/bluetooth/BluetoothTypes.h"
+#include "mozilla/ipc/UnixSocket.h"
+
+using namespace mozilla;
+using namespace mozilla::ipc;
+USING_BLUETOOTH_NAMESPACE
+
+nsresult
+BluetoothServiceBluedroid::StartInternal()
+{
+  return NS_OK;
+}
+
+nsresult
+BluetoothServiceBluedroid::StopInternal()
+{
+  return NS_OK;
+}
+
+bool
+BluetoothServiceBluedroid::IsEnabledInternal()
+{
+  return true;
+}
+
+nsresult
+BluetoothServiceBluedroid::GetDefaultAdapterPathInternal(
+  BluetoothReplyRunnable* aRunnable)
+{
+  return NS_OK;
+}
+
+nsresult
+BluetoothServiceBluedroid::GetConnectedDevicePropertiesInternal(
+  uint16_t aProfileId, BluetoothReplyRunnable* aRunnable)
+{
+  return NS_OK;
+
+}
+
+nsresult
+BluetoothServiceBluedroid::GetPairedDevicePropertiesInternal(
+  const nsTArray<nsString>& aDeviceAddress, BluetoothReplyRunnable* aRunnable)
+{
+  return NS_OK;
+}
+
+nsresult
+BluetoothServiceBluedroid::StartDiscoveryInternal(
+  BluetoothReplyRunnable* aRunnable)
+{
+  return NS_OK;
+}
+
+nsresult
+BluetoothServiceBluedroid::StopDiscoveryInternal(
+  BluetoothReplyRunnable* aRunnable)
+{
+  return NS_OK;
+}
+
+nsresult
+BluetoothServiceBluedroid::GetDevicePropertiesInternal(
+  const BluetoothSignal& aSignal)
+{
+  return NS_OK;
+}
+
+nsresult
+BluetoothServiceBluedroid::SetProperty(BluetoothObjectType aType,
+                                       const BluetoothNamedValue& aValue,
+                                       BluetoothReplyRunnable* aRunnable)
+{
+  return NS_OK;
+}
+
+bool
+BluetoothServiceBluedroid::GetDevicePath(const nsAString& aAdapterPath,
+                                         const nsAString& aDeviceAddress,
+                                         nsAString& aDevicePath)
+{
+  return true;
+}
+
+bool
+BluetoothServiceBluedroid::AddServiceRecords(const char* serviceName,
+                                             unsigned long long uuidMsb,
+                                             unsigned long long uuidLsb,
+                                             int channel)
+{
+  return true;
+}
+
+bool
+BluetoothServiceBluedroid::RemoveServiceRecords(const char* serviceName,
+                                                unsigned long long uuidMsb,
+                                                unsigned long long uuidLsb,
+                                                int channel)
+{
+  return true;
+}
+
+bool
+BluetoothServiceBluedroid::AddReservedServicesInternal(
+  const nsTArray<uint32_t>& aServices,
+  nsTArray<uint32_t>& aServiceHandlesContainer)
+{
+  return true;
+
+}
+
+bool
+BluetoothServiceBluedroid::RemoveReservedServicesInternal(
+  const nsTArray<uint32_t>& aServiceHandles)
+{
+  return true;
+}
+
+nsresult
+BluetoothServiceBluedroid::GetScoSocket(
+  const nsAString& aObjectPath, bool aAuth, bool aEncrypt,
+  mozilla::ipc::UnixSocketConsumer* aConsumer)
+{
+  return NS_OK;
+}
+
+nsresult
+BluetoothServiceBluedroid::GetServiceChannel(
+  const nsAString& aDeviceAddress,
+  const nsAString& aServiceUuid,
+  BluetoothProfileManagerBase* aManager)
+{
+  return NS_OK;
+}
+
+bool
+BluetoothServiceBluedroid::UpdateSdpRecords(
+  const nsAString& aDeviceAddress,
+  BluetoothProfileManagerBase* aManager)
+{
+  return true;
+}
+
+nsresult
+BluetoothServiceBluedroid::CreatePairedDeviceInternal(
+  const nsAString& aDeviceAddress, int aTimeout,
+  BluetoothReplyRunnable* aRunnable)
+{
+  return NS_OK;
+}
+
+nsresult
+BluetoothServiceBluedroid::RemoveDeviceInternal(
+  const nsAString& aDeviceObjectPath,
+  BluetoothReplyRunnable* aRunnable)
+{
+  return NS_OK;
+}
+
+bool
+BluetoothServiceBluedroid::SetPinCodeInternal(
+  const nsAString& aDeviceAddress, const nsAString& aPinCode,
+  BluetoothReplyRunnable* aRunnable)
+{
+  return true;
+}
+
+bool
+BluetoothServiceBluedroid::SetPasskeyInternal(
+  const nsAString& aDeviceAddress, uint32_t aPasskey,
+  BluetoothReplyRunnable* aRunnable)
+{
+  return true;
+}
+
+bool
+BluetoothServiceBluedroid::SetPairingConfirmationInternal(
+  const nsAString& aDeviceAddress, bool aConfirm,
+  BluetoothReplyRunnable* aRunnable)
+{
+  return true;
+}
+
+bool
+BluetoothServiceBluedroid::SetAuthorizationInternal(
+  const nsAString& aDeviceAddress, bool aAllow,
+  BluetoothReplyRunnable* aRunnable)
+{
+  return true;
+}
+
+nsresult
+BluetoothServiceBluedroid::PrepareAdapterInternal()
+{
+  return NS_OK;
+}
+
+void
+BluetoothServiceBluedroid::Connect(const nsAString& aDeviceAddress,
+                                   uint32_t aCod,
+                                   uint16_t aServiceUuid,
+                                   BluetoothReplyRunnable* aRunnable)
+{
+
+}
+
+bool
+BluetoothServiceBluedroid::IsConnected(uint16_t aProfileId)
+{
+  return true;
+}
+
+void
+BluetoothServiceBluedroid::Disconnect(
+  const nsAString& aDeviceAddress, uint16_t aServiceUuid,
+  BluetoothReplyRunnable* aRunnable)
+{
+
+}
+
+void
+BluetoothServiceBluedroid::SendFile(const nsAString& aDeviceAddress,
+                                    BlobParent* aBlobParent,
+                                    BlobChild* aBlobChild,
+                                    BluetoothReplyRunnable* aRunnable)
+{
+
+}
+
+void
+BluetoothServiceBluedroid::StopSendingFile(const nsAString& aDeviceAddress,
+                                           BluetoothReplyRunnable* aRunnable)
+{
+
+}
+
+void
+BluetoothServiceBluedroid::ConfirmReceivingFile(
+  const nsAString& aDeviceAddress, bool aConfirm,
+  BluetoothReplyRunnable* aRunnable)
+{
+
+}
+
+void
+BluetoothServiceBluedroid::ConnectSco(BluetoothReplyRunnable* aRunnable)
+{
+
+}
+
+void
+BluetoothServiceBluedroid::DisconnectSco(BluetoothReplyRunnable* aRunnable)
+{
+
+}
+
+void
+BluetoothServiceBluedroid::IsScoConnected(BluetoothReplyRunnable* aRunnable)
+{
+
+}
+
+void
+BluetoothServiceBluedroid::SendMetaData(const nsAString& aTitle,
+                                        const nsAString& aArtist,
+                                        const nsAString& aAlbum,
+                                        int64_t aMediaNumber,
+                                        int64_t aTotalMediaCount,
+                                        int64_t aDuration,
+                                        BluetoothReplyRunnable* aRunnable)
+{
+
+}
+
+void
+BluetoothServiceBluedroid::SendPlayStatus(
+  int64_t aDuration, int64_t aPosition,
+  const nsAString& aPlayStatus,
+  BluetoothReplyRunnable* aRunnable)
+{
+
+}
+
+void
+BluetoothServiceBluedroid::UpdatePlayStatus(
+  uint32_t aDuration, uint32_t aPosition, ControlPlayStatus aPlayStatus)
+{
+
+}
+
+nsresult
+BluetoothServiceBluedroid::SendSinkMessage(const nsAString& aDeviceAddresses,
+                                           const nsAString& aMessage)
+{
+  return NS_OK;
+}
+
+nsresult
+BluetoothServiceBluedroid::SendInputMessage(const nsAString& aDeviceAddresses,
+                                            const nsAString& aMessage)
+{
+  return NS_OK;
+}
+
+void
+BluetoothServiceBluedroid::AnswerWaitingCall(BluetoothReplyRunnable* aRunnable)
+{
+}
+
+void
+BluetoothServiceBluedroid::IgnoreWaitingCall(BluetoothReplyRunnable* aRunnable)
+{
+}
+
+void
+BluetoothServiceBluedroid::ToggleCalls(BluetoothReplyRunnable* aRunnable)
+{
+}
+
new file mode 100644
--- /dev/null
+++ b/dom/bluetooth/BluetoothServiceBluedroid.h
@@ -0,0 +1,189 @@
+/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*-
+/* vim: set ts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef mozilla_dom_bluetooth_bluetoothservicebluedroid_h__
+#define mozilla_dom_bluetooth_bluetoothservicebluedroid_h__
+
+#include "BluetoothCommon.h"
+#include "BluetoothService.h"
+
+class DBusMessage;
+
+BEGIN_BLUETOOTH_NAMESPACE
+
+class BluetoothServiceBluedroid : public BluetoothService
+{
+public:
+  virtual nsresult StartInternal();
+  virtual nsresult StopInternal();
+  virtual bool IsEnabledInternal();
+
+  virtual nsresult GetDefaultAdapterPathInternal(
+                                             BluetoothReplyRunnable* aRunnable);
+
+  virtual nsresult GetConnectedDevicePropertiesInternal(uint16_t aProfileId,
+                                             BluetoothReplyRunnable* aRunnable);
+
+  virtual nsresult GetPairedDevicePropertiesInternal(
+                                     const nsTArray<nsString>& aDeviceAddress,
+                                     BluetoothReplyRunnable* aRunnable);
+
+  virtual nsresult StartDiscoveryInternal(BluetoothReplyRunnable* aRunnable);
+  virtual nsresult StopDiscoveryInternal(BluetoothReplyRunnable* aRunnable);
+
+  virtual nsresult
+  GetDevicePropertiesInternal(const BluetoothSignal& aSignal);
+
+  virtual nsresult
+  SetProperty(BluetoothObjectType aType,
+              const BluetoothNamedValue& aValue,
+              BluetoothReplyRunnable* aRunnable);
+
+  virtual bool
+  GetDevicePath(const nsAString& aAdapterPath,
+                const nsAString& aDeviceAddress,
+                nsAString& aDevicePath);
+
+  static bool
+  AddServiceRecords(const char* serviceName,
+                    unsigned long long uuidMsb,
+                    unsigned long long uuidLsb,
+                    int channel);
+
+  static bool
+  RemoveServiceRecords(const char* serviceName,
+                       unsigned long long uuidMsb,
+                       unsigned long long uuidLsb,
+                       int channel);
+
+  static bool
+  AddReservedServicesInternal(const nsTArray<uint32_t>& aServices,
+                              nsTArray<uint32_t>& aServiceHandlesContainer);
+
+  static bool
+  RemoveReservedServicesInternal(const nsTArray<uint32_t>& aServiceHandles);
+
+  virtual nsresult
+  GetScoSocket(const nsAString& aObjectPath,
+               bool aAuth,
+               bool aEncrypt,
+               mozilla::ipc::UnixSocketConsumer* aConsumer);
+
+  virtual nsresult
+  GetServiceChannel(const nsAString& aDeviceAddress,
+                    const nsAString& aServiceUuid,
+                    BluetoothProfileManagerBase* aManager);
+
+  virtual bool
+  UpdateSdpRecords(const nsAString& aDeviceAddress,
+                   BluetoothProfileManagerBase* aManager);
+
+  virtual nsresult
+  CreatePairedDeviceInternal(const nsAString& aDeviceAddress,
+                             int aTimeout,
+                             BluetoothReplyRunnable* aRunnable);
+
+  virtual nsresult
+  RemoveDeviceInternal(const nsAString& aDeviceObjectPath,
+                       BluetoothReplyRunnable* aRunnable);
+
+  virtual bool
+  SetPinCodeInternal(const nsAString& aDeviceAddress, const nsAString& aPinCode,
+                     BluetoothReplyRunnable* aRunnable);
+
+  virtual bool
+  SetPasskeyInternal(const nsAString& aDeviceAddress, uint32_t aPasskey,
+                     BluetoothReplyRunnable* aRunnable);
+
+  virtual bool
+  SetPairingConfirmationInternal(const nsAString& aDeviceAddress, bool aConfirm,
+                                 BluetoothReplyRunnable* aRunnable);
+
+  virtual bool
+  SetAuthorizationInternal(const nsAString& aDeviceAddress, bool aAllow,
+                           BluetoothReplyRunnable* aRunnable);
+
+  virtual nsresult
+  PrepareAdapterInternal();
+
+  virtual void
+  Connect(const nsAString& aDeviceAddress,
+          uint32_t aCod,
+          uint16_t aServiceUuid,
+          BluetoothReplyRunnable* aRunnable);
+
+  virtual bool
+  IsConnected(uint16_t aProfileId);
+
+  virtual void
+  Disconnect(const nsAString& aDeviceAddress, uint16_t aServiceUuid,
+             BluetoothReplyRunnable* aRunnable);
+
+  virtual void
+  SendFile(const nsAString& aDeviceAddress,
+           BlobParent* aBlobParent,
+           BlobChild* aBlobChild,
+           BluetoothReplyRunnable* aRunnable);
+
+  virtual void
+  StopSendingFile(const nsAString& aDeviceAddress,
+                  BluetoothReplyRunnable* aRunnable);
+
+  virtual void
+  ConfirmReceivingFile(const nsAString& aDeviceAddress, bool aConfirm,
+                       BluetoothReplyRunnable* aRunnable);
+
+  virtual void
+  ConnectSco(BluetoothReplyRunnable* aRunnable);
+
+  virtual void
+  DisconnectSco(BluetoothReplyRunnable* aRunnable);
+
+  virtual void
+  IsScoConnected(BluetoothReplyRunnable* aRunnable);
+
+  virtual void
+  AnswerWaitingCall(BluetoothReplyRunnable* aRunnable);
+
+  virtual void
+  IgnoreWaitingCall(BluetoothReplyRunnable* aRunnable);
+
+  virtual void
+  ToggleCalls(BluetoothReplyRunnable* aRunnable);
+
+  virtual void
+  SendMetaData(const nsAString& aTitle,
+               const nsAString& aArtist,
+               const nsAString& aAlbum,
+               int64_t aMediaNumber,
+               int64_t aTotalMediaCount,
+               int64_t aDuration,
+               BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE;
+
+  virtual void
+  SendPlayStatus(int64_t aDuration,
+                 int64_t aPosition,
+                 const nsAString& aPlayStatus,
+                 BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE;
+
+  virtual void
+  UpdatePlayStatus(uint32_t aDuration,
+                   uint32_t aPosition,
+                   ControlPlayStatus aPlayStatus) MOZ_OVERRIDE;
+
+  virtual nsresult
+  SendSinkMessage(const nsAString& aDeviceAddresses,
+                  const nsAString& aMessage) MOZ_OVERRIDE;
+
+  virtual nsresult
+  SendInputMessage(const nsAString& aDeviceAddresses,
+                   const nsAString& aMessage) MOZ_OVERRIDE;
+};
+
+END_BLUETOOTH_NAMESPACE
+
+#endif
+
--- a/dom/bluetooth/moz.build
+++ b/dom/bluetooth/moz.build
@@ -47,25 +47,30 @@ if CONFIG['MOZ_B2G_BT']:
         'BluetoothProfileController.cpp'
     ]
 
     if CONFIG['MOZ_B2G_RIL']:
         CPP_SOURCES += [
             'BluetoothRilListener.cpp',
         ]
 
-    if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk' and CONFIG['MOZ_B2G_BT_BLUEZ']:
-        CPP_SOURCES += [
-            'linux/BluetoothDBusService.cpp',
-            'gonk/BluetoothGonkService.cpp',
-        ]
+    if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
+        if CONFIG['MOZ_B2G_BT_BLUEZ']:
+            CPP_SOURCES += [
+               'linux/BluetoothDBusService.cpp',
+               'gonk/BluetoothGonkService.cpp',
+            ]
+        if CONFIG['MOZ_B2G_BT_BLUEDROID']:
+            CPP_SOURCES += [
+                'BluetoothServiceBluedroid.cpp',
+            ]
     else:
         if CONFIG['MOZ_ENABLE_DBUS']:
             CPP_SOURCES += [
-                'linux/BluetoothDBusService.cpp',
+                 'linux/BluetoothDBusService.cpp',
             ]
 
 EXPORTS.mozilla.dom.bluetooth.ipc += [
     'ipc/BluetoothMessageUtils.h',
 ]
 
 EXPORTS.mozilla.dom.bluetooth += [
     'BluetoothCommon.h',