Now that we cache clip rects for hit testing, which are relative to the "rootLayer" passed through RenderLayer::hitTest methods, we need to clear those caches when transforms come and go, otherwise we'll hit: ASSERTION FAILED: rootLayer == m_clipRectsCache->m_clipRectsRoot[clipRectsType] /Volumes/DataSSD/Development/apple/webkit/WebKit.git/Source/WebCore/rendering/RenderLayer.cpp(3777) : void WebCore::RenderLayer::updateClipRects(const WebCore::RenderLayer *, WebCore::RenderRegion *, WebCore::ClipRectsType, WebCore::OverlayScrollbarSizeRelevancy) 1 0x10586b6e7 WebCore::RenderLayer::updateClipRects(WebCore::RenderLayer const*, WebCore::RenderRegion*, WebCore::ClipRectsType, WebCore::OverlayScrollbarSizeRelevancy) 2 0x10586c455 WebCore::RenderLayer::parentClipRects(WebCore::RenderLayer const*, WebCore::RenderRegion*, WebCore::ClipRectsType, WebCore::ClipRects&, WebCore::OverlayScrollbarSizeRelevancy) const 3 0x105863b31 WebCore::RenderLayer::backgroundClipRect(WebCore::RenderLayer const*, WebCore::RenderRegion*, WebCore::ClipRectsType, WebCore::OverlayScrollbarSizeRelevancy) const 4 0x105865ef9 WebCore::RenderLayer::calculateRects(WebCore::RenderLayer const*, WebCore::RenderRegion*, WebCore::ClipRectsType, WebCore::FractionalLayoutRect const&, WebCore::FractionalLayoutRect&, WebCore::ClipRect&, WebCore::ClipRect&, WebCore::ClipRect&, WebCore::OverlayScrollbarSizeRelevancy) const 5 0x1058684cf WebCore::RenderLayer::hitTestLayer(WebCore::RenderLayer*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::FractionalLayoutRect const&, WebCore::FractionalLayoutPoint const&, bool, WebCore::HitTestingTransformState const*, double*) 6 0x105869f1e WebCore::RenderLayer::hitTestList(WTF::Vector<WebCore::RenderLayer*, 0ul>*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::FractionalLayoutRect const&, WebCore::FractionalLayoutPoint const&, WebCore::HitTestingTransformState const*, double*, double*, WebCore::HitTestingTransformState const*, bool) 7 0x10586878c WebCore::RenderLayer::hitTestLayer(WebCore::RenderLayer*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::FractionalLayoutRect const&, WebCore::FractionalLayoutPoint const&, bool, WebCore::HitTestingTransformState const*, double*) 8 0x1058680d4 WebCore::RenderLayer::hitTestLayer(WebCore::RenderLayer*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::FractionalLayoutRect const&, WebCore::FractionalLayoutPoint const&, bool, WebCore::HitTestingTransformState const*, double*) 9 0x105869f1e WebCore::RenderLayer::hitTestList(WTF::Vector<WebCore::RenderLayer*, 0ul>*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::FractionalLayoutRect const&, WebCore::FractionalLayoutPoint const&, WebCore::HitTestingTransformState const*, double*, double*, WebCore::HitTestingTransformState const*, bool) 10 0x10586878c WebCore::RenderLayer::hitTestLayer(WebCore::RenderLayer*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::FractionalLayoutRect const&, WebCore::FractionalLayoutPoint const&, bool, WebCore::HitTestingTransformState const*, double*) 11 0x105869f1e WebCore::RenderLayer::hitTestList(WTF::Vector<WebCore::RenderLayer*, 0ul>*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::FractionalLayoutRect const&, WebCore::FractionalLayoutPoint const&, WebCore::HitTestingTransformState const*, double*, double*, WebCore::HitTestingTransformState const*, bool) 12 0x10586878c WebCore::RenderLayer::hitTestLayer(WebCore::RenderLayer*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::FractionalLayoutRect const&, WebCore::FractionalLayoutPoint const&, bool, WebCore::HitTestingTransformState const*, double*) 13 0x105867b68 WebCore::RenderLayer::hitTest(WebCore::HitTestRequest const&, WebCore::HitTestResult&) 14 0x1059e7d60 WebCore::RenderView::hitTest(WebCore::HitTestRequest const&, WebCore::HitTestResult&) 15 0x1048e849a WebCore::Document::prepareMouseEvent(WebCore::HitTestRequest const&, WebCore::FractionalLayoutPoint const&, WebCore::PlatformMouseEvent const&) 16 0x104b170e3 WebCore::EventHandler::prepareMouseEvent(WebCore::HitTestRequest const&, WebCore::PlatformMouseEvent const&) 17 0x104b176de WebCore::EventHandler::handleMouseMoveEvent(WebCore::PlatformMouseEvent const&, WebCore::HitTestResult*, bool) 18 0x104b171c1 WebCore::EventHandler::mouseMoved(WebCore::PlatformMouseEvent const&) 19 0x104b27614 WebCore::EventHandler::mouseMoved(NSEvent*) 20 0x10288a163 -[WebHTMLView(WebPrivate) _updateMouseoverWithEvent:] 21 0x1028978b4 -[WebHTMLView mouseMovedNotification:] 22 0x7fff8e908d0e __-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_1 23 0x7fff98f6f7ba _CFXNotificationPost 24 0x7fff8e8f4fc3 -[NSNotificationCenter postNotificationName:object:userInfo:] 25 0x7fff93ff3fbd forwardMethod 26 0x7fff98fb670d -[NSObject performSelector:withObject:] 27 0x7fff93ff3f6a forwardMethod 28 0x7fff98fb670d -[NSObject performSelector:withObject:] 29 0x7fff93ff3f6a forwardMethod 30 0x7fff98fb670d -[NSObject performSelector:withObject:]
Created attachment 144204 [details] Patch
Comment on attachment 144204 [details] Patch LGTM.
Comment on attachment 144204 [details] Patch Clearing flags on attachment: 144204 Committed r118612: <http://trac.webkit.org/changeset/118612>
All reviewed patches have been landed. Closing bug.