Closed Bug 889757 Opened 7 years ago Closed 7 years ago

[Dialer] When holding a call and selecting keypad, cannot hide keypad and input number

Categories

(Firefox OS Graveyard :: Gaia::Dialer, defect, P1)

x86
Windows 7
defect

Tracking

(blocking-b2g:leo+, b2g18 fixed, b2g-v1.1hd fixed)

RESOLVED FIXED
1.1 QE4 (15jul)
blocking-b2g leo+
Tracking Status
b2g18 --- fixed
b2g-v1.1hd --- fixed

People

(Reporter: leo.bugzilla.gaia, Assigned: gduan)

References

Details

(Whiteboard: [TD-56670], [u=commsapps-user c=dialer p=0] , [LeoVB+])

Attachments

(3 files)

1. Title : When holding a call and selecting keypad, cannot hide keypad and input number
2. Precondition : In call
3. Tester's Action : Hold a call >> Select keypad
4. Detailed Symptom : Cannot hide keypad and input number
5. Expected : Can hide keypad and input number
6. Reproducibility: Y
1) Frequency Rate : 100%
7. Gaia Master/v1-train : Reproduce
8. Gaia Revision : f2d6ed54a236e6e3b94f0abad9f0dacb8a1cc7b3
9. Personal email id : promise09th@gmail.com
blocking-b2g: leo? → leo+
Priority: -- → P1
Whiteboard: [TD-56670]
Target Milestone: --- → 1.1 QE4 (15jul)
Attached video Keypad error
I am wondering what is expected behavior of keyboard function after user on-hold a call. 
When on holding, iPhone will disable keyboard function but android enable.
Flags: needinfo?(padamczyk)
Yes, this is definitely a bug. I believe we should dismiss the keyboard.
Flags: needinfo?(padamczyk) → needinfo?(nhsieh)
Whiteboard: [TD-56670] → [TD-56670], [u=commsapps-user c=dialer p=0]
This patch will disable keypad button while user on-hold a call, just like iPhone .
Is this way acceptable?
Attachment #771770 - Flags: review?
Flags: needinfo?(promise09th)
Flags: needinfo?(nhsieh)
Flags: needinfo?(etienne)
Sorry, accidentally remove 'need info from nhsigh'.
Flags: needinfo?(nhsieh)
Can we just enable keypad button during call session?

For DTMF part, there should be no function if call is on-hold by following 3GPP spec for sure.
however, there are some call related supplementary services might need keypad even there is hold call alive according to 3GPP 22.030.

For Android user, user can input mmi code in keypad then just simply click on accumulator to complete call related supplementary services.

Ex: 
there is an active call alive.
user input "1", then click on accumulator, that active call(s) will be released.


// 22.030, Section 6.5.5.1 
Call Deflection, Call Waiting, Call Hold, MultiParty Services, Explicit Call 
Entering 0 followed by SEND - Releases all held calls or sets User Determined User Busy (UDUB) for a waiting call. 
Entering 1 followed by SEND - Releases all active calls (if any exist) and accepts the other (held or waiting) call. 
Entering 1X followed by SEND - Releases a specific active call X. 
Entering 2 followed by SEND - Places all active calls (if any exist) on hold and accepts the other (held or waiting) call. 
Entering 2X followed by SEND - Places all active calls on hold except call X with which communication shall be supported. 
Entering 3 followed by SEND - Adds a held call to the conversation. 
Entering 4 followed by SEND - Connects the two calls and disconnects the subscriber from both calls (ECT). 
Entering 4 * "Directory Number" - Redirect an incoming or a waiting call to the specified followed by SEND directory number. 
Entering 5 followed by SEND - Activates the Completion of Calls to Busy Subscriber Request. 
Entering "Directory Number" - Places all active calls (if any exist) on hold and sets up a followed by SEND new call to the specified Directory Number. 
Entering END - Releases the subscriber from all calls (except a possible waiting 
call). 

"X" is the numbering (starting with 1) of the call given by the sequence of setting up or receiving the calls (active, held or waiting) as seen by the served subscriber. Calls hold their number until they are released. New calls take the lowest available number.
In reply to comment 6,
Thanks for your information.

