PanZoomController erroneously returns INPUT_RESULT_HANDLED_CONTENT
Categories
(GeckoView :: IME, defect, P1)
Tracking
(firefox81 wontfix, firefox82 fixed)
People
(Reporter: petru, Assigned: snorp)
References
Details
(Whiteboard: [geckoview:m78][geckoview:m79][geckoview:m80][geckoview:m81])
Attachments
(4 files, 2 obsolete files)
Seen while browsing github.com in Fenix / GeckoView Example by logging the INPUT_RESULT PZC returns.
The page is too long to fit the screen but when scrolling it GV returns INPUT_RESULT_HANDLED_CONTENT
signaling the webpage handled the scroll and not the browser. I think this is an error.
(InputResult
log was added here)
(apz.inputqueue
log was added here)
9:05:06.725 I/apz.inputqueue: Line 185: Will consume touch event
9:05:06.725 I/InputResult: INPUT_RESULT_HANDLED_CONTENT
9:05:06.787 I/apz.inputqueue: Line 182: dropping event due to block 0xadcc6380 being in slop
9:05:06.787 I/InputResult: INPUT_RESULT_HANDLED
9:05:06.803 I/apz.inputqueue: Line 185: Will consume touch event
9:05:06.803 I/InputResult: INPUT_RESULT_HANDLED_CONTENT
9:05:06.819 I/apz.inputqueue: Line 185: Will consume touch event
9:05:06.820 I/InputResult: INPUT_RESULT_HANDLED_CONTENT
9:05:06.836 I/apz.inputqueue: Line 185: Will consume touch event
9:05:06.836 I/InputResult: INPUT_RESULT_HANDLED_CONTENT
...
I tried to follow with logs what happens in nsWindow.cpp based on nsEventStatus_eConsumeDoDefault
but it seems like this doesn't reach nsWindow.
Updated•5 years ago
|
Reporter | ||
Comment 2•4 years ago
|
||
Sorry, I copy-pasted the title but forgot to modify it to express the issue.
This problem is similar to the one in bug 1631754.
.. Just that we get the reverse. INPUT_RESULT_HANDLED_CONTENT
instead of the expected INPUT_RESULT_HANDLED
on some specific sites.
Not sure if this will also be resolved by bug 1631754.
If you think this is still a dupe please close it.
Comment 3•4 years ago
|
||
(In reply to Petru-Mugurel Lingurar[:petru] from comment #0)
Seen while browsing github.com
This is the root page on github.com, or some specific subpage? And are you logged in or out? (you get different content if you are logged in)
Reporter | ||
Comment 4•4 years ago
•
|
||
Just tried it on geckoview-example. Based on reports from here https://github.com/mozilla-mobile/fenix/issues/9720 I see the issue reproducing on:
- https://github.com (not logged in)
- https://www.phonearena.com
- https://www.latribune.fr
- https://www.w3schools.com
On all of these sites the page scroll works fine and scrolls are expected (because of the visuals) to be handled by Gecko and such PZC to return INPUT_RESULT_HANDLED
.
But in the majority of cases the return is INPUT_RESULT_HANDLED_CONTENT
.
Strangely, scrolling from the same positions (in page) sometimes may return INPUT_RESULT_HANDLED
for the entire scroll gesture, but most of the times (even from the same starting position if tried again) the return is INPUT_RESULT_HANDLED_CONTENT
.
Assignee | ||
Updated•4 years ago
|
Assignee | ||
Updated•4 years ago
|
Comment 5•4 years ago
|
||
The reason for this is that the pages have apz-aware listeners on the root element. For github.com, there is a touchmove listener registered on the <html>
element which is the root scroller.
Reporter | ||
Comment 6•4 years ago
|
||
Thank you for looking into this.
So as I understand PZC works as intended here even though we actually scrolled the page.
We needed this in Fenix to properly differentiate if the browser / the website consumed the scroll to correctly animate pull down to refresh / the urlBar.
What intrigues me is that I see both this and bug 1631754 not being issues on Fennec which correctly animates the AwesomeBar and shows the overflow effect so that makes me wonder if we should better use those apis..
Comment 7•4 years ago
|
||
There's two different things you're trying to do here: animate the dynamic toolbar, and implement pull to refresh.
For the dynamic toolbar, I don't think you need to rely much on whether or not content used the event. If you rely on that you open yourself up to an attack vector where the page can consume the events, prevent the Fenix dynamic toolbar from becoming visible, and then spoof its own image of the dynamic toolbar. That's a security bug we worked hard to avoid in previous implementations. So I think you should be able to have a decent dynamic toolbar implementation if you pretty much ignore what APZ is doing and just drive the show/hide behaviour based on user input.
For the pull-to-refresh, the situation is quite different. In that case you only want the behaviour to occur if you know for sure the event wasn't consumed by APZ or content. That information can't be obtained just by the return value from ReceiveInputEvent, because at that point APZ itself doesn't necessarily know what the input event triggered. The input event may be handled asynchronously after waiting for content to run JS and so on. So IMO to handle pull-to-refresh properly you need an API similar to overscroll - after APZ/content is done with its stuff you would get a callback saying "this is the unused amount of scroll that occurred" and then you can decide if you want to use it for pull-to-refresh or not.
Assignee | ||
Comment 8•4 years ago
|
||
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #7)
There's two different things you're trying to do here: animate the dynamic toolbar, and implement pull to refresh.
For the dynamic toolbar, I don't think you need to rely much on whether or not content used the event. If you rely on that you open yourself up to an attack vector where the page can consume the events, prevent the Fenix dynamic toolbar from becoming visible, and then spoof its own image of the dynamic toolbar. That's a security bug we worked hard to avoid in previous implementations. So I think you should be able to have a decent dynamic toolbar implementation if you pretty much ignore what APZ is doing and just drive the show/hide behaviour based on user input.
I don't agree with this. You have to care what APZ/Gecko is doing because for things like Google Maps you want to suspend any toolbar changes while the user is panning the map around. The Fennec toolbar animator was intimately tied to what APZ/Gecko were doing.
The spoofing problem is easily fixed by showing the toolbar when an ACTION_DOWN event was not used for a toplevel pan/zoom. Fenix is doing this today.
The toolbar is a probably the only place where having a separation of app vs gecko creates a problem. The dynamic toolbar animator from Fennec wasn't chosen for this because I felt that the screenshot hack was too gross to be the right API for GV. In Fennec it was more justifiable.
For the pull-to-refresh, the situation is quite different. In that case you only want the behaviour to occur if you know for sure the event wasn't consumed by APZ or content. That information can't be obtained just by the return value from ReceiveInputEvent, because at that point APZ itself doesn't necessarily know what the input event triggered. The input event may be handled asynchronously after waiting for content to run JS and so on. So IMO to handle pull-to-refresh properly you need an API similar to overscroll - after APZ/content is done with its stuff you would get a callback saying "this is the unused amount of scroll that occurred" and then you can decide if you want to use it for pull-to-refresh or not.
Yeah, overscroll might be a better fit for pull-to-refresh. I have a patch that hooks the glow effect back up, we could also then expose that stuff to apps for their own usage.
Comment 9•4 years ago
|
||
(In reply to James Willcox (:snorp) (jwillcox@mozilla.com) (he/him) from comment #8)
I don't agree with this. You have to care what APZ/Gecko is doing because for things like Google Maps you want to suspend any toolbar changes while the user is panning the map around. The Fennec toolbar animator was intimately tied to what APZ/Gecko were doing.
I might have oversimplified a bit. It's certainly true that the Fennec toolbar was more tied to APZ/Gecko. But I'm still confused how allowing Google Maps to suspend toolbar changes doesn't open you up to the spoofing problem. Imagine a malicious map website where if you pan the map upwards, it displays a fake URL bar at the bottom of the screen. A user goes the page, pans down to the map (which hides the real URL bar) and then pans around on the map. User sees what appears to be the URL bar reappearing, and uses it. But it's actually the spoofed bar and they get hijacked.
The spoofing problem is easily fixed by showing the toolbar when an ACTION_DOWN event was not used for a toplevel pan/zoom. Fenix is doing this today.
In the scenario I described above does panning the map count as "an ACTION_DOWN not used for a toplevel pan/zoom"? If so isn't this heuristic ("show the toolbar when an ACTION_DOWN is not used for a toplevel pan/zoom") inherently conflicting with "suspend toolbar changes during map panning"?
The toolbar is a probably the only place where having a separation of app vs gecko creates a problem. The dynamic toolbar animator from Fennec wasn't chosen for this because I felt that the screenshot hack was too gross to be the right API for GV. In Fennec it was more justifiable.
I agree with you there, I'm glad to see the screenshot hack go.
Yeah, overscroll might be a better fit for pull-to-refresh. I have a patch that hooks the glow effect back up, we could also then expose that stuff to apps for their own usage.
Sounds good.
Assignee | ||
Comment 10•4 years ago
|
||
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #9)
(In reply to James Willcox (:snorp) (jwillcox@mozilla.com) (he/him) from comment #8)
I don't agree with this. You have to care what APZ/Gecko is doing because for things like Google Maps you want to suspend any toolbar changes while the user is panning the map around. The Fennec toolbar animator was intimately tied to what APZ/Gecko were doing.
I might have oversimplified a bit. It's certainly true that the Fennec toolbar was more tied to APZ/Gecko. But I'm still confused how allowing Google Maps to suspend toolbar changes doesn't open you up to the spoofing problem. Imagine a malicious map website where if you pan the map upwards, it displays a fake URL bar at the bottom of the screen. A user goes the page, pans down to the map (which hides the real URL bar) and then pans around on the map. User sees what appears to be the URL bar reappearing, and uses it. But it's actually the spoofed bar and they get hijacked.
The spoofing problem is easily fixed by showing the toolbar when an ACTION_DOWN event was not used for a toplevel pan/zoom. Fenix is doing this today.
In the scenario I described above does panning the map count as "an ACTION_DOWN not used for a toplevel pan/zoom"?
Yes, as we'd return HANDLED_CONTENT
in that case.
If so isn't this heuristic ("show the toolbar when an ACTION_DOWN is not used for a toplevel pan/zoom") inherently conflicting with "suspend toolbar changes during map panning"?
Well by "suspend" I meant "don't show/hide the toolbar based on touch movement". Given your example above, we would immediately show the urlbar with the first touch event that went to the map. While the user pans the map around, the toolbar would stay "pinned". Any fake urlbar would appear above the real one.
Comment 11•4 years ago
|
||
Ok, I see. So then either we need to integrate more deeply with APZ or we need to be ok with getting some false positives. In the latter case we should also ensure we only return HANDLED
when we're absolutely sure content isn't controlling outcomes, which means doing what Botond suggested here.
Comment 12•4 years ago
|
||
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Comment 14•4 years ago
|
||
This is not a duplicate of bug 1640387. It's the opposite problem.
Comment 15•4 years ago
|
||
We are seeing a similar behaviour on the setting page of UBlock origin. As Petru-Mugurel mentioned in comment #0. GV returns INPUT_RESULT_HANDLED_CONTENT
signalling the web page handled the scroll and not the browser, causing that we do not animate(hide/show the toolbar) and the bottom part of the page is not getting shown, As you can see in this video. More information can be found in the Fenix related bug
Comment 16•4 years ago
•
|
||
Hey Emily, what does the timeline look like for this? I believe this is the last outstanding issue before we can turn on dynamic toolbar, which vesta wants for release. Ideally, if we could get this into GV78 by the end of next week (6/18), that should make our sprint, but I guess that All Hands is also that week...
https://github.com/mozilla-mobile/fenix/issues/8775 is our meta
Comment 17•4 years ago
|
||
:kats, is this something that you are looking at? Fenix are hoping to have this fix uplifted to 78.
Updated•4 years ago
|
Comment 18•4 years ago
|
||
No, I'm not actively looking at this. But reading through the comments again I'm not sure exactly what the problem is anymore. If we are returning HANDLED_CONTENT
instead of HANDLED
in some cases (because of event listeners or whatever), then presumably it should be triggering the behaviour that :snorp described here:
(In reply to James Willcox (:snorp) (jwillcox@mozilla.com) (he/him) from comment #10)
we would immediately show the urlbar with the first touch event that went to the map. While the user pans the map around, the toolbar would stay "pinned".
So from a user point of view what I would expect (e.g. in this video) is that the URL bar appears and remains pinned visible, rather than distractingly scrolling on or off. :snorp, can you confirm my interpretation is correct? If so maybe this is a simple GV-side fix.
If we want that return value to be more precise and return HANDLED
in cases where the event listeners didn't do a preventDefault then we will need tighter integration between APZ and GV and in particular some sort of callback mechanism instead of a synchronous return value, so that will be trickier to implement.
Assignee | ||
Comment 19•4 years ago
|
||
That's correct, if we return HANDLED_CONTENT
for the ACTION_DOWN
event then the toolbar should be pinned visible for the duration of the touch. I can't reproduce the behavior shown in the video from comment #18 anymore. The toolbar stays visible the entire time.
Assignee | ||
Comment 20•4 years ago
|
||
(In reply to James Willcox (:snorp) (jwillcox@mozilla.com) (he/him) from comment #19)
That's correct, if we return
HANDLED_CONTENT
for theACTION_DOWN
event then the toolbar should be pinned visible for the duration of the touch. I can't reproduce the behavior shown in the video from comment #18 anymore. The toolbar stays visible the entire time.
Whoops, I didn't see that the video there was using a top toolbar. The issue there is that Fenix is not correctly pinning the toolbar in the HANDLED_CONTENT
case.
Assignee | ||
Comment 21•4 years ago
|
||
OK, I think we want to try to pursue the path where we wait to see what Gecko did with the event. Kats / Botond can you guess at when you could get to this? Is it possible for a mortal to write the patch?
Comment 22•4 years ago
|
||
Would an API along the following lines work for GV?
- The
APZEventResult
contains aMaybe<mTargetIsRoot>
which is populated if we know the answer for sure, and empty if we don't. - If it's empty, GV takes note of the
mInputBlockId
in theAPZEventResult
as identifying an input block for which it needs to receive a delayed answer. - When the delayed answer is ready, APZ calls a function with a
(uint64_t inputBlockId, bool targetIsRoot)
pair that tells GV the answer for that input block.
It should be fairly straightforward to arrange for APZ to call such a function when a delayed answer is ready.
Updated•4 years ago
|
Assignee | ||
Comment 23•4 years ago
|
||
(In reply to Botond Ballo [:botond] from comment #22)
Would an API along the following lines work for GV?
- The
APZEventResult
contains aMaybe<mTargetIsRoot>
which is populated if we know the answer for sure, and empty if we don't.- If it's empty, GV takes note of the
mInputBlockId
in theAPZEventResult
as identifying an input block for which it needs to receive a delayed answer.- When the delayed answer is ready, APZ calls a function with a
(uint64_t inputBlockId, bool targetIsRoot)
pair that tells GV the answer for that input block.It should be fairly straightforward to arrange for APZ to call such a function when a delayed answer is ready.
That sounds fine. I think we'd only want to do it in certain cases where we actually care about the result, though (which for Fenix would only be ACTION_DOWN events), otherwise I feel like it could potentially generate too much traffic.
Comment 24•4 years ago
|
||
I'll give implementing the APZ side of this a try.
Comment 25•4 years ago
|
||
GeckoView uses these flags for the same purpose: to determine
whether or not to allow certain effects, such as pull to refresh
or dynamic toolbar movement, that should be limited to cases
where an event manipulates the root scrollable.
In a subsequent patch, we will enhance the API between APZ and
GeckoView such that in cases where we don't know for sure whether
an event will manipulate the root scrollable until it is
dispatched to content, we tell GV the answer asynchronously.
This is easier if there is only one flag to report.
Comment 26•4 years ago
|
||
Depends on D79929
Comment 27•4 years ago
|
||
This facility is only implemented for in-process senders of
input events (i.e. not for GPU process setups).
Depends on D79930
Comment 28•4 years ago
|
||
Depends on D79931
Comment 29•4 years ago
|
||
The posted patches implement the APZ side of the proposed API. The last patch is a starting point for where to implement the GV side. Let me know if this is suitable!
Updated•4 years ago
|
Reporter | ||
Comment 30•4 years ago
|
||
Checked the dependencies for pull to refresh on Fenix.
I still see this being a problem for the websites from this list (other than Github) that also affects the animation for the bottom toolbar.
Though testing on w3schools
I see different behaviors (based on different pzc results) - video so maybe all of this can also be seen as webcompat issues?
Also seeing the Fennec overscroll effect working as expected even on these pages.
Assignee | ||
Updated•4 years ago
|
Assignee | ||
Comment 31•4 years ago
|
||
Assignee | ||
Comment 32•4 years ago
|
||
Botond, I have a patch here[1] that uses the new input block callback. I seem to be getting handled = true
every time we go down this path, though. Have I done something wrong? For instance, on maps.google.com
the touch events should be handled in content so I would think it would return false
....
Updated•4 years ago
|
Comment 33•4 years ago
•
|
||
The early-return path in the AddInputBlockCallback()
case still needs to perform the window->ProcessUntransformedAPZEvent()
stuff, as that's what actually dispatches the event to content. With that change to your patch, Google Maps seems to be working fine (and producing aHandledByRootApzc = false
).
Updated•4 years ago
|
Updated•4 years ago
|
Updated•4 years ago
|
Comment 34•4 years ago
|
||
Comment 35•4 years ago
|
||
Backed out for android failures e.g. test_group_checkerboarding.html
backout: https://hg.mozilla.org/integration/autoland/rev/3117c5a77009b0a5ba9647b0c55b98cd17d23f4f
failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=313353389&repo=autoland&lineNumber=6251
[task 2020-08-18T20:17:32.093Z] 20:17:32 INFO - 3633 INFO TEST-START | gfx/layers/apz/test/mochitest/test_group_checkerboarding.html
[task 2020-08-18T20:22:58.948Z] 20:22:58 INFO - Buffered messages logged at 20:17:26
[task 2020-08-18T20:22:58.948Z] 20:22:58 INFO - 3634 INFO TEST-PASS | gfx/layers/apz/test/mochitest/test_group_checkerboarding.html | Starting subtest helper_checkerboard_apzforcedisabled.html
[task 2020-08-18T20:22:58.948Z] 20:22:58 INFO - Buffered messages finished
[task 2020-08-18T20:22:58.949Z] 20:22:58 WARNING - 3635 INFO TEST-UNEXPECTED-FAIL | gfx/layers/apz/test/mochitest/test_group_checkerboarding.html | Test timed out.
[task 2020-08-18T20:22:58.950Z] 20:22:58 INFO - SimpleTest.ok@SimpleTest/SimpleTest.js:417:16
[task 2020-08-18T20:22:58.950Z] 20:22:58 INFO - reportError@SimpleTest/TestRunner.js:143:22
[task 2020-08-18T20:22:58.950Z] 20:22:58 INFO - TestRunner._checkForHangs@SimpleTest/TestRunner.js:165:18
[task 2020-08-18T20:22:58.950Z] 20:22:58 INFO - 3636 INFO TEST-OK | gfx/layers/apz/test/mochitest/test_group_checkerboarding.html | took 324285ms
also org.mozilla.geckoview.test.PanZoomControllerTest.touchEventForResult | java.lang.AssertionError: Value should match https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=313354872&repo=autoland&lineNumber=8174
Assignee | ||
Comment 36•4 years ago
|
||
Botond, I have a fix for the mochitest failure, but the junit failure seems to be intermittent and I was hoping you could help me figure that out. The part that's failing is that sometimes ACTION_DOWN
on an element with a touchstart
listener returns result.mHandledByRootApzc == Some(true)
and result.mStatus == nsEventStatus_eIgnore
. Is APZ not aware of the touch region in this case? Where should I go poking around?
Comment 37•4 years ago
|
||
Comment 38•4 years ago
|
||
Backed out 5 changesets (bug 1633322, bug 1634504) for touchEventForResult gv-junit failures.
Backout link: https://hg.mozilla.org/integration/autoland/rev/184dbd9b95ebc4185c683693ace4f46e443e69a8
Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=313494726&repo=autoland&lineNumber=8189
[task 2020-08-19T23:26:18.330Z] 23:26:18 INFO - TEST-START | org.mozilla.geckoview.test.PanZoomControllerTest.touchEventForResult
[task 2020-08-19T23:26:18.530Z] 23:26:18 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: numtests=756
[task 2020-08-19T23:26:18.530Z] 23:26:18 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: stream=
[task 2020-08-19T23:26:18.530Z] 23:26:18 INFO - org.mozilla.geckoview.test | Error in touchEventForResult(org.mozilla.geckoview.test.PanZoomControllerTest):
[task 2020-08-19T23:26:18.530Z] 23:26:18 INFO - org.mozilla.geckoview.test | java.lang.AssertionError: Value should match
[task 2020-08-19T23:26:18.530Z] 23:26:18 INFO - org.mozilla.geckoview.test | Expected: <1>
[task 2020-08-19T23:26:18.530Z] 23:26:18 INFO - org.mozilla.geckoview.test | but: was <0>
[task 2020-08-19T23:26:18.531Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
[task 2020-08-19T23:26:18.531Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.Assert.assertThat(Assert.java:956)
[task 2020-08-19T23:26:18.531Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.rules.ErrorCollector$1.call(ErrorCollector.java:65)
[task 2020-08-19T23:26:18.531Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.rules.ErrorCollector.checkSucceeds(ErrorCollector.java:78)
[task 2020-08-19T23:26:18.531Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.rules.ErrorCollector.checkThat(ErrorCollector.java:63)
[task 2020-08-19T23:26:18.531Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.checkThat(GeckoSessionTestRule.java:802)
[task 2020-08-19T23:26:18.532Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.BaseSessionTest.assertThat(BaseSessionTest.kt:88)
[task 2020-08-19T23:26:18.532Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.PanZoomControllerTest.touchEventForResult(PanZoomControllerTest.kt:280)
[task 2020-08-19T23:26:18.532Z] 23:26:18 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Native Method)
[task 2020-08-19T23:26:18.532Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
[task 2020-08-19T23:26:18.532Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
[task 2020-08-19T23:26:18.533Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
[task 2020-08-19T23:26:18.533Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
[task 2020-08-19T23:26:18.533Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule$2.lambda$evaluate$0$GeckoSessionTestRule$2(GeckoSessionTestRule.java:1302)
[task 2020-08-19T23:26:18.533Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.-$$Lambda$GeckoSessionTestRule$2$sIbRNaZJgAu-QrUVWSGD8JbPSWM.run(lambda)
[task 2020-08-19T23:26:18.533Z] 23:26:18 INFO - org.mozilla.geckoview.test | at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:1950)
[task 2020-08-19T23:26:18.533Z] 23:26:18 INFO - org.mozilla.geckoview.test | at android.os.Handler.handleCallback(Handler.java:751)
[task 2020-08-19T23:26:18.534Z] 23:26:18 INFO - org.mozilla.geckoview.test | at android.os.Handler.dispatchMessage(Handler.java:95)
[task 2020-08-19T23:26:18.534Z] 23:26:18 INFO - org.mozilla.geckoview.test | at android.os.Looper.loop(Looper.java:154)
[task 2020-08-19T23:26:18.534Z] 23:26:18 INFO - org.mozilla.geckoview.test | at android.app.ActivityThread.main(ActivityThread.java:6077)
[task 2020-08-19T23:26:18.534Z] 23:26:18 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Native Method)
[task 2020-08-19T23:26:18.534Z] 23:26:18 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
[task 2020-08-19T23:26:18.534Z] 23:26:18 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
[task 2020-08-19T23:26:18.534Z] 23:26:18 INFO - org.mozilla.geckoview.test |
[task 2020-08-19T23:26:18.535Z] 23:26:18 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: id=AndroidJUnitRunner
[task 2020-08-19T23:26:18.535Z] 23:26:18 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: test=touchEventForResult
[task 2020-08-19T23:26:18.535Z] 23:26:18 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: class=org.mozilla.geckoview.test.PanZoomControllerTest
[task 2020-08-19T23:26:18.535Z] 23:26:18 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: stack=java.lang.AssertionError: Value should match
[task 2020-08-19T23:26:18.535Z] 23:26:18 INFO - org.mozilla.geckoview.test | Expected: <1>
[task 2020-08-19T23:26:18.535Z] 23:26:18 INFO - org.mozilla.geckoview.test | but: was <0>
[task 2020-08-19T23:26:18.535Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
[task 2020-08-19T23:26:18.536Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.Assert.assertThat(Assert.java:956)
[task 2020-08-19T23:26:18.536Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.rules.ErrorCollector$1.call(ErrorCollector.java:65)
[task 2020-08-19T23:26:18.536Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.rules.ErrorCollector.checkSucceeds(ErrorCollector.java:78)
[task 2020-08-19T23:26:18.536Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.rules.ErrorCollector.checkThat(ErrorCollector.java:63)
[task 2020-08-19T23:26:18.536Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule.checkThat(GeckoSessionTestRule.java:802)
[task 2020-08-19T23:26:18.536Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.BaseSessionTest.assertThat(BaseSessionTest.kt:88)
[task 2020-08-19T23:26:18.537Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.PanZoomControllerTest.touchEventForResult(PanZoomControllerTest.kt:280)
[task 2020-08-19T23:26:18.537Z] 23:26:18 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Native Method)
[task 2020-08-19T23:26:18.537Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
[task 2020-08-19T23:26:18.537Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
[task 2020-08-19T23:26:18.537Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
[task 2020-08-19T23:26:18.537Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
[task 2020-08-19T23:26:18.538Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.GeckoSessionTestRule$2.lambda$evaluate$0$GeckoSessionTestRule$2(GeckoSessionTestRule.java:1302)
[task 2020-08-19T23:26:18.538Z] 23:26:18 INFO - org.mozilla.geckoview.test | at org.mozilla.geckoview.test.rule.-$$Lambda$GeckoSessionTestRule$2$sIbRNaZJgAu-QrUVWSGD8JbPSWM.run(lambda)
[task 2020-08-19T23:26:18.538Z] 23:26:18 INFO - org.mozilla.geckoview.test | at android.app.Instrumentation$SyncRunnable.run(Instrumentation.java:1950)
[task 2020-08-19T23:26:18.538Z] 23:26:18 INFO - org.mozilla.geckoview.test | at android.os.Handler.handleCallback(Handler.java:751)
[task 2020-08-19T23:26:18.538Z] 23:26:18 INFO - org.mozilla.geckoview.test | at android.os.Handler.dispatchMessage(Handler.java:95)
[task 2020-08-19T23:26:18.538Z] 23:26:18 INFO - org.mozilla.geckoview.test | at android.os.Looper.loop(Looper.java:154)
[task 2020-08-19T23:26:18.539Z] 23:26:18 INFO - org.mozilla.geckoview.test | at android.app.ActivityThread.main(ActivityThread.java:6077)
[task 2020-08-19T23:26:18.539Z] 23:26:18 INFO - org.mozilla.geckoview.test | at java.lang.reflect.Method.invoke(Native Method)
[task 2020-08-19T23:26:18.539Z] 23:26:18 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
[task 2020-08-19T23:26:18.539Z] 23:26:18 INFO - org.mozilla.geckoview.test | at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
[task 2020-08-19T23:26:18.539Z] 23:26:18 INFO - org.mozilla.geckoview.test |
[task 2020-08-19T23:26:18.539Z] 23:26:18 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS: current=389
[task 2020-08-19T23:26:18.539Z] 23:26:18 INFO - org.mozilla.geckoview.test | INSTRUMENTATION_STATUS_CODE: -2
[task 2020-08-19T23:26:18.540Z] 23:26:18 WARNING - TEST-UNEXPECTED-FAIL | org.mozilla.geckoview.test.PanZoomControllerTest.touchEventForResult | java.lang.AssertionError: Value should match
[task 2020-08-19T23:26:18.540Z] 23:26:18 INFO - TEST-INFO took 208ms
Assignee | ||
Comment 39•4 years ago
|
||
Ugh. Looks like I need to wait for onFirstContentfulPaint()
in setupScroll()
as well.
Comment 40•4 years ago
|
||
Comment 41•4 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/9025714892ac
https://hg.mozilla.org/mozilla-central/rev/a0291bc39a66
https://hg.mozilla.org/mozilla-central/rev/3953149e9b4a
https://hg.mozilla.org/mozilla-central/rev/29e16ac5d3de
Updated•4 years ago
|
Comment 42•4 years ago
|
||
backout |
Backed out from Beta 81 at Snorp's request to allow more time for downstream consumers to adapt. It remains landed for 82+.
https://hg.mozilla.org/releases/mozilla-beta/rev/c3e9617c37d69d2064e4a83015a304048f5cc7ed
Reporter | ||
Comment 43•4 years ago
|
||
Just wanted to say that I tested
https://www.phonearena.com
https://www.w3schools.com
on Fenix and the issue seem fixed - the toolbar is now correctly animated.
Thank you!
Comment 44•2 years ago
|
||
Moving some input bugs to the new GeckoView::IME component.
Description
•