Merge mozilla-central and b2g-inbound

This commit is contained in:
Ed Morley 2013-11-18 11:03:06 +00:00
commit 35ee15ae22
20 changed files with 2203 additions and 64 deletions

View File

@ -1,4 +1,4 @@
{
"revision": "2e7106da13e91ea119801a50a39c9e7ebb1d912e",
"revision": "676a2478d117fa32da2b13284283ff370713054a",
"repo_path": "/integration/gaia-central"
}

View File

@ -16,7 +16,6 @@
#include "mozilla/dom/bluetooth/BluetoothTypes.h"
#include "mozilla/Services.h"
#include "mozilla/StaticPtr.h"
#include "nsIAudioManager.h"
#include "nsIObserverService.h"
#include "MainThreadUtils.h"

View File

@ -43,17 +43,28 @@
#endif
#if defined(MOZ_B2G_BT)
# if defined(MOZ_BLUETOOTH_GONK)
#ifdef MOZ_B2G_BT_BLUEZ
#if defined(MOZ_B2G_BT_BLUEZ)
/**
* B2G blueZ:
* MOZ_B2G_BT and MOZ_B2G_BT_BLUEZ are both defined.
*/
#include "BluetoothGonkService.h"
#else
#elif defined(MOZ_B2G_BT_BLUEDROID)
/**
* B2G bluedroid:
* MOZ_B2G_BT and MOZ_B2G_BT_BLUEDROID are both defined;
* MOZ_B2G_BLUEZ is not defined.
*/
#include "BluetoothServiceBluedroid.h"
#endif
# elif defined(MOZ_BLUETOOTH_DBUS)
# include "BluetoothDBusService.h"
# else
# error No_suitable_backend_for_bluetooth!
# endif
#elif defined(MOZ_BLUETOOTH_DBUS)
/**
* Desktop bluetooth:
* MOZ_B2G_BT is not defined; MOZ_BLUETOOTH_DBUS is defined.
*/
#include "BluetoothDBusService.h"
#else
#error No backend
#endif
#define MOZSETTINGS_CHANGED_ID "mozsettings-changed"
@ -305,19 +316,16 @@ BluetoothService::Create()
if (!IsMainProcess()) {
return BluetoothServiceChildProcess::Create();
}
#endif
#if defined(MOZ_BLUETOOTH_GONK)
#ifdef MOZ_B2G_BT_BLUEDROID
return new BluetoothServiceBluedroid();
#else
#if defined(MOZ_B2G_BT_BLUEZ)
return new BluetoothGonkService();
#elif defined(MOZ_B2G_BT_BLUEDROID)
return new BluetoothServiceBluedroid();
#endif
#elif defined(MOZ_BLUETOOTH_DBUS)
#ifdef MOZ_B2G_BT_BLUEZ
return new BluetoothDBusService();
#endif
#endif
BT_WARNING("No platform support for bluetooth!");
return nullptr;
}

View File

@ -16,36 +16,28 @@ VPATH += $(srcdir)/ipc
ifneq (,$(MOZ_B2G_BT))
ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
VPATH += \
$(srcdir)/linux \
$(srcdir)/gonk \
$(NULL)
ifdef MOZ_B2G_BT_BLUEZ
LOCAL_INCLUDES += $(MOZ_DBUS_CFLAGS)
DEFINES += -DMOZ_BLUETOOTH_GONK
DEFINES += -DMOZ_B2G_BT_BLUEZ
else
ifdef MOZ_B2G_BT_BLUEDROID
DEFINES += -DMOZ_B2G_BT_BLUEDROID
endif #MOZ_B2G_BT_BLUEDROID
endif #MOZ_B2G_BT_BLUEZ
else
ifdef MOZ_ENABLE_DBUS
VPATH += $(srcdir)/linux
LOCAL_INCLUDES += $(MOZ_DBUS_CFLAGS)
CFLAGS += $(MOZ_DBUS_GLIB_CFLAGS)
CXXFLAGS += $(MOZ_DBUS_GLIB_CFLAGS) -DHAVE_PTHREADS
DEFINES += -DMOZ_BLUETOOTH_DBUS
endif
endif
ifdef MOZ_B2G_BT_BLUEZ
DEFINES += -DMOZ_B2G_BT_BLUEZ
endif
ifdef MOZ_B2G_BT_BLUEDROID
DEFINES += -DMOZ_B2G_BT_BLUEDROID
endif
endif #MOZ_ENABLE_DBUS
endif #MOZ_WIDGET_TOOLKIT
# Add VPATH to LOCAL_INCLUDES so we are going to include the correct backend
# subdirectory.
LOCAL_INCLUDES += $(VPATH:%=-I%)
endif # MOZ_B2G_BT
endif #MOZ_B2G_BT
include $(topsrcdir)/config/rules.mk

View File

@ -20,7 +20,6 @@
#include "mozilla/Services.h"
#include "mozilla/StaticPtr.h"
#include "nsContentUtils.h"
#include "nsIAudioManager.h"
#include "nsIObserverService.h"
#include "nsISettingsService.h"
#include "nsServiceManagerUtils.h"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,220 @@
/* -*- 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_bluetoothhfpmanager_h__
#define mozilla_dom_bluetooth_bluetoothhfpmanager_h__
#include "BluetoothCommon.h"
#include "BluetoothProfileManagerBase.h"
#ifdef MOZ_B2G_RIL
#include "BluetoothRilListener.h"
#endif
#include "BluetoothSocketObserver.h"
#include "mozilla/ipc/UnixSocket.h"
#include "mozilla/Hal.h"
BEGIN_BLUETOOTH_NAMESPACE
class BluetoothReplyRunnable;
class BluetoothSocket;
#ifdef MOZ_B2G_RIL
class Call;
/**
* These costants are defined in 4.33.2 "AT Capabilities Re-Used from GSM 07.07
* and 3GPP 27.007" in Bluetooth hands-free profile 1.6
*/
enum BluetoothCmeError {
AG_FAILURE = 0,
NO_CONNECTION_TO_PHONE = 1,
OPERATION_NOT_ALLOWED = 3,
OPERATION_NOT_SUPPORTED = 4,
PIN_REQUIRED = 5,
SIM_NOT_INSERTED = 10,
SIM_PIN_REQUIRED = 11,
SIM_PUK_REQUIRED = 12,
SIM_FAILURE = 13,
SIM_BUSY = 14,
INCORRECT_PASSWORD = 16,
SIM_PIN2_REQUIRED = 17,
SIM_PUK2_REQUIRED = 18,
MEMORY_FULL = 20,
INVALID_INDEX = 21,
MEMORY_FAILURE = 23,
TEXT_STRING_TOO_LONG = 24,
INVALID_CHARACTERS_IN_TEXT_STRING = 25,
DIAL_STRING_TOO_LONG = 26,
INVALID_CHARACTERS_IN_DIAL_STRING = 27,
NO_NETWORK_SERVICE = 30,
NETWORK_TIMEOUT = 31,
NETWORK_NOT_ALLOWED = 32
};
enum PhoneType {
NONE, // no connection
GSM,
CDMA
};
class Call {
public:
Call();
void Reset();
bool IsActive();
uint16_t mState;
bool mDirection; // true: incoming call; false: outgoing call
nsString mNumber;
int mType;
};
#endif // MOZ_B2G_RIL
class BluetoothHfpManager : public BluetoothSocketObserver
, public BluetoothProfileManagerBase
, public BatteryObserver
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIOBSERVER
BT_DECL_PROFILE_MGR_BASE
virtual void GetName(nsACString& aName)
{
aName.AssignLiteral("HFP/HSP");
}
static BluetoothHfpManager* Get();
~BluetoothHfpManager();
// The following functions are inherited from BluetoothSocketObserver
virtual void ReceiveSocketData(
BluetoothSocket* aSocket,
nsAutoPtr<mozilla::ipc::UnixSocketRawData>& aMessage) MOZ_OVERRIDE;
virtual void OnSocketConnectSuccess(BluetoothSocket* aSocket) MOZ_OVERRIDE;
virtual void OnSocketConnectError(BluetoothSocket* aSocket) MOZ_OVERRIDE;
virtual void OnSocketDisconnect(BluetoothSocket* aSocket) MOZ_OVERRIDE;
bool Listen();
bool ConnectSco(BluetoothReplyRunnable* aRunnable = nullptr);
bool DisconnectSco();
bool ListenSco();
bool IsScoConnected();
#ifdef MOZ_B2G_RIL
/**
* @param aSend A boolean indicates whether we need to notify headset or not
*/
void HandleCallStateChanged(uint32_t aCallIndex, uint16_t aCallState,
const nsAString& aError, const nsAString& aNumber,
const bool aIsOutgoing, bool aSend);
void HandleIccInfoChanged();
void HandleVoiceConnectionChanged();
// CDMA-specific functions
void UpdateSecondNumber(const nsAString& aNumber);
void AnswerWaitingCall();
void IgnoreWaitingCall();
void ToggleCalls();
#endif
private:
class CloseScoTask;
class GetVolumeTask;
#ifdef MOZ_B2G_RIL
class RespondToBLDNTask;
class SendRingIndicatorTask;
#endif
friend class CloseScoTask;
friend class GetVolumeTask;
#ifdef MOZ_B2G_RIL
friend class RespondToBLDNTask;
friend class SendRingIndicatorTask;
#endif
friend class BluetoothHfpManagerObserver;
BluetoothHfpManager();
void HandleShutdown();
void HandleVolumeChanged(const nsAString& aData);
bool Init();
void Notify(const hal::BatteryInformation& aBatteryInfo);
void Reset();
#ifdef MOZ_B2G_RIL
void ResetCallArray();
uint32_t FindFirstCall(uint16_t aState);
uint32_t GetNumberOfCalls(uint16_t aState);
PhoneType GetPhoneType(const nsAString& aType);
#endif
void NotifyConnectionStatusChanged(const nsAString& aType);
void NotifyDialer(const nsAString& aCommand);
#ifdef MOZ_B2G_RIL
void SendCCWA(const nsAString& aNumber, int aType);
bool SendCLCC(const Call& aCall, int aIndex);
#endif
bool SendCommand(const char* aCommand, uint32_t aValue = 0);
bool SendLine(const char* aMessage);
#ifdef MOZ_B2G_RIL
void UpdateCIND(uint8_t aType, uint8_t aValue, bool aSend = true);
#endif
void OnScoConnectSuccess();
void OnScoConnectError();
void OnScoDisconnect();
int mCurrentVgs;
int mCurrentVgm;
#ifdef MOZ_B2G_RIL
bool mBSIR;
bool mCCWA;
bool mCLIP;
#endif
bool mCMEE;
bool mCMER;
#ifdef MOZ_B2G_RIL
bool mFirstCKPD;
int mNetworkSelectionMode;
PhoneType mPhoneType;
#endif
bool mReceiveVgsFlag;
#ifdef MOZ_B2G_RIL
bool mDialingRequestProcessed;
#endif
nsString mDeviceAddress;
#ifdef MOZ_B2G_RIL
nsString mMsisdn;
nsString mOperatorName;
nsTArray<Call> mCurrentCallArray;
nsAutoPtr<BluetoothRilListener> mListener;
#endif
nsRefPtr<BluetoothProfileController> mController;
nsRefPtr<BluetoothReplyRunnable> mScoRunnable;
// If a connection has been established, mSocket will be the socket
// communicating with the remote socket. We maintain the invariant that if
// mSocket is non-null, mHandsfreeSocket and mHeadsetSocket must be null (and
// vice versa).
nsRefPtr<BluetoothSocket> mSocket;
// Server sockets. Once an inbound connection is established, it will hand
// over the ownership to mSocket, and get a new server socket while Listen()
// is called.
nsRefPtr<BluetoothSocket> mHandsfreeSocket;
nsRefPtr<BluetoothSocket> mHeadsetSocket;
nsRefPtr<BluetoothSocket> mScoSocket;
SocketConnectionStatus mScoSocketStatus;
#ifdef MOZ_B2G_RIL
// CDMA-specific variable
Call mCdmaSecondCall;
#endif
};
END_BLUETOOTH_NAMESPACE
#endif

