Skip to content
This repository has been archived by the owner on Nov 3, 2021. It is now read-only.

Commit

Permalink
Bug 905558 - Perform operations on active call at first, fallback to …
Browse files Browse the repository at this point in the history
…the previous call if the active call is null r=etinne a=leo+
  • Loading branch information
crh0716 committed Aug 20, 2013
1 parent b5f3226 commit 3bd5c3b
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 21 deletions.
2 changes: 1 addition & 1 deletion apps/communications/dialer/js/dialer.js
Expand Up @@ -180,7 +180,7 @@ var CallHandler = (function callHandler() {
if (command[3] === '>') {
var pos = parseInt(command.substring(4), 10);

CallLogDBManager.getGroupAtIndex(pos, 'lastEntryDate', true, null,
CallLogDBManager.getGroupAtPosition(pos, 'lastEntryDate', true, null,
function(result) {
if (result && (typeof result === 'object') && result.number) {
CallHandler.call(result.number);
Expand Down
48 changes: 28 additions & 20 deletions apps/communications/dialer/js/oncall.js
Expand Up @@ -549,10 +549,16 @@ var OnCallHandler = (function onCallHandler() {
answer();
break;
case 'CHUP+ATA':
endAndAnswer();
// End the active call and answer the other one
if (handledCalls.length === 1) {
end();
} else {
endAndAnswer();
}
break;
case 'CHLD+ATA':
if (telephony.calls.length === 1) {
// Hold the active call and answer the other one
if (handledCalls.length === 1) {
holdOrResumeSingleCall();
} else {
holdAndAnswer();
Expand Down Expand Up @@ -631,30 +637,32 @@ var OnCallHandler = (function onCallHandler() {
}

function holdAndAnswer() {
var callToAnswerIndex = handledCalls.length - 1;
var callToHoldIndex = callToAnswerIndex - 1;
var callToAnswer = handledCalls[callToAnswerIndex].call;
if (handledCalls.length < 2) {
return;
}

if (handledCalls[callToHoldIndex]) {
handledCalls[callToHoldIndex].call.hold();
if (telephony.active) {
// connected, incoming
telephony.active.hold(); // the incoming call is answered by gecko
} else {
// held, incoming
var lastCall = handledCalls[handledCalls.length - 1].call;
lastCall.answer(); // the previous call is held by gecko
}
callToAnswer.answer();

CallScreen.hideIncoming();
}

function endAndAnswer() {
var callToAnswerIndex = handledCalls.length - 1;
var callToEndIndex = callToAnswerIndex - 1;
var callToAnswer = handledCalls[callToAnswerIndex].call;

if (handledCalls[callToEndIndex]) {
var callToEnd = handledCalls[callToEndIndex].call;
callToEnd.addEventListener('disconnected', function disconnected() {
callToEnd.removeEventListener('disconnected', disconnected);
callToAnswer.answer();
});
callToEnd.hangUp();
if (handledCalls.length < 2) {
return;
}

var callToEnd = telephony.active || // connected, incoming
handledCalls[handledCalls.length - 2].call; // held, incoming

if (callToEnd) {
callToEnd.hangUp(); // the incoming call is answered automatically
}

CallScreen.hideIncoming();
Expand All @@ -669,7 +677,7 @@ var OnCallHandler = (function onCallHandler() {
// Putting a call on Hold when there are no other
// calls in progress has been disabled until a less
// accidental user-interface is implemented.
// See bug 894232 and bug 882056 for more background.
// See bug 894232 and bug 882056 for more background.
return;
}

Expand Down

0 comments on commit 3bd5c3b

Please sign in to comment.