mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:18:48 +00:00
fd2bb43e4b
- Bug 1180211 - Don't emit bytecode for empty strings in emitTemplateString. r=jorendorff (32583f419) - pointer style (7c9c4fa4b) - Bug 1150779 - Split for-loop tests out of js1_8_5/reflect-parse/destructuring.js. r=efaust (a61cdcc1f) - missing bit of Bug 748550 - Remove support for |for (... = ... in/of ...)| now that (bd6995dcc) - Bug 1164741 - Readd parsing support for |for (var ...1 = ...2 in ...3)|, but completely ignore the |= ...2| assignment when ascribing semantics to it. r=jorendorff, r=efaust (89b433205) - Bug 1163851 - Actually respect the InHandling parameter in the parser. |pc->parsingForInit| is now unused except for testing; it'll be removed once this has stuck a bit, as this change *does* change semantics in some edge cases. r=efaust (221fefa9a) - Bug 1146136 - Parenthesized "destructuring patterns" shouldn't actually be destructuring patterns. r=efaust, a=KWierso (93752d091) - Bug 1146136 - Fix most in-tree tests that parenthesize destructuring pattern assignment targets, as ES6 forbids such parenthesization. (The patch making SpiderMonkey reject this syntax will follow shortly.) r=efaust, r=testingonlychange (3e14c89c8) - Bug 1165162 - Hoist GetOrigin onto BasePrincipal. r=gabor (f396e85c9) - Bug 1161183: Don't show the add-on version in the list view. r=dao (559bfa7a5) - Bug 1161183: Follow-up fix that was missed in the review comments. r=dao, a=kwierso (57dfd764c) - Bug 1146136 - Fix another test that parenthesizes destructuring pattern assignment targets, that snuck in in the last week, as ES6 forbids such parenthesization. r=bustage, a=bustage (89078a294) - Bug 1146136 - Fix another test that parenthesizes destructuring pattern assignment targets, that snuck in in the last week, as ES6 forbids such parenthesization. r=bustage, a=bustage (7a93bd669) - Bug 1146136 - Followup mop-up to require that in destructuring patterns, an assignment target with a default value must not be parenthesized. (That is, |var [(a = 3)] = [];| is invalid, while |var [a = 3] = [];| is valid.) r=evilpie, r=efaust (b5697d644) - Bug 1146136 - Followup to condition tests using |super| syntax on class syntax being enabled. r=bustage (71725bdfc) - Bug 1165835: Fix bluetooth2 build break resulting from Bug 1164292. r=btian (44cc89766) - Bug 1140952 - Implement read/write value of a descriptor for GATT client API (ipc part). f=jocelyn, r=btian (14b21ce2b) - Bug 1156229: Make ref-counted class destructors non-public, r=joliu (dc5e0101f) - Bug 1156229: Update GATT support to include Android L, r=joliu (1ceef7b41) - fix patch order (4b8a2504e) - fix patch order (0a5787b74) - Bug 1127665 - Append name of paired device to 'DevicePaired' and 'PropertyChanged' BT signal. r=btian (72dfe74d8) - Bug 1141944 - [bluetooth2] Revise device paired/unpaired handlers in BluetoothAdapter, f=jaliu, r=shuang (bb74c9b01) - Bug 1063444 - Implement LE scan related methods and LE device event. r=joliu, r=mrbkap (7b4772ace) - Bug 1163969 - Reject the stopLeScan request only if there's no ongoing LE Scan using the given handle. r=joliu (a6fd40998)
421 lines
12 KiB
C++
421 lines
12 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=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/. */
|
|
|
|
#include "base/basictypes.h"
|
|
|
|
#include "BluetoothServiceChildProcess.h"
|
|
|
|
#include "mozilla/Assertions.h"
|
|
#include "mozilla/dom/ContentChild.h"
|
|
#include "mozilla/dom/ipc/BlobChild.h"
|
|
|
|
#include "BluetoothChild.h"
|
|
#include "MainThreadUtils.h"
|
|
|
|
USING_BLUETOOTH_NAMESPACE
|
|
|
|
namespace {
|
|
|
|
BluetoothChild* sBluetoothChild;
|
|
|
|
inline
|
|
void
|
|
SendRequest(BluetoothReplyRunnable* aRunnable, const Request& aRequest)
|
|
{
|
|
MOZ_ASSERT(NS_IsMainThread());
|
|
MOZ_ASSERT(aRunnable);
|
|
|
|
NS_WARN_IF_FALSE(sBluetoothChild,
|
|
"Calling methods on BluetoothServiceChildProcess during "
|
|
"shutdown!");
|
|
|
|
if (sBluetoothChild) {
|
|
BluetoothRequestChild* actor = new BluetoothRequestChild(aRunnable);
|
|
sBluetoothChild->SendPBluetoothRequestConstructor(actor, aRequest);
|
|
}
|
|
}
|
|
|
|
} // anonymous namespace
|
|
|
|
// static
|
|
BluetoothServiceChildProcess*
|
|
BluetoothServiceChildProcess::Create()
|
|
{
|
|
MOZ_ASSERT(!sBluetoothChild);
|
|
|
|
mozilla::dom::ContentChild* contentChild =
|
|
mozilla::dom::ContentChild::GetSingleton();
|
|
MOZ_ASSERT(contentChild);
|
|
|
|
BluetoothServiceChildProcess* btService = new BluetoothServiceChildProcess();
|
|
|
|
sBluetoothChild = new BluetoothChild(btService);
|
|
contentChild->SendPBluetoothConstructor(sBluetoothChild);
|
|
|
|
return btService;
|
|
}
|
|
|
|
BluetoothServiceChildProcess::BluetoothServiceChildProcess()
|
|
{
|
|
}
|
|
|
|
BluetoothServiceChildProcess::~BluetoothServiceChildProcess()
|
|
{
|
|
sBluetoothChild = nullptr;
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::NoteDeadActor()
|
|
{
|
|
MOZ_ASSERT(sBluetoothChild);
|
|
sBluetoothChild = nullptr;
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::RegisterBluetoothSignalHandler(
|
|
const nsAString& aNodeName,
|
|
BluetoothSignalObserver* aHandler)
|
|
{
|
|
if (sBluetoothChild && !IsSignalRegistered(aNodeName)) {
|
|
sBluetoothChild->SendRegisterSignalHandler(nsString(aNodeName));
|
|
}
|
|
BluetoothService::RegisterBluetoothSignalHandler(aNodeName, aHandler);
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::UnregisterBluetoothSignalHandler(
|
|
const nsAString& aNodeName,
|
|
BluetoothSignalObserver* aHandler)
|
|
{
|
|
BluetoothService::UnregisterBluetoothSignalHandler(aNodeName, aHandler);
|
|
if (sBluetoothChild && !IsSignalRegistered(aNodeName)) {
|
|
sBluetoothChild->SendUnregisterSignalHandler(nsString(aNodeName));
|
|
}
|
|
}
|
|
|
|
nsresult
|
|
BluetoothServiceChildProcess::GetDefaultAdapterPathInternal(
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable, DefaultAdapterPathRequest());
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
BluetoothServiceChildProcess::GetConnectedDevicePropertiesInternal(
|
|
uint16_t aServiceUuid,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable, ConnectedDevicePropertiesRequest(aServiceUuid));
|
|
return NS_OK;
|
|
}
|
|
nsresult
|
|
BluetoothServiceChildProcess::GetPairedDevicePropertiesInternal(
|
|
const nsTArray<nsString>& aDeviceAddresses,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
PairedDevicePropertiesRequest request;
|
|
request.addresses().AppendElements(aDeviceAddresses);
|
|
|
|
SendRequest(aRunnable, request);
|
|
return NS_OK;
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::StopDiscoveryInternal(
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable, StopDiscoveryRequest());
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::StartDiscoveryInternal(
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable, StartDiscoveryRequest());
|
|
}
|
|
|
|
nsresult
|
|
BluetoothServiceChildProcess::SetProperty(BluetoothObjectType aType,
|
|
const BluetoothNamedValue& aValue,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable, SetPropertyRequest(aType, aValue));
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
BluetoothServiceChildProcess::CreatePairedDeviceInternal(
|
|
const nsAString& aAddress,
|
|
int aTimeout,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable,
|
|
PairRequest(nsString(aAddress), aTimeout));
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
BluetoothServiceChildProcess::RemoveDeviceInternal(
|
|
const nsAString& aObjectPath,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable,
|
|
UnpairRequest(nsString(aObjectPath)));
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
BluetoothServiceChildProcess::GetServiceChannel(const nsAString& aDeviceAddress,
|
|
const nsAString& aServiceUuid,
|
|
BluetoothProfileManagerBase* aManager)
|
|
{
|
|
MOZ_CRASH("This should never be called!");
|
|
}
|
|
|
|
bool
|
|
BluetoothServiceChildProcess::UpdateSdpRecords(const nsAString& aDeviceAddress,
|
|
BluetoothProfileManagerBase* aManager)
|
|
{
|
|
MOZ_CRASH("This should never be called!");
|
|
}
|
|
|
|
bool
|
|
BluetoothServiceChildProcess::SetPinCodeInternal(
|
|
const nsAString& aDeviceAddress,
|
|
const nsAString& aPinCode,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable,
|
|
SetPinCodeRequest(nsString(aDeviceAddress), nsString(aPinCode)));
|
|
return true;
|
|
}
|
|
|
|
bool
|
|
BluetoothServiceChildProcess::SetPasskeyInternal(
|
|
const nsAString& aDeviceAddress,
|
|
uint32_t aPasskey,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable,
|
|
SetPasskeyRequest(nsString(aDeviceAddress), aPasskey));
|
|
return true;
|
|
}
|
|
|
|
bool
|
|
BluetoothServiceChildProcess::SetPairingConfirmationInternal(
|
|
const nsAString& aDeviceAddress,
|
|
bool aConfirm,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
if(aConfirm) {
|
|
SendRequest(aRunnable,
|
|
ConfirmPairingConfirmationRequest(nsString(aDeviceAddress)));
|
|
} else {
|
|
SendRequest(aRunnable,
|
|
DenyPairingConfirmationRequest(nsString(aDeviceAddress)));
|
|
}
|
|
return true;
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::Connect(
|
|
const nsAString& aDeviceAddress,
|
|
uint32_t aCod,
|
|
uint16_t aServiceUuid,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable,
|
|
ConnectRequest(nsString(aDeviceAddress),
|
|
aCod,
|
|
aServiceUuid));
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::Disconnect(
|
|
const nsAString& aDeviceAddress,
|
|
uint16_t aServiceUuid,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable,
|
|
DisconnectRequest(nsString(aDeviceAddress), aServiceUuid));
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::IsConnected(
|
|
const uint16_t aServiceUuid,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable, IsConnectedRequest(aServiceUuid));
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::SendFile(
|
|
const nsAString& aDeviceAddress,
|
|
BlobParent* aBlobParent,
|
|
BlobChild* aBlobChild,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable,
|
|
SendFileRequest(nsString(aDeviceAddress), nullptr, aBlobChild));
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::SendFile(
|
|
const nsAString& aDeviceAddress,
|
|
Blob* aBlobChild,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
// Parent-process-only method
|
|
MOZ_CRASH("This should never be called!");
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::StopSendingFile(
|
|
const nsAString& aDeviceAddress,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable,
|
|
StopSendingFileRequest(nsString(aDeviceAddress)));
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::ConfirmReceivingFile(
|
|
const nsAString& aDeviceAddress,
|
|
bool aConfirm,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
if(aConfirm) {
|
|
SendRequest(aRunnable,
|
|
ConfirmReceivingFileRequest(nsString(aDeviceAddress)));
|
|
return;
|
|
}
|
|
|
|
SendRequest(aRunnable,
|
|
DenyReceivingFileRequest(nsString(aDeviceAddress)));
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::ConnectSco(BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable, ConnectScoRequest());
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::DisconnectSco(BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable, DisconnectScoRequest());
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::IsScoConnected(BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable, IsScoConnectedRequest());
|
|
}
|
|
|
|
#ifdef MOZ_B2G_RIL
|
|
void
|
|
BluetoothServiceChildProcess::AnswerWaitingCall(
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable, AnswerWaitingCallRequest());
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::IgnoreWaitingCall(
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable, IgnoreWaitingCallRequest());
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::ToggleCalls(
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable, ToggleCallsRequest());
|
|
}
|
|
#endif // MOZ_B2G_RIL
|
|
|
|
void
|
|
BluetoothServiceChildProcess::SendMetaData(const nsAString& aTitle,
|
|
const nsAString& aArtist,
|
|
const nsAString& aAlbum,
|
|
int64_t aMediaNumber,
|
|
int64_t aTotalMediaCount,
|
|
int64_t aDuration,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable,
|
|
SendMetaDataRequest(nsString(aTitle), nsString(aArtist),
|
|
nsString(aAlbum), aMediaNumber,
|
|
aTotalMediaCount, aDuration));
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::SendPlayStatus(int64_t aDuration,
|
|
int64_t aPosition,
|
|
const nsAString& aPlayStatus,
|
|
BluetoothReplyRunnable* aRunnable)
|
|
{
|
|
SendRequest(aRunnable,
|
|
SendPlayStatusRequest(aDuration, aPosition,
|
|
nsString(aPlayStatus)));
|
|
}
|
|
|
|
nsresult
|
|
BluetoothServiceChildProcess::HandleStartup()
|
|
{
|
|
// Don't need to do anything here for startup since our Create function takes
|
|
// care of the actor machinery.
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
BluetoothServiceChildProcess::HandleShutdown()
|
|
{
|
|
// If this process is shutting down then we need to disconnect ourselves from
|
|
// the parent.
|
|
if (sBluetoothChild) {
|
|
sBluetoothChild->BeginShutdown();
|
|
}
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
BluetoothServiceChildProcess::StartInternal()
|
|
{
|
|
MOZ_CRASH("This should never be called!");
|
|
}
|
|
|
|
nsresult
|
|
BluetoothServiceChildProcess::StopInternal()
|
|
{
|
|
MOZ_CRASH("This should never be called!");
|
|
}
|
|
|
|
nsresult
|
|
BluetoothServiceChildProcess::SendSinkMessage(const nsAString& aDeviceAddresses,
|
|
const nsAString& aMessage)
|
|
{
|
|
MOZ_CRASH("This should never be called!");
|
|
}
|
|
|
|
nsresult
|
|
BluetoothServiceChildProcess::SendInputMessage(const nsAString& aDeviceAddresses,
|
|
const nsAString& aMessage)
|
|
{
|
|
MOZ_CRASH("This should never be called!");
|
|
}
|
|
|
|
void
|
|
BluetoothServiceChildProcess::UpdatePlayStatus(uint32_t aDuration,
|
|
uint32_t aPosition,
|
|
ControlPlayStatus aPlayStatus)
|
|
{
|
|
MOZ_CRASH("This should never be called!");
|
|
}
|
|
|