WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-89216-20120618160923.patch (text/plain), 56.37 KB, created by
Sami Kyostila
on 2012-06-18 08:09:24 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Sami Kyostila
Created:
2012-06-18 08:09:24 PDT
Size:
56.37 KB
patch
obsolete
>Subversion Revision: 120590 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index a64620222496f30d125d3efa1d001530e3b86aac..6d8d5adbf9e2cfd69d817213daebe23cd6e38cfa 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,55 @@ >+2012-06-18 Sami Kyostila <skyostil@chromium.org> >+ >+ RenderView layer is marked as fixed position container if page scale != 1 >+ https://bugs.webkit.org/show_bug.cgi?id=89216 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Render layers with CSS transforms should become containers for any fixed >+ positioned descendants. However, because this check is done with >+ RenderLayer::hasTransform(), we also end up marking the RenderLayer for the >+ RenderView as fixed position container if a non-identity page scale factor is >+ used. This is because page scale is applied as a transform for that layer. >+ >+ This breaks fixed position layers, because they become fixed relative to the >+ RenderView layer instead of outer scroll clip layer. >+ >+ The fix is to avoid marking any RenderView layers as fixed position containers. >+ >+ This patch also adds a testing framework for ScrollingCoordinator. Layout >+ tests can call testRunner.scrollingTreeAsText() to retrieve a text >+ representation of the scrolling tree of the current page. This feature is >+ currently only implemented for the Chromium scrolling coordinator back-end. >+ >+ Test: platform/chromium/compositing/fixed-position-container-with-page-scale.html >+ >+ * page/Frame.cpp: >+ (WebCore::Frame::scrollingTreeAsText): >+ (WebCore): >+ * page/Frame.h: >+ (Frame): >+ * page/scrolling/ScrollingCoordinator.cpp: >+ (WebCore): >+ (WebCore::ScrollingCoordinator::scrollingTreeAsText): >+ * page/scrolling/ScrollingCoordinator.h: >+ (ScrollingCoordinator): >+ * page/scrolling/ScrollingCoordinatorNone.cpp: >+ (WebCore): >+ (WebCore::ScrollingCoordinator::scrollingTreeAsText): >+ * page/scrolling/chromium/ScrollingCoordinatorChromium.cpp: >+ (WebCore::writeIndent): >+ (WebCore): >+ (WebCore::booleanAsText): >+ (WebCore::dumpLayerScrollingProperties): >+ (WebCore::dumpLayer): >+ (WebCore::ScrollingCoordinator::scrollingTreeAsText): >+ * platform/graphics/chromium/LayerChromium.h: >+ (WebCore::LayerChromium::shouldScrollOnMainThread): >+ (WebCore::LayerChromium::haveWheelEventHandlers): >+ (WebCore::LayerChromium::nonFastScrollableRegion): >+ * rendering/RenderLayerBacking.cpp: >+ (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry): >+ > 2012-06-18 Alexei Filippov <alexeif@chromium.org> > > Web Inspector: Add heap profiler owned memory to the pie chart >diff --git a/Source/WebKit/chromium/ChangeLog b/Source/WebKit/chromium/ChangeLog >index 00924944418482b578b8638bb38b7ea17b5f21c1..8a296ca26c2a4e7dabc6afbaabd8362012207a80 100644 >--- a/Source/WebKit/chromium/ChangeLog >+++ b/Source/WebKit/chromium/ChangeLog >@@ -1,3 +1,21 @@ >+2012-06-18 Sami Kyostila <skyostil@chromium.org> >+ >+ RenderView layer is marked as fixed position container if page scale != 1 >+ https://bugs.webkit.org/show_bug.cgi?id=89216 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Added scrollingTreeAsText() for testing the scrolling coordinator. It returns >+ a text representation of the current scrolling tree. >+ >+ * public/WebFrame.h: >+ (WebFrame): >+ * src/WebFrameImpl.cpp: >+ (WebKit::WebFrameImpl::scrollingTreeAsText): >+ (WebKit): >+ * src/WebFrameImpl.h: >+ (WebFrameImpl): >+ > 2012-06-18 Hironori Bono <hbono@chromium.org> > > [chromium] Spellchecker should show suggestions only when right-clicking a misspelled word. >diff --git a/Source/WebCore/page/Frame.cpp b/Source/WebCore/page/Frame.cpp >index 91d31e3bfd147a890f76a739000d3b002534f8b4..bca478e8b8f4c5e8bac71c91bea9c3f25079173c 100644 >--- a/Source/WebCore/page/Frame.cpp >+++ b/Source/WebCore/page/Frame.cpp >@@ -78,6 +78,7 @@ > #include "ScriptController.h" > #include "ScriptSourceCode.h" > #include "ScriptValue.h" >+#include "ScrollingCoordinator.h" > #include "Settings.h" > #include "StylePropertySet.h" > #include "TextIterator.h" >@@ -904,6 +905,17 @@ String Frame::layerTreeAsText(bool showDebugInfo) const > #endif > } > >+String Frame::scrollingTreeAsText() const >+{ >+ Page* page = this->page(); >+ if (!page) >+ return String(); >+ ScrollingCoordinator* scrollingCoordinator = page->scrollingCoordinator(); >+ if (!scrollingCoordinator) >+ return String(); >+ return scrollingCoordinator->scrollingTreeAsText(); >+} >+ > void Frame::setPageZoomFactor(float factor) > { > setPageAndTextZoomFactors(factor, m_textZoomFactor); >diff --git a/Source/WebCore/page/Frame.h b/Source/WebCore/page/Frame.h >index 77a73d8072570b0db29d749cc917417e6b691287..e6f111330c903ab6194da15481390b1ec7eca149 100644 >--- a/Source/WebCore/page/Frame.h >+++ b/Source/WebCore/page/Frame.h >@@ -124,6 +124,7 @@ namespace WebCore { > void injectUserScripts(UserScriptInjectionTime); > > String layerTreeAsText(bool showDebugInfo = false) const; >+ String scrollingTreeAsText() const; > > // Unlike most accessors in this class, domWindow() always creates a new DOMWindow if m_domWindow is null. > // Callers that don't need a new DOMWindow to be created should use existingDOMWindow(). >diff --git a/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp b/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp >index 6d1f2a60d057236ad0b64d3170144bf4c49434d6..cb8f33b8aeff0711f0fa9d62d957b71a1a1e419a 100644 >--- a/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp >+++ b/Source/WebCore/page/scrolling/ScrollingCoordinator.cpp >@@ -466,6 +466,12 @@ void ScrollingCoordinator::setLayerIsFixedToContainerLayer(GraphicsLayer*, bool) > { > // FIXME: Implement! > } >+ >+String ScrollingCoordinator::scrollingTreeAsText() const >+{ >+ // FIXME: Implement. >+ return String(); >+} > #endif // !ENABLE(THREADED_SCROLLING) > > } // namespace WebCore >diff --git a/Source/WebCore/page/scrolling/ScrollingCoordinator.h b/Source/WebCore/page/scrolling/ScrollingCoordinator.h >index 35649a91ffb8e4680bdfdf5583b888b7325def01..5a48fbd9ca0fd23157208de1b6218f1a1f7a2f7a 100644 >--- a/Source/WebCore/page/scrolling/ScrollingCoordinator.h >+++ b/Source/WebCore/page/scrolling/ScrollingCoordinator.h >@@ -123,6 +123,10 @@ public: > // Attach/detach layer position to ancestor fixed position container. > void setLayerIsFixedToContainerLayer(GraphicsLayer*, bool); > >+ // Return a text representation of the scrolling tree. Used to verify scrolling coordinator >+ // behavior in layout tests. >+ String scrollingTreeAsText() const; >+ > private: > explicit ScrollingCoordinator(Page*); > >diff --git a/Source/WebCore/page/scrolling/ScrollingCoordinatorNone.cpp b/Source/WebCore/page/scrolling/ScrollingCoordinatorNone.cpp >index f0acfe0cc3b171d3310470465002e0d2a57fd09c..b5e07195ef875996ca1c6aea9176becbfdda2c2f 100644 >--- a/Source/WebCore/page/scrolling/ScrollingCoordinatorNone.cpp >+++ b/Source/WebCore/page/scrolling/ScrollingCoordinatorNone.cpp >@@ -26,6 +26,7 @@ > #include "config.h" > > #include "ScrollingCoordinator.h" >+#include <wtf/text/WTFString.h> > > namespace WebCore { > >@@ -83,6 +84,11 @@ void ScrollingCoordinator::setLayerIsContainerForFixedPositionLayers(GraphicsLay > void ScrollingCoordinator::setLayerIsFixedToContainerLayer(GraphicsLayer*, bool) > { > } >+ >+String ScrollingCoordinator::scrollingTreeAsText() const >+{ >+ return String(); >+} > #endif // !ENABLE(THREADED_SCROLLING) > > } >diff --git a/Source/WebCore/page/scrolling/chromium/ScrollingCoordinatorChromium.cpp b/Source/WebCore/page/scrolling/chromium/ScrollingCoordinatorChromium.cpp >index 0c3b0c3294d828fb3507a365c67b20593931b081..78827d2adef5c73cd506397f8eccdc19738a4c8b 100644 >--- a/Source/WebCore/page/scrolling/chromium/ScrollingCoordinatorChromium.cpp >+++ b/Source/WebCore/page/scrolling/chromium/ScrollingCoordinatorChromium.cpp >@@ -35,6 +35,7 @@ > #include "RenderView.h" > #include "ScrollbarLayerChromium.h" > #include "ScrollbarTheme.h" >+#include "TextStream.h" > #include "cc/CCProxy.h" > > namespace WebCore { >@@ -201,4 +202,86 @@ void ScrollingCoordinator::setLayerIsFixedToContainerLayer(GraphicsLayer* layer, > platformLayer->setFixedToContainerLayer(enable); > } > >+static void writeIndent(TextStream& textStream, int indent) >+{ >+ for (int i = 0; i < indent; ++i) >+ textStream << " "; >+} >+ >+static const char* booleanAsText(bool value) >+{ >+ return value ? "yes" : "no"; >+} >+ >+static void dumpLayerScrollingProperties(TextStream& textStream, const LayerChromium* layer, int indent) >+{ >+ writeIndent(textStream, indent); >+ textStream << "layer ID: " << layer->id() << "\n"; >+ >+ writeIndent(textStream, indent); >+ textStream << "scrollable: " << booleanAsText(layer->scrollable()) << "\n"; >+ >+ if (layer->scrollable()) { >+ writeIndent(textStream, indent); >+ textStream << "scrollPosition: " << layer->scrollPosition().x() << ", " << layer->scrollPosition().y() << "\n"; >+ >+ writeIndent(textStream, indent); >+ textStream << "maxScrollPosition: " << layer->maxScrollPosition().width() << ", " << layer->maxScrollPosition().height() << "\n"; >+ } >+ >+ writeIndent(textStream, indent); >+ textStream << "shouldScrollOnMainThread: " << booleanAsText(layer->shouldScrollOnMainThread()) << "\n"; >+ >+ writeIndent(textStream, indent); >+ textStream << "haveWheelEventHandlers: " << booleanAsText(layer->haveWheelEventHandlers()) << "\n"; >+ >+ if (!layer->nonFastScrollableRegion().isEmpty()) { >+ writeIndent(textStream, indent); >+ textStream << "nonFastScrollableRegion: "; >+ Vector<IntRect> rects = layer->nonFastScrollableRegion().rects(); >+ for (size_t i = 0; i < rects.size(); ++i) >+ textStream << "[" << rects[i].x() << ", " << rects[i].y() << ", " << rects[i].width() << ", " << rects[i].height() << "] "; >+ textStream << "\n"; >+ } >+ >+ writeIndent(textStream, indent); >+ textStream << "isContainerForFixedPositionLayers: " << booleanAsText(layer->isContainerForFixedPositionLayers()) << "\n"; >+ >+ writeIndent(textStream, indent); >+ textStream << "fixedToContainerLayer: " << booleanAsText(layer->fixedToContainerLayer()) << "\n"; >+} >+ >+static void dumpLayer(TextStream& textStream, const LayerChromium* layer, int indent) >+{ >+ writeIndent(textStream, indent); >+ textStream << "LayerChromium\n"; >+ dumpLayerScrollingProperties(textStream, layer, indent + 2); >+ >+ if (layer->replicaLayer()) { >+ writeIndent(textStream, indent + 2); >+ textStream << "Replica:\n"; >+ dumpLayer(textStream, layer->replicaLayer(), indent + 3); >+ } >+ >+ if (layer->maskLayer()) { >+ writeIndent(textStream, indent + 2); >+ textStream << "Mask:\n"; >+ dumpLayer(textStream, layer->maskLayer(), indent + 3); >+ } >+ >+ for (size_t i = 0; i < layer->children().size(); ++i) >+ dumpLayer(textStream, layer->children()[i].get(), indent + 1); >+} >+ >+String ScrollingCoordinator::scrollingTreeAsText() const >+{ >+ LayerChromium* scrollLayer = m_private->scrollLayer(); >+ if (!scrollLayer) >+ return String(); >+ >+ TextStream textStream; >+ dumpLayer(textStream, scrollLayer->rootLayer(), 0); >+ return textStream.release(); >+} >+ > } >diff --git a/Source/WebCore/platform/graphics/chromium/LayerChromium.h b/Source/WebCore/platform/graphics/chromium/LayerChromium.h >index 4a5f1ae73a03b29ae391ce4cc02b630b2a992635..f0e2daf60d3cdf9981f8845a32e28403c7b302ea 100644 >--- a/Source/WebCore/platform/graphics/chromium/LayerChromium.h >+++ b/Source/WebCore/platform/graphics/chromium/LayerChromium.h >@@ -166,9 +166,11 @@ public: > void setScrollable(bool); > bool scrollable() const { return m_scrollable; } > void setShouldScrollOnMainThread(bool); >+ bool shouldScrollOnMainThread() const { return m_shouldScrollOnMainThread; } > void setHaveWheelEventHandlers(bool); >- const Region& nonFastScrollableRegion() { return m_nonFastScrollableRegion; } >+ bool haveWheelEventHandlers() const { return m_haveWheelEventHandlers; } > void setNonFastScrollableRegion(const Region&); >+ const Region& nonFastScrollableRegion() const { return m_nonFastScrollableRegion; } > void setNonFastScrollableRegionChanged() { m_nonFastScrollableRegionChanged = true; } > void setLayerScrollDelegate(LayerChromiumScrollDelegate* layerScrollDelegate) { m_layerScrollDelegate = layerScrollDelegate; } > void scrollBy(const IntSize&); >diff --git a/Source/WebCore/rendering/RenderLayerBacking.cpp b/Source/WebCore/rendering/RenderLayerBacking.cpp >index ecd4d72ad9ccfc5312a83ca20c00fadee992798d..323973129475c71e0839125e6c9cdc12f6cffb36 100644 >--- a/Source/WebCore/rendering/RenderLayerBacking.cpp >+++ b/Source/WebCore/rendering/RenderLayerBacking.cpp >@@ -449,7 +449,10 @@ void RenderLayerBacking::updateGraphicsLayerGeometry() > scrollingCoordinator->setLayerIsFixedToContainerLayer(m_ancestorClippingLayer.get(), false); > scrollingCoordinator->setLayerIsFixedToContainerLayer(m_graphicsLayer.get(), false); > } >- bool isContainer = m_owningLayer->hasTransform(); >+ // Page scale is applied as a transform on the render view layer. Because the scroll >+ // layer is further up in the hierarchy, we need to avoid marking the render view >+ // layer as a container. >+ bool isContainer = m_owningLayer->hasTransform() && !renderer()->isRenderView(); > scrollingCoordinator->setLayerIsContainerForFixedPositionLayers(childForSuperlayers(), isContainer); > } > } >diff --git a/Source/WebKit/chromium/public/WebFrame.h b/Source/WebKit/chromium/public/WebFrame.h >index 5cd7f5f1ede02f9851d458302caeb1592c32c07b..627621d1b3b2db565441e1eaf4e43c0938a3b389 100644 >--- a/Source/WebKit/chromium/public/WebFrame.h >+++ b/Source/WebKit/chromium/public/WebFrame.h >@@ -645,6 +645,10 @@ public: > // text form. This is used only by layout tests. > virtual WebString layerTreeAsText(bool showDebugInfo = false) const = 0; > >+ // Dumps the scrolling tree, used by the scrolling coordinator, in >+ // text form. This is used only by layout tests. >+ virtual WebString scrollingTreeAsText() const = 0; >+ > protected: > ~WebFrame() { } > }; >diff --git a/Source/WebKit/chromium/src/WebFrameImpl.cpp b/Source/WebKit/chromium/src/WebFrameImpl.cpp >index e2afea6a5d22d31e69a3edeb3efd3af2f4749319..e6efea3e6f3d1da3df4dc9fa3735737c2dd7321d 100644 >--- a/Source/WebKit/chromium/src/WebFrameImpl.cpp >+++ b/Source/WebKit/chromium/src/WebFrameImpl.cpp >@@ -2032,6 +2032,13 @@ WebString WebFrameImpl::layerTreeAsText(bool showDebugInfo) const > return WebString(m_frame->layerTreeAsText(showDebugInfo)); > } > >+WebString WebFrameImpl::scrollingTreeAsText() const >+{ >+ if (!m_frame) >+ return WebString(); >+ return WebString(m_frame->scrollingTreeAsText()); >+} >+ > // WebFrameImpl public --------------------------------------------------------- > > PassRefPtr<WebFrameImpl> WebFrameImpl::create(WebFrameClient* client) >diff --git a/Source/WebKit/chromium/src/WebFrameImpl.h b/Source/WebKit/chromium/src/WebFrameImpl.h >index 39937471a1182ec1c0b1532eb8e25003039e2655..4aa295c4c3347c50f51dd5388e0ab0a9a8985ca6 100644 >--- a/Source/WebKit/chromium/src/WebFrameImpl.h >+++ b/Source/WebKit/chromium/src/WebFrameImpl.h >@@ -231,6 +231,7 @@ public: > > virtual bool selectionStartHasSpellingMarkerFor(int from, int length) const; > virtual WebString layerTreeAsText(bool showDebugInfo = false) const; >+ virtual WebString scrollingTreeAsText() const OVERRIDE; > > static PassRefPtr<WebFrameImpl> create(WebFrameClient* client); > virtual ~WebFrameImpl(); >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index e1e877cb140af1da2b98e75053abd1388fc3a273..a8af268e266e228130a6dc9c9a54972288078572 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,19 @@ >+2012-06-18 Sami Kyostila <skyostil@chromium.org> >+ >+ RenderView layer is marked as fixed position container if page scale != 1 >+ https://bugs.webkit.org/show_bug.cgi?id=89216 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Added scrollingTreeAsText() for testing the scrolling coordinator. It returns >+ a text representation of the current scrolling tree. >+ >+ * DumpRenderTree/chromium/LayoutTestController.cpp: >+ (LayoutTestController::LayoutTestController): >+ (LayoutTestController::scrollingTreeAsText): >+ * DumpRenderTree/chromium/LayoutTestController.h: >+ (LayoutTestController): >+ > 2012-06-18 Mario Sanchez Prada <msanchez@igalia.com> > > [GTK] Get rid of DumpRenderTreeSupportGtk::{in|de}crementAccessibilityValue >diff --git a/Tools/DumpRenderTree/chromium/LayoutTestController.cpp b/Tools/DumpRenderTree/chromium/LayoutTestController.cpp >index 1f64d65afddbe83b5d1ffb5ef8cc11975c181ffb..02f5a9838657d805e2b60e3048aa990764ba3541 100644 >--- a/Tools/DumpRenderTree/chromium/LayoutTestController.cpp >+++ b/Tools/DumpRenderTree/chromium/LayoutTestController.cpp >@@ -186,6 +186,7 @@ LayoutTestController::LayoutTestController(TestShell* shell) > bindMethod("removeOriginAccessWhitelistEntry", &LayoutTestController::removeOriginAccessWhitelistEntry); > bindMethod("repaintSweepHorizontally", &LayoutTestController::repaintSweepHorizontally); > bindMethod("resetPageVisibility", &LayoutTestController::resetPageVisibility); >+ bindMethod("scrollingTreeAsText", &LayoutTestController::scrollingTreeAsText); > bindMethod("setAcceptsEditing", &LayoutTestController::setAcceptsEditing); > bindMethod("setAllowDisplayOfInsecureContent", &LayoutTestController::setAllowDisplayOfInsecureContent); > bindMethod("setAllowFileAccessFromFileURLs", &LayoutTestController::setAllowFileAccessFromFileURLs); >@@ -1993,6 +1994,11 @@ void LayoutTestController::layerTreeAsText(const CppArgumentList& args, CppVaria > result->set(m_shell->webView()->mainFrame()->layerTreeAsText(m_showDebugLayerTree).utf8()); > } > >+void LayoutTestController::scrollingTreeAsText(const CppArgumentList& args, CppVariant* result) >+{ >+ result->set(m_shell->webView()->mainFrame()->scrollingTreeAsText().utf8()); >+} >+ > void LayoutTestController::loseCompositorContext(const CppArgumentList& args, CppVariant*) > { > int numTimes; >diff --git a/Tools/DumpRenderTree/chromium/LayoutTestController.h b/Tools/DumpRenderTree/chromium/LayoutTestController.h >index 5a872938887a2b211610b8c6c651be1b6ea9a55b..87e0843659999aa9f51125ddaae89ae4cee17561 100644 >--- a/Tools/DumpRenderTree/chromium/LayoutTestController.h >+++ b/Tools/DumpRenderTree/chromium/LayoutTestController.h >@@ -379,6 +379,7 @@ public: > void startSpeechInput(const CppArgumentList&, CppVariant*); > > void layerTreeAsText(const CppArgumentList& args, CppVariant* result); >+ void scrollingTreeAsText(const CppArgumentList& args, CppVariant* result); > > void loseCompositorContext(const CppArgumentList& args, CppVariant* result); > >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 2b8944887bce9ef0bbfc271dccfa4961d37cb752..a3e59c038e89dc3cbcd1ed38a14b286f18196b6c 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,17 @@ >+2012-06-18 Sami Kyostila <skyostil@chromium.org> >+ >+ RenderView layer is marked as fixed position container if page scale != 1 >+ https://bugs.webkit.org/show_bug.cgi?id=89216 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Added test to verify that the render view layer doesn't become a fixed >+ position container when the page is scaled. >+ >+ * platform/chromium/compositing/fixed-position-container-with-page-scale-expected.png: Added. >+ * platform/chromium/compositing/fixed-position-container-with-page-scale-expected.txt: Added. >+ * platform/chromium/compositing/fixed-position-container-with-page-scale.html: Added. >+ > 2012-06-18 János Badics <jbadics@inf.u-szeged.hu> > > [Qt] Gardening after r120311. It made inspector/extensions/extensions-panel.html flakey. >diff --git a/LayoutTests/platform/chromium/compositing/fixed-position-container-with-page-scale-expected.png b/LayoutTests/platform/chromium/compositing/fixed-position-container-with-page-scale-expected.png >new file mode 100644 >index 0000000000000000000000000000000000000000..96a24550b12f264dec694e799d61ad6ee010be70 >GIT binary patch >literal 33389 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 >KIMry~m;VVE`H8Xs > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/platform/chromium/compositing/fixed-position-container-with-page-scale-expected.txt b/LayoutTests/platform/chromium/compositing/fixed-position-container-with-page-scale-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..cf9ae1acebcc237f20e96bffee4305fb0d447d55 >--- /dev/null >+++ b/LayoutTests/platform/chromium/compositing/fixed-position-container-with-page-scale-expected.txt >@@ -0,0 +1,52 @@ >+LayerChromium >+ layer ID: 2 >+ scrollable: no >+ shouldScrollOnMainThread: no >+ haveWheelEventHandlers: no >+ isContainerForFixedPositionLayers: no >+ fixedToContainerLayer: no >+ LayerChromium >+ layer ID: 3 >+ scrollable: no >+ shouldScrollOnMainThread: no >+ haveWheelEventHandlers: no >+ isContainerForFixedPositionLayers: no >+ fixedToContainerLayer: no >+ LayerChromium >+ layer ID: 4 >+ scrollable: yes >+ scrollPosition: 0, 0 >+ maxScrollPosition: 0, 0 >+ shouldScrollOnMainThread: no >+ haveWheelEventHandlers: no >+ isContainerForFixedPositionLayers: yes >+ fixedToContainerLayer: no >+ LayerChromium >+ layer ID: 5 >+ scrollable: no >+ shouldScrollOnMainThread: no >+ haveWheelEventHandlers: no >+ isContainerForFixedPositionLayers: no >+ fixedToContainerLayer: no >+ LayerChromium >+ layer ID: 1 >+ scrollable: no >+ shouldScrollOnMainThread: no >+ haveWheelEventHandlers: no >+ isContainerForFixedPositionLayers: no >+ fixedToContainerLayer: no >+ LayerChromium >+ layer ID: 7 >+ scrollable: no >+ shouldScrollOnMainThread: no >+ haveWheelEventHandlers: no >+ isContainerForFixedPositionLayers: no >+ fixedToContainerLayer: no >+ LayerChromium >+ layer ID: 6 >+ scrollable: no >+ shouldScrollOnMainThread: no >+ haveWheelEventHandlers: no >+ isContainerForFixedPositionLayers: yes >+ fixedToContainerLayer: no >+ >diff --git a/LayoutTests/platform/chromium/compositing/fixed-position-container-with-page-scale.html b/LayoutTests/platform/chromium/compositing/fixed-position-container-with-page-scale.html >new file mode 100644 >index 0000000000000000000000000000000000000000..f476f67c47fe90098f2145b85069db6f8d435860 >--- /dev/null >+++ b/LayoutTests/platform/chromium/compositing/fixed-position-container-with-page-scale.html >@@ -0,0 +1,35 @@ >+<!DOCTYPE html> >+<html> >+ >+<!-- >+Setting a non-identity page scale should not mark the render view layer as a >+container for fixed position layers. >+ >+https://bugs.webkit.org/show_bug.cgi?id=89216 >+--> >+<head> >+ <style> >+ .triggerComposition { >+ -webkit-transform: translateZ(0); >+ } >+ </style> >+ >+ <script> >+ window.addEventListener('load', function() { >+ if (window.internals) >+ window.internals.settings.setPageScaleFactor(0.5, 0, 0); >+ if (window.testRunner) { >+ testRunner.dumpAsText(true); >+ testRunner.display(); >+ document.getElementById("scrollingTree").innerText = window.testRunner.scrollingTreeAsText(); >+ } >+ }); >+ </script> >+</head> >+ >+<body> >+ <div class="triggerComposition"></div> >+ <pre id="scrollingTree"></pre> >+</body> >+ >+</html>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 89216
:
147825
|
148091
|
148101
|
148129
|
148530
|
148580
|
151727