I found the problem why we keyboard is disabled is due to telephony.active is null when in on-hold state. I am not sure if it's expected, so I give the default value of activeCall to avoid error . This patch should work fine .

Please advise if any suggestion.
Attachment #771836 - Flags: review?
Comment on attachment 771836 [details]
https://github.com/mozilla-b2g/gaia/pull/10820

telephony.active is supposed to be null if we have only 1 call and it's on hold, and OnCallHandler.activeCall should reflect that.

Let's look at the other solutions.
Attachment #771836 - Flags: review? → review-
Comment on attachment 771770 [details]
https://github.com/mozilla-b2g/gaia/pull/10816

Have you tested this with multiple calls?
Attachment #771770 - Flags: review?
The simplest fix would be to properly handle the case where activeCall is null in CallScreen.hideKeypad() (and just remove the class showKeypad without trying to restore the additional infos).

The other solution would be based on your first patch with added safety.
* every time a handledCall is held or resumed it would call an |updateKeypadEnabled()| method on OnCallHandler
* in this |updateKeypadEnabled| method we would check if there is an active call and enable or disable the keypad button accordingly.

What do you think?
Flags: needinfo?(etienne)
Assignee: nobody → gduan
Hi Etienne,

Thanks for your advices. Both solutions are great.
I guess these two methods still not allow user to see the number they type during on-hold? I thought 'Leo' may still want to see, so I made a second patch, try to keep the original function.

But my second patch has some fault, and I will fix it, but I refer to below doc,
https://wiki.mozilla.org/WebAPI/WebTelephony
There should be only one call at most on hold, so I think if the telephony.active is null, we should return a call with 'held' state. what do you think?
Flags: in-moztrap?
Attachment #771836 - Flags: review- → review?(etienne)
(In reply to George Duan [:gduan] from comment #11)
> Hi Etienne,
> 
> Thanks for your advices. Both solutions are great.
> I guess these two methods still not allow user to see the number they type
> during on-hold? I thought 'Leo' may still want to see, so I made a second
> patch, try to keep the original function.

Actually, the function of the call screen keyboard is to send DTMF tones, and DTMF tones are only sent on an active call.
So showing the typed numbers would be misleading since we're not sending them over the wire.
Comment on attachment 771836 [details]
https://github.com/mozilla-b2g/gaia/pull/10820

I think we're back to choosing a solution from Comment 10 :)
Attachment #771836 - Flags: review?(etienne)
Please email us if there's reason to believe this won't the 7/15 deadline.
Comment on attachment 771770 [details]
https://github.com/mozilla-b2g/gaia/pull/10816

Based on comment 10 suggestion, please kindly help to review.
Attachment #771770 - Flags: review?(etienne)
Flags: in-moztrap? → in-moztrap?(cschmoeckel)
Comment on attachment 771770 [details]
https://github.com/mozilla-b2g/gaia/pull/10816

Cool!

r=me with the nits about the unit tests addressed.

Thanks!
Attachment #771770 - Flags: review?(etienne) → review+
Thanks , test case updated!

Merged into master.
master: https://github.com/mozilla-b2g/gaia/commit/a5d187e777e5692fc60be83bbf592637abbc8bc7
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Uplifted a5d187e777e5692fc60be83bbf592637abbc8bc7 to:
v1-train: d231f34578e443c572fb3e9660a5dca90f672059
Duplicate of this bug: 891263
Whiteboard: [TD-56670], [u=commsapps-user c=dialer p=0] → [TD-56670], [u=commsapps-user c=dialer p=0] , [LeoVB+]
v1.1.0hd: d231f34578e443c572fb3e9660a5dca90f672059
Flags: needinfo?(promise09th)
Flags: in-moztrap?(cschmoeckel) → in-moztrap?(dwatson)
Created a test case that covers interacting with the keypad while a call is on hold.

https://moztrap.mozilla.org/manage/cases/?filter-id=9250
Flags: in-moztrap?(dwatson) → in-moztrap+
Flags: needinfo?(nhsieh)
You need to log in before you can comment on or make changes to this bug.