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)

defect

Tracking

(Not tracked)

RESOLVED WORKSFORME

People

(Reporter: lecky.wanglei, Unassigned)

Details

Attachments

(5 files)

37.64 KB, text/plain
Details
133.37 KB, text/x-log
Details
28.13 KB, application/x-zip-compressed
Details
40.62 KB, application/x-zip-compressed
Details
48.92 KB, application/x-zip-compressed
Details
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】:
Priority: -- → P2
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; }
Attached file yichang.txt
Flags: needinfo?(wchang)
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 .
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.
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)
Flags: needinfo?(sku)
Attached file device.log
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)
Attached file log.zip
Flags: needinfo?(sku)
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)
Attached file new log.zip
Flags: needinfo?(lecky.wanglei)
Hi, I have uploaded the new log for you in the "new log.zip".
Flags: needinfo?(sku)
Flags: needinfo?(sku) → needinfo?(vwang)
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
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)
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)
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)
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)
Please refer https://bugzilla.mozilla.org/show_bug.cgi?id=912867#c71 It should be fine in your side.
Flags: needinfo?(vwang)
Attached file log.zip
Flags: needinfo?(vwang)
Can you test this again with https://bugzilla.mozilla.org/show_bug.cgi?id=912867#c76 applied?
Flags: needinfo?(vwang)
Dear, I have tested the patch.There are still the problem and the pobability is still high.
Flags: needinfo?(wchang)
Ok we'll continue to investigate here. Not blocking v1.1HD release on this.
Flags: needinfo?(wchang)
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?
Flags: needinfo?(vwang)
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)
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?
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.

Attachment

General

Creator:
Created:
Updated:
Size: