Randomly able or not able to scroll in extension popup pages. |
||||
Issue descriptionVersion: All OS: Win 10 (should be pretty much ubiquitous though) What steps will reproduce the problem? (1) Have an extension that allows one to scroll its contents. Can use the one attached. (2) Try to scroll using mouse wheel, scrollbar knobs. What is the expected output? Not scrollin' What do you see instead? Scrollin'
,
Oct 21 2016
And the extension. Mind that you have to try a few times before this reproduces.
,
Oct 21 2016
It looks like we need a different "sub element id" for the viewport. I mistakenly labeled more than one thing "scroll" for the document.
,
Oct 21 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/d0124a2b6302fc8a5b3c335d5bbb0407a8a31bb4 commit d0124a2b6302fc8a5b3c335d5bbb0407a8a31bb4 Author: vollick <vollick@chromium.org> Date: Fri Oct 21 23:46:38 2016 Avoid element id collisions with the visual viewport The frame scroll layer and the inner viewport layer had previously been given the same element id. BUG= 658252 Review-Url: https://chromiumcodereview.appspot.com/2443633002 Cr-Commit-Position: refs/heads/master@{#426928} [modify] https://crrev.com/d0124a2b6302fc8a5b3c335d5bbb0407a8a31bb4/third_party/WebKit/Source/core/frame/VisualViewport.cpp [modify] https://crrev.com/d0124a2b6302fc8a5b3c335d5bbb0407a8a31bb4/third_party/WebKit/Source/platform/graphics/CompositorElementId.h [modify] https://crrev.com/d0124a2b6302fc8a5b3c335d5bbb0407a8a31bb4/third_party/WebKit/Source/platform/graphics/GraphicsLayer.cpp [modify] https://crrev.com/d0124a2b6302fc8a5b3c335d5bbb0407a8a31bb4/third_party/WebKit/Source/platform/graphics/GraphicsLayer.h [modify] https://crrev.com/d0124a2b6302fc8a5b3c335d5bbb0407a8a31bb4/third_party/WebKit/Source/web/tests/VisualViewportTest.cpp
,
Nov 1 2016
Issue 660860 has been merged into this issue.
,
Nov 2 2016
Steve, could you please take a look?
,
Nov 2 2016
This issue still in Version 54.0.2840.87 m (64-bit) Please Fix It.
,
Nov 3 2016
Verified r426928 addresses symptoms here and in Google Translate extension as reported by issue 660860 . This fix will roll out in Chrome 56, which is currently in dev and canary channels. |
||||
►
Sign in to add a comment |
||||
Comment 1 by m...@opera.com
, Oct 21 2016gfx::ScrollOffset ScrollTree::ClampScrollOffsetToLimits( Clamps the offset to 0 in the faulty situation, looks like either a wrong scroll node is selected or the computation goes awry. This happens when the layer tree is somehow incorrectly constructed, and it points to a node that is clipped to the viewport for element that gets animated. LayerTreeHostImpl:3947 As it turns out, two layers get the same element id, and depending on the scheduler, the layer tree impl may get either the wrong or the correct layer id for scrolling. Stacks for these two 'conflicting' layers: ============================ > cc.dll!cc::Layer::SetElementId(cc::ElementId id) Line 1844 C++ cc_blink.dll!cc_blink::WebLayerImpl::setElementId(const cc::ElementId & id) Line 433 C++ blink_platform.dll!blink::GraphicsLayer::setElementId(const cc::ElementId & id) Line 1157 C++ blink_core.dll!blink::PaintLayerCompositor::ensureRootLayer() Line 1155 C++ blink_core.dll!blink::PaintLayerCompositor::setCompositingModeEnabled(bool enable) Line 114 C++ blink_core.dll!blink::PaintLayerCompositor::enableCompositingModeIfNeeded() Line 139 C++ blink_core.dll!blink::PaintLayerCompositor::updateIfNeededRecursiveInternal() Line 241 C++ blink_core.dll!blink::PaintLayerCompositor::updateIfNeededRecursive() Line 207 C++ blink_core.dll!blink::FrameView::updateLifecyclePhasesInternal(blink::DocumentLifecycle::LifecycleState targetState) Line 2701 C++ blink_core.dll!blink::FrameView::updateAllLifecyclePhases() Line 2578 C++ blink_core.dll!blink::PageAnimator::updateAllLifecyclePhases(blink::LocalFrame & rootFrame) Line 86 C++ blink_web.dll!blink::PageWidgetDelegate::updateAllLifecyclePhases(blink::Page & page, blink::LocalFrame & root) Line 60 C++ blink_web.dll!blink::WebViewImpl::updateAllLifecyclePhases() Line 2111 C++ blink_web.dll!blink::WebViewFrameWidget::updateAllLifecyclePhases() Line 65 C++ content.dll!content::RenderWidget::UpdateVisualState() Line 846 C++ content.dll!content::RenderWidgetCompositor::UpdateLayerTreeHost() Line 998 C++ cc.dll!cc::LayerTreeHostInProcess::RequestMainFrameUpdate() Line 420 C++ cc.dll!cc::ProxyMain::BeginMainFrame(std::unique_ptr<cc::BeginMainFrameAndCommitState,std::default_delete<cc::BeginMainFrameAndCommitState> > begin_main_frame_state) Line 186 C++ ============================ > cc.dll!cc::Layer::SetElementId(cc::ElementId id) Line 1835 C++ cc_blink.dll!cc_blink::WebLayerImpl::setElementId(const cc::ElementId & id) Line 433 C++ blink_platform.dll!blink::GraphicsLayer::setElementId(const cc::ElementId & id) Line 1157 C++ blink_core.dll!blink::VisualViewport::attachToLayerTree(blink::GraphicsLayer * currentLayerTreeRoot) Line 402 C++ blink_web.dll!blink::WebViewImpl::setRootGraphicsLayer(blink::GraphicsLayer * graphicsLayer) Line 4429 C++ blink_web.dll!blink::WebViewFrameWidget::setRootGraphicsLayer(blink::GraphicsLayer * layer) Line 248 C++ blink_web.dll!blink::ChromeClientImpl::attachRootGraphicsLayer(blink::GraphicsLayer * rootLayer, blink::LocalFrame * localFrame) Line 824 C++ blink_core.dll!blink::PaintLayerCompositor::attachRootLayer(blink::PaintLayerCompositor::RootLayerAttachment attachment) Line 1233 C++ blink_core.dll!blink::PaintLayerCompositor::ensureRootLayer() Line 1170 C++ blink_core.dll!blink::PaintLayerCompositor::setCompositingModeEnabled(bool enable) Line 114 C++ blink_core.dll!blink::PaintLayerCompositor::enableCompositingModeIfNeeded() Line 139 C++ blink_core.dll!blink::PaintLayerCompositor::updateIfNeededRecursiveInternal() Line 241 C++ blink_core.dll!blink::PaintLayerCompositor::updateIfNeededRecursive() Line 207 C++ blink_core.dll!blink::FrameView::updateLifecyclePhasesInternal(blink::DocumentLifecycle::LifecycleState targetState) Line 2701 C++ blink_core.dll!blink::FrameView::updateAllLifecyclePhases() Line 2578 C++ blink_core.dll!blink::PageAnimator::updateAllLifecyclePhases(blink::LocalFrame & rootFrame) Line 86 C++ blink_web.dll!blink::PageWidgetDelegate::updateAllLifecyclePhases(blink::Page & page, blink::LocalFrame & root) Line 60 C++ blink_web.dll!blink::WebViewImpl::updateAllLifecyclePhases() Line 2111 C++ blink_web.dll!blink::WebViewFrameWidget::updateAllLifecyclePhases() Line 65 C++ content.dll!content::RenderWidget::UpdateVisualState() Line 846 C++ content.dll!content::RenderWidgetCompositor::UpdateLayerTreeHost() Line 998 C++ cc.dll!cc::LayerTreeHostInProcess::RequestMainFrameUpdate() Line 420 C++ cc.dll!cc::ProxyMain::BeginMainFrame(std::unique_ptr<cc::BeginMainFrameAndCommitState,std::default_delete<cc::BeginMainFrameAndCommitState> > begin_main_frame_state) Line 186 C++ See also void LayerTreeImpl::AddToElementMap(LayerImpl* layer) { when committing the element ids for these two layers. If you use my extension, the offending layer should get the id 9 and the 'good' one, 4.