mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-15 14:25:52 +00:00
Merge b2g-inbound to Mozilla-Central
This commit is contained in:
commit
9891a8088d
@ -1,4 +1,4 @@
|
||||
{
|
||||
"revision": "ef355aa8244d698a5b226ac4ef2408a2eb0812bb",
|
||||
"revision": "a57a913f1dd723afa191124f27b8d9fc4b0cb1c0",
|
||||
"repo_path": "/integration/gaia-central"
|
||||
}
|
||||
|
11
configure.in
11
configure.in
@ -222,6 +222,7 @@ if test -n "$gonkdir" ; then
|
||||
15)
|
||||
GONK_INCLUDES="-I$gonkdir/frameworks/base/opengl/include -I$gonkdir/frameworks/base/native/include -I$gonkdir/frameworks/base/include -I$gonkdir/frameworks/base/services/camera -I$gonkdir/frameworks/base/include/media/stagefright -I$gonkdir/frameworks/base/include/media/stagefright/openmax -I$gonkdir/frameworks/base/media/libstagefright/rtsp -I$gonkdir/frameworks/base/media/libstagefright/include -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib -I$gonkdir/dalvik/libnativehelper/include/nativehelper"
|
||||
MOZ_B2G_BT=1
|
||||
MOZ_B2G_BT_BLUEZ=1
|
||||
MOZ_B2G_CAMERA=1
|
||||
MOZ_OMX_DECODER=1
|
||||
AC_SUBST(MOZ_OMX_DECODER)
|
||||
@ -230,9 +231,15 @@ if test -n "$gonkdir" ; then
|
||||
17|18)
|
||||
GONK_INCLUDES="-I$gonkdir/frameworks/native/include -I$gonkdir/frameworks/av/include -I$gonkdir/frameworks/av/include/media -I$gonkdir/frameworks/av/include/camera -I$gonkdir/frameworks/native/include/media/openmax -I$gonkdir/frameworks/av/media/libstagefright/include"
|
||||
if test -d "$gonkdir/external/bluetooth/bluez"; then
|
||||
GONK_INCLUDES+=" -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib"
|
||||
GONK_INCLUDES="$GONK_INCLUDES -I$gonkdir/external/dbus -I$gonkdir/external/bluetooth/bluez/lib"
|
||||
MOZ_B2G_BT=1
|
||||
MOZ_B2G_BT_BLUEZ=1
|
||||
fi
|
||||
if test -d "$gonkdir/external/bluetooth/bluedroid"; then
|
||||
MOZ_B2G_BT=1
|
||||
MOZ_B2G_BT_BLUEDROID=1
|
||||
fi
|
||||
|
||||
MOZ_B2G_CAMERA=1
|
||||
MOZ_OMX_DECODER=1
|
||||
AC_SUBST(MOZ_OMX_DECODER)
|
||||
@ -7301,6 +7308,8 @@ if test -n "$MOZ_B2G_BT"; then
|
||||
AC_DEFINE(MOZ_B2G_BT)
|
||||
fi
|
||||
AC_SUBST(MOZ_B2G_BT)
|
||||
AC_SUBST(MOZ_B2G_BT_BLUEZ)
|
||||
AC_SUBST(MOZ_B2G_BT_BLUEDROID)
|
||||
|
||||
dnl ========================================================
|
||||
dnl = Enable Pico Speech Synthesis (Gonk usually)
|
||||
|
@ -561,8 +561,7 @@ BluetoothHfpManager::HandleVoiceConnectionChanged()
|
||||
NS_ENSURE_TRUE_VOID(connection);
|
||||
|
||||
nsCOMPtr<nsIDOMMozMobileConnectionInfo> voiceInfo;
|
||||
// TODO: Bug 921991 - B2G BT: support multiple sim cards
|
||||
connection->GetVoiceConnectionInfo(0, getter_AddRefs(voiceInfo));
|
||||
connection->GetVoiceConnectionInfo(getter_AddRefs(voiceInfo));
|
||||
NS_ENSURE_TRUE_VOID(voiceInfo);
|
||||
|
||||
nsString type;
|
||||
@ -598,8 +597,7 @@ BluetoothHfpManager::HandleVoiceConnectionChanged()
|
||||
* - manual: set mNetworkSelectionMode to 1 (manual)
|
||||
*/
|
||||
nsString mode;
|
||||
// TODO: Bug 921991 - B2G BT: support multiple sim cards
|
||||
connection->GetNetworkSelectionMode(0, mode);
|
||||
connection->GetNetworkSelectionMode(mode);
|
||||
if (mode.EqualsLiteral("manual")) {
|
||||
mNetworkSelectionMode = 1;
|
||||
} else {
|
||||
|
@ -292,9 +292,8 @@ BluetoothRilListener::StartMobileConnectionListening()
|
||||
do_GetService(NS_RILCONTENTHELPER_CONTRACTID);
|
||||
NS_ENSURE_TRUE(provider, false);
|
||||
|
||||
// TODO: Bug 921991 - B2G BT: support multiple sim cards
|
||||
nsresult rv = provider->
|
||||
RegisterMobileConnectionMsg(0, mMobileConnectionListener);
|
||||
RegisterMobileConnectionMsg(mMobileConnectionListener);
|
||||
return NS_SUCCEEDED(rv);
|
||||
}
|
||||
|
||||
@ -305,9 +304,8 @@ BluetoothRilListener::StopMobileConnectionListening()
|
||||
do_GetService(NS_RILCONTENTHELPER_CONTRACTID);
|
||||
NS_ENSURE_TRUE(provider, false);
|
||||
|
||||
// TODO: Bug 921991 - B2G BT: support multiple sim cards
|
||||
nsresult rv = provider->
|
||||
UnregisterMobileConnectionMsg(0, mMobileConnectionListener);
|
||||
UnregisterMobileConnectionMsg(mMobileConnectionListener);
|
||||
return NS_SUCCEEDED(rv);
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,11 @@
|
||||
|
||||
#if defined(MOZ_B2G_BT)
|
||||
# if defined(MOZ_BLUETOOTH_GONK)
|
||||
# include "BluetoothGonkService.h"
|
||||
#ifdef MOZ_B2G_BT_BLUEZ
|
||||
#include "BluetoothGonkService.h"
|
||||
#else
|
||||
#include "BluetoothServiceBluedroid.h"
|
||||
#endif
|
||||
# elif defined(MOZ_BLUETOOTH_DBUS)
|
||||
# include "BluetoothDBusService.h"
|
||||
# else
|
||||
@ -304,9 +308,15 @@ BluetoothService::Create()
|
||||
#endif
|
||||
|
||||
#if defined(MOZ_BLUETOOTH_GONK)
|
||||
#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!");
|
||||
return nullptr;
|
||||
|
341
dom/bluetooth/BluetoothServiceBluedroid.cpp
Normal file
341
dom/bluetooth/BluetoothServiceBluedroid.cpp
Normal file
@ -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)
|
||||
{
|
||||
}
|
||||
|
189
dom/bluetooth/BluetoothServiceBluedroid.h
Normal file
189
dom/bluetooth/BluetoothServiceBluedroid.h
Normal file
@ -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
|
||||
|
@ -27,11 +27,12 @@
|
||||
#include <errno.h>
|
||||
|
||||
#include <sys/socket.h>
|
||||
#ifdef MOZ_B2G_BT_BLUEZ
|
||||
#include <bluetooth/bluetooth.h>
|
||||
#include <bluetooth/l2cap.h>
|
||||
#include <bluetooth/rfcomm.h>
|
||||
#include <bluetooth/sco.h>
|
||||
|
||||
#endif
|
||||
#include "BluetoothUnixSocketConnector.h"
|
||||
#include "nsThreadUtils.h"
|
||||
|
||||
@ -43,6 +44,7 @@ static const int L2CAP_SO_SNDBUF = 400 * 1024; // 400 KB send buffer
|
||||
static const int L2CAP_SO_RCVBUF = 400 * 1024; // 400 KB receive buffer
|
||||
static const int L2CAP_MAX_MTU = 65000;
|
||||
|
||||
#ifdef MOZ_B2G_BT_BLUEZ
|
||||
static
|
||||
int get_bdaddr(const char *str, bdaddr_t *ba)
|
||||
{
|
||||
@ -62,6 +64,8 @@ void get_bdaddr_as_string(const bdaddr_t *ba, char *str) {
|
||||
b[5], b[4], b[3], b[2], b[1], b[0]);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
BluetoothUnixSocketConnector::BluetoothUnixSocketConnector(
|
||||
BluetoothSocketType aType,
|
||||
int aChannel,
|
||||
@ -76,6 +80,7 @@ BluetoothUnixSocketConnector::BluetoothUnixSocketConnector(
|
||||
bool
|
||||
BluetoothUnixSocketConnector::SetUp(int aFd)
|
||||
{
|
||||
#ifdef MOZ_B2G_BT_BLUEZ
|
||||
int lm = 0;
|
||||
int sndbuf, rcvbuf;
|
||||
|
||||
@ -157,7 +162,7 @@ BluetoothUnixSocketConnector::SetUp(int aFd)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -167,6 +172,7 @@ BluetoothUnixSocketConnector::Create()
|
||||
MOZ_ASSERT(!NS_IsMainThread());
|
||||
int fd = -1;
|
||||
|
||||
#ifdef MOZ_B2G_BT_BLUEZ
|
||||
switch (mType) {
|
||||
case BluetoothSocketType::RFCOMM:
|
||||
fd = socket(PF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
|
||||
@ -193,7 +199,7 @@ BluetoothUnixSocketConnector::Create()
|
||||
BT_WARNING("Could not set up socket!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
#endif
|
||||
return fd;
|
||||
}
|
||||
|
||||
@ -203,6 +209,7 @@ BluetoothUnixSocketConnector::CreateAddr(bool aIsServer,
|
||||
sockaddr_any& aAddr,
|
||||
const char* aAddress)
|
||||
{
|
||||
#ifdef MOZ_B2G_BT_BLUEZ
|
||||
// Set to BDADDR_ANY, if it's not a server, we'll reset.
|
||||
bdaddr_t bd_address_obj = {{0, 0, 0, 0, 0, 0}};
|
||||
|
||||
@ -242,6 +249,7 @@ BluetoothUnixSocketConnector::CreateAddr(bool aIsServer,
|
||||
BT_WARNING("Socket type unknown!");
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -249,6 +257,7 @@ void
|
||||
BluetoothUnixSocketConnector::GetSocketAddr(const sockaddr_any& aAddr,
|
||||
nsAString& aAddrStr)
|
||||
{
|
||||
#ifdef MOZ_B2G_BT_BLUEZ
|
||||
char addr[18];
|
||||
switch (mType) {
|
||||
case BluetoothSocketType::RFCOMM:
|
||||
@ -265,4 +274,5 @@ BluetoothUnixSocketConnector::GetSocketAddr(const sockaddr_any& aAddr,
|
||||
MOZ_CRASH("Socket should be either RFCOMM or SCO!");
|
||||
}
|
||||
aAddrStr.AssignASCII(addr);
|
||||
#endif
|
||||
}
|
||||
|
@ -36,6 +36,14 @@ 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
|
||||
|
||||
# Add VPATH to LOCAL_INCLUDES so we are going to include the correct backend
|
||||
# subdirectory.
|
||||
LOCAL_INCLUDES += $(VPATH:%=-I%)
|
||||
|
@ -24,6 +24,9 @@ BEGIN_BLUETOOTH_NAMESPACE
|
||||
class BluetoothDBusService : public BluetoothService
|
||||
{
|
||||
public:
|
||||
BluetoothDBusService();
|
||||
~BluetoothDBusService();
|
||||
|
||||
bool IsReady();
|
||||
|
||||
virtual nsresult StartInternal() MOZ_OVERRIDE;
|
||||
@ -168,11 +171,6 @@ public:
|
||||
virtual nsresult
|
||||
SendInputMessage(const nsAString& aDeviceAddresses,
|
||||
const nsAString& aMessage) MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
BluetoothDBusService();
|
||||
~BluetoothDBusService();
|
||||
|
||||
private:
|
||||
/**
|
||||
* For DBus Control method of "UpdateNotification", event id should be
|
||||
|
@ -53,14 +53,19 @@ if CONFIG['MOZ_B2G_BT']:
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
|
||||
CPP_SOURCES += [
|
||||
'linux/BluetoothDBusService.cpp',
|
||||
'gonk/BluetoothGonkService.cpp',
|
||||
]
|
||||
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 += [
|
||||
|
@ -33,7 +33,7 @@ interface nsIMobileConnectionListener : nsISupports
|
||||
* XPCOM component (in the content process) that provides the mobile
|
||||
* network information.
|
||||
*/
|
||||
[scriptable, uuid(84278a49-0f05-4585-b3f4-c74882ae5719)]
|
||||
[scriptable, uuid(c66652e0-0628-11e3-8ffd-0800200c9a66)]
|
||||
interface nsIMobileConnectionProvider : nsISupports
|
||||
{
|
||||
/**
|
||||
@ -41,71 +41,47 @@ interface nsIMobileConnectionProvider : nsISupports
|
||||
* RadioInterfaceLayer in the chrome process. Only a content process that has
|
||||
* the 'mobileconnection' permission is allowed to register.
|
||||
*/
|
||||
void registerMobileConnectionMsg(in unsigned long clientId,
|
||||
in nsIMobileConnectionListener listener);
|
||||
void unregisterMobileConnectionMsg(in unsigned long clientId,
|
||||
in nsIMobileConnectionListener listener);
|
||||
void registerMobileConnectionMsg(in nsIMobileConnectionListener listener);
|
||||
void unregisterMobileConnectionMsg(in nsIMobileConnectionListener listener);
|
||||
|
||||
nsIDOMMozMobileConnectionInfo getVoiceConnectionInfo(in unsigned long clientId);
|
||||
nsIDOMMozMobileConnectionInfo getDataConnectionInfo(in unsigned long clientId);
|
||||
DOMString getIccId(in unsigned long clientId);
|
||||
DOMString getNetworkSelectionMode(in unsigned long clientId);
|
||||
readonly attribute nsIDOMMozMobileConnectionInfo voiceConnectionInfo;
|
||||
readonly attribute nsIDOMMozMobileConnectionInfo dataConnectionInfo;
|
||||
readonly attribute DOMString networkSelectionMode;
|
||||
|
||||
nsIDOMDOMRequest getNetworks(in unsigned long clientId,
|
||||
in nsIDOMWindow window);
|
||||
nsIDOMDOMRequest selectNetwork(in unsigned long clientId,
|
||||
in nsIDOMWindow window,
|
||||
in nsIDOMMozMobileNetworkInfo network);
|
||||
nsIDOMDOMRequest selectNetworkAutomatically(in unsigned long clientId,
|
||||
in nsIDOMWindow window);
|
||||
nsIDOMDOMRequest getNetworks(in nsIDOMWindow window);
|
||||
nsIDOMDOMRequest selectNetwork(in nsIDOMWindow window, in nsIDOMMozMobileNetworkInfo network);
|
||||
nsIDOMDOMRequest selectNetworkAutomatically(in nsIDOMWindow window);
|
||||
|
||||
nsIDOMDOMRequest setRoamingPreference(in unsigned long clientId,
|
||||
in nsIDOMWindow window,
|
||||
nsIDOMDOMRequest setRoamingPreference(in nsIDOMWindow window,
|
||||
in DOMString mode);
|
||||
nsIDOMDOMRequest getRoamingPreference(in unsigned long clientId,
|
||||
in nsIDOMWindow window);
|
||||
nsIDOMDOMRequest getRoamingPreference(in nsIDOMWindow window);
|
||||
|
||||
nsIDOMDOMRequest setVoicePrivacyMode(in unsigned long clientId,
|
||||
in nsIDOMWindow window,
|
||||
nsIDOMDOMRequest setVoicePrivacyMode(in nsIDOMWindow window,
|
||||
in bool enabled);
|
||||
nsIDOMDOMRequest getVoicePrivacyMode(in unsigned long clientId,
|
||||
in nsIDOMWindow window);
|
||||
nsIDOMDOMRequest getVoicePrivacyMode(in nsIDOMWindow window);
|
||||
|
||||
nsIDOMDOMRequest sendMMI(in unsigned long clientId,
|
||||
in nsIDOMWindow window,
|
||||
in DOMString mmi);
|
||||
nsIDOMDOMRequest cancelMMI(in unsigned long clientId,
|
||||
in nsIDOMWindow window);
|
||||
nsIDOMDOMRequest sendMMI(in nsIDOMWindow window, in DOMString mmi);
|
||||
nsIDOMDOMRequest cancelMMI(in nsIDOMWindow window);
|
||||
|
||||
nsIDOMDOMRequest getCallForwardingOption(in unsigned long clientId,
|
||||
in nsIDOMWindow window,
|
||||
nsIDOMDOMRequest getCallForwardingOption(in nsIDOMWindow window,
|
||||
in unsigned short reason);
|
||||
nsIDOMDOMRequest setCallForwardingOption(in unsigned long clientId,
|
||||
in nsIDOMWindow window,
|
||||
nsIDOMDOMRequest setCallForwardingOption(in nsIDOMWindow window,
|
||||
in nsIDOMMozMobileCFInfo CFInfo);
|
||||
|
||||
nsIDOMDOMRequest getCallBarringOption(in unsigned long clientId,
|
||||
in nsIDOMWindow window,
|
||||
in jsval option);
|
||||
nsIDOMDOMRequest setCallBarringOption(in unsigned long clientId,
|
||||
in nsIDOMWindow window,
|
||||
in jsval option);
|
||||
nsIDOMDOMRequest changeCallBarringPassword(in unsigned long clientId,
|
||||
in nsIDOMWindow window,
|
||||
nsIDOMDOMRequest getCallBarringOption(in nsIDOMWindow window,
|
||||
in jsval option);
|
||||
nsIDOMDOMRequest setCallBarringOption(in nsIDOMWindow window,
|
||||
in jsval option);
|
||||
nsIDOMDOMRequest changeCallBarringPassword(in nsIDOMWindow window,
|
||||
in jsval info);
|
||||
|
||||
nsIDOMDOMRequest setCallWaitingOption(in unsigned long clientId,
|
||||
in nsIDOMWindow window,
|
||||
nsIDOMDOMRequest setCallWaitingOption(in nsIDOMWindow window,
|
||||
in bool enabled);
|
||||
nsIDOMDOMRequest getCallWaitingOption(in unsigned long clientId,
|
||||
in nsIDOMWindow window);
|
||||
nsIDOMDOMRequest getCallWaitingOption(in nsIDOMWindow window);
|
||||
|
||||
nsIDOMDOMRequest setCallingLineIdRestriction(in unsigned long clientId,
|
||||
in nsIDOMWindow window,
|
||||
nsIDOMDOMRequest setCallingLineIdRestriction(in nsIDOMWindow window,
|
||||
in unsigned short clirMode);
|
||||
nsIDOMDOMRequest getCallingLineIdRestriction(in unsigned long clientId,
|
||||
in nsIDOMWindow window);
|
||||
nsIDOMDOMRequest getCallingLineIdRestriction(in nsIDOMWindow window);
|
||||
|
||||
nsIDOMDOMRequest exitEmergencyCbMode(in unsigned long clientId,
|
||||
in nsIDOMWindow window);
|
||||
nsIDOMDOMRequest exitEmergencyCbMode(in nsIDOMWindow window);
|
||||
};
|
||||
|
@ -83,9 +83,6 @@ MobileConnection::MobileConnection()
|
||||
mProvider = do_GetService(NS_RILCONTENTHELPER_CONTRACTID);
|
||||
mWindow = nullptr;
|
||||
|
||||
// TODO: Bug 814629 - WebMobileConnection API: support multiple sim cards
|
||||
mClientId = 0;
|
||||
|
||||
// Not being able to acquire the provider isn't fatal since we check
|
||||
// for it explicitly below.
|
||||
if (!mProvider) {
|
||||
@ -104,7 +101,7 @@ MobileConnection::Init(nsPIDOMWindow* aWindow)
|
||||
|
||||
if (!CheckPermission("mobilenetwork") &&
|
||||
CheckPermission("mobileconnection")) {
|
||||
DebugOnly<nsresult> rv = mProvider->RegisterMobileConnectionMsg(mClientId, mListener);
|
||||
DebugOnly<nsresult> rv = mProvider->RegisterMobileConnectionMsg(mListener);
|
||||
NS_WARN_IF_FALSE(NS_SUCCEEDED(rv),
|
||||
"Failed registering mobile connection messages with provider");
|
||||
|
||||
@ -117,7 +114,7 @@ MobileConnection::Shutdown()
|
||||
{
|
||||
if (mProvider && mListener) {
|
||||
mListener->Disconnect();
|
||||
mProvider->UnregisterMobileConnectionMsg(mClientId, mListener);
|
||||
mProvider->UnregisterMobileConnectionMsg(mListener);
|
||||
mProvider = nullptr;
|
||||
mListener = nullptr;
|
||||
}
|
||||
@ -176,7 +173,7 @@ MobileConnection::GetVoice(nsIDOMMozMobileConnectionInfo** voice)
|
||||
if (!mProvider || !CheckPermission("mobileconnection")) {
|
||||
return NS_OK;
|
||||
}
|
||||
return mProvider->GetVoiceConnectionInfo(mClientId, voice);
|
||||
return mProvider->GetVoiceConnectionInfo(voice);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -187,7 +184,7 @@ MobileConnection::GetData(nsIDOMMozMobileConnectionInfo** data)
|
||||
if (!mProvider || !CheckPermission("mobileconnection")) {
|
||||
return NS_OK;
|
||||
}
|
||||
return mProvider->GetDataConnectionInfo(mClientId, data);
|
||||
return mProvider->GetDataConnectionInfo(data);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -198,7 +195,7 @@ MobileConnection::GetNetworkSelectionMode(nsAString& networkSelectionMode)
|
||||
if (!mProvider || !CheckPermission("mobileconnection")) {
|
||||
return NS_OK;
|
||||
}
|
||||
return mProvider->GetNetworkSelectionMode(mClientId, networkSelectionMode);
|
||||
return mProvider->GetNetworkSelectionMode(networkSelectionMode);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -214,7 +211,7 @@ MobileConnection::GetNetworks(nsIDOMDOMRequest** request)
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->GetNetworks(mClientId, GetOwner(), request);
|
||||
return mProvider->GetNetworks(GetOwner(), request);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -230,7 +227,7 @@ MobileConnection::SelectNetwork(nsIDOMMozMobileNetworkInfo* network, nsIDOMDOMRe
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->SelectNetwork(mClientId, GetOwner(), network, request);
|
||||
return mProvider->SelectNetwork(GetOwner(), network, request);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -246,7 +243,7 @@ MobileConnection::SelectNetworkAutomatically(nsIDOMDOMRequest** request)
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->SelectNetworkAutomatically(mClientId, GetOwner(), request);
|
||||
return mProvider->SelectNetworkAutomatically(GetOwner(), request);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -262,7 +259,7 @@ MobileConnection::SetRoamingPreference(const nsAString& aMode, nsIDOMDOMRequest*
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->SetRoamingPreference(mClientId, GetOwner(), aMode, aDomRequest);
|
||||
return mProvider->SetRoamingPreference(GetOwner(), aMode, aDomRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -278,7 +275,7 @@ MobileConnection::GetRoamingPreference(nsIDOMDOMRequest** aDomRequest)
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->GetRoamingPreference(mClientId, GetOwner(), aDomRequest);
|
||||
return mProvider->GetRoamingPreference(GetOwner(), aDomRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -294,7 +291,7 @@ MobileConnection::SetVoicePrivacyMode(bool aEnabled, nsIDOMDOMRequest** aDomRequ
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->SetVoicePrivacyMode(mClientId, GetOwner(), aEnabled, aDomRequest);
|
||||
return mProvider->SetVoicePrivacyMode(GetOwner(), aEnabled, aDomRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -310,7 +307,7 @@ MobileConnection::GetVoicePrivacyMode(nsIDOMDOMRequest** aDomRequest)
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->GetVoicePrivacyMode(mClientId, GetOwner(), aDomRequest);
|
||||
return mProvider->GetVoicePrivacyMode(GetOwner(), aDomRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -325,7 +322,7 @@ MobileConnection::SendMMI(const nsAString& aMMIString,
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->SendMMI(mClientId, GetOwner(), aMMIString, aRequest);
|
||||
return mProvider->SendMMI(GetOwner(), aMMIString, aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -339,7 +336,7 @@ MobileConnection::CancelMMI(nsIDOMDOMRequest** aRequest)
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->CancelMMI(mClientId, GetOwner(),aRequest);
|
||||
return mProvider->CancelMMI(GetOwner(), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -356,7 +353,7 @@ MobileConnection::GetCallForwardingOption(uint16_t aReason,
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->GetCallForwardingOption(mClientId, GetOwner(), aReason, aRequest);
|
||||
return mProvider->GetCallForwardingOption(GetOwner(), aReason, aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -373,7 +370,7 @@ MobileConnection::SetCallForwardingOption(nsIDOMMozMobileCFInfo* aCFInfo,
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->SetCallForwardingOption(mClientId, GetOwner(), aCFInfo, aRequest);
|
||||
return mProvider->SetCallForwardingOption(GetOwner(), aCFInfo, aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -390,7 +387,7 @@ MobileConnection::GetCallBarringOption(const JS::Value& aOption,
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->GetCallBarringOption(mClientId, GetOwner(), aOption, aRequest);
|
||||
return mProvider->GetCallBarringOption(GetOwner(), aOption, aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -407,7 +404,7 @@ MobileConnection::SetCallBarringOption(const JS::Value& aOption,
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->SetCallBarringOption(mClientId, GetOwner(), aOption, aRequest);
|
||||
return mProvider->SetCallBarringOption(GetOwner(), aOption, aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -424,7 +421,7 @@ MobileConnection::ChangeCallBarringPassword(const JS::Value& aInfo,
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->ChangeCallBarringPassword(mClientId, GetOwner(), aInfo, aRequest);
|
||||
return mProvider->ChangeCallBarringPassword(GetOwner(), aInfo, aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -440,7 +437,7 @@ MobileConnection::GetCallWaitingOption(nsIDOMDOMRequest** aRequest)
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->GetCallWaitingOption(mClientId, GetOwner(), aRequest);
|
||||
return mProvider->GetCallWaitingOption(GetOwner(), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -457,7 +454,7 @@ MobileConnection::SetCallWaitingOption(bool aEnabled,
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->SetCallWaitingOption(mClientId, GetOwner(), aEnabled, aRequest);
|
||||
return mProvider->SetCallWaitingOption(GetOwner(), aEnabled, aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -473,7 +470,7 @@ MobileConnection::GetCallingLineIdRestriction(nsIDOMDOMRequest** aRequest)
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->GetCallingLineIdRestriction(mClientId, GetOwner(), aRequest);
|
||||
return mProvider->GetCallingLineIdRestriction(GetOwner(), aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -490,7 +487,7 @@ MobileConnection::SetCallingLineIdRestriction(unsigned short aClirMode,
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->SetCallingLineIdRestriction(mClientId, GetOwner(), aClirMode, aRequest);
|
||||
return mProvider->SetCallingLineIdRestriction(GetOwner(), aClirMode, aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -506,7 +503,7 @@ MobileConnection::ExitEmergencyCbMode(nsIDOMDOMRequest** aRequest)
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
return mProvider->ExitEmergencyCbMode(mClientId, GetOwner(), aRequest);
|
||||
return mProvider->ExitEmergencyCbMode(GetOwner(), aRequest);
|
||||
}
|
||||
|
||||
// nsIMobileConnectionListener
|
||||
|
@ -48,8 +48,6 @@ private:
|
||||
nsRefPtr<Listener> mListener;
|
||||
nsWeakPtr mWindow;
|
||||
|
||||
uint32_t mClientId;
|
||||
|
||||
bool CheckPermission(const char* type);
|
||||
};
|
||||
|
||||
|
@ -44,8 +44,7 @@ this.PhoneNumberUtils = {
|
||||
|
||||
#ifdef MOZ_B2G_RIL
|
||||
// Get network mcc
|
||||
// TODO: Bug 926740 - PhoneNumberUtils for multisim
|
||||
let voice = mobileConnection.getVoiceConnectionInfo(0);
|
||||
let voice = mobileConnection.voiceConnectionInfo;
|
||||
if (voice && voice.network && voice.network.mcc) {
|
||||
mcc = voice.network.mcc;
|
||||
}
|
||||
|
@ -88,13 +88,13 @@ const RIL_IPC_MSG_NAMES = [
|
||||
"RIL:StkCommand",
|
||||
"RIL:StkSessionEnd",
|
||||
"RIL:DataError",
|
||||
"RIL:SetCallForwardingOptions",
|
||||
"RIL:GetCallForwardingOptions",
|
||||
"RIL:SetCallBarringOptions",
|
||||
"RIL:GetCallBarringOptions",
|
||||
"RIL:SetCallForwardingOption",
|
||||
"RIL:GetCallForwardingOption",
|
||||
"RIL:SetCallBarringOption",
|
||||
"RIL:GetCallBarringOption",
|
||||
"RIL:ChangeCallBarringPassword",
|
||||
"RIL:SetCallWaitingOptions",
|
||||
"RIL:GetCallWaitingOptions",
|
||||
"RIL:SetCallWaitingOption",
|
||||
"RIL:GetCallWaitingOption",
|
||||
"RIL:SetCallingLineIdRestriction",
|
||||
"RIL:GetCallingLineIdRestriction",
|
||||
"RIL:CellBroadcastReceived",
|
||||
@ -384,13 +384,13 @@ CellBroadcastEtwsInfo.prototype = {
|
||||
popup: null
|
||||
};
|
||||
|
||||
function CallBarringOptions(options) {
|
||||
this.program = options.program;
|
||||
this.enabled = options.enabled;
|
||||
this.password = options.password;
|
||||
this.serviceClass = options.serviceClass;
|
||||
function CallBarringOption(option) {
|
||||
this.program = option.program;
|
||||
this.enabled = option.enabled;
|
||||
this.password = option.password;
|
||||
this.serviceClass = option.serviceClass;
|
||||
}
|
||||
CallBarringOptions.prototype = {
|
||||
CallBarringOption.prototype = {
|
||||
__exposedProps__ : {program: 'r',
|
||||
enabled: 'r',
|
||||
password: 'r',
|
||||
@ -449,30 +449,17 @@ IccCardLockError.prototype = {
|
||||
};
|
||||
|
||||
function RILContentHelper() {
|
||||
|
||||
this.numClients = gNumRadioInterfaces;
|
||||
debug("Number of clients: " + this.numClients);
|
||||
|
||||
this.rilContexts = [];
|
||||
for (let clientId = 0; clientId < this.numClients; clientId++) {
|
||||
this.rilContexts[clientId] = {
|
||||
cardState: RIL.GECKO_CARDSTATE_UNKNOWN,
|
||||
networkSelectionMode: RIL.GECKO_NETWORK_SELECTION_UNKNOWN,
|
||||
iccInfo: null,
|
||||
voiceConnectionInfo: new MobileConnectionInfo(),
|
||||
dataConnectionInfo: new MobileConnectionInfo()
|
||||
};
|
||||
}
|
||||
this.rilContext = {
|
||||
cardState: RIL.GECKO_CARDSTATE_UNKNOWN,
|
||||
networkSelectionMode: RIL.GECKO_NETWORK_SELECTION_UNKNOWN,
|
||||
iccInfo: null,
|
||||
voiceConnectionInfo: new MobileConnectionInfo(),
|
||||
dataConnectionInfo: new MobileConnectionInfo()
|
||||
};
|
||||
this.voicemailInfo = new VoicemailInfo();
|
||||
|
||||
this.initDOMRequestHelper(/* aWindow */ null, RIL_IPC_MSG_NAMES);
|
||||
this._windowsMap = [];
|
||||
this._selectingNetworks = [];
|
||||
this._mobileConnectionListeners = [];
|
||||
this._cellBroadcastListeners = [];
|
||||
this._voicemailListeners = [];
|
||||
this._iccListeners = [];
|
||||
|
||||
Services.obs.addObserver(this, "xpcom-shutdown", false);
|
||||
}
|
||||
|
||||
@ -538,103 +525,88 @@ RILContentHelper.prototype = {
|
||||
* 1. Should clear iccInfo to null if there is no card detected.
|
||||
* 2. Need to create corresponding object based on iccType.
|
||||
*/
|
||||
updateIccInfo: function updateIccInfo(clientId, newInfo) {
|
||||
let rilContext = this.rilContexts[clientId];
|
||||
|
||||
updateIccInfo: function updateIccInfo(newInfo) {
|
||||
// Card is not detected, clear iccInfo to null.
|
||||
if (!newInfo || !newInfo.iccType) {
|
||||
rilContext.iccInfo = null;
|
||||
this.rilContext.iccInfo = null;
|
||||
return;
|
||||
}
|
||||
|
||||
// If iccInfo is null, new corresponding object based on iccType.
|
||||
if (!rilContext.iccInfo) {
|
||||
if (!this.rilContext.iccInfo) {
|
||||
if (newInfo.iccType === "ruim" || newInfo.iccType === "csim") {
|
||||
rilContext.iccInfo = new CdmaIccInfo();
|
||||
this.rilContext.iccInfo = new CdmaIccInfo();
|
||||
} else {
|
||||
rilContext.iccInfo = new GsmIccInfo();
|
||||
this.rilContext.iccInfo = new GsmIccInfo();
|
||||
}
|
||||
}
|
||||
|
||||
this.updateInfo(newInfo, rilContext.iccInfo);
|
||||
this.updateInfo(newInfo, this.rilContext.iccInfo);
|
||||
},
|
||||
|
||||
_windowsMap: null,
|
||||
|
||||
rilContexts: null,
|
||||
rilContext: null,
|
||||
|
||||
getRilContext: function getRilContext(clientId) {
|
||||
// Update ril contexts by sending IPC message to chrome only when the first
|
||||
getRilContext: function getRilContext() {
|
||||
// Update ril context by sending IPC message to chrome only when the first
|
||||
// time we require it. The information will be updated by following info
|
||||
// changed messages.
|
||||
this.getRilContext = function getRilContext(clientId) {
|
||||
return this.rilContexts[clientId];
|
||||
this.getRilContext = function getRilContext() {
|
||||
return this.rilContext;
|
||||
};
|
||||
|
||||
for (let cId = 0; cId < this.numClients; cId++) {
|
||||
let rilContext =
|
||||
cpmm.sendSyncMessage("RIL:GetRilContext", {clientId: cId})[0];
|
||||
if (!rilContext) {
|
||||
debug("Received null rilContext from chrome process.");
|
||||
continue;
|
||||
}
|
||||
this.rilContexts[cId].cardState = rilContext.cardState;
|
||||
this.rilContexts[cId].networkSelectionMode = rilContext.networkSelectionMode;
|
||||
this.updateIccInfo(cId, rilContext.iccInfo);
|
||||
this.updateConnectionInfo(rilContext.voice, this.rilContexts[cId].voiceConnectionInfo);
|
||||
this.updateConnectionInfo(rilContext.data, this.rilContexts[cId].dataConnectionInfo);
|
||||
let rilContext =
|
||||
cpmm.sendSyncMessage("RIL:GetRilContext", {clientId: 0})[0];
|
||||
if (!rilContext) {
|
||||
debug("Received null rilContext from chrome process.");
|
||||
return;
|
||||
}
|
||||
this.rilContext.cardState = rilContext.cardState;
|
||||
this.rilContext.networkSelectionMode = rilContext.networkSelectionMode;
|
||||
this.updateIccInfo(rilContext.iccInfo);
|
||||
this.updateConnectionInfo(rilContext.voice, this.rilContext.voiceConnectionInfo);
|
||||
this.updateConnectionInfo(rilContext.data, this.rilContext.dataConnectionInfo);
|
||||
|
||||
return this.rilContexts[clientId];
|
||||
},
|
||||
|
||||
/**
|
||||
* nsIIccProvider
|
||||
*/
|
||||
|
||||
get iccInfo() {
|
||||
//TODO: Bug 814637 - WebIccManager API: support multiple sim cards.
|
||||
let context = this.getRilContext(0);
|
||||
return context && context.iccInfo;
|
||||
},
|
||||
|
||||
get cardState() {
|
||||
//TODO: Bug 814637 - WebIccManager API: support multiple sim cards.
|
||||
let context = this.getRilContext(0);
|
||||
return context && context.cardState;
|
||||
return this.rilContext;
|
||||
},
|
||||
|
||||
/**
|
||||
* nsIMobileConnectionProvider
|
||||
*/
|
||||
|
||||
getVoiceConnectionInfo: function getVoiceConnectionInfo(clientId) {
|
||||
let context = this.getRilContext(clientId);
|
||||
get iccInfo() {
|
||||
let context = this.getRilContext();
|
||||
return context && context.iccInfo;
|
||||
},
|
||||
|
||||
get voiceConnectionInfo() {
|
||||
let context = this.getRilContext();
|
||||
return context && context.voiceConnectionInfo;
|
||||
},
|
||||
|
||||
getDataConnectionInfo: function getDataConnectionInfo(clientId) {
|
||||
let context = this.getRilContext(clientId);
|
||||
get dataConnectionInfo() {
|
||||
let context = this.getRilContext();
|
||||
return context && context.dataConnectionInfo;
|
||||
},
|
||||
|
||||
getIccId: function getIccId(clientId) {
|
||||
let context = this.getRilContext(clientId);
|
||||
return context && context.iccInfo.iccid;
|
||||
get cardState() {
|
||||
let context = this.getRilContext();
|
||||
return context && context.cardState;
|
||||
},
|
||||
|
||||
getNetworkSelectionMode: function getNetworkSelectionMode(clientId) {
|
||||
let context = this.getRilContext(clientId);
|
||||
get networkSelectionMode() {
|
||||
let context = this.getRilContext();
|
||||
return context && context.networkSelectionMode;
|
||||
},
|
||||
|
||||
/**
|
||||
* The networks that are currently trying to be selected (or "automatic").
|
||||
* This helps ensure that only one network per client is selected at a time.
|
||||
* The network that is currently trying to be selected (or "automatic").
|
||||
* This helps ensure that only one network is selected at a time.
|
||||
*/
|
||||
_selectingNetworks: null,
|
||||
_selectingNetwork: null,
|
||||
|
||||
getNetworks: function getNetworks(clientId, window) {
|
||||
getNetworks: function getNetworks(window) {
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
@ -644,7 +616,7 @@ RILContentHelper.prototype = {
|
||||
let requestId = this.getRequestId(request);
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:GetAvailableNetworks", {
|
||||
clientId: clientId,
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId
|
||||
}
|
||||
@ -652,14 +624,14 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
selectNetwork: function selectNetwork(clientId, window, network) {
|
||||
selectNetwork: function selectNetwork(window, network) {
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
}
|
||||
|
||||
if (this._selectingNetworks[clientId]) {
|
||||
throw new Error("Already selecting a network: " + this._selectingNetworks[clientId]);
|
||||
if (this._selectingNetwork) {
|
||||
throw new Error("Already selecting a network: " + this._selectingNetwork);
|
||||
}
|
||||
|
||||
if (!network) {
|
||||
@ -677,8 +649,8 @@ RILContentHelper.prototype = {
|
||||
let request = Services.DOMRequest.createRequest(window);
|
||||
let requestId = this.getRequestId(request);
|
||||
|
||||
if (this.rilContexts[clientId].networkSelectionMode == RIL.GECKO_NETWORK_SELECTION_MANUAL &&
|
||||
this.rilContexts[clientId].voiceConnectionInfo.network === network) {
|
||||
if (this.rilContext.networkSelectionMode == RIL.GECKO_NETWORK_SELECTION_MANUAL &&
|
||||
this.rilContext.voiceConnectionInfo.network === network) {
|
||||
|
||||
// Already manually selected this network, so schedule
|
||||
// onsuccess to be fired on the next tick
|
||||
@ -686,10 +658,10 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
}
|
||||
|
||||
this._selectingNetworks[clientId] = network;
|
||||
this._selectingNetwork = network;
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:SelectNetwork", {
|
||||
clientId: clientId,
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId,
|
||||
mnc: network.mnc,
|
||||
@ -700,30 +672,30 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
selectNetworkAutomatically: function selectNetworkAutomatically(clientId, window) {
|
||||
selectNetworkAutomatically: function selectNetworkAutomatically(window) {
|
||||
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
}
|
||||
|
||||
if (this._selectingNetworks[clientId]) {
|
||||
throw new Error("Already selecting a network: " + this._selectingNetworks[clientId]);
|
||||
if (this._selectingNetwork) {
|
||||
throw new Error("Already selecting a network: " + this._selectingNetwork);
|
||||
}
|
||||
|
||||
let request = Services.DOMRequest.createRequest(window);
|
||||
let requestId = this.getRequestId(request);
|
||||
|
||||
if (this.rilContexts[clientId].networkSelectionMode == RIL.GECKO_NETWORK_SELECTION_AUTOMATIC) {
|
||||
if (this.rilContext.networkSelectionMode == RIL.GECKO_NETWORK_SELECTION_AUTOMATIC) {
|
||||
// Already using automatic selection mode, so schedule
|
||||
// onsuccess to be be fired on the next tick
|
||||
this.dispatchFireRequestSuccess(requestId, null);
|
||||
return request;
|
||||
}
|
||||
|
||||
this._selectingNetworks[clientId] = "automatic";
|
||||
this._selectingNetwork = "automatic";
|
||||
cpmm.sendAsyncMessage("RIL:SelectNetworkAuto", {
|
||||
clientId: clientId,
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId
|
||||
}
|
||||
@ -731,7 +703,7 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
setRoamingPreference: function setRoamingPreference(clientId, window, mode) {
|
||||
setRoamingPreference: function setRoamingPreference(window, mode) {
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
@ -747,7 +719,7 @@ RILContentHelper.prototype = {
|
||||
}
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:SetRoamingPreference", {
|
||||
clientId: clientId,
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId,
|
||||
mode: mode
|
||||
@ -756,7 +728,7 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
getRoamingPreference: function getRoamingPreference(clientId, window) {
|
||||
getRoamingPreference: function getRoamingPreference(window) {
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
@ -766,7 +738,7 @@ RILContentHelper.prototype = {
|
||||
let requestId = this.getRequestId(request);
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:GetRoamingPreference", {
|
||||
clientId: clientId,
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId
|
||||
}
|
||||
@ -774,7 +746,7 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
setVoicePrivacyMode: function setVoicePrivacyMode(clientId, window, enabled) {
|
||||
setVoicePrivacyMode: function setVoicePrivacyMode(window, enabled) {
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
@ -784,7 +756,7 @@ RILContentHelper.prototype = {
|
||||
let requestId = this.getRequestId(request);
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:SetVoicePrivacyMode", {
|
||||
clientId: clientId,
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId,
|
||||
enabled: enabled
|
||||
@ -793,7 +765,7 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
getVoicePrivacyMode: function getVoicePrivacyMode(clientId, window) {
|
||||
getVoicePrivacyMode: function getVoicePrivacyMode(window) {
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
@ -803,7 +775,7 @@ RILContentHelper.prototype = {
|
||||
let requestId = this.getRequestId(request);
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:GetVoicePrivacyMode", {
|
||||
clientId: clientId,
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId
|
||||
}
|
||||
@ -879,7 +851,7 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
sendMMI: function sendMMI(clientId, window, mmi) {
|
||||
sendMMI: function sendMMI(window, mmi) {
|
||||
debug("Sending MMI " + mmi);
|
||||
if (!window) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
@ -892,7 +864,7 @@ RILContentHelper.prototype = {
|
||||
this._windowsMap[requestId] = window;
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:SendMMI", {
|
||||
clientId: clientId,
|
||||
clientId: 0,
|
||||
data: {
|
||||
mmi: mmi,
|
||||
requestId: requestId
|
||||
@ -901,7 +873,7 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
cancelMMI: function cancelMMI(clientId, window) {
|
||||
cancelMMI: function cancelMMI(window) {
|
||||
debug("Cancel MMI");
|
||||
if (!window) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
@ -910,7 +882,7 @@ RILContentHelper.prototype = {
|
||||
let request = Services.DOMRequest.createRequest(window);
|
||||
let requestId = this.getRequestId(request);
|
||||
cpmm.sendAsyncMessage("RIL:CancelMMI", {
|
||||
clientId: clientId,
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId
|
||||
}
|
||||
@ -1104,7 +1076,7 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
getCallForwardingOption: function getCallForwardingOption(clientId, window, reason) {
|
||||
getCallForwardingOption: function getCallForwardingOption(window, reason) {
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
@ -1118,8 +1090,8 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
}
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:GetCallForwardingOptions", {
|
||||
clientId: clientId,
|
||||
cpmm.sendAsyncMessage("RIL:GetCallForwardingOption", {
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId,
|
||||
reason: reason
|
||||
@ -1129,7 +1101,7 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
setCallForwardingOption: function setCallForwardingOption(clientId, window, cfInfo) {
|
||||
setCallForwardingOption: function setCallForwardingOption(window, cfInfo) {
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
@ -1145,8 +1117,8 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
}
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:SetCallForwardingOptions", {
|
||||
clientId: clientId,
|
||||
cpmm.sendAsyncMessage("RIL:SetCallForwardingOption", {
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId,
|
||||
active: cfInfo.active,
|
||||
@ -1160,7 +1132,7 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
getCallBarringOption: function getCallBarringOption(clientId, window, option) {
|
||||
getCallBarringOption: function getCallBarringOption(window, option) {
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
@ -1169,14 +1141,14 @@ RILContentHelper.prototype = {
|
||||
let requestId = this.getRequestId(request);
|
||||
|
||||
if (DEBUG) debug("getCallBarringOption: " + JSON.stringify(option));
|
||||
if (!this._isValidCallBarringOptions(option)) {
|
||||
if (!this._isValidCallBarringOption(option)) {
|
||||
this.dispatchFireRequestError(requestId,
|
||||
RIL.GECKO_ERROR_INVALID_PARAMETER);
|
||||
return request;
|
||||
}
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:GetCallBarringOptions", {
|
||||
clientId: clientId,
|
||||
cpmm.sendAsyncMessage("RIL:GetCallBarringOption", {
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId,
|
||||
program: option.program,
|
||||
@ -1187,7 +1159,7 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
setCallBarringOption: function setCallBarringOption(clientId, window, option) {
|
||||
setCallBarringOption: function setCallBarringOption(window, option) {
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
@ -1196,14 +1168,14 @@ RILContentHelper.prototype = {
|
||||
let requestId = this.getRequestId(request);
|
||||
|
||||
if (DEBUG) debug("setCallBarringOption: " + JSON.stringify(option));
|
||||
if (!this._isValidCallBarringOptions(option, true)) {
|
||||
if (!this._isValidCallBarringOption(option, true)) {
|
||||
this.dispatchFireRequestError(requestId,
|
||||
RIL.GECKO_ERROR_INVALID_PARAMETER);
|
||||
return request;
|
||||
}
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:SetCallBarringOptions", {
|
||||
clientId: clientId,
|
||||
cpmm.sendAsyncMessage("RIL:SetCallBarringOption", {
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId,
|
||||
program: option.program,
|
||||
@ -1215,7 +1187,7 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
changeCallBarringPassword: function changeCallBarringPassword(clientId, window, info) {
|
||||
changeCallBarringPassword: function changeCallBarringPassword(window, info) {
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
@ -1233,14 +1205,14 @@ RILContentHelper.prototype = {
|
||||
if (DEBUG) debug("changeCallBarringPassword: " + JSON.stringify(info));
|
||||
info.requestId = requestId;
|
||||
cpmm.sendAsyncMessage("RIL:ChangeCallBarringPassword", {
|
||||
clientId: clientId,
|
||||
clientId: 0,
|
||||
data: info
|
||||
});
|
||||
|
||||
return request;
|
||||
},
|
||||
|
||||
getCallWaitingOption: function getCallWaitingOption(clientId, window) {
|
||||
getCallWaitingOption: function getCallWaitingOption(window) {
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
@ -1248,8 +1220,8 @@ RILContentHelper.prototype = {
|
||||
let request = Services.DOMRequest.createRequest(window);
|
||||
let requestId = this.getRequestId(request);
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:GetCallWaitingOptions", {
|
||||
clientId: clientId,
|
||||
cpmm.sendAsyncMessage("RIL:GetCallWaitingOption", {
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId
|
||||
}
|
||||
@ -1258,7 +1230,7 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
setCallWaitingOption: function setCallWaitingOption(clientId, window, enabled) {
|
||||
setCallWaitingOption: function setCallWaitingOption(window, enabled) {
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
@ -1266,8 +1238,8 @@ RILContentHelper.prototype = {
|
||||
let request = Services.DOMRequest.createRequest(window);
|
||||
let requestId = this.getRequestId(request);
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:SetCallWaitingOptions", {
|
||||
clientId: clientId,
|
||||
cpmm.sendAsyncMessage("RIL:SetCallWaitingOption", {
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId,
|
||||
enabled: enabled
|
||||
@ -1277,7 +1249,7 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
getCallingLineIdRestriction: function getCallingLineIdRestriction(clientId, window) {
|
||||
getCallingLineIdRestriction: function getCallingLineIdRestriction(window) {
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
@ -1286,7 +1258,7 @@ RILContentHelper.prototype = {
|
||||
let requestId = this.getRequestId(request);
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:GetCallingLineIdRestriction", {
|
||||
clientId: clientId,
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId
|
||||
}
|
||||
@ -1296,7 +1268,7 @@ RILContentHelper.prototype = {
|
||||
},
|
||||
|
||||
setCallingLineIdRestriction:
|
||||
function setCallingLineIdRestriction(clientId, window, clirMode) {
|
||||
function setCallingLineIdRestriction(window, clirMode) {
|
||||
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
@ -1306,7 +1278,7 @@ RILContentHelper.prototype = {
|
||||
let requestId = this.getRequestId(request);
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:SetCallingLineIdRestriction", {
|
||||
clientId: clientId,
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId,
|
||||
clirMode: clirMode
|
||||
@ -1316,7 +1288,7 @@ RILContentHelper.prototype = {
|
||||
return request;
|
||||
},
|
||||
|
||||
exitEmergencyCbMode: function exitEmergencyCbMode(clientId, window) {
|
||||
exitEmergencyCbMode: function exitEmergencyCbMode(window) {
|
||||
if (window == null) {
|
||||
throw Components.Exception("Can't get window object",
|
||||
Cr.NS_ERROR_UNEXPECTED);
|
||||
@ -1325,7 +1297,7 @@ RILContentHelper.prototype = {
|
||||
let requestId = this.getRequestId(request);
|
||||
|
||||
cpmm.sendAsyncMessage("RIL:ExitEmergencyCbMode", {
|
||||
clientId: clientId,
|
||||
clientId: 0,
|
||||
data: {
|
||||
requestId: requestId,
|
||||
}
|
||||
@ -1362,13 +1334,10 @@ RILContentHelper.prototype = {
|
||||
return this.getVoicemailInfo().displayName;
|
||||
},
|
||||
|
||||
registerListener: function registerListener(listenerType, clientId, listener) {
|
||||
if (!this[listenerType]) {
|
||||
return;
|
||||
}
|
||||
let listeners = this[listenerType][clientId];
|
||||
registerListener: function registerListener(listenerType, listener) {
|
||||
let listeners = this[listenerType];
|
||||
if (!listeners) {
|
||||
listeners = this[listenerType][clientId] = [];
|
||||
listeners = this[listenerType] = [];
|
||||
}
|
||||
|
||||
if (listeners.indexOf(listener) != -1) {
|
||||
@ -1379,11 +1348,8 @@ RILContentHelper.prototype = {
|
||||
if (DEBUG) debug("Registered " + listenerType + " listener: " + listener);
|
||||
},
|
||||
|
||||
unregisterListener: function unregisterListener(listenerType, clientId, listener) {
|
||||
if (!this[listenerType]) {
|
||||
return;
|
||||
}
|
||||
let listeners = this[listenerType][clientId];
|
||||
unregisterListener: function unregisterListener(listenerType, listener) {
|
||||
let listeners = this[listenerType];
|
||||
if (!listeners) {
|
||||
return;
|
||||
}
|
||||
@ -1395,50 +1361,44 @@ RILContentHelper.prototype = {
|
||||
}
|
||||
},
|
||||
|
||||
registerMobileConnectionMsg: function registerMobileConnectionMsg(clientId, listener) {
|
||||
registerMobileConnectionMsg: function registerMobileConnectionMsg(listener) {
|
||||
debug("Registering for mobile connection related messages");
|
||||
this.registerListener("_mobileConnectionListeners", clientId, listener);
|
||||
this.registerListener("_mobileConnectionListeners", listener);
|
||||
cpmm.sendAsyncMessage("RIL:RegisterMobileConnectionMsg");
|
||||
},
|
||||
|
||||
unregisterMobileConnectionMsg: function unregisteMobileConnectionMsg(clientId, listener) {
|
||||
this.unregisterListener("_mobileConnectionListeners", clientId, listener);
|
||||
unregisterMobileConnectionMsg: function unregisteMobileConnectionMsg(listener) {
|
||||
this.unregisterListener("_mobileConnectionListeners", listener);
|
||||
},
|
||||
|
||||
registerVoicemailMsg: function registerVoicemailMsg(listener) {
|
||||
debug("Registering for voicemail-related messages");
|
||||
//TODO: Bug 814634 - WebVoicemail API: support multiple sim cards.
|
||||
this.registerListener("_voicemailListeners", 0, listener);
|
||||
this.registerListener("_voicemailListeners", listener);
|
||||
cpmm.sendAsyncMessage("RIL:RegisterVoicemailMsg");
|
||||
},
|
||||
|
||||
unregisterVoicemailMsg: function unregisteVoicemailMsg(listener) {
|
||||
//TODO: Bug 814634 - WebVoicemail API: support multiple sim cards.
|
||||
this.unregisterListener("_voicemailListeners", 0, listener);
|
||||
this.unregisterListener("_voicemailListeners", listener);
|
||||
},
|
||||
|
||||
registerCellBroadcastMsg: function registerCellBroadcastMsg(listener) {
|
||||
debug("Registering for Cell Broadcast related messages");
|
||||
//TODO: Bug 921326 - Cellbroadcast API: support multiple sim cards
|
||||
this.registerListener("_cellBroadcastListeners", 0, listener);
|
||||
this.registerListener("_cellBroadcastListeners", listener);
|
||||
cpmm.sendAsyncMessage("RIL:RegisterCellBroadcastMsg");
|
||||
},
|
||||
|
||||
unregisterCellBroadcastMsg: function unregisterCellBroadcastMsg(listener) {
|
||||
//TODO: Bug 921326 - Cellbroadcast API: support multiple sim cards
|
||||
this.unregisterListener("_cellBroadcastListeners", 0, listener);
|
||||
this.unregisterListener("_cellBroadcastListeners", listener);
|
||||
},
|
||||
|
||||
registerIccMsg: function registerIccMsg(listener) {
|
||||
debug("Registering for ICC related messages");
|
||||
//TODO: Bug 814637 - WebIccManager API: support multiple sim cards.
|
||||
this.registerListener("_iccListeners", 0, listener);
|
||||
this.registerListener("_iccListeners", listener);
|
||||
cpmm.sendAsyncMessage("RIL:RegisterIccMsg");
|
||||
},
|
||||
|
||||
unregisterIccMsg: function unregisterIccMsg(listener) {
|
||||
//TODO: Bug 814637 - WebIccManager API: support multiple sim cards.
|
||||
this.unregisterListener("_iccListeners", 0, listener);
|
||||
this.unregisterListener("_iccListeners", listener);
|
||||
},
|
||||
|
||||
// nsIObserver
|
||||
@ -1518,43 +1478,35 @@ RILContentHelper.prototype = {
|
||||
debug("Received message '" + msg.name + "': " + JSON.stringify(msg.json));
|
||||
|
||||
let data = msg.json.data;
|
||||
let clientId = msg.json.clientId;
|
||||
switch (msg.name) {
|
||||
case "RIL:CardStateChanged":
|
||||
if (this.rilContexts[clientId].cardState != data.cardState) {
|
||||
this.rilContexts[clientId].cardState = data.cardState;
|
||||
this._deliverEvent(clientId,
|
||||
"_iccListeners",
|
||||
if (this.rilContext.cardState != data.cardState) {
|
||||
this.rilContext.cardState = data.cardState;
|
||||
this._deliverEvent("_iccListeners",
|
||||
"notifyCardStateChanged",
|
||||
null);
|
||||
}
|
||||
break;
|
||||
case "RIL:IccInfoChanged":
|
||||
this.updateIccInfo(clientId, data);
|
||||
this._deliverEvent(clientId,
|
||||
"_iccListeners",
|
||||
"notifyIccInfoChanged",
|
||||
null);
|
||||
this.updateIccInfo(data);
|
||||
this._deliverEvent("_iccListeners", "notifyIccInfoChanged", null);
|
||||
break;
|
||||
case "RIL:VoiceInfoChanged":
|
||||
this.updateConnectionInfo(data,
|
||||
this.rilContexts[clientId].voiceConnectionInfo);
|
||||
this._deliverEvent(clientId,
|
||||
"_mobileConnectionListeners",
|
||||
this.rilContext.voiceConnectionInfo);
|
||||
this._deliverEvent("_mobileConnectionListeners",
|
||||
"notifyVoiceChanged",
|
||||
null);
|
||||
break;
|
||||
case "RIL:DataInfoChanged":
|
||||
this.updateConnectionInfo(data,
|
||||
this.rilContexts[clientId].dataConnectionInfo);
|
||||
this._deliverEvent(clientId,
|
||||
"_mobileConnectionListeners",
|
||||
this.rilContext.dataConnectionInfo);
|
||||
this._deliverEvent("_mobileConnectionListeners",
|
||||
"notifyDataChanged",
|
||||
null);
|
||||
break;
|
||||
case "RIL:OtaStatusChanged":
|
||||
this._deliverEvent(clientId,
|
||||
"_mobileConnectionListeners",
|
||||
this._deliverEvent("_mobileConnectionListeners",
|
||||
"notifyOtaStatusChanged",
|
||||
[data]);
|
||||
break;
|
||||
@ -1562,18 +1514,18 @@ RILContentHelper.prototype = {
|
||||
this.handleGetAvailableNetworks(data);
|
||||
break;
|
||||
case "RIL:NetworkSelectionModeChanged":
|
||||
this.rilContexts[clientId].networkSelectionMode = data.mode;
|
||||
this.rilContext.networkSelectionMode = data.mode;
|
||||
break;
|
||||
case "RIL:SelectNetwork":
|
||||
this.handleSelectNetwork(clientId, data,
|
||||
this.handleSelectNetwork(data,
|
||||
RIL.GECKO_NETWORK_SELECTION_MANUAL);
|
||||
break;
|
||||
case "RIL:SelectNetworkAuto":
|
||||
this.handleSelectNetwork(clientId, data,
|
||||
this.handleSelectNetwork(data,
|
||||
RIL.GECKO_NETWORK_SELECTION_AUTOMATIC);
|
||||
break;
|
||||
case "RIL:VoicemailNotification":
|
||||
this.handleVoicemailNotification(clientId, data);
|
||||
this.handleVoicemailNotification(data);
|
||||
break;
|
||||
case "RIL:VoicemailInfoChanged":
|
||||
this.updateInfo(data, this.voicemailInfo);
|
||||
@ -1608,8 +1560,7 @@ RILContentHelper.prototype = {
|
||||
}
|
||||
break;
|
||||
case "RIL:USSDReceived":
|
||||
this._deliverEvent(clientId,
|
||||
"_mobileConnectionListeners",
|
||||
this._deliverEvent("_mobileConnectionListeners",
|
||||
"notifyUssdReceived",
|
||||
[data.message, data.sessionEnded]);
|
||||
break;
|
||||
@ -1618,11 +1569,11 @@ RILContentHelper.prototype = {
|
||||
this.handleSendCancelMMI(data);
|
||||
break;
|
||||
case "RIL:StkCommand":
|
||||
this._deliverEvent(clientId, "_iccListeners", "notifyStkCommand",
|
||||
this._deliverEvent("_iccListeners", "notifyStkCommand",
|
||||
[JSON.stringify(data)]);
|
||||
break;
|
||||
case "RIL:StkSessionEnd":
|
||||
this._deliverEvent(clientId, "_iccListeners", "notifyStkSessionEnd", null);
|
||||
this._deliverEvent("_iccListeners", "notifyStkSessionEnd", null);
|
||||
break;
|
||||
case "RIL:IccOpenChannel":
|
||||
this.handleSimpleRequest(data.requestId, data.errorMsg,
|
||||
@ -1641,35 +1592,34 @@ RILContentHelper.prototype = {
|
||||
this.handleSimpleRequest(data.requestId, data.errorMsg, null);
|
||||
break;
|
||||
case "RIL:DataError":
|
||||
this.updateConnectionInfo(data, this.rilContexts[clientId].dataConnectionInfo);
|
||||
this._deliverEvent(clientId, "_mobileConnectionListeners", "notifyDataError",
|
||||
this.updateConnectionInfo(data, this.rilContext.dataConnectionInfo);
|
||||
this._deliverEvent("_mobileConnectionListeners", "notifyDataError",
|
||||
[data.errorMsg]);
|
||||
break;
|
||||
case "RIL:GetCallForwardingOptions":
|
||||
this.handleGetCallForwardingOptions(data);
|
||||
case "RIL:GetCallForwardingOption":
|
||||
this.handleGetCallForwardingOption(data);
|
||||
break;
|
||||
case "RIL:SetCallForwardingOptions":
|
||||
case "RIL:SetCallForwardingOption":
|
||||
this.handleSimpleRequest(data.requestId, data.errorMsg, null);
|
||||
break;
|
||||
case "RIL:GetCallBarringOptions":
|
||||
this.handleGetCallBarringOptions(data);
|
||||
case "RIL:GetCallBarringOption":
|
||||
this.handleGetCallBarringOption(data);
|
||||
break;
|
||||
case "RIL:SetCallBarringOptions":
|
||||
case "RIL:SetCallBarringOption":
|
||||
this.handleSimpleRequest(data.requestId, data.errorMsg, null);
|
||||
break;
|
||||
case "RIL:ChangeCallBarringPassword":
|
||||
this.handleSimpleRequest(data.requestId, data.errorMsg, null);
|
||||
break;
|
||||
case "RIL:GetCallWaitingOptions":
|
||||
case "RIL:GetCallWaitingOption":
|
||||
this.handleSimpleRequest(data.requestId, data.errorMsg,
|
||||
data.enabled);
|
||||
break;
|
||||
case "RIL:SetCallWaitingOptions":
|
||||
case "RIL:SetCallWaitingOption":
|
||||
this.handleSimpleRequest(data.requestId, data.errorMsg, null);
|
||||
break;
|
||||
case "RIL:CfStateChanged":
|
||||
this._deliverEvent(clientId,
|
||||
"_mobileConnectionListeners",
|
||||
this._deliverEvent("_mobileConnectionListeners",
|
||||
"notifyCFStateChange",
|
||||
[data.success, data.action,
|
||||
data.reason, data.number,
|
||||
@ -1683,8 +1633,7 @@ RILContentHelper.prototype = {
|
||||
break;
|
||||
case "RIL:CellBroadcastReceived": {
|
||||
let message = new CellBroadcastMessage(data);
|
||||
this._deliverEvent(clientId,
|
||||
"_cellBroadcastListeners",
|
||||
this._deliverEvent("_cellBroadcastListeners",
|
||||
"notifyMessageReceived",
|
||||
[message]);
|
||||
break;
|
||||
@ -1700,8 +1649,7 @@ RILContentHelper.prototype = {
|
||||
this.handleExitEmergencyCbMode(data);
|
||||
break;
|
||||
case "RIL:EmergencyCbModeChanged":
|
||||
this._deliverEvent(clientId,
|
||||
"_mobileConnectionListeners",
|
||||
this._deliverEvent("_mobileConnectionListeners",
|
||||
"notifyEmergencyCbModeChanged",
|
||||
[data.active, data.timeoutMs]);
|
||||
break;
|
||||
@ -1742,9 +1690,9 @@ RILContentHelper.prototype = {
|
||||
this.fireRequestSuccess(message.requestId, networks);
|
||||
},
|
||||
|
||||
handleSelectNetwork: function handleSelectNetwork(clientId, message, mode) {
|
||||
this._selectingNetworks[clientId] = null;
|
||||
this.rilContexts[clientId].networkSelectionMode = mode;
|
||||
handleSelectNetwork: function handleSelectNetwork(message, mode) {
|
||||
this._selectingNetwork = null;
|
||||
this.rilContext.networkSelectionMode = mode;
|
||||
|
||||
if (message.errorMsg) {
|
||||
this.fireRequestError(message.requestId, message.errorMsg);
|
||||
@ -1793,8 +1741,7 @@ RILContentHelper.prototype = {
|
||||
ObjectWrapper.wrap(result, window));
|
||||
},
|
||||
|
||||
handleVoicemailNotification: function handleVoicemailNotification(clientId, message) {
|
||||
// TODO: Bug 818352 - B2G Multi-SIM: voicemail - add subscription id in nsIRILContentHelper
|
||||
handleVoicemailNotification: function handleVoicemailNotification(message) {
|
||||
let changed = false;
|
||||
if (!this.voicemailStatus) {
|
||||
this.voicemailStatus = new VoicemailStatus();
|
||||
@ -1824,8 +1771,7 @@ RILContentHelper.prototype = {
|
||||
}
|
||||
|
||||
if (changed) {
|
||||
this._deliverEvent(clientId,
|
||||
"_voicemailListeners",
|
||||
this._deliverEvent("_voicemailListeners",
|
||||
"notifyStatusChanged",
|
||||
[this.voicemailStatus]);
|
||||
}
|
||||
@ -1840,7 +1786,7 @@ RILContentHelper.prototype = {
|
||||
}
|
||||
},
|
||||
|
||||
handleGetCallForwardingOptions: function handleGetCallForwardingOptions(message) {
|
||||
handleGetCallForwardingOption: function handleGetCallForwardingOption(message) {
|
||||
if (message.errorMsg) {
|
||||
this.fireRequestError(message.requestId, message.errorMsg);
|
||||
return;
|
||||
@ -1850,12 +1796,12 @@ RILContentHelper.prototype = {
|
||||
this.fireRequestSuccess(message.requestId, message.rules);
|
||||
},
|
||||
|
||||
handleGetCallBarringOptions: function handleGetCallBarringOptions(message) {
|
||||
handleGetCallBarringOption: function handleGetCallBarringOption(message) {
|
||||
if (!message.success) {
|
||||
this.fireRequestError(message.requestId, message.errorMsg);
|
||||
} else {
|
||||
let options = new CallBarringOptions(message);
|
||||
this.fireRequestSuccess(message.requestId, options);
|
||||
let option = new CallBarringOption(message);
|
||||
this.fireRequestSuccess(message.requestId, option);
|
||||
}
|
||||
},
|
||||
|
||||
@ -1931,11 +1877,8 @@ RILContentHelper.prototype = {
|
||||
}
|
||||
},
|
||||
|
||||
_deliverEvent: function _deliverEvent(clientId, listenerType, name, args) {
|
||||
if (!this[listenerType]) {
|
||||
return;
|
||||
}
|
||||
let thisListeners = this[listenerType][clientId];
|
||||
_deliverEvent: function _deliverEvent(listenerType, name, args) {
|
||||
let thisListeners = this[listenerType];
|
||||
if (!thisListeners) {
|
||||
return;
|
||||
}
|
||||
@ -2006,18 +1949,18 @@ RILContentHelper.prototype = {
|
||||
},
|
||||
|
||||
/**
|
||||
* Helper for guarding us against invalid options for call barring.
|
||||
* Helper for guarding us against invalid option for call barring.
|
||||
*/
|
||||
_isValidCallBarringOptions:
|
||||
function _isValidCallBarringOptions(options, usedForSetting) {
|
||||
if (!options ||
|
||||
options.serviceClass == null ||
|
||||
!this._isValidCallBarringProgram(options.program)) {
|
||||
_isValidCallBarringOption:
|
||||
function _isValidCallBarringOption(option, usedForSetting) {
|
||||
if (!option ||
|
||||
option.serviceClass == null ||
|
||||
!this._isValidCallBarringProgram(option.program)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// For setting callbarring options, |enabled| and |password| are required.
|
||||
if (usedForSetting && (options.enabled == null || options.password == null)) {
|
||||
// For setting callbarring option, |enabled| and |password| are required.
|
||||
if (usedForSetting && (option.enabled == null || option.password == null)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -90,13 +90,13 @@ const RIL_IPC_MOBILECONNECTION_MSG_NAMES = [
|
||||
"RIL:SendMMI",
|
||||
"RIL:CancelMMI",
|
||||
"RIL:RegisterMobileConnectionMsg",
|
||||
"RIL:SetCallForwardingOptions",
|
||||
"RIL:GetCallForwardingOptions",
|
||||
"RIL:SetCallBarringOptions",
|
||||
"RIL:GetCallBarringOptions",
|
||||
"RIL:SetCallForwardingOption",
|
||||
"RIL:GetCallForwardingOption",
|
||||
"RIL:SetCallBarringOption",
|
||||
"RIL:GetCallBarringOption",
|
||||
"RIL:ChangeCallBarringPassword",
|
||||
"RIL:SetCallWaitingOptions",
|
||||
"RIL:GetCallWaitingOptions",
|
||||
"RIL:SetCallWaitingOption",
|
||||
"RIL:GetCallWaitingOption",
|
||||
"RIL:SetCallingLineIdRestriction",
|
||||
"RIL:GetCallingLineIdRestriction",
|
||||
"RIL:SetRoamingPreference",
|
||||
@ -935,25 +935,25 @@ RadioInterface.prototype = {
|
||||
case "RIL:UpdateIccContact":
|
||||
this.workerMessenger.sendWithIPCMessage(msg, "updateICCContact");
|
||||
break;
|
||||
case "RIL:SetCallForwardingOptions":
|
||||
this.setCallForwardingOptions(msg.target, msg.json.data);
|
||||
case "RIL:SetCallForwardingOption":
|
||||
this.setCallForwardingOption(msg.target, msg.json.data);
|
||||
break;
|
||||
case "RIL:GetCallForwardingOptions":
|
||||
case "RIL:GetCallForwardingOption":
|
||||
this.workerMessenger.sendWithIPCMessage(msg, "queryCallForwardStatus");
|
||||
break;
|
||||
case "RIL:SetCallBarringOptions":
|
||||
case "RIL:SetCallBarringOption":
|
||||
this.workerMessenger.sendWithIPCMessage(msg, "setCallBarring");
|
||||
break;
|
||||
case "RIL:GetCallBarringOptions":
|
||||
case "RIL:GetCallBarringOption":
|
||||
this.workerMessenger.sendWithIPCMessage(msg, "queryCallBarringStatus");
|
||||
break;
|
||||
case "RIL:ChangeCallBarringPassword":
|
||||
this.workerMessenger.sendWithIPCMessage(msg, "changeCallBarringPassword");
|
||||
break;
|
||||
case "RIL:SetCallWaitingOptions":
|
||||
case "RIL:SetCallWaitingOption":
|
||||
this.workerMessenger.sendWithIPCMessage(msg, "setCallWaiting");
|
||||
break;
|
||||
case "RIL:GetCallWaitingOptions":
|
||||
case "RIL:GetCallWaitingOption":
|
||||
this.workerMessenger.sendWithIPCMessage(msg, "queryCallWaiting");
|
||||
break;
|
||||
case "RIL:SetCallingLineIdRestriction":
|
||||
@ -2406,12 +2406,12 @@ RadioInterface.prototype = {
|
||||
}).bind(this));
|
||||
},
|
||||
|
||||
setCallForwardingOptions: function setCallForwardingOptions(target, message) {
|
||||
if (DEBUG) this.debug("setCallForwardingOptions: " + JSON.stringify(message));
|
||||
setCallForwardingOption: function setCallForwardingOption(target, message) {
|
||||
if (DEBUG) this.debug("setCallForwardingOption: " + JSON.stringify(message));
|
||||
message.serviceClass = RIL.ICC_SERVICE_CLASS_VOICE;
|
||||
this.workerMessenger.send("setCallForward", message, (function(response) {
|
||||
this._sendCfStateChanged(response);
|
||||
target.sendAsyncMessage("RIL:SetCallForwardingOptions", {
|
||||
target.sendAsyncMessage("RIL:SetCallForwardingOption", {
|
||||
clientId: this.clientId,
|
||||
data: response
|
||||
});
|
||||
|
@ -14,7 +14,7 @@ DIRS += [
|
||||
if CONFIG['MOZ_B2G_RIL']:
|
||||
DIRS += ['ril']
|
||||
|
||||
if CONFIG['MOZ_B2G_BT']:
|
||||
if CONFIG['MOZ_B2G_BT_BLUEZ']:
|
||||
DIRS += ['dbus']
|
||||
|
||||
if CONFIG['MOZ_B2G_RIL'] or CONFIG['MOZ_B2G_BT']:
|
||||
|
@ -12,7 +12,7 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/un.h>
|
||||
#include <netinet/in.h>
|
||||
#ifdef MOZ_B2G_BT
|
||||
#ifdef MOZ_B2G_BT_BLUEZ
|
||||
#include <bluetooth/bluetooth.h>
|
||||
#include <bluetooth/sco.h>
|
||||
#include <bluetooth/l2cap.h>
|
||||
@ -31,7 +31,7 @@ union sockaddr_any {
|
||||
sockaddr_un un;
|
||||
sockaddr_in in;
|
||||
sockaddr_in6 in6;
|
||||
#ifdef MOZ_B2G_BT
|
||||
#ifdef MOZ_B2G_BT_BLUEZ
|
||||
sockaddr_sco sco;
|
||||
sockaddr_rc rc;
|
||||
sockaddr_l2 l2;
|
||||
|
@ -89,7 +89,7 @@ ifdef MOZ_B2G_RIL #{
|
||||
STATIC_LIBS += mozril_s
|
||||
endif #}
|
||||
|
||||
ifdef MOZ_B2G_BT #{
|
||||
ifdef MOZ_B2G_BT_BLUEZ #{
|
||||
STATIC_LIBS += mozdbus_s
|
||||
ifeq (gonk,$(MOZ_WIDGET_TOOLKIT))
|
||||
OS_LIBS += -ldbus
|
||||
|
Loading…
Reference in New Issue
Block a user