mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 11:25:00 +00:00
Backed out changeset cfddd3baeb0b (bug 1077075)
This commit is contained in:
parent
f11023f88b
commit
bf5fb8cbfc
@ -226,140 +226,100 @@ TelephonyCall::GetGroup() const
|
||||
return group.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<Promise>
|
||||
void
|
||||
TelephonyCall::Answer(ErrorResult& aRv)
|
||||
{
|
||||
nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(GetOwner());
|
||||
if (!global) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsRefPtr<Promise> promise = Promise::Create(global, aRv);
|
||||
NS_ENSURE_TRUE(!aRv.Failed(), nullptr);
|
||||
|
||||
if (mCallState != nsITelephonyService::CALL_STATE_INCOMING) {
|
||||
NS_WARNING("Answer on non-incoming call is rejected!");
|
||||
promise->MaybeReject(NS_ERROR_DOM_INVALID_STATE_ERR);
|
||||
return promise.forget();
|
||||
NS_WARNING("Answer on non-incoming call ignored!");
|
||||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsITelephonyCallback> callback = new TelephonyCallback(promise);
|
||||
aRv = mTelephony->Service()->AnswerCall(mServiceId, mCallIndex, callback);
|
||||
NS_ENSURE_TRUE(!aRv.Failed(), nullptr);
|
||||
nsresult rv = mTelephony->Service()->AnswerCall(mServiceId, mCallIndex);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return;
|
||||
}
|
||||
|
||||
ChangeStateInternal(nsITelephonyService::CALL_STATE_CONNECTING, true);
|
||||
return promise.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<Promise>
|
||||
void
|
||||
TelephonyCall::HangUp(ErrorResult& aRv)
|
||||
{
|
||||
nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(GetOwner());
|
||||
if (!global) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsRefPtr<Promise> promise = Promise::Create(global, aRv);
|
||||
NS_ENSURE_TRUE(!aRv.Failed(), nullptr);
|
||||
|
||||
if (mCallState == nsITelephonyService::CALL_STATE_DISCONNECTING ||
|
||||
mCallState == nsITelephonyService::CALL_STATE_DISCONNECTED) {
|
||||
NS_WARNING("HangUp on previously disconnected call is rejected!");
|
||||
promise->MaybeReject(NS_ERROR_DOM_INVALID_STATE_ERR);
|
||||
return promise.forget();
|
||||
NS_WARNING("HangUp on previously disconnected call ignored!");
|
||||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsITelephonyCallback> callback = new TelephonyCallback(promise);
|
||||
aRv = mCallState == nsITelephonyService::CALL_STATE_INCOMING ?
|
||||
mTelephony->Service()->RejectCall(mServiceId, mCallIndex, callback) :
|
||||
mTelephony->Service()->HangUpCall(mServiceId, mCallIndex, callback);
|
||||
NS_ENSURE_TRUE(!aRv.Failed(), nullptr);
|
||||
nsresult rv = mCallState == nsITelephonyService::CALL_STATE_INCOMING ?
|
||||
mTelephony->Service()->RejectCall(mServiceId, mCallIndex) :
|
||||
mTelephony->Service()->HangUp(mServiceId, mCallIndex);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return;
|
||||
}
|
||||
|
||||
ChangeStateInternal(nsITelephonyService::CALL_STATE_DISCONNECTING, true);
|
||||
return promise.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<Promise>
|
||||
void
|
||||
TelephonyCall::Hold(ErrorResult& aRv)
|
||||
{
|
||||
nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(GetOwner());
|
||||
if (!global) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsRefPtr<Promise> promise = Promise::Create(global, aRv);
|
||||
NS_ENSURE_TRUE(!aRv.Failed(), nullptr);
|
||||
|
||||
if (mCallState != nsITelephonyService::CALL_STATE_CONNECTED) {
|
||||
NS_WARNING("Hold non-connected call is rejected!");
|
||||
promise->MaybeReject(NS_ERROR_DOM_INVALID_STATE_ERR);
|
||||
return promise.forget();
|
||||
NS_WARNING("Hold non-connected call ignored!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (mGroup) {
|
||||
NS_WARNING("Hold a call in conference is rejected!");
|
||||
promise->MaybeReject(NS_ERROR_DOM_INVALID_STATE_ERR);
|
||||
return promise.forget();
|
||||
NS_WARNING("Hold a call in conference ignored!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mSwitchable) {
|
||||
NS_WARNING("Hold a non-switchable call is rejected!");
|
||||
promise->MaybeReject(NS_ERROR_DOM_INVALID_STATE_ERR);
|
||||
return promise.forget();
|
||||
NS_WARNING("Hold a non-switchable call ignored!");
|
||||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsITelephonyCallback> callback = new TelephonyCallback(promise);
|
||||
aRv = mTelephony->Service()->HoldCall(mServiceId, mCallIndex, callback);
|
||||
NS_ENSURE_TRUE(!aRv.Failed(), nullptr);
|
||||
nsresult rv = mTelephony->Service()->HoldCall(mServiceId, mCallIndex);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return;
|
||||
}
|
||||
|
||||
if (mSecondId) {
|
||||
// No state transition when we switch two numbers within one TelephonyCall
|
||||
// object. Otherwise, the state here will be inconsistent with the backend
|
||||
// RIL and will never be right.
|
||||
return promise.forget();
|
||||
return;
|
||||
}
|
||||
|
||||
ChangeStateInternal(nsITelephonyService::CALL_STATE_HOLDING, true);
|
||||
return promise.forget();
|
||||
}
|
||||
|
||||
already_AddRefed<Promise>
|
||||
void
|
||||
TelephonyCall::Resume(ErrorResult& aRv)
|
||||
{
|
||||
nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(GetOwner());
|
||||
if (!global) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsRefPtr<Promise> promise = Promise::Create(global, aRv);
|
||||
NS_ENSURE_TRUE(!aRv.Failed(), nullptr);
|
||||
|
||||
if (mCallState != nsITelephonyService::CALL_STATE_HELD) {
|
||||
NS_WARNING("Resume non-held call is rejected!");
|
||||
promise->MaybeReject(NS_ERROR_DOM_INVALID_STATE_ERR);
|
||||
return promise.forget();
|
||||
NS_WARNING("Resume non-held call ignored!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (mGroup) {
|
||||
NS_WARNING("Resume a call in conference is rejected!");
|
||||
promise->MaybeReject(NS_ERROR_DOM_INVALID_STATE_ERR);
|
||||
return promise.forget();
|
||||
NS_WARNING("Resume a call in conference ignored!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mSwitchable) {
|
||||
NS_WARNING("Resume a non-switchable call is rejected!");
|
||||
promise->MaybeReject(NS_ERROR_DOM_INVALID_STATE_ERR);
|
||||
return promise.forget();
|
||||
NS_WARNING("Resume a non-switchable call ignored!");
|
||||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsITelephonyCallback> callback = new TelephonyCallback(promise);
|
||||
aRv = mTelephony->Service()->ResumeCall(mServiceId, mCallIndex, callback);
|
||||
NS_ENSURE_TRUE(!aRv.Failed(), nullptr);
|
||||
nsresult rv = mTelephony->Service()->ResumeCall(mServiceId, mCallIndex);
|
||||
if (NS_FAILED(rv)) {
|
||||
aRv.Throw(rv);
|
||||
return;
|
||||
}
|
||||
|
||||
ChangeStateInternal(nsITelephonyService::CALL_STATE_RESUMING, true);
|
||||
return promise.forget();
|
||||
}
|
||||
|
@ -7,11 +7,12 @@
|
||||
#ifndef mozilla_dom_telephony_telephonycall_h__
|
||||
#define mozilla_dom_telephony_telephonycall_h__
|
||||
|
||||
#include "mozilla/dom/DOMError.h"
|
||||
#include "mozilla/dom/Promise.h"
|
||||
#include "mozilla/dom/TelephonyCallId.h"
|
||||
#include "mozilla/dom/telephony/TelephonyCommon.h"
|
||||
|
||||
#include "mozilla/dom/DOMError.h"
|
||||
|
||||
#include "TelephonyCallId.h"
|
||||
|
||||
class nsPIDOMWindow;
|
||||
|
||||
namespace mozilla {
|
||||
@ -90,16 +91,16 @@ public:
|
||||
already_AddRefed<TelephonyCallGroup>
|
||||
GetGroup() const;
|
||||
|
||||
already_AddRefed<Promise>
|
||||
void
|
||||
Answer(ErrorResult& aRv);
|
||||
|
||||
already_AddRefed<Promise>
|
||||
void
|
||||
HangUp(ErrorResult& aRv);
|
||||
|
||||
already_AddRefed<Promise>
|
||||
void
|
||||
Hold(ErrorResult& aRv);
|
||||
|
||||
already_AddRefed<Promise>
|
||||
void
|
||||
Resume(ErrorResult& aRv);
|
||||
|
||||
IMPL_EVENT_HANDLER(statechange)
|
||||
|
Loading…
Reference in New Issue
Block a user