WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
95322
[chromium] Fix double call to scrollBegin() when handling scroll gesture
https://bugs.webkit.org/show_bug.cgi?id=95322
Summary
[chromium] Fix double call to scrollBegin() when handling scroll gesture
Iain Merrick
Reported
2012-08-29 04:16:30 PDT
[chromium] Fix double call to scrollBegin() when handling scroll gesture
Attachments
Patch
(4.21 KB, patch)
2012-08-29 04:17 PDT
,
Iain Merrick
no flags
Details
Formatted Diff
Diff
Patch
(1.77 KB, patch)
2012-08-29 09:48 PDT
,
Iain Merrick
no flags
Details
Formatted Diff
Diff
Patch
(17.15 KB, patch)
2012-09-05 08:08 PDT
,
Iain Merrick
no flags
Details
Formatted Diff
Diff
Patch
(5.52 KB, patch)
2012-09-11 08:15 PDT
,
Iain Merrick
no flags
Details
Formatted Diff
Diff
Show Obsolete
(3)
View All
Add attachment
proposed patch, testcase, etc.
Iain Merrick
Comment 1
2012-08-29 04:17:27 PDT
Created
attachment 161178
[details]
Patch
WebKit Review Bot
Comment 2
2012-08-29 06:06:19 PDT
Comment on
attachment 161178
[details]
Patch
Attachment 161178
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/13682187
New failing tests: WebCompositorInputHandlerImplTest.gestureFlingAnimates CCLayerTreeHostTestScrollChildLayer.runMultiThread WebCompositorInputHandlerImplTest.gestureFlingTransferResets
Iain Merrick
Comment 3
2012-08-29 06:08:38 PDT
Comment on
attachment 161178
[details]
Patch Some failing unit tests, will fix
Iain Merrick
Comment 4
2012-08-29 09:48:31 PDT
Created
attachment 161251
[details]
Patch
Iain Merrick
Comment 5
2012-08-29 09:49:29 PDT
My previous patch removed the double scrollBegin() call, but on second thoughts, exactly that behavior is expected by the unit tests. For now, just remove the offending ASSERT so the tests pass in debug mode.
Iain Merrick
Comment 6
2012-09-03 07:04:56 PDT
Anyone got time to take a look at this? Android content shell is still hitting ASSERTs.
James Robinson
Comment 7
2012-09-04 08:57:30 PDT
Comment on
attachment 161251
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=161251&action=review
> Source/WebCore/ChangeLog:9 > + client, then if the result is ScrollStarted, it creates a PlatformGestureCurve
I think this is wrong - you should instead fix the PlatformGestureCurve stuff to not do a scrollBegin()
Iain Merrick
Comment 8
2012-09-04 09:09:46 PDT
(In reply to
comment #7
)
> (From update of
attachment 161251
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=161251&action=review
> > > Source/WebCore/ChangeLog:9 > > + client, then if the result is ScrollStarted, it creates a PlatformGestureCurve > > I think this is wrong - you should instead fix the PlatformGestureCurve stuff to not do a scrollBegin()
OK, will do -- it'll be along the lines of the first patchset, but I need to fix up those tests as well.
Iain Merrick
Comment 9
2012-09-05 08:08:10 PDT
Created
attachment 162253
[details]
Patch
Iain Merrick
Comment 10
2012-09-05 08:10:56 PDT
I modified the gestureFlingAnimates test, and removed gestureFlingTransferResets completely. That was a pretty complicated test but I can't see that it represents usage that would occur in practice. This patch performs well when testing manually in the Android content shell. If there are additional unit tests you think I should add, please let me know.
James Robinson
Comment 11
2012-09-05 10:49:41 PDT
Comment on
attachment 162253
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=162253&action=review
> Source/WebKit/chromium/ChangeLog:23 > + doesn't seem to represent normal usage -- composited flings don't turn into > + main thread flings halfway through.
Sorry, yes they do for wheel flings. This test and the behavior it tests are important.
> Source/WebKit/chromium/src/WebCompositorInputHandlerImpl.cpp:333 > + m_inputHandlerClient->scrollBy(IntPoint(m_wheelFlingParameters.point.x, m_wheelFlingParameters.point.y),
This doesn't look right. Keep in mind we have 2 kinds of flings - "gesture" flings and "wheel pad" flings. The former is what Chrome on android has. The latter - which is what this code implements - works like OS X fling by generating a sequence of synthetic wheel events. It looks like you've just deleted the code for the second kind of fling completely. That's definitely not the right fix! I think what you really want to do is for wheel fling type scrolls send a matching scrollEnd() to the scrollBegin() when the fling starts.
Iain Merrick
Comment 12
2012-09-05 10:53:45 PDT
(In reply to
comment #11
)
> This doesn't look right. Keep in mind we have 2 kinds of flings - "gesture" flings and "wheel pad" flings. The former is what Chrome on android has. The latter - which is what this code implements - works like OS X fling by generating a sequence of synthetic wheel events. > > It looks like you've just deleted the code for the second kind of fling completely. That's definitely not the right fix!
It did seem a bit strange, yes. :) Chrome for Android is hitting that code path, though, and it sounds like maybe it shouldn't -- I'll take a closer look.
> I think what you really want to do is for wheel fling type scrolls send a matching scrollEnd() to the scrollBegin() when the fling starts.
np, will do
Iain Merrick
Comment 13
2012-09-05 10:54:54 PDT
(In reply to
comment #12
)
> Chrome for Android is hitting that code path, though
Oops, I don't mean Chrome, I mean the content shell.
James Robinson
Comment 14
2012-09-05 10:58:52 PDT
I'm somewhat dubious of how android is sharing this code right now. I suspect
https://bugs.webkit.org/show_bug.cgi?id=95756
will help.
Iain Merrick
Comment 15
2012-09-06 09:49:44 PDT
(In reply to
comment #14
)
> I'm somewhat dubious of how android is sharing this code right now. I suspect
https://bugs.webkit.org/show_bug.cgi?id=95756
will help.
Oho, yes it will! Downstream we have "FlingAnimator" which basically implements PlatformGestureCurve (but with reversed sign) with different plumbing. Once 95756 gets it, we should be able to hook it up to that.
Iain Merrick
Comment 16
2012-09-11 05:27:49 PDT
Still happening. We've now resolved all the Android diffs, but that just means the same bug crops up in our Android branch too.
Iain Merrick
Comment 17
2012-09-11 08:15:17 PDT
Created
attachment 163365
[details]
Patch
Iain Merrick
Comment 18
2012-09-11 08:16:38 PDT
Another try. This patch just adds an extra scrollEnd() where it's needed, and makes the unit test more strict to hopefully catch future incorrect usage.
James Robinson
Comment 19
2012-09-11 09:53:02 PDT
Comment on
attachment 163365
[details]
Patch Thanks, this is exactly what I had in mind.
WebKit Review Bot
Comment 20
2012-09-11 09:58:45 PDT
Comment on
attachment 163365
[details]
Patch Clearing flags on attachment: 163365 Committed
r128199
: <
http://trac.webkit.org/changeset/128199
>
WebKit Review Bot
Comment 21
2012-09-11 09:58:49 PDT
All reviewed patches have been landed. Closing bug.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug