Closed
Bug 942036
Opened 12 years ago
Closed 11 years ago
[B2G][Helix][dialer][tongxiao]When press a key immediately the call is been connected,the key will be blue and the tone will be played until the call is disconnected.
Categories
(Firefox OS Graveyard :: Gaia::Dialer, defect, P2)
Firefox OS Graveyard
Gaia::Dialer
Tracking
(Not tracked)
RESOLVED
WORKSFORME
People
(Reporter: lecky.wanglei, Unassigned)
Details
Attachments
(5 files)
User Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MALC; aff-kingsoft-ciba; .NET4.0C; .NET4.0E; Tablet PC 2.0)
Steps to reproduce:
【Detail Description*】:When press a key immediately the call is been connected,the key will be blue and the tone will be played until the call is disconnected.
【Repro Steps*】:
1. The UE make a call .
2. When the call is been connected,press a key immediately in the keypad .
3. check the key which is pressed.
【Expect Result*】:The key will be blue and the tone will be played when the key is pressed down.The key will be common colour and the tone will stop played when the key is pressed up.
【Real Result*】:the key will be blue and the tone will be played until the call is disconnected.
【Test Count*】:10
【Found Count*】:4
【Gaia commit ID*】:c0ea0a4943dc8d3751b07f5b5c5d3abe06364a14
【Gecko commit ID*】: 170f9e477571127cd40997fa2abe262ed43f0e4d
【Log*】:
【Network environment】:
【Resume operation】:
【Carrier】:
I have add the dump log in the code "Keypad.js" like below. And I will upload the log for you.
case 'touchstart':
this._longPress = false;
this._keyPressStart = Date.now();
this._lastPressedKey = key;
//add code
dump('keytest touchstart key ' + key);
dump('keytest touchstart _lastPressedKey ' + this._lastPressedKey);
//add code
if (key != 'delete') {
if (keypadSoundIsEnabled) {
// We do not support long press if not on a call
//add code
dump('keytest touchstart '+this._onCall);
//add code
TonePlayer.start(gTonesFrequencies[key], !this._onCall);
}
}
case 'touchend':
// Stop playing the DTMF/tone after a small delay
// or right away if this is a long press
// Sending the DTMF tone if on a call on touchend or touchleave
// to prevent sending unwanted tones (BUG #829406);
//add code
dump('keytest touchend key ' + key);
dump('keytest touchend _lastPressedKey ' + this._lastPressedKey);
//add code
if (key !== 'delete' && key === this._lastPressedKey) {
var keyPressStop = Date.now(),
toneLength = keyPressStop - this._keyPressStart;
//add code
dump('keytest touchend 1 ');
//add code
if (keypadSoundIsEnabled) {
//add code
dump('keytest touchend 2 ');
//add code
TonePlayer.stop();
//add code
dump('keytest touchend 3 ');
//add code
}
//add code
dump('keytest touchend 4 ');
//add code
this._keyPressStart = null;
this._lastPressedKey = null;
if (this._onCall) {
clearTimeout(this._dtmfToneTimer);
// Stop previous tone before dispatching a new one
//add code
dump('keytest touchend 5 ');
//add code
telephony.stopTone();
//add code
dump('keytest touchend 6 ');
//add code
telephony.startTone(key);
this._dtmfToneTimer = window.setTimeout(function ch_playDTMF() {
telephony.stopTone();
//add code
dump('keytest touchend 7 ');
//add code
}, toneLength, this);
}
}
//add code
dump('keytest touchend 8 ');
//add code
var delay = this._longPress ? 0 : 100;
if (keypadSoundIsEnabled) {
TonePlayer.stop();
//add code
dump('keytest touchend 9 ');
//add code
}
if (this._onCall) {
window.setTimeout(function ch_stopTone() {
//add code
dump('keytest touchend 10 '+delay);
//add code
telephony.stopTone();
}, delay);
}
//add code
dump('keytest touchend 11 ');
//add code
// If it was a long press our work is already done
if (this._longPress) {
this._longPress = false;
this._holdTimer = null;
return;
}
//add code
dump('keytest touchend 12 ');
//add code
if (this._holdTimer)
clearTimeout(this._holdTimer);
//add code
dump('keytest touchend 13 ');
//add code
break;
}
Hi,
From the log that I catch ,the touchstart event is later than the touchend event .
So the tone will start in the touchstart event ,but do not stop because the touchstart event is later than the touchend event .
Comment 4•12 years ago
|
||
Hi Shawn,
Can you check the code suggested above here?
Thanks
Flags: needinfo?(wchang) → needinfo?(sku)
Hi,
When I touch any other key in the keypad ,the phenomenon will disappear and the keypad will be ordinary.
Hi,
When the problem happens,after I touch any other key in the keypad ,
the phenomenon will disappear and the keypad will be normal.
Comment 7•12 years ago
|
||
Hi Lecky:
Please also get touch event log at the same time to let us do more check.
// Commands to get touch event.
adb shell getevent -t -l /dev/input/event0 | grep "BTN_T" > /tmp/touch.log
// Sample log.
355-641436: EV_KEY BTN_TOUCH DOWN
355-890426: EV_KEY BTN_TOUCH UP
357-225211: EV_KEY BTN_TOUCH DOWN
357-251739: EV_KEY BTN_TOUCH UP
357-598159: EV_KEY BTN_TOUCH DOWN
357-663489: EV_KEY BTN_TOUCH UP
358-329713: EV_KEY BTN_TOUCH DOWN
358-355586: EV_KEY BTN_TOUCH UP
// Commands to get device log.
adb logcat -v threadtime > /tmp/device.log
As log shows, touchstart is received after touchend.
That makes this issue you see.
We need to know if touch driver report the correct sequence in this case.
11-22 11:12:45.879: INFO/GeckoDump(513): keytest touchstart key 6
11-22 11:12:45.879: INFO/GeckoDump(513): keytest touchstart _lastPressedKey 6
11-22 11:12:45.879: INFO/GeckoDump(513): keytest touchstart false
11-22 11:12:45.969: INFO/GeckoDump(513): keytest touchend key 6
11-22 11:12:45.969: INFO/GeckoDump(513): keytest touchend _lastPressedKey 6
11-22 11:12:45.969: INFO/GeckoDump(513): keytest touchend 1
11-22 11:12:45.969: INFO/GeckoDump(513): keytest touchend 2
11-22 11:12:45.979: INFO/GeckoDump(513): keytest touchend 3
11-22 11:12:45.979: INFO/GeckoDump(513): keytest touchend 4
11-22 11:12:45.979: INFO/GeckoDump(513): keytest touchend 8
11-22 11:12:45.979: INFO/GeckoDump(513): keytest touchend 9
11-22 11:12:45.979: INFO/GeckoDump(513): keytest touchend 11
11-22 11:12:45.979: INFO/GeckoDump(513): keytest touchend 12
11-22 11:12:45.979: INFO/GeckoDump(513): keytest touchend 13
11-22 11:12:53.019: INFO/GeckoDump(513): keytest touchend key 1
11-22 11:12:53.019: INFO/GeckoDump(513): keytest touchend _lastPressedKey undefined
11-22 11:12:53.019: INFO/GeckoDump(513): keytest touchend 8
11-22 11:12:53.019: INFO/GeckoDump(513): keytest touchend 9
11-22 11:12:53.019: INFO/GeckoDump(513): keytest touchend 11
11-22 11:12:53.019: INFO/GeckoDump(513): keytest touchend 12
11-22 11:12:53.019: INFO/GeckoDump(513): keytest touchend 13
11-22 11:12:53.029: INFO/GeckoDump(513): keytest touchstart key 1
11-22 11:12:53.029: INFO/GeckoDump(513): keytest touchstart _lastPressedKey 1
11-22 11:12:53.029: INFO/GeckoDump(513): keytest touchstart true
11-22 11:12:53.149: INFO/GeckoDump(513): keytest touchend 10 100
Flags: needinfo?(sku) → needinfo?(lecky.wanglei)
Hi,
the touch log like this:
Line 17: 1288-132352: EV_KEY BTN_TOUCH DOWN
Line 37: 1288-197477: EV_KEY BTN_TOUCH UP
Line 57: 1294-63857: EV_KEY BTN_TOUCH DOWN
Line 77: 1294-128751: EV_KEY BTN_TOUCH UP
Line 97: 1294-832826: EV_KEY BTN_TOUCH DOWN
Line 117: 1294-859651: EV_KEY BTN_TOUCH UP
Flags: needinfo?(lecky.wanglei)
Comment 10•12 years ago
|
||
Hi there:
I think you miss-understand what I said.
Please get device log + touch events log at the same time.
We need to make sure that key event seq. is worked as expected while issue happening.
1. make sure device log + touch events logs are both captured while running the test.
2. stop testing when hit issue.
3. record the timestamp.
4. update logs and time stamp to Bugzilla.
The reason I ask this is because
the event handler for both start/end are in the same thread. it looks like not Gaia/Gecko issue.
and we need to make sure if kernel report correct seq. of down/up to Gecko -> Gaia.
Thanks!!!
sku
Flags: needinfo?(sku)
| Reporter | ||
Comment 11•12 years ago
|
||
Comment 12•12 years ago
|
||
Hi there:
Thanks for your test/log.
After checking, driver report correct touch down/up seq.
However, it seems like I saw a move event around 105-108236.
Please help me add more logs at 'touchmove'@Keypad.js, and make sure the log in touchstart/touchend are printed.
(I tried 2x times, and can not repo.issue).
I would like to prove this point.
Thanks!!
sku
Ex:
case 'touchmove':
var target = document.elementFromPoint(
event.touches[0].pageX, event.touches[0].pageY);
key = target.dataset ? target.dataset.value : null;
dump('keytest touchmove 1 key : ' + key + ' lastPressedKey : ' + this._lastPressedKey);
if (key !== this._lastPressedKey || key === 'delete') {
dump('keytest touchmove 2');
this._keyPressStart = null;
this._lastPressedKey = null;
}
break;
// Device
11-25 15:49:09.529 465 465 I GeckoDump: keytest touchend 8
11-25 15:49:09.529 465 465 I GeckoDump: keytest touchend 9
11-25 15:49:09.529 465 465 I GeckoDump: keytest touchend 11
11-25 15:49:09.539 465 465 I GeckoDump: keytest touchend 12
11-25 15:49:09.539 465 465 I GeckoDump: keytest touchend 13
11-25 15:49:09.539 465 465 I GeckoDump: keytest touchstart true
11-25 15:49:09.649 465 465 I GeckoDump: keytest touchend 10
// Kernel
100-934578: EV_ABS ABS_MT_POSITION_X 0000018e
100-934583: EV_ABS ABS_MT_POSITION_Y 000002f3
100-934598: EV_KEY BTN_TOUCH DOWN
101-293: EV_ABS ABS_MT_POSITION_X 0000018e
101-298: EV_ABS ABS_MT_POSITION_Y 000002f3
101-319: EV_KEY BTN_TOUCH UP
104-195834: EV_ABS ABS_MT_POSITION_X 00000109
104-195839: EV_ABS ABS_MT_POSITION_Y 00000298
104-195854: EV_KEY BTN_TOUCH DOWN
104-235028: EV_ABS ABS_MT_POSITION_X 00000109
104-235031: EV_ABS ABS_MT_POSITION_Y 00000298
104-235046: EV_KEY BTN_TOUCH UP
105-81754: EV_ABS ABS_MT_POSITION_X 00000046
105-81758: EV_ABS ABS_MT_POSITION_Y 00000184
105-81779: EV_KEY BTN_TOUCH DOWN
// seems like move event!!!!!!!
105-108236: EV_ABS ABS_MT_POSITION_X 0000003c
105-108241: EV_ABS ABS_MT_POSITION_Y 00000183
105-121133: EV_ABS ABS_MT_POSITION_X 0000003c
105-121138: EV_ABS ABS_MT_POSITION_Y 0000018
105-121153: EV_KEY BTN_TOUCH UP
Flags: needinfo?(sku) → needinfo?(lecky.wanglei)
| Reporter | ||
Comment 13•12 years ago
|
||
Flags: needinfo?(lecky.wanglei)
| Reporter | ||
Comment 14•12 years ago
|
||
Hi,
I have uploaded the new log for you in the "new log.zip".
Flags: needinfo?(sku)
Updated•12 years ago
|
Flags: needinfo?(sku) → needinfo?(vwang)
Comment 15•12 years ago
|
||
kernel log shows correct seq. of touch event.
However, gaia receieve in wrong order.
Hi Viral:
Please help point out where to add log in Gecko.
Thanks!!
// Kernel
538-172779: EV_KEY BTN_TOUCH DOWN
538-251274: EV_KEY BTN_TOUCH UP
538-667009: EV_KEY BTN_TOUCH DOWN
538-769181: EV_KEY BTN_TOUCH UP
538-808919: EV_KEY BTN_TOUCH DOWN
538-887391: EV_KEY BTN_TOUCH UP
539-18931 : EV_KEY BTN_TOUCH DOWN
539-110869: EV_KEY BTN_TOUCH UP
539-255423: EV_KEY BTN_TOUCH DOWN
539-334538: EV_KEY BTN_TOUCH UP
539-799474: EV_KEY BTN_TOUCH DOWN
539-877703: EV_KEY BTN_TOUCH UP
544-558319: EV_KEY BTN_TOUCH DOWN
544-597213: EV_KEY BTN_TOUCH UP
545-265454: EV_KEY BTN_TOUCH DOWN
545-291114: EV_KEY BTN_TOUCH UP
620-905481: EV_KEY BTN_TOUCH DOWN
621-70244 : EV_KEY BTN_TOUCH UP
621-346153: EV_KEY BTN_TOUCH DOWN
621-451261: EV_KEY BTN_TOUCH UP
// Gaia
11-29 12:01:01.719 548 548 I GeckoDump: keytest touchstart key 8
11-29 12:01:01.719 548 548 I GeckoDump: keytest touchstart _lastPressedKey 8
11-29 12:01:01.719 548 548 I GeckoDump: keytest touchstart false
11-29 12:01:01.779 548 548 I GeckoDump: keytest touchmove 1 key : 8 lastPressedKey : 8
11-29 12:01:01.789 548 548 I GeckoDump: keytest touchmove 1 key : 8 lastPressedKey : 8
11-29 12:01:01.799 548 548 I GeckoDump: keytest touchend key 8
11-29 12:01:01.799 548 548 I GeckoDump: keytest touchend _lastPressedKey 8
11-29 12:01:01.799 548 548 I GeckoDump: keytest touchend 1
11-29 12:01:01.799 548 548 I GeckoDump: keytest touchend 2
11-29 12:01:01.809 548 548 I GeckoDump: keytest touchend 3
11-29 12:01:01.809 548 548 I GeckoDump: keytest touchend 4
11-29 12:01:01.809 548 548 I GeckoDump: keytest touchend 8
11-29 12:01:01.809 548 548 I GeckoDump: keytest touchend 9
11-29 12:01:01.809 548 548 I GeckoDump: keytest touchend 11
11-29 12:01:01.809 548 548 I GeckoDump: keytest touchend 12
11-29 12:01:01.819 548 548 I GeckoDump: keytest touchend 13
11-29 12:01:01.939 548 548 I GeckoDump: keytest touchstart key 6
11-29 12:01:01.939 548 548 I GeckoDump: keytest touchstart _lastPressedKey 6
11-29 12:01:01.939 548 548 I GeckoDump: keytest touchstart false
11-29 12:01:02.019 548 548 I GeckoDump: keytest touchend key 6
11-29 12:01:02.019 548 548 I GeckoDump: keytest touchend _lastPressedKey 6
11-29 12:01:02.019 548 548 I GeckoDump: keytest touchend 1
11-29 12:01:02.019 548 548 I GeckoDump: keytest touchend 2
11-29 12:01:02.039 548 548 I GeckoDump: keytest touchend 3
11-29 12:01:02.039 548 548 I GeckoDump: keytest touchend 4
11-29 12:01:02.039 548 548 I GeckoDump: keytest touchend 8
11-29 12:01:02.039 548 548 I GeckoDump: keytest touchend 9
11-29 12:01:02.039 548 548 I GeckoDump: keytest touchend 11
11-29 12:01:02.039 548 548 I GeckoDump: keytest touchend 12
11-29 12:01:02.039 548 548 I GeckoDump: keytest touchend 13
// touchend -> touchstart
11-29 12:01:08.069 548 548 I GeckoDump: keytest touchend key 1
11-29 12:01:08.069 548 548 I GeckoDump: keytest touchend _lastPressedKey undefined
11-29 12:01:08.069 548 548 I GeckoDump: keytest touchend 8
11-29 12:01:08.069 548 548 I GeckoDump: keytest touchend 9
11-29 12:01:08.069 548 548 I GeckoDump: keytest touchend 11
11-29 12:01:08.069 548 548 I GeckoDump: keytest touchend 12
11-29 12:01:08.069 548 548 I GeckoDump: keytest touchend 13
11-29 12:01:08.079 548 548 I GeckoDump: keytest touchstart key 1
11-29 12:01:08.079 548 548 I GeckoDump: keytest touchstart _lastPressedKey 1
11-29 12:01:08.079 548 548 I GeckoDump: keytest touchstart true
11-29 12:01:08.299 548 548 I GeckoDump: keytest touchend 10 100
Comment 16•12 years ago
|
||
Hi Lecky,
Now we would like to check the touch events in gecko side.
Please help on add these logs.
/gecko/dom/ipc/TabParents.cpp
bool TabParent::SendRealTouchEvent(WidgetTouchEvent& event)
+ LOG("Touch Send: %d", e.message);
/gecko/dom/ipc/TabChild.cpp
TabChild::RecvRealTouchEvent(const WidgetTouchEvent& aEvent,
const ScrollableLayerGuid& aGuid)
+ LOG("Touch Receive: %d", aEvent.message);
Thanks!
Flags: needinfo?(vwang)
| Reporter | ||
Comment 17•12 years ago
|
||
Hi,
I have added the log in the gecko.When I test this problem,I could not find the string in the log.
So could you give me more instruction about this?
Flags: needinfo?(vwang)
Comment 18•12 years ago
|
||
Hi Lecky,
Can you see any relative log when you just update gecko?
I think it should have lots of log included when you touch the screen.
Flags: needinfo?(vwang)
| Reporter | ||
Comment 19•12 years ago
|
||
hi,
I catch the log with :
adb shell getevent -t -l /dev/input/event0 | grep "BTN_T" > /tmp/touch.log
adb logcat -v threadtime > /tmp/device.log
The log that i upload is the all log.Could you give me more instruction about this?
Flags: needinfo?(vwang)
Comment 20•12 years ago
|
||
Please refer https://bugzilla.mozilla.org/show_bug.cgi?id=912867#c71
It should be fine in your side.
Flags: needinfo?(vwang)
| Reporter | ||
Comment 21•12 years ago
|
||
Comment 22•12 years ago
|
||
Can you test this again with https://bugzilla.mozilla.org/show_bug.cgi?id=912867#c76 applied?
Flags: needinfo?(vwang)
| Reporter | ||
Comment 23•12 years ago
|
||
Dear,
I have tested the patch.There are still the problem and the pobability is still high.
Flags: needinfo?(wchang)
Comment 24•12 years ago
|
||
Ok we'll continue to investigate here. Not blocking v1.1HD release on this.
Flags: needinfo?(wchang)
| Reporter | ||
Comment 25•12 years ago
|
||
Hi Viral:
I have added log in
/gecko/dom/ipc/TabParents.cpp
/gecko/dom/ipc/TabChild.cpp
without the issue,the log show:
01-17 09:38:25.625: INFO/Gecko(180): SendRealTouchEvent Touch Send: NS_TOUCH_START
01-17 09:38:25.625: INFO/Gecko(464): RecvRealTouchEvent Touch Receive: NS_TOUCH_START
01-17 09:38:25.625: INFO/GeckoDump(464): Dialer Keypad Receive: touchstart
01-17 09:38:25.635: INFO/Gecko(180): SendRealTouchEvent Touch Send: NS_TOUCH_END
01-17 09:38:25.675: INFO/Gecko(464): RecvRealTouchEvent Touch Receive: NS_TOUCH_END
01-17 09:38:25.675: INFO/GeckoDump(464): Dialer Keypad Receive: in touchend
with the issue,the log show:
01-17 09:52:47.105: INFO/Gecko(180): SendRealTouchEvent Touch Send: NS_TOUCH_START
01-17 09:52:47.105: INFO/Gecko(627): RecvRealTouchEvent Touch Receive: NS_TOUCH_START
01-17 09:52:47.115: INFO/Gecko(180): SendRealTouchEvent Touch Send: NS_TOUCH_END
01-17 09:52:47.165: INFO/Gecko(627): RecvRealTouchEvent Touch Receive: NS_TOUCH_END
01-17 09:52:47.315: INFO/GeckoDump(627): Dialer Keypad Receive: touchend
01-17 09:52:47.315: INFO/GeckoDump(627): Dialer Keypad Receive: touchstart
The issue will occur at high ratio when open the dialer and dial a digit at the first time,
and from the log,it seems that there is something wrong in NS_TOUCH_START dispatching.
The issue is annoying,do you any further log to diagnose the issue?
Comment 26•12 years ago
|
||
Hi Lecky,
It looks like tabchild already receive the touchstart event but not in dialer.
one suggestion here is to check which target gecko send to.
Even in dialer, it could be different iframes may receive event.
Flags: needinfo?(vwang)
| Reporter | ||
Comment 27•12 years ago
|
||
Hi Viral,
since the issue only occur when you tap the keypad at the first time after dialer app launched,
so i think it it highly possible that the first touchstart event is not sent to dialer,
but how to check which target gecko had sent to? can you give me some advise?
Comment 28•11 years ago
|
||
Hi guys! If I understood it correctly, I am no longer able to reproduce the issue using 2.2 (Gecko-c44a46f.Gaia-cdba6ca) so I am evolving the bug to RESOLVED - WORKSFORME. Please, do not hesitate to reopen it if appropriate.
The current behaviour is that the pressed key is highlighted in blue, the tone is played but both of them go away (as expected) and the requested call is established normally ;)
Status: UNCONFIRMED → RESOLVED
Closed: 11 years ago
Resolution: --- → WORKSFORME
You need to log in
before you can comment on or make changes to this bug.
Description
•