Bug 193769 - Jumps to the top of the page when interacting with anything.
Summary: Jumps to the top of the page when interacting with anything.
Status: RESOLVED DUPLICATE of bug 184665
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: Safari 12
Hardware: All Unspecified
: P2 Major
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-01-24 08:18 PST by David Johnston
Modified: 2019-03-28 15:28 PDT (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description David Johnston 2019-01-24 08:18:59 PST
I have created a codepen example here
https://codepen.io/anon/pen/ZwGWZg

If you click add line until the containing element is full then every time you click add line you are bumped to the top of the page.
This is not the case in any other browser on the desktop. But happens on all browsers on IOS.

The example above is just a simple example it happens even if you change a class name on an element.

Many thanks for your time.
Comment 1 David Johnston 2019-01-24 08:24:28 PST
I should add....
I know this is a bug with
overflow-y: scroll;
and
overflow-y: auto;

as set on the .content div in my example.
Comment 2 Simon Fraser (smfr) 2019-01-24 14:33:41 PST
The scroll to 0,0 comes from:

  * frame #0: 0x000000028352c187 WebCore`WebCore::RenderLayer::scrollTo(this=0x00000002ba780000, position={ x = 0, y = 0 }) at RenderLayer.cpp:2352:34
    frame #1: 0x000000028352f813 WebCore`WebCore::RenderLayer::setScrollOffset(this=0x00000002ba780000, offset={ x = 0, y = 0 }) at RenderLayer.cpp:2783:5
    frame #2: 0x0000000282f5eade WebCore`WebCore::ScrollableArea::scrollPositionChanged(this=0x00000002ba780000, position={ x = 0, y = 0 }) at ScrollableArea.cpp:166:5
    frame #3: 0x0000000282f551f8 WebCore`WebCore::ScrollableArea::setScrollOffsetFromAnimation(this=0x00000002ba780000, offset={ x = 0, y = 0 }) at ScrollableArea.cpp:229:5
    frame #4: 0x0000000282f55176 WebCore`WebCore::ScrollAnimator::notifyPositionChanged(this=0x00000002ba4a58e8, delta={ width = 0.0, height = -747.0 }) at ScrollAnimator.cpp:193:22
    frame #5: 0x000000028033a3f3 WebCore`WebCore::ScrollAnimatorMac::notifyPositionChanged(this=0x00000002ba4a58e8, delta={ width = 0.0, height = -747.0 }) at ScrollAnimatorMac.mm:855:21
    frame #6: 0x0000000280339eda WebCore`WebCore::ScrollAnimatorMac::immediateScrollToPosition(this=0x00000002ba4a58e8, newPosition={ x = 0.0, y = 0.0 }, clamping=Clamped) at ScrollAnimatorMac.mm:824:5
    frame #7: 0x0000000280339e00 WebCore`WebCore::ScrollAnimatorMac::scrollToOffsetWithoutAnimation(this=0x00000002ba4a58e8, offset={ x = 0.0, y = 0.0 }, clamping=Clamped) at ScrollAnimatorMac.mm:790:5
    frame #8: 0x0000000282f5a152 WebCore`WebCore::ScrollableArea::scrollToOffsetWithoutAnimation(this=0x00000002ba780000, offset={ x = 0.0, y = 0.0 }, clamping=Clamped) at ScrollableArea.cpp:144:22
    frame #9: 0x000000028352be12 WebCore`WebCore::RenderLayer::scrollToOffset(this=0x00000002ba780000, scrollOffset={ x = 0, y = 0 }, clamping=Clamped) at RenderLayer.cpp:2341:9
    frame #10: 0x00000002835336cd WebCore`WebCore::RenderLayer::updateScrollInfoAfterLayout(this=0x00000002ba780000) at RenderLayer.cpp:3553:13
    frame #11: 0x00000002833bf2de WebCore`WebCore::RenderBlock::updateScrollInfoAfterLayout(this=0x00000002b0501e60) at RenderBlock.cpp:591:18
    frame #12: 0x00000002833d7935 WebCore`WebCore::RenderBlockFlow::layoutBlock(this=0x00000002b0501e60, relayoutChildren=true, pageLogicalHeight={ 0px (0) }) at RenderBlockFlow.cpp:563:5
    frame #13: 0x00000002833bf3ac WebCore`WebCore::RenderBlock::layout(this=0x00000002b0501e60) at RenderBlock.cpp:601:5
    frame #14: 0x000000028335f28c WebCore`WebCore::RenderElement::layoutIfNeeded(this=0x00000002b0501e60) at RenderElement.h:121:48
    frame #15: 0x000000028336117b WebCore`WebCore::DefiniteSizeStrategy::layoutGridItemForMinSizeComputation(this=0x00006000004917e0, child=0x00000002b0501e60, overrideSizeHasChanged=false) const at GridTrackSizingAlgorithm.cpp:1070:11
    frame #16: 0x000000028335d1eb WebCore`WebCore::GridTrackSizingAlgorithmStrategy::minSizeForChild(this=0x00006000004917e0, child=0x00000002b0501e60) const at GridTrackSizingAlgorithm.cpp:832:5
    frame #17: 0x000000028335c408 WebCore`WebCore::GridTrackSizingAlgorithm::sizeTrackToFitNonSpanningItem(this=0x00000002b4c008c0, span=0x00007ffee4d396b8, gridItem=0x00000002b0501e60, track=0x00000002ba77c1dc) at GridTrackSizingAlgorithm.cpp:249:66
    frame #18: 0x0000000283361add WebCore`WebCore::GridTrackSizingAlgorithm::resolveIntrinsicTrackSizes(this=0x00000002b4c008c0) at GridTrackSizingAlgorithm.cpp:1148:25
    frame #19: 0x00000002833652ea WebCore`WebCore::GridTrackSizingAlgorithm::run(this=0x00000002b4c008c0) at GridTrackSizingAlgorithm.cpp:1317:9
    frame #20: 0x00000002834ead4e WebCore`WebCore::RenderGrid::computeTrackSizesForDefiniteSize(this=0x00000002b4c00710, direction=ForRows, availableSpace={ 565px (36160) }) at RenderGrid.cpp:146:28
    frame #21: 0x00000002834ebf23 WebCore`WebCore::RenderGrid::layoutBlock(this=0x00000002b4c00710, relayoutChildren=false, (null)={ 0px (0) }) at RenderGrid.cpp:251:13
    frame #22: 0x00000002833bf3ac WebCore`WebCore::RenderBlock::layout(this=0x00000002b4c00710) at RenderBlock.cpp:601:5
    frame #23: 0x00000002833d9ac2 WebCore`WebCore::RenderBlockFlow::layoutBlockChild(this=0x00000002b05020a0, child=0x00000002b4c00710, marginInfo=0x00007ffee4d39d58, previousFloatLogicalBottom={ 0px (0) }, maxFloatLogicalBottom={ 0px (0) }) at RenderBlockFlow.cpp:730:15
    frame #24: 0x00000002833d83c4 WebCore`WebCore::RenderBlockFlow::layoutBlockChildren(this=0x00000002b05020a0, relayoutChildren=false, maxFloatLogicalBottom={ 0px (0) }) at RenderBlockFlow.cpp:653:9
    frame #25: 0x00000002833d7272 WebCore`WebCore::RenderBlockFlow::layoutBlock(this=0x00000002b05020a0, relayoutChildren=false, pageLogicalHeight={ 0px (0) }) at RenderBlockFlow.cpp:505:13
    frame #26: 0x00000002833bf3ac WebCore`WebCore::RenderBlock::layout(this=0x00000002b05020a0) at RenderBlock.cpp:601:5
    frame #27: 0x00000002833d9ac2 WebCore`WebCore::RenderBlockFlow::layoutBlockChild(this=0x00000002b05021c0, child=0x00000002b05020a0, marginInfo=0x00007ffee4d3a388, previousFloatLogicalBottom={ 0px (0) }, maxFloatLogicalBottom={ 0px (0) }) at RenderBlockFlow.cpp:730:15
    frame #28: 0x00000002833d83c4 WebCore`WebCore::RenderBlockFlow::layoutBlockChildren(this=0x00000002b05021c0, relayoutChildren=false, maxFloatLogicalBottom={ 0px (0) }) at RenderBlockFlow.cpp:653:9
    frame #29: 0x00000002833d7272 WebCore`WebCore::RenderBlockFlow::layoutBlock(this=0x00000002b05021c0, relayoutChildren=false, pageLogicalHeight={ 0px (0) }) at RenderBlockFlow.cpp:505:13
    frame #30: 0x00000002833bf3ac WebCore`WebCore::RenderBlock::layout(this=0x00000002b05021c0) at RenderBlock.cpp:601:5
    frame #31: 0x00000002833d9ac2 WebCore`WebCore::RenderBlockFlow::layoutBlockChild(this=0x00000002a0402a30, child=0x00000002b05021c0, marginInfo=0x00007ffee4d3a9b8, previousFloatLogicalBottom={ 0px (0) }, maxFloatLogicalBottom={ 0px (0) }) at RenderBlockFlow.cpp:730:15
    frame #32: 0x00000002833d83c4 WebCore`WebCore::RenderBlockFlow::layoutBlockChildren(this=0x00000002a0402a30, relayoutChildren=false, maxFloatLogicalBottom={ 0px (0) }) at RenderBlockFlow.cpp:653:9
    frame #33: 0x00000002833d7272 WebCore`WebCore::RenderBlockFlow::layoutBlock(this=0x00000002a0402a30, relayoutChildren=false, pageLogicalHeight={ 0px (0) }) at RenderBlockFlow.cpp:505:13
    frame #34: 0x00000002833bf3ac WebCore`WebCore::RenderBlock::layout(this=0x00000002a0402a30) at RenderBlock.cpp:601:5
    frame #35: 0x0000000283662508 WebCore`WebCore::RenderView::layout(this=0x00000002a0402a30) at RenderView.cpp:241:22
    frame #36: 0x0000000282db2373 WebCore`WebCore::FrameViewLayoutContext::layout(this=0x00000002ba500d70) at FrameViewLayoutContext.cpp:212:21
    frame #37: 0x0000000282db191c WebCore`WebCore::FrameViewLayoutContext::layoutTimerFired(this=0x00000002ba500d70) at FrameViewLayoutContext.cpp:457:5
    frame #38: 0x0000000282dc2081 WebCore`decltype(__f=0x00000002ab971c28, __a0=0x00000002ab971c38)).*fp()) std::__1::__invoke<void (WebCore::FrameViewLayoutContext::*&)(), WebCore::FrameViewLayoutContext*&, void>(void (WebCore::FrameViewLayoutContext::*&)(), WebCore::FrameViewLayoutContext*&) at type_traits:4286:1
    frame #39: 0x0000000282dc2000 WebCore`std::__1::__bind_return<void (WebCore::FrameViewLayoutContext::*)(), std::__1::tuple<WebCore::FrameViewLayoutContext*>, std::__1::tuple<>, __is_valid_bind_return<void (WebCore::FrameViewLayoutContext::*)(), std::__1::tuple<WebCore::FrameViewLayoutContext*>, std::__1::tuple<> >::value>::type std::__1::__apply_functor<void (__f=0x00000002ab971c28, __bound_args=size=1, (null)=__tuple_indices<0> @ 0x00007ffee4d3b158, __args=size=0)(), std::__1::tuple<WebCore::FrameViewLayoutContext*>, 0ul, std::__1::tuple<> >(void (WebCore::FrameViewLayoutContext::*&)(), std::__1::tuple<WebCore::FrameViewLayoutContext*>&, std::__1::__tuple_indices<0ul>, std::__1::tuple<>&&) at functional:2216:12
    frame #40: 0x0000000282dc1fac WebCore`std::__1::__bind_return<void (WebCore::FrameViewLayoutContext::*)(), std::__1::tuple<WebCore::FrameViewLayoutContext*>, std::__1::tuple<>, __is_valid_bind_return<void (WebCore::FrameViewLayoutContext::*)(), std::__1::tuple<WebCore::FrameViewLayoutContext*>, std::__1::tuple<> >::value>::type std::__1::__bind<void (this=0x00000002ab971c28)(), WebCore::FrameViewLayoutContext*>::operator()<>() at functional:2249:20
    frame #41: 0x0000000282dc1f49 WebCore`WTF::Function<void ()>::CallableWrapper<std::__1::__bind<void (this=0x00000002ab971c20)(), WebCore::FrameViewLayoutContext*> >::call() at Function.h:101:43
    frame #42: 0x000000028000f17a WebCore`WTF::Function<void ()>::operator(this=0x00000002ba500da8)() const at Function.h:56:35
    frame #43: 0x00000002800a1739 WebCore`WebCore::Timer::fired(this=0x00000002ba500d78) at Timer.h:127:9
    frame #44: 0x0000000282f6fffa WebCore`WebCore::ThreadTimers::sharedTimerFiredInternal(this=0x000000029d5853c0) at ThreadTimers.cpp:129:23
    frame #45: 0x0000000282f7a971 WebCore`WebCore::ThreadTimers::setSharedTimer(this=0x000000029d5fa3f8)::$_0::operator()() const at ThreadTimers.cpp:69:80
    frame #46: 0x0000000282f7a929 WebCore`WTF::Function<void ()>::CallableWrapper<WebCore::ThreadTimers::setSharedTimer(this=0x000000029d5fa3f0)::$_0>::call() at Function.h:101:43
    frame #47: 0x000000028000f17a WebCore`WTF::Function<void ()>::operator(this=0x0000000285446520)() const at Function.h:56:35
    frame #48: 0x0000000282f4a977 WebCore`WebCore::MainThreadSharedTimer::fired(this=0x0000000285446518) at MainThreadSharedTimer.cpp:83:5
    frame #49: 0x0000000282fc60b6 WebCore`WebCore::timerFired((null)=0x00006000033bc000, (null)=0x0000000000000000) at MainThreadSharedTimerCF.cpp:74:40


This is about clamping to 0,0 when we update the scroll position from layout. This is a dup of bug 184665.

*** This bug has been marked as a duplicate of bug 184665 ***