View File

@ -0,0 +1,14 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# 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/.
if CONFIG['MOZ_B2G_BT']:
XPIDL_SOURCES += [
'nsIDOMBluetoothDevice.idl',
'nsIDOMBluetoothDeviceEvent.idl',
'nsIDOMBluetoothStatusChangedEvent.idl',
]
XPIDL_MODULE = 'dom_bluetooth'

View File

@ -1,35 +1,20 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# Copyright 2013 Mozilla Foundation and Mozilla contributors
#
# 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.
# 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/.
if CONFIG['MOZ_B2G_BT']:
PARALLEL_DIRS += ['interfaces']
LIBXUL_LIBRARY = True
MODULE = 'dom'
LIBRARY_NAME = 'dombluetooth_s'
XPIDL_MODULE = 'dom_bluetooth'
XPIDL_SOURCES += [
'nsIDOMBluetoothDevice.idl',
'nsIDOMBluetoothDeviceEvent.idl',
'nsIDOMBluetoothStatusChangedEvent.idl',
]
SOURCES += [
'BluetoothA2dpManager.cpp',
'BluetoothAdapter.cpp',
'BluetoothDevice.cpp',
'BluetoothHfpManager.cpp',
'BluetoothHidManager.cpp',
'BluetoothManager.cpp',
'BluetoothOppManager.cpp',
@ -55,18 +40,33 @@ if CONFIG['MOZ_B2G_BT']:
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
if CONFIG['MOZ_B2G_BT_BLUEZ']:
SOURCES += [
'gonk/BluetoothGonkService.cpp',
'linux/BluetoothDBusService.cpp',
'bluez/BluetoothHfpManager.cpp',
'bluez/gonk/BluetoothGonkService.cpp',
'bluez/linux/BluetoothDBusService.cpp',
]
if CONFIG['MOZ_B2G_BT_BLUEDROID']:
LOCAL_INCLUDES += [
'bluez',
'bluez/gonk',
'bluez/linux',
]
elif CONFIG['MOZ_B2G_BT_BLUEDROID']:
SOURCES += [
'BluetoothServiceBluedroid.cpp',
'bluedroid/BluetoothHfpManager.cpp',
'bluedroid/gonk/BluetoothServiceBluedroid.cpp',
]
else:
if CONFIG['MOZ_ENABLE_DBUS']:
SOURCES += [
'linux/BluetoothDBusService.cpp',
LOCAL_INCLUDES += [
'bluedroid',
'bluedroid/gonk',
]
elif CONFIG['MOZ_ENABLE_DBUS']:
SOURCES += [
'bluez/BluetoothHfpManager.cpp',
'bluez/linux/BluetoothDBusService.cpp',
]
LOCAL_INCLUDES += [
'bluez',
'bluez/linux',
]
EXPORTS.mozilla.dom.bluetooth.ipc += [
'ipc/BluetoothMessageUtils.h',

View File

@ -102,6 +102,16 @@ if CONFIG['MOZ_NFC']:
'nfc_worker.js',
]
# include different BluetoothHfpManager.h under dom/bluetooth/
if CONFIG['MOZ_B2G_BT_BLUEZ']:
LOCAL_INCLUDES += [
'/dom/bluetooth/bluez',
]
elif CONFIG['MOZ_B2G_BT_BLUEDROID']:
LOCAL_INCLUDES += [
'/dom/bluetooth/bluedroid',
]
FAIL_ON_WARNINGS = True
LIBXUL_LIBRARY = True