All users were logged out of Bugzilla on October 13th, 2018

[System][input] Tap events register twice (double) in various areas of the OS

RESOLVED WORKSFORME

Status

()

RESOLVED WORKSFORME
4 years ago
3 years ago

People

(Reporter: Marty, Unassigned)

Tracking

({regression, smoketest})

unspecified
ARM
Gonk (Firefox OS)
regression, smoketest
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(blocking-b2g:2.5+, b2g-v2.2 unaffected, b2g-master verified)

Details

(URL)

Attachments

(1 attachment)

(Reporter)

Description

4 years ago
Description:
In specific areas of the device, tap events are registering two inputs for one tap.

At this point, this behavior is seen occurring in these areas:
-Inputting a passcode at the lock screen, making it impossible to input most passcodes.
-Accepting a call.  Call is answered, and then immediately ended.
-Creating a Smart Collection. Selecting collections from the list will usually select and immediately de-select.
-Toggling settings in the Developer Menu, when tapping specifically on the check boxes.


Repro Steps:
1) Update a Flame to 20150202010229
2) Open the settings app and configure a Passcode
3) Press the power button to lock the device
4) Press the power button again to bring up the lock screen
5) Prompt for a passcode and tap the keypad once.


Actual:
Two events are input for one keypress

Expected:
Single taps only result in one input.

Environmental Variables:
Device: Flame 3.0
Build ID: 20150202010229
Gaia: 740c7c2330d08eb9298597e0455f53d4619bbc1a
Gecko: 940118b1adcd
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 38.0a1 (3.0)
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:38.0) Gecko/38.0 Firefox/38.0

Repro frequency: 7/7
See attached: video clip, logcat

-----------------------------------------

This issue does NOT occur on Flame 2.2
Single tap events only result in one input.

Environmental Variables:
Device: Flame 2.2
Build ID: 20150202002507k
Gaia: d6141fa3208f224393269e17c39d1fe53b7e6a05
Gecko: be206fa2fb60
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 37.0a2 (2.2)
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0
(Reporter)

Comment 1

4 years ago
Created attachment 8557973 [details]
logcat-double-tap.txt
[Blocking Requested - why for this release]:
Severe Functional regression that affects multiple apps.

Requesting a window.
blocking-b2g: --- → 3.0?
Keywords: qaurgent, regressionwindow-wanted
QA Contact: bzumwalt
Hey Kats?  Could you take a look please?
We're checking to see if the regression window has something to do with bug 950934.

Updated

4 years ago
blocking-b2g: 3.0? → 3.0+
Gecko Regression Window:

Device: Flame 3.0 Master
BuildID: 20150131191033
Gaia: ab69ae06a7f2b54e60ab63b1b44c8d19d5d20d94
Gecko: 4b3d6f5a3f1b
Version: 38.0a1 (3.0 Master)
Firmware: V18D-1
User Agent: Mozilla/5.0 (Mobile; rv:38.0) Gecko/38.0 Firefox/38.0

Device: Flame 3.0 Master
Build ID: 20150131202535
Gaia: ab69ae06a7f2b54e60ab63b1b44c8d19d5d20d94
Gecko: 0038cfaf847a
Version: 38.0a1 (3.0 Master)
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:38.0) Gecko/38.0 Firefox/38.0


Working Gaia with Broken Gecko issue DOES occur:
Gaia: ab69ae06a7f2b54e60ab63b1b44c8d19d5d20d94
Gecko: 0038cfaf847a

Working Gecko with Broken Gaia issue does NOT occur:
Gaia: ab69ae06a7f2b54e60ab63b1b44c8d19d5d20d94
Gecko: 4b3d6f5a3f1b


Mozilla-Inbound Pushlog:
http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=4b3d6f5a3f1b&tochange=0038cfaf847a


Issue appears to be due to bug 1005815
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(ktucker)
Keywords: qaurgent, regressionwindow-wanted
An automated test like this one, I would have expected to catch this:
http://mxr.mozilla.org/gaia/source/tests/python/gaia-ui-tests/gaiatest/tests/functional/lockscreen/test_lockscreen_unlock_to_homescreen_with_passcode.py
But it's passing with this bug in it.

Comment 6

4 years ago
see-belowwrong-bug-number
Yes, this was regressed bug 1005815 but it looks like it was fixed by bug 950534 (which is not in a nightly build yet, as it only merged to m-c this morning). So I don't think backing anything out would help much here. The build at https://pvtbuilds.mozilla.org/pvt/mozilla.org/b2gotoro/tinderbox-builds/mozilla-central-flame-kk-eng/20150202042034/ for example should not have this problem, at least on the lockscreen. I'm looking into the other STRs provided in comment 0 as well.
Err that should be bug 950934, not 950534.
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #6)
> Yes, this was regressed bug 1005815 but it looks like it was fixed by bug
> 950534

Hmm, you're right. I didn't realize this until now, but the creation of an APZC for the PP-RD-RSF in bug 1124452 wasn't conditional on any of the switches flipped in bug 950934 - so we've actually had APZ in the parent process (for the root frame only, not subframes), ever since bug 1124452 landed.

