Backed out changeset 9302086dcead (bug 920551)

This commit is contained in:
Ed Morley 2013-10-25 10:52:17 +01:00
parent 0f0d8dbc7f
commit d7fe23f9e5
10 changed files with 5 additions and 122 deletions

View File

@ -881,7 +881,6 @@ BluetoothAdapter::IsScoConnected(ErrorResult& aRv)
already_AddRefed<DOMRequest>
BluetoothAdapter::AnswerWaitingCall(ErrorResult& aRv)
{
#ifdef MOZ_B2G_RIL
nsCOMPtr<nsPIDOMWindow> win = GetOwner();
if (!win) {
aRv.Throw(NS_ERROR_FAILURE);
@ -900,16 +899,11 @@ BluetoothAdapter::AnswerWaitingCall(ErrorResult& aRv)
bs->AnswerWaitingCall(results);
return request.forget();
#else
aRv.Throw(NS_ERROR_NOT_IMPLEMENTED);
return nullptr;
#endif // MOZ_B2G_RIL
}
already_AddRefed<DOMRequest>
BluetoothAdapter::IgnoreWaitingCall(ErrorResult& aRv)
{
#ifdef MOZ_B2G_RIL
nsCOMPtr<nsPIDOMWindow> win = GetOwner();
if (!win) {
aRv.Throw(NS_ERROR_FAILURE);
@ -928,16 +922,11 @@ BluetoothAdapter::IgnoreWaitingCall(ErrorResult& aRv)
bs->IgnoreWaitingCall(results);
return request.forget();
#else
aRv.Throw(NS_ERROR_NOT_IMPLEMENTED);
return nullptr;
#endif // MOZ_B2G_RIL
}
already_AddRefed<DOMRequest>
BluetoothAdapter::ToggleCalls(ErrorResult& aRv)
{
#ifdef MOZ_B2G_RIL
nsCOMPtr<nsPIDOMWindow> win = GetOwner();
if (!win) {
aRv.Throw(NS_ERROR_FAILURE);
@ -956,10 +945,6 @@ BluetoothAdapter::ToggleCalls(ErrorResult& aRv)
bs->ToggleCalls(results);
return request.forget();
#else
aRv.Throw(NS_ERROR_NOT_IMPLEMENTED);
return nullptr;
#endif // MOZ_B2G_RIL
}
already_AddRefed<DOMRequest>

View File

@ -15,24 +15,19 @@
#include "BluetoothUtils.h"
#include "BluetoothUuid.h"
#include "jsapi.h"
#include "MobileConnection.h"
#include "mozilla/dom/bluetooth/BluetoothTypes.h"
#include "mozilla/Services.h"
#include "mozilla/StaticPtr.h"
#include "nsContentUtils.h"
#include "nsIAudioManager.h"
#include "nsIDOMIccInfo.h"
#include "nsIIccProvider.h"
#include "nsIObserverService.h"
#include "nsISettingsService.h"
#include "nsServiceManagerUtils.h"
#ifdef MOZ_B2G_RIL
#include "nsIDOMIccInfo.h"
#include "nsIDOMMobileConnection.h"
#include "nsIIccProvider.h"
#include "nsIMobileConnectionProvider.h"
#include "nsITelephonyProvider.h"
#include "nsRadioInterfaceLayer.h"
#endif
#include "nsServiceManagerUtils.h"
/**
* BRSF bitmask of AG supported features. See 4.34.1 "Bluetooth Defined AT
@ -49,7 +44,6 @@
#define BRSF_BIT_EXTENDED_ERR_RESULT_CODES (1 << 8)
#define BRSF_BIT_CODEC_NEGOTIATION (1 << 9)
#ifdef MOZ_B2G_RIL
/**
* These constants are used in result code such as +CLIP and +CCWA. The value
* of these constants is the same as TOA_INTERNATIONAL/TOA_UNKNOWN defined in
@ -57,7 +51,6 @@
*/
#define TOA_UNKNOWN 0x81
#define TOA_INTERNATIONAL 0x91
#endif
#define CR_LF "\xd\xa";
@ -73,7 +66,6 @@ namespace {
bool sInShutdown = false;
static const char kHfpCrlf[] = "\xd\xa";
#ifdef MOZ_B2G_RIL
// Sending ringtone related
static bool sStopSendingRingFlag = true;
static int sRingInterval = 3000; //unit: ms
@ -87,10 +79,8 @@ namespace {
// The mechanism should be revised once we know the exact time at which
// Dialer stops playing.
static int sBusyToneInterval = 3700; //unit: ms
#endif // MOZ_B2G_RIL
} // anonymous namespace
#ifdef MOZ_B2G_RIL
/* CallState for sCINDItems[CINDType::CALL].value
* - NO_CALL: there are no calls in progress
* - IN_PROGRESS: at least one call is in progress
@ -123,7 +113,6 @@ enum CallHeldState {
ONHOLD_ACTIVE,
ONHOLD_NOACTIVE
};
#endif // MOZ_B2G_RIL
typedef struct {
const char* name;
@ -134,27 +123,23 @@ typedef struct {
enum CINDType {
BATTCHG = 1,
#ifdef MOZ_B2G_RIL
CALL,
CALLHELD,
CALLSETUP,
SERVICE,
SIGNAL,
ROAM
#endif
};
static CINDItem sCINDItems[] = {
{},
{"battchg", "0-5", 5, true},
#ifdef MOZ_B2G_RIL
{"call", "0,1", CallState::NO_CALL, true},
{"callheld", "0-2", CallHeldState::NO_CALLHELD, true},
{"callsetup", "0-3", CallSetupState::NO_CALLSETUP, true},
{"service", "0,1", 0, true},
{"signal", "0-5", 0, true},
{"roam", "0,1", 0, true}
#endif
};
class BluetoothHfpManager::GetVolumeTask : public nsISettingsServiceCallback
@ -221,7 +206,6 @@ BluetoothHfpManager::Notify(const hal::BatteryInformation& aBatteryInfo)
}
}
#ifdef MOZ_B2G_RIL
class BluetoothHfpManager::RespondToBLDNTask : public Task
{
private:
@ -281,7 +265,6 @@ private:
nsString mNumber;
int mType;
};
#endif // MOZ_B2G_RIL
class BluetoothHfpManager::CloseScoTask : public Task
{
@ -294,7 +277,6 @@ private:
}
};
#ifdef MOZ_B2G_RIL
static bool
IsValidDtmf(const char aChar) {
// Valid DTMF: [*#0-9ABCD]
@ -337,7 +319,6 @@ Call::IsActive()
{
return (mState == nsITelephonyProvider::CALL_STATE_CONNECTED);
}
#endif // MOZ_B2G_RIL
/**
* BluetoothHfpManager
@ -347,7 +328,6 @@ BluetoothHfpManager::BluetoothHfpManager()
Reset();
}
#ifdef MOZ_B2G_RIL
void
BluetoothHfpManager::ResetCallArray()
{
@ -361,44 +341,35 @@ BluetoothHfpManager::ResetCallArray()
mCdmaSecondCall.Reset();
}
}
#endif // MOZ_B2G_RIL
void
BluetoothHfpManager::Reset()
{
#ifdef MOZ_B2G_RIL
sStopSendingRingFlag = true;
sCINDItems[CINDType::CALL].value = CallState::NO_CALL;
sCINDItems[CINDType::CALLSETUP].value = CallSetupState::NO_CALLSETUP;
sCINDItems[CINDType::CALLHELD].value = CallHeldState::NO_CALLHELD;
#endif
for (uint8_t i = 1; i < ArrayLength(sCINDItems); i++) {
sCINDItems[i].activated = true;
}
#ifdef MOZ_B2G_RIL
mCCWA = false;
mCLIP = false;
mDialingRequestProcessed = true;
#endif
mCMEE = false;
mCMER = false;
mReceiveVgsFlag = false;
mDialingRequestProcessed = true;
#ifdef MOZ_B2G_RIL
// We disable BSIR by default as it requires OEM implement BT SCO + SPEAKER
// output audio path in audio driver. OEM can enable BSIR by setting
// mBSIR=true here.
//
// Please see Bug 878728 for more information.
mBSIR = false;
#endif
mController = nullptr;
#ifdef MOZ_B2G_RIL
ResetCallArray();
#endif
}
bool
@ -417,13 +388,11 @@ BluetoothHfpManager::Init()
hal::RegisterBatteryObserver(this);
#ifdef MOZ_B2G_RIL
mListener = new BluetoothRilListener();
if (!mListener->StartListening()) {
BT_WARNING("Failed to start listening RIL");
return false;
}
#endif
nsCOMPtr<nsISettingsService> settings =
do_GetService("@mozilla.org/settingsService;1");
@ -450,12 +419,10 @@ BluetoothHfpManager::Init()
BluetoothHfpManager::~BluetoothHfpManager()
{
#ifdef MOZ_B2G_RIL
if (!mListener->StopListening()) {
BT_WARNING("Failed to stop listening RIL");
}
mListener = nullptr;
#endif
nsCOMPtr<nsIObserverService> obs = services::GetObserverService();
NS_ENSURE_TRUE_VOID(obs);
@ -521,7 +488,6 @@ BluetoothHfpManager::NotifyConnectionStatusChanged(const nsAString& aType)
DispatchStatusChangedEvent(eventName, mDeviceAddress, status);
}
#ifdef MOZ_B2G_RIL
void
BluetoothHfpManager::NotifyDialer(const nsAString& aCommand)
{
@ -538,7 +504,6 @@ BluetoothHfpManager::NotifyDialer(const nsAString& aCommand)
BT_WARNING("Failed to broadcast system message to dialer");
}
}
#endif // MOZ_B2G_RIL
void
BluetoothHfpManager::HandleVolumeChanged(const nsAString& aData)
@ -588,7 +553,6 @@ BluetoothHfpManager::HandleVolumeChanged(const nsAString& aData)
}
}
#ifdef MOZ_B2G_RIL
void
BluetoothHfpManager::HandleVoiceConnectionChanged()
{
@ -674,7 +638,6 @@ BluetoothHfpManager::HandleIccInfoChanged()
NS_ENSURE_TRUE_VOID(gsmIccInfo);
gsmIccInfo->GetMsisdn(mMsisdn);
}
#endif // MOZ_B2G_RIL
void
BluetoothHfpManager::HandleShutdown()
@ -702,7 +665,6 @@ BluetoothHfpManager::ReceiveSocketData(BluetoothSocket* aSocket,
// For more information, please refer to 4.34.1 "Bluetooth Defined AT
// Capabilities" in Bluetooth hands-free profile 1.6
if (msg.Find("AT+BRSF=") != -1) {
#ifdef MOZ_B2G_RIL
uint32_t brsf = BRSF_BIT_ABILITY_TO_REJECT_CALL |
BRSF_BIT_ENHANCED_CALL_STATUS;
@ -715,9 +677,6 @@ BluetoothHfpManager::ReceiveSocketData(BluetoothSocket* aSocket,
if (mBSIR) {
brsf |= BRSF_BIT_IN_BAND_RING_TONE;
}
#else
uint32_t brsf = 0;
#endif // MOZ_B2G_RIL
SendCommand("+BRSF: ", brsf);
} else if (msg.Find("AT+CIND=?") != -1) {
@ -758,7 +717,6 @@ BluetoothHfpManager::ReceiveSocketData(BluetoothSocket* aSocket,
// AT+CMEE = 1: use numeric <err>
// AT+CMEE = 2: use verbose <err>
mCMEE = !atCommandValues[0].EqualsLiteral("0");
#ifdef MOZ_B2G_RIL
} else if (msg.Find("AT+COPS=") != -1) {
ParseAtCommand(msg, 8, atCommandValues);
@ -797,7 +755,6 @@ BluetoothHfpManager::ReceiveSocketData(BluetoothSocket* aSocket,
message += atCommandValues[0].get()[0];
NotifyDialer(NS_ConvertUTF8toUTF16(message));
}
#endif // MOZ_B2G_RIL
} else if (msg.Find("AT+VGM=") != -1) {
ParseAtCommand(msg, 7, atCommandValues);
@ -815,7 +772,6 @@ BluetoothHfpManager::ReceiveSocketData(BluetoothSocket* aSocket,
NS_ASSERTION(vgm >= 0 && vgm <= 15, "Received invalid VGM value");
mCurrentVgm = vgm;
#ifdef MOZ_B2G_RIL
} else if (msg.Find("AT+CHLD=?") != -1) {
SendLine("+CHLD: (0,1,2)");
} else if (msg.Find("AT+CHLD=") != -1) {
@ -866,7 +822,6 @@ BluetoothHfpManager::ReceiveSocketData(BluetoothSocket* aSocket,
SendLine("ERROR");
return;
}
#endif // MOZ_B2G_RIL
} else if (msg.Find("AT+VGS=") != -1) {
// Adjust volume by headset
mReceiveVgsFlag = true;
@ -894,7 +849,6 @@ BluetoothHfpManager::ReceiveSocketData(BluetoothSocket* aSocket,
nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService();
data.AppendInt(newVgs);
os->NotifyObservers(nullptr, "bluetooth-volume-change", data.get());
#ifdef MOZ_B2G_RIL
} else if ((msg.Find("AT+BLDN") != -1) || (msg.Find("ATD>") != -1)) {
// Dialer app of FFOS v1 does not have plan to support Memory Dailing.
// However, in order to pass Bluetooth HFP certification, we still have to
@ -1020,7 +974,6 @@ BluetoothHfpManager::ReceiveSocketData(BluetoothSocket* aSocket,
// Ignore requests to activate/deactivate mandatory indicators
}
}
#endif // MOZ_B2G_RIL
} else {
nsCString warningMsg;
warningMsg.Append(NS_LITERAL_CSTRING("Unsupported AT command: "));
@ -1146,7 +1099,6 @@ BluetoothHfpManager::Disconnect(BluetoothProfileController* aController)
mSocket = nullptr;
}
#ifdef MOZ_B2G_RIL
void
BluetoothHfpManager::SendCCWA(const nsAString& aNumber, int aType)
{
@ -1208,7 +1160,6 @@ BluetoothHfpManager::SendCLCC(const Call& aCall, int aIndex)
return SendLine(message.get());
}
#endif // MOZ_B2G_RIL
bool
BluetoothHfpManager::SendLine(const char* aMessage)
@ -1274,7 +1225,6 @@ BluetoothHfpManager::SendCommand(const char* aCommand, uint32_t aValue)
message.AppendLiteral(",");
}
}
#ifdef MOZ_B2G_RIL
} else if (!strcmp(aCommand, "+CLCC: ")) {
bool rv = true;
uint32_t callNumbers = mCurrentCallArray.Length();
@ -1291,7 +1241,6 @@ BluetoothHfpManager::SendCommand(const char* aCommand, uint32_t aValue)
}
return rv;
#endif // MOZ_B2G_RIL
} else {
message.AppendInt(aValue);
}
@ -1299,7 +1248,6 @@ BluetoothHfpManager::SendCommand(const char* aCommand, uint32_t aValue)
return SendLine(message.get());
}
#ifdef MOZ_B2G_RIL
void
BluetoothHfpManager::UpdateCIND(uint8_t aType, uint8_t aValue, bool aSend)
{
@ -1580,15 +1528,12 @@ BluetoothHfpManager::ToggleCalls()
nsITelephonyProvider::CALL_STATE_HELD :
nsITelephonyProvider::CALL_STATE_CONNECTED;
}
#endif // MOZ_B2G_RIL
void
BluetoothHfpManager::OnSocketConnectSuccess(BluetoothSocket* aSocket)
{
MOZ_ASSERT(aSocket);
#ifdef MOZ_B2G_RIL
MOZ_ASSERT(mListener);
#endif
// Success to create a SCO socket
if (aSocket == mScoSocket) {
@ -1617,12 +1562,10 @@ BluetoothHfpManager::OnSocketConnectSuccess(BluetoothSocket* aSocket)
mHandsfreeSocket = nullptr;
}
#ifdef MOZ_B2G_RIL
// Enumerate current calls
mListener->EnumerateCalls();
mFirstCKPD = true;
#endif
// Cache device path for NotifySettings() since we can't get socket address
// when a headset disconnect with us

View File

@ -9,9 +9,7 @@
#include "BluetoothCommon.h"
#include "BluetoothProfileManagerBase.h"
#ifdef MOZ_B2G_RIL
#include "BluetoothRilListener.h"
#endif
#include "BluetoothSocketObserver.h"
#include "mozilla/ipc/UnixSocket.h"
#include "mozilla/Hal.h"
@ -20,8 +18,6 @@ BEGIN_BLUETOOTH_NAMESPACE
class BluetoothReplyRunnable;
class BluetoothSocket;
#ifdef MOZ_B2G_RIL
class Call;
/**
@ -71,7 +67,6 @@ public:
nsString mNumber;
int mType;
};
#endif // MOZ_B2G_RIL
class BluetoothHfpManager : public BluetoothSocketObserver
, public BluetoothProfileManagerBase
@ -114,7 +109,6 @@ public:
bool DisconnectSco();
bool ListenSco();
#ifdef MOZ_B2G_RIL
/**
* @param aSend A boolean indicates whether we need to notify headset or not
*/
@ -123,33 +117,26 @@ public:
const bool aIsOutgoing, bool aSend);
void HandleIccInfoChanged();
void HandleVoiceConnectionChanged();
#endif
bool IsConnected();
bool IsScoConnected();
#ifdef MOZ_B2G_RIL
// CDMA-specific functions
void UpdateSecondNumber(const nsAString& aNumber);
void AnswerWaitingCall();
void IgnoreWaitingCall();
void ToggleCalls();
#endif
private:
class CloseScoTask;
class GetVolumeTask;
#ifdef MOZ_B2G_RIL
class RespondToBLDNTask;
class SendRingIndicatorTask;
#endif
friend class CloseScoTask;
friend class GetVolumeTask;
#ifdef MOZ_B2G_RIL
friend class RespondToBLDNTask;
friend class SendRingIndicatorTask;
#endif
friend class BluetoothHfpManagerObserver;
BluetoothHfpManager();
@ -159,55 +146,41 @@ private:
bool Init();
void Notify(const hal::BatteryInformation& aBatteryInfo);
void Reset();
#ifdef MOZ_B2G_RIL
void ResetCallArray();
uint32_t FindFirstCall(uint16_t aState);
uint32_t GetNumberOfCalls(uint16_t aState);
PhoneType GetPhoneType(const nsAString& aType);
#endif
void NotifyConnectionStatusChanged(const nsAString& aType);
void NotifyDialer(const nsAString& aCommand);
#ifdef MOZ_B2G_RIL
void SendCCWA(const nsAString& aNumber, int aType);
bool SendCLCC(const Call& aCall, int aIndex);
#endif
bool SendCommand(const char* aCommand, uint32_t aValue = 0);
bool SendLine(const char* aMessage);
#ifdef MOZ_B2G_RIL
void UpdateCIND(uint8_t aType, uint8_t aValue, bool aSend = true);
#endif
void OnScoConnectSuccess();
void OnScoConnectError();
void OnScoDisconnect();
int mCurrentVgs;
int mCurrentVgm;
#ifdef MOZ_B2G_RIL
bool mBSIR;
bool mCCWA;
bool mCLIP;
#endif
bool mCMEE;
bool mCMER;
#ifdef MOZ_B2G_RIL
bool mFirstCKPD;
int mNetworkSelectionMode;
PhoneType mPhoneType;
#endif
bool mReceiveVgsFlag;
#ifdef MOZ_B2G_RIL
bool mDialingRequestProcessed;
#endif
nsString mDeviceAddress;
#ifdef MOZ_B2G_RIL
nsString mMsisdn;
nsString mOperatorName;
nsTArray<Call> mCurrentCallArray;
nsAutoPtr<BluetoothRilListener> mListener;
#endif
nsRefPtr<BluetoothReplyRunnable> mRunnable;
nsRefPtr<BluetoothProfileController> mController;
nsRefPtr<BluetoothReplyRunnable> mScoRunnable;
@ -226,10 +199,8 @@ private:
nsRefPtr<BluetoothSocket> mScoSocket;
SocketConnectionStatus mScoSocketStatus;
#ifdef MOZ_B2G_RIL
// CDMA-specific variable
Call mCdmaSecondCall;
#endif
};
END_BLUETOOTH_NAMESPACE

View File

@ -266,7 +266,6 @@ public:
virtual void
IsScoConnected(BluetoothReplyRunnable* aRunnable) = 0;
#ifdef MOZ_B2G_RIL
virtual void
AnswerWaitingCall(BluetoothReplyRunnable* aRunnable) = 0;
@ -275,7 +274,6 @@ public:
virtual void
ToggleCalls(BluetoothReplyRunnable* aRunnable) = 0;
#endif
virtual void
SendMetaData(const nsAString& aTitle,

View File

@ -226,14 +226,12 @@ BluetoothParent::RecvPBluetoothRequestConstructor(
return actor->DoRequest(aRequest.get_DisconnectScoRequest());
case Request::TIsScoConnectedRequest:
return actor->DoRequest(aRequest.get_IsScoConnectedRequest());
#ifdef MOZ_B2G_RIL
case Request::TAnswerWaitingCallRequest:
return actor->DoRequest(aRequest.get_AnswerWaitingCallRequest());
case Request::TIgnoreWaitingCallRequest:
return actor->DoRequest(aRequest.get_IgnoreWaitingCallRequest());
case Request::TToggleCallsRequest:
return actor->DoRequest(aRequest.get_ToggleCallsRequest());
#endif
case Request::TSendMetaDataRequest:
return actor->DoRequest(aRequest.get_SendMetaDataRequest());
case Request::TSendPlayStatusRequest:
@ -583,7 +581,6 @@ BluetoothRequestParent::DoRequest(const IsScoConnectedRequest& aRequest)
return true;
}
#ifdef MOZ_B2G_RIL
bool
BluetoothRequestParent::DoRequest(const AnswerWaitingCallRequest& aRequest)
{
@ -616,7 +613,6 @@ BluetoothRequestParent::DoRequest(const ToggleCallsRequest& aRequest)
return true;
}
#endif // MOZ_B2G_RIL
bool
BluetoothRequestParent::DoRequest(const SendMetaDataRequest& aRequest)

View File

@ -190,7 +190,6 @@ protected:
bool
DoRequest(const IsScoConnectedRequest& aRequest);
#ifdef MOZ_B2G_RIL
bool
DoRequest(const AnswerWaitingCallRequest& aRequest);
@ -199,7 +198,6 @@ protected:
bool
DoRequest(const ToggleCallsRequest& aRequest);
#endif
bool
DoRequest(const SendMetaDataRequest& aRequest);

View File

@ -328,7 +328,6 @@ BluetoothServiceChildProcess::IsScoConnected(BluetoothReplyRunnable* aRunnable)
SendRequest(aRunnable, IsScoConnectedRequest());
}
#ifdef MOZ_B2G_RIL
void
BluetoothServiceChildProcess::AnswerWaitingCall(
BluetoothReplyRunnable* aRunnable)
@ -349,7 +348,6 @@ BluetoothServiceChildProcess::ToggleCalls(
{
SendRequest(aRunnable, ToggleCallsRequest());
}
#endif // MOZ_B2G_RIL
void
BluetoothServiceChildProcess::SendMetaData(const nsAString& aTitle,

View File

@ -149,7 +149,6 @@ public:
virtual void
IsScoConnected(BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE;
#ifdef MOZ_B2G_RIL
virtual void
AnswerWaitingCall(BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE;
@ -158,7 +157,6 @@ public:
virtual void
ToggleCalls(BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE;
#endif
virtual void
SendMetaData(const nsAString& aTitle,

View File

@ -2635,7 +2635,6 @@ BluetoothDBusService::IsConnected(const uint16_t aServiceUuid)
return profile->IsConnected();
}
#ifdef MOZ_B2G_RIL
void
BluetoothDBusService::AnswerWaitingCall(BluetoothReplyRunnable* aRunnable)
{
@ -2668,7 +2667,6 @@ BluetoothDBusService::ToggleCalls(BluetoothReplyRunnable* aRunnable)
DispatchBluetoothReply(aRunnable, BluetoothValue(true), EmptyString());
}
#endif // MOZ_B2G_RIL
class OnUpdateSdpRecordsRunnable : public nsRunnable
{

View File

@ -135,7 +135,6 @@ public:
virtual void
IsScoConnected(BluetoothReplyRunnable* aRunnable) MOZ_OVERRIDE;
#ifdef MOZ_B2G_RIL
virtual void
AnswerWaitingCall(BluetoothReplyRunnable* aRunnable);
@ -144,7 +143,6 @@ public:
virtual void
ToggleCalls(BluetoothReplyRunnable* aRunnable);
#endif
virtual void
SendMetaData(const nsAString& aTitle,