Closed Bug 1131695 Opened 10 years ago Closed 10 years ago

Some buttons become unresponsive in gaia header

Categories

(Core :: DOM: Content Processes, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

()

VERIFIED FIXED
mozilla38
blocking-b2g 2.2+
Tracking Status
firefox36 --- wontfix
firefox37 --- wontfix
firefox38 --- fixed
b2g-v2.1 --- unaffected
b2g-v2.2 --- verified
b2g-master --- verified

People

(Reporter: noemi, Assigned: kats)

References

()

Details

(Keywords: regression, verifyme)

Attachments

(3 files, 3 obsolete files)

We have seen that some buttons become unresponsive in gaia header, some examples: 1- Being in Call log (having some entries), try to access Settings (edit mode) several times. Please see https://www.youtube.com/watch?v=kywIIuckiLA, in this case, the first attempt fails, it is necessary to click again on the "Settings" button to access the edit mode window. 2- Being in Contacts app and having some Contacts, try to access Settings several times, you will see that at some point Settings or Done button become unresponsive, it is necessary to click again on Settings or Done buttons to move on. 3- Being in Messages app, try to access Settings within Messages app several times, at some point Settings button becomes unresponsive, it is necessary to click again on Settings button to move on. Environmental variables: Flame device Build Id: 20150210155432 Gecko: 35d3936 Gaia: 0707fcc Platform version: 37.0a2 We haven NOT seen this wrong behavior in master. qawanted to confirm this error and to see which branches are affected. Thanks!
QA Contact: bzumwalt
Issue does NOT reproduce in Flame 2.1 Gaia header buttons do not become unresponsive in Call log, Contacts, Messages, or any other app in Flame 2.1 Device: Flame 2.1 Build ID: 20150210002200 Gaia: 7dd130a312f12c89b2d41948f8557effa56afbf6 Gecko: 2de03dfa9aac Gonk: e7c90613521145db090dd24147afd5ceb5703190 Version: 34.0 (2.1) Firmware Version: v18D-1 User Agent: Mozilla/5.0 (Mobile; rv:34.0) Gecko/34.0 Firefox/34.0 Issue may reproduce in 3.0 Could not reproduce any of the examples using 3.0 (in 2.2 the examples provided readily reproduce), but the back button in Settings app experienced some similar issues ONLY when the page was still populating. If user launches messages app, taps ellipsis icon, selects settings, then quickly taps the back button when the Messaging Settings page launches, the back button in the header is unresponsive for a short while. Unsure if this is same issue as it appears to be very specific and none of the examples from comment 0 reproduce in 3.0. Leaving 3.0 as unaffected for the time being. Device: Flame 3.0 Build ID: 20150210010523 Gaia: 0cf517083f7eb5fc269e1236edba50534f65e3cd Gecko: 2cb22c058add 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
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(ktucker)
Keywords: qawantedregression
This is a bad end user experience. The button should work when tapped. Nominating 2.2?
blocking-b2g: --- → 2.2?
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(ktucker)
QA Contact: bzumwalt → ychung
We just landed a very big change in gaia-header (bug 1112131). Could QA check whether the issue happens with/without this patch? I just merged to v2.2 so I don't think the patch is in any v2.2 nightly build yet. So maybe that's why Noemi sees the issue in v2.2 but not master.
Keywords: qawanted
Component: Gaia → Gaia::Components
(In reply to Brogan Zumwalt [:BroganZ] from comment #1) > Issue may reproduce in 3.0 > > Could not reproduce any of the examples using 3.0 (in 2.2 the examples > provided readily reproduce), but the back button in Settings app experienced > some similar issues ONLY when the page was still populating. > > If user launches messages app, taps ellipsis icon, selects settings, then > quickly taps the back button when the Messaging Settings page launches, the > back button in the header is unresponsive for a short while. Unsure if this > is same issue as it appears to be very specific and none of the examples > from comment 0 reproduce in 3.0. Leaving 3.0 as unaffected for the time > being. Yeah, this is bug 1125601. So let's leave this out of this bug :) I actually also wonder if this bug is not about the rocketbar as well. Like the "event fluffing" mechanism would choose something in the rocketbar instead of the gaia header button. Etienne, would you remember something about this, that would be fixed in master but not in v2.2?
Flags: needinfo?(etienne)
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage+][MGSEI-Triage+]
mozilla-inbound regression window: Last Working Environmental Variables: Device: Flame Build ID 20150129162506 Gaia Revision 6e494f1d2676d231abba7dcc2e2822d1170d2d02 Gaia Date 2015-01-29 06:34:56 Gecko Revision https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/rev/9c8b785973bf Gecko Version 37.0a2 Device Name flame Firmware(Release) 4.4.2 Firmware(Incremental) eng.cltbld.20150129.202729 Firmware Date Thu Jan 29 20:27:40 EST 2015 Bootloader L1TC000118D0 First Broken Environmental Variables: Device: Flame Build ID 20150129183930 Gaia Revision 6e494f1d2676d231abba7dcc2e2822d1170d2d02 Gaia Date 2015-01-29 06:34:56 Gecko Revision https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/rev/242eb3edf1bf Gecko Version 37.0a2 Device Name flame Firmware(Release) 4.4.2 Firmware(Incremental) eng.cltbld.20150129.202729 Firmware Date Thu Jan 29 20:27:40 EST 2015 Bootloader L1TC000118D0 Last Working gaia / First Broken gecko - Issue DOES occur Gaia: 6e494f1d2676d231abba7dcc2e2822d1170d2d02 Gecko: 242eb3edf1bf First Broken gaia / Last Working gecko - Issue does NOT occur Gaia: 6e494f1d2676d231abba7dcc2e2822d1170d2d02 Gecko: 9c8b785973bf
Given the regression window, this is not rocketbar related.
Flags: needinfo?(etienne)
Given the pushlog, this could be bug 1116588, given that maybe we trigger the edge gestures trigger when we tap on the button. Kats, what do you think?
Component: Gaia::Components → Layout
Flags: needinfo?(bugmail.mozilla)
Product: Firefox OS → Core
That's quite possible. If that is case then it might be fixed by bug 1128672 in master. I will request uplift on that bug shortly, but it needs to get uplifted with a bunch of other stuff. Marking it as a dependency for now and parking this bug with me.
Assignee: nobody → bugmail.mozilla
Depends on: 1128672
Flags: needinfo?(bugmail.mozilla)
So I'm able to reproduce this problem on a local 2.2 build, and the patch from bug 1128672 doesn't entirely fix it. The problem appears to be that when the touch_forwarder.js sends the mouse event using iframe.sendMouseEvent to the child process, that goes through [1] and that never accounts for the 30-pixel offset to the child process root layer. So all the mouseevents sent by sendMouseEvent (and sendTouchEvent) are going to be off by 30 pixels, always. In fact I'm amazed that we haven't run into this until now! [1] http://mxr.mozilla.org/mozilla-central/source/dom/browser-element/BrowserElementParent.js?rev=bccb6cedee61#548
Oh actually sendTouchEvent doesn't have this problem if APZ is enabled on the child process, because then it uses TabParent.injectTouchEvent. So that probably explains why it's been obscured. Still, I would expect this bug to manifest in 2.1 as well and I'm not really sure why it supposedly doesn't.
Attached patch WIP (obsolete) — Splinter Review
For example, this fixes the problem (when combined with bug 1128672) but obviously isn't something we can land. If necessary we can extract that 30 from the tabparent, but I have a different idea that I would like to explore first.
The window for this issue may have been found incorrectly. The builds used seem to be working with gaia and gecko from different branches which might have caused false positives when finding last working and first broken builds. Rechecking this window might be the correct course of action.
QA Whiteboard: [QAnalyst-Triage+][MGSEI-Triage+] → [QAnalyst-Triage?][MGSEI-Triage+]
Flags: needinfo?(ktucker)
QA Contact: ychung
Flags: needinfo?(ktucker)
QA Contact: ktucker
Julien appears to be correct here. bug 1116588 seems to be the cause of this issue. Mozilla-inbound regression window: Last Working Environmental Variables: Environmental Variables: Device: Flame 3.0 BuildID: 20150126062631 Gaia: 793773bb2944b42a85dd160049e605cbd880c4da Gecko: 0bec74187553 Version: 38.0a1 (3.0) Firmware Version: v18D-1 User Agent: Mozilla/5.0 (Mobile; rv:38.0) Gecko/38.0 Firefox/38.0 First Broken Environmental Variables: Environmental Variables: Device: Flame 3.0 BuildID: 20150126065334 Gaia: 793773bb2944b42a85dd160049e605cbd880c4da Gecko: babd56077826 Version: 38.0a1 (3.0) Firmware Version: v18D-1 User Agent: Mozilla/5.0 (Mobile; rv:38.0) Gecko/38.0 Firefox/38.0 Last Working Gecko & First Broken Gaia - issue DOES occur Gaia: 793773bb2944b42a85dd160049e605cbd880c4da Gecko: babd56077826 Last Working Gaia & First Broken Gecko - issue does NOT occur Gaia: 793773bb2944b42a85dd160049e605cbd880c4da Gecko: 0bec74187553 Gaia pushlog: http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=0bec74187553&tochange=babd56077826
Issue still occurs in latest Flame 2.2 Clearing QAWanted as issue still occurs and bug 1112131 is a gaia fix while this bug is a gecko issue. Confirming that comment 14 is calling this is a gecko issue that occurs on first broken gecko and the pushlog provided is a gecko, and not a gaia pushlog. Device: Flame 2.2 Build ID: 20150212002504 Gaia: 791e53728cd8018f1d7cf7efe06bbeb1179f0370 Gecko: 5dec207fcbeb 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
Flags: needinfo?(ktucker)
Keywords: qawanted
QA Whiteboard: [QAnalyst-Triage?][MGSEI-Triage+] → [QAnalyst-Triage+][MGSEI-Triage+]
Flags: needinfo?(ktucker)
I'm able to reproduce this on master as well, fwiw. That's expected given the root cause.
Component: Layout → DOM: Content Processes
Comment on attachment 8563411 [details] [diff] [review] Part 1 - Refactor to get the CSS -> device pixel scale Review of attachment 8563411 [details] [diff] [review]: ----------------------------------------------------------------- r=me with the question resolved. ::: dom/ipc/TabParent.cpp @@ +1168,5 @@ > + nsIPresShell* shell = (doc ? doc->GetShell() : nullptr); > + nsPresContext* ctx = (shell ? shell->GetPresContext() : nullptr); > + return LayoutDeviceToCSSScale(ctx > + ? (float)ctx->AppUnitsPerDevPixel() / nsPresContext::AppUnitsPerCSSPixel() > + : 0.0f); Are you sure you want 0.0 here, and not 1.0 ?
Attachment #8563411 - Flags: review?(fabrice) → review+
Comment on attachment 8563412 [details] [diff] [review] Part 2 - Ensure the child process offset is accounted for in BrowserElementParent.js Review of attachment 8563412 [details] [diff] [review]: ----------------------------------------------------------------- I'm not a big fan of the code duplication in BrowserElementParent.js What about doing something like that instead: let offsets; let tabParent = this._frameLoader.tabParent; if (tabParent) { let offsetX = {}; let offsetY = {}; tabParent.getChildProcessOffset(offsetX, offsetY); offsets = { x: offsetX.value, y: offsetY.value }; x += offsets.x; y += offsets.y; } ..... if (offsets) { for (let i = 0; i < touchesX.length; i++) { touchesX[i] += offsets.x; } for (let i = 0; i < touchesY.length; i++) { touchesY[i] += offsets.y; } }
Attachment #8563412 - Flags: review?(fabrice) → feedback+
(In reply to Fabrice Desré [:fabrice] from comment #19) > > Are you sure you want 0.0 here, and not 1.0 ? Yes, that way on failure the offset is dropped entirely. That's what the code did before and I didn't want to change the error-condition behaviour. I'll refactor the second patch to reduce duplication.
Attachment #8564182 - Flags: review?(fabrice) → review+
The test is wrong; it sends coordinates at (10,10) in the top-level window's coordinate space which end up being negative in the child iframe coordinate space. For some reason mouse events don't check for that but touch events do, and so the touch events get discarded in the child process. Adjusting the coordinates in the test so that they fall inside the iframe fixes it for me locally. Try push to verify: https://treeherder.mozilla.org/#/jobs?repo=try&revision=6739e695a60f
Attachment #8564182 - Attachment is obsolete: true
Flags: needinfo?(bugmail.mozilla)
Attachment #8564544 - Flags: review?(fabrice)
Attachment #8564544 - Flags: review?(fabrice) → review+
The updated try push failed also. I did another push with extra logging and it looks like on the tryserver machines the child process offset is -189, -373 and the touch coordinates are at 276,108. So the y-coord still ends up negative which will cause the event to get dropped and the test to fail.
I ended up having to call the tabParent method in the test as well to make this work. https://treeherder.mozilla.org/#/jobs?repo=try&revision=c01b3b816443
sorry had to back this out for perma test failures like https://treeherder.mozilla.org/logviewer.html#?job_id=6670856&repo=mozilla-inbound
Flags: needinfo?(bugmail.mozilla)
Third time's the charm. Let's see how this try run does: https://treeherder.mozilla.org/#/jobs?repo=try&revision=c9e96f3235a2
Flags: needinfo?(bugmail.mozilla)
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla38
blocking-b2g: 2.2? → 2.2+
Kats, we'll need an approval here :) Thanks !
Flags: needinfo?(bugmail.mozilla)
Comment on attachment 8563411 [details] [diff] [review] Part 1 - Refactor to get the CSS -> device pixel scale NOTE: Please see https://wiki.mozilla.org/Release_Management/B2G_Landing to better understand the B2G approval process and landings. [Approval Request Comment] Bug caused by (feature/regressing bug #): bug 1116588 User impact if declined: when clicking on items near the left or right edge of the screen, the click is off by the height of the status bar Testing completed: locally, on m-c Risk to taking this patch (and alternatives if risky): low risk as this code only run in a small set of cases. String or UUID changes made by this patch: none
Flags: needinfo?(bugmail.mozilla)
Attachment #8563411 - Flags: approval-mozilla-b2g37?
Attachment #8564544 - Flags: approval-mozilla-b2g37?
Ah, sorry - the part 2 patch does bump the UUID in dom/interfaces/base/nsITabParent.idl!
Keywords: verifyme
Attachment #8563411 - Flags: approval-mozilla-b2g37? → approval-mozilla-b2g37+
Attachment #8564544 - Flags: approval-mozilla-b2g37? → approval-mozilla-b2g37+
This issue has been verified successfully on Flame2.2&3.0, Verify video: "verify.mp4" Flame 2.2 build: Build ID 20150302002504 Gaia Revision 77609916ca5ab721150fab2b7bc5c37f43ee3a5a Gaia Date 2015-02-27 16:35:06 Gecko Revision https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/rev/27ab8aa34201 Gecko Version 37.0 Device Name flame Firmware(Release) 4.4.2 Firmware(Incremental) eng.cltbld.20150302.042723 Firmware Date Mon Mar 2 04:27:34 EST 2015 Bootloader L1TC000118D0 Flame 3.0 build: Build ID 20150302010223 Gaia Revision f34ce82a840ad3c0aed3bfff18517b3f6a0eb37f Gaia Date 2015-02-27 15:48:31 Gecko Revision https://hg.mozilla.org/mozilla-central/rev/eea6188b9b05 Gecko Version 39.0a1 Device Name flame Firmware(Release) 4.4.2 Firmware(Incremental) eng.cltbld.20150302.043726 Firmware Date Mon Mar 2 04:37:37 EST 2015 Bootloader L1TC000118D0
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: