Closed Bug 1240202 Opened 9 years ago Closed 9 years ago

After restarting a phone stretch Homescreen then swipe to the bottom it will not return to the initial state

Categories

(Core :: Panning and Zooming, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla46
Tracking Status
firefox46 --- fixed
b2g-master --- affected

People

(Reporter: MaxIvanov, Assigned: botond)

References

()

Details

(Whiteboard: [2.6-Daily-Testing][Spark])

Attachments

(5 files)

Description: After reaching the Homescreen for the first time since the phone has been flashed or restarted stretch Homescreen and swipe to the bottom it will stuck and not return to the initial state Repro Steps: 1) Update a Aries to 20160115125237 2) Restart you phone 3) Scroll Homescreen to the right and make swipe to the bottom 4) Observe Homescreen state Actual: Homescreen will stuck and not returning to the initial state Expected: We expect that Homescreen should returns to initial state Environmental Variables: Device: Aries 2.6 Build ID: 20160115125237 Gaia: 44cc5dfeda9251188c6547f2d5903ee980a5361e Gecko: 02398f2be72b9bbf5ee79348b73ef122c915aae0 Gonk: a19052e4389c3ae2d8fc3e7a74a475401baacc56 Version: 46.0a1 (2.6) Firmware Version: D5803_23.1.A.1.28_NCB.ftf User Agent: Mozilla/5.0 (Mobile; rv:46.0) Gecko/46.0 Firefox/46.0 Repro frequency: 100%,) See attached: (video clip) https://youtu.be/J5kM-sD5_ZM
This does occur on Flame 2.6 Homescreen will stuck and not returns to the initial state Device: Flame 2.6 Build ID: 20160115055328 Gaia: 44cc5dfeda9251188c6547f2d5903ee980a5361e Gecko: 02398f2be72b9bbf5ee79348b73ef122c915aae0 Gonk: 205ac4204bbbb2098a8046444acba551ba5dc75a Version: 46.0a1 (2.6) Firmware Version: v18D User Agent: Mozilla/5.0 (Mobile; rv:46.0) Gecko/46.0 Firefox/46.0
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(ktucker)
OS: Unspecified → Gonk (Firefox OS)
Hardware: Unspecified → ARM
See Also: → 1231228
Whiteboard: [2.6-Daily-Testing][Spark]
I tried to reproduce this, but wasn't able to. Are you running with the lock screen enabled or disabled, in case it matters?
Flags: needinfo?(mivanov)
Doesn't matter, it happens in either way. Please notice that happens only when you get the Homescreen for the first time after restarting your phone.
Flags: needinfo?(mivanov)
(In reply to Max Ivanov[:MaxIvanov] from comment #3) > Please notice that happens only > when you get the Homescreen for the first time after restarting your phone. Yup, I realize that. I've restarted several times but unfortunately wasn't able to get a repro.
Just reproduced three times in a row on both Aries and Flame. https://youtu.be/DYXvz7Ae220
I'm not doubting you :) There must be some difference between our setups that we're not realizing is significant. Anyways, perhaps I can figure out the problem without reproducing it myself by looking at some relevant logging. Could I get you to do the following: 1) In the Settings app, under "Developer", check "Dump Layers Tree" 2) Restart the phone 3) Reproduce the problem 4) Upload the entire output of "adb logcat" from the run of the phone that reproduced the problem Thanks!
Flags: needinfo?(mivanov)
Attached file logs.txt
Flags: needinfo?(mivanov)
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage-]
Flags: needinfo?(ktucker) → needinfo?(mivanov)
This issue also happens on Aries 2.5 and Flame 2.5 Homescreen will stuck and not returns to the initial state Device: Aries 2.5 Build ID: 20160119122116 Gaia: 184523b202608f24e01cda720370de3ee7c5b8c3 Gecko: ea1b75e4b851d242182ef0c8a1ade5eb38b2c00f Gonk: a19052e4389c3ae2d8fc3e7a74a475401baacc56 Version: 44.0 (2.5) Firmware Version: D5803_23.1.A.1.28_NCB.ftf User Agent: Mozilla/5.0 (Mobile; rv:44.0) Gecko/44.0 Firefox/44.0 Device: Flame 2.5 Build ID: 20160119121056 Gaia: 184523b202608f24e01cda720370de3ee7c5b8c3 Gecko: ea1b75e4b851d242182ef0c8a1ade5eb38b2c00f Gonk: 205ac4204bbbb2098a8046444acba551ba5dc75a Version: 44.0 (2.5) Firmware Version: v18D User Agent: Mozilla/5.0 (Mobile; rv:44.0) Gecko/44.0 Firefox/44.0
Flags: needinfo?(mivanov)
(In reply to Max Ivanov[:MaxIvanov] from comment #7) > Created attachment 8709461 [details] > logs.txt Thanks for the logs! I had a look at them, and while they didn't provide any direct indication of what's going wrong, they confirmed that the overscrolled APZC is an ancestor of the event-target APZC. I then reviewed previous stuck-in-overscroll bugs and inspected the relevant parts of the code with an eye for how we might get stuck in such a setup, and I found two scenarios where we can still get stuck. Neither of them match the STR shown in the video exactly, but it's possible that fixing these scenarios fixes that as well: Both scenarios involve: - a finger going down - panning into overscroll - the finger being lifted so as to start an overscroll animation - the finger going back down to interrupt the overscroll animation and enter the TOUCHING state while still overscroll - importantly, the finger NOT moving enough to progress to the panning state Starting from this common initial setup, the scenarios are: 1) The finger is lifted again while we're still in the TOUCHING state. In this case, AsyncPanZoomController::OnTouchEnd() calls SnapBackIfOverscrolled(), but if the overscrolled APZC is an ancestor of the event-target APZC, that will not be snapped back. The solution, naturally, is to call OverscrollHandoffChain::SnapBackOverscrolledApzc instead. 2) A second finger goes down while we're still in the TOUCHING state. In this case, the "are we panned into overscroll" check in APZCTreeManager::ProcessTouchInput() fails (by design), the event-target APZC changes to the common-ancestor APZC of the targets of the two fingers, and we enter the PINCHING state in the new target APZC. In this case, we rely on InputQueue::UpdateActiveApzc() calling AsyncPanZoomController::ResetTouchInputState() to clear the overscroll, but again this does not clear the overscroll on an ancestor APZC. I'm going to fix these scenarios, first because they're bugs in their own right, and second in the hope that they fix the original STR in this bug.
Assignee: nobody → botond
The first patch renames APZCOverscrollHandoffTester to APZCScrollHandoffTester, to clarify that it's used for testing various scroll handoff scenarios, not just scenarios involving overscroll ("overscroll handoff" was a term we used for "scroll handoff" before "overscrolling" was a thing). The second patch is a minor refactoring to gtest code that I've been meaning to do for a while. The third and fourth patches contain a fix and a test for the first and second scenarios described in comment 9, respectively.
Comment on attachment 8710223 [details] MozReview Request: Bug 1240202 - Rename APZOverscrollHandoffTester to APZScrollHandoffTester. r=kats https://reviewboard.mozilla.org/r/31695/#review28493
Attachment #8710223 - Flags: review?(bugmail.mozilla) → review+
Comment on attachment 8710224 [details] MozReview Request: Bug 1240202 - Change input event generation utilities used by APZ gtests to take points instead of loose coordinates. r=kats https://reviewboard.mozilla.org/r/31697/#review28497 Nice, thanks!
Attachment #8710224 - Flags: review?(bugmail.mozilla) → review+
Comment on attachment 8710225 [details] MozReview Request: Bug 1240202 - Avoid getting stuck in overscroll when the screen is tapped during an overscroll animation. r=kats https://reviewboard.mozilla.org/r/31699/#review28499
Attachment #8710225 - Flags: review?(bugmail.mozilla) → review+
Comment on attachment 8710226 [details] MozReview Request: Bug 1240202 - Avoid getting stuck in overscroll when a second finger goes down while overscrolled and in the TOUCHING state. r=kats https://reviewboard.mozilla.org/r/31701/#review28503 ::: gfx/layers/apz/test/gtest/TestScrollHandoff.cpp:333 (Diff revision 1) > + // will not ingore the second finger, instead entering the s/ingore/ignore/ ::: gfx/layers/apz/test/gtest/TestScrollHandoff.cpp:338 (Diff revision 1) > + secondFingerDown.mTouches.AppendElement(SingleTouchData(1, ScreenIntPoint(10, 90), ScreenSize(0, 0), 0, 0)); For input consistency make the first touch be at (10,90) and the second touch at (10,80). Otherwise it will look like the first finger moved from (10,90) to (10,80) while the second finger was added at (10,90).
Attachment #8710226 - Flags: review?(bugmail.mozilla) → review+
(In reply to Botond Ballo [:botond] from comment #15) > https://treeherder.mozilla.org/#/jobs?repo=try&revision=f77f3a05ee43 I accidentally pushed this to Try while having unrelated patches (like the patch for bug 1231538) applied as well, which are likely what's causing the various test failures. Trying again with just this patch, including addressing review comments: https://treeherder.mozilla.org/#/jobs?repo=try&revision=b1be37e74603
(In reply to Botond Ballo [:botond] from comment #21) > Trying again with just this patch, including addressing review comments: > > https://treeherder.mozilla.org/#/jobs?repo=try&revision=b1be37e74603 Looking much better. Landing.
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: