From bf5fb8cbfc03e309946c10fcee086021a4efea83 Mon Sep 17 00:00:00 2001 From: "Carsten \"Tomcat\" Book" Date: Mon, 29 Dec 2014 10:30:19 +0100 Subject: [PATCH] Backed out changeset cfddd3baeb0b (bug 1077075) --- dom/telephony/TelephonyCall.cpp | 126 +++++++++++--------------------- dom/telephony/TelephonyCall.h | 15 ++-- 2 files changed, 51 insertions(+), 90 deletions(-) diff --git a/dom/telephony/TelephonyCall.cpp b/dom/telephony/TelephonyCall.cpp index 4d9cc07a5d13..22070305720a 100644 --- a/dom/telephony/TelephonyCall.cpp +++ b/dom/telephony/TelephonyCall.cpp @@ -226,140 +226,100 @@ TelephonyCall::GetGroup() const return group.forget(); } -already_AddRefed +void TelephonyCall::Answer(ErrorResult& aRv) { - nsCOMPtr global = do_QueryInterface(GetOwner()); - if (!global) { - aRv.Throw(NS_ERROR_FAILURE); - return nullptr; - } - - nsRefPtr 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 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 +void TelephonyCall::HangUp(ErrorResult& aRv) { - nsCOMPtr global = do_QueryInterface(GetOwner()); - if (!global) { - aRv.Throw(NS_ERROR_FAILURE); - return nullptr; - } - - nsRefPtr 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 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 +void TelephonyCall::Hold(ErrorResult& aRv) { - nsCOMPtr global = do_QueryInterface(GetOwner()); - if (!global) { - aRv.Throw(NS_ERROR_FAILURE); - return nullptr; - } - - nsRefPtr 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 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 +void TelephonyCall::Resume(ErrorResult& aRv) { - nsCOMPtr global = do_QueryInterface(GetOwner()); - if (!global) { - aRv.Throw(NS_ERROR_FAILURE); - return nullptr; - } - - nsRefPtr 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 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(); } diff --git a/dom/telephony/TelephonyCall.h b/dom/telephony/TelephonyCall.h index fd5b734ecdb7..3ed9ce837a82 100644 --- a/dom/telephony/TelephonyCall.h +++ b/dom/telephony/TelephonyCall.h @@ -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 GetGroup() const; - already_AddRefed + void Answer(ErrorResult& aRv); - already_AddRefed + void HangUp(ErrorResult& aRv); - already_AddRefed + void Hold(ErrorResult& aRv); - already_AddRefed + void Resume(ErrorResult& aRv); IMPL_EVENT_HANDLER(statechange)