Then bug 1005815 introduced APZ handling of single-taps - immediately in effect for the root frame thanks to bug 1124452 - and finally bug 950934 simultaneously disabled enabled APZ for subframes too, and disabled the non-APZ codepath for handling single-taps. This means single-taps are being handled twice in revisions between bug 1005815 landing and bug 950934 landing.

Apologies for this confusion.
Botond, perhaps you happen to know why an automated test like in comment 5 doesn't catch this issue?
http://mxr.mozilla.org/mozilla-central/source/testing/marionette/marionette-listener.js#964
http://mxr.mozilla.org/mozilla-central/source/testing/marionette/marionette-listener.js#856
Marionette is creating the touchstart, touchend and click events fine. Why are these not handled twice with this bug around?
Flags: needinfo?(botond)
(In reply to Martin Shuman [:Marty] from comment #0)
> -Creating a Smart Collection. Selecting collections from the list will
> usually select and immediately de-select.

This is also fixed with bug 950934.

> -Toggling settings in the Developer Menu, when tapping specifically on the
> check boxes.

This one is a bit odd - if you tap the checkboxes on the rightmost edge then they don't work (or rather, they get tapped twice) but if you tap on the left edge or on the label they work fine. It looks like this is partly because of the touch listeners for the edge swipe. I can look into this but it probably doesn't qualify as a smoketest regression by itself.

I wasn't able to test the incoming call scenario as I don't have a SIM in my Flame, but I'm doing a nexus 4 build which I can do that test on. If anybody else can test that quicker on a build with bug 950934 it would be appreciated.
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(ktucker)
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #11)
> > -Toggling settings in the Developer Menu, when tapping specifically on the
> > check boxes.
> 
> This one is a bit odd - if you tap the checkboxes on the rightmost edge then
> they don't work (or rather, they get tapped twice) but if you tap on the
> left edge or on the label they work fine. It looks like this is partly
> because of the touch listeners for the edge swipe. I can look into this but
> it probably doesn't qualify as a smoketest regression by itself.

I think this is a result of the injectTouchEvent voodoo that the edge swipe detector does. It's eating the touch mouse events and then generating its own touch events which don't have don't go through the gesture detector and so don't generate the appropriate mouse events. I filed bug 1128672 to deal with this, and leave the current bug to track the "tap events register twice" problem.
(In reply to Martijn Wargers [:mwargers] (QA) from comment #10)
> Botond, perhaps you happen to know why an automated test like in comment 5
> doesn't catch this issue?
> http://mxr.mozilla.org/mozilla-central/source/testing/marionette/marionette-
> listener.js#964
> http://mxr.mozilla.org/mozilla-central/source/testing/marionette/marionette-
> listener.js#856
> Marionette is creating the touchstart, touchend and click events fine. Why
> are these not handled twice with this bug around?

Marionette doesn't accurately simulate real user input at the widget level, so it goes through a different code path. Specifically I don't believe it exercised the code that generates mouse events from touch events in the gonk widget code that was the cause of this bug.
Flags: needinfo?(botond)
Depends on: 1128696
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #13)
> Marionette doesn't accurately simulate real user input at the widget level,
> so it goes through a different code path. Specifically I don't believe it
> exercised the code that generates mouse events from touch events in the gonk
> widget code that was the cause of this bug.

Ok thanks, I filed bug 1128696 for this, to get Marionette to simulate real user input at the widget level.
(Reporter)

Comment 15

4 years ago
This issue is no longer occurring on the latest Flame Nightly. Resolving as WorksForMe.

Environmental Variables:
Device: Flame 3.0
Build ID: 20150202154235
Gaia: 4171327fce4803c52b2fae8071b114a70a3a68a7
Gecko: 3bf7ed413e87
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 38.0a1 (3.0)
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:38.0) Gecko/38.0 Firefox/38.0
Status: NEW → RESOLVED
Last Resolved: 4 years ago
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage?]
Flags: needinfo?(pbylenga)
Resolution: --- → WORKSFORME
Thank you :), requesting qawanted to verify.
QA Whiteboard: [QAnalyst-Triage?]
status-b2g-master: affected → fixed
Flags: needinfo?(pbylenga)
Keywords: qawanted, verifyme
Keywords: qaurgent
Issue verified fixed on Flame 3.0

Lockscreen passcode can be entered without duplicate inputs, as can adding smart collections and toggling options in Developer Menu. User can answer inbound calls without difficulty.

Device: Flame 3.0 Master
BuildID: 20150202154235
Gaia: 4171327fce4803c52b2fae8071b114a70a3a68a7
Gecko: 3bf7ed413e87
Version: 38.0a1 (3.0 Master)
Firmware: V18D-1
User Agent: Mozilla/5.0 (Mobile; rv:38.0) Gecko/38.0 Firefox/38.0
Status: RESOLVED → VERIFIED
QA Whiteboard: [QAnalyst-Triage?]
status-b2g-master: fixed → verified
Flags: needinfo?(ktucker)
Keywords: qaurgent, qawanted, verifyme
Status: VERIFIED → RESOLVED
Last Resolved: 4 years ago4 years ago
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(ktucker)
Moving the bug to the component where the regression came from.
Component: Gaia::System::Input Mgmt → Widget: Gonk
Product: Firefox OS → Core
You need to log in before you can comment on or make changes to this bug.