haikuwebkit/LayoutTests/scrollbars/scrollbar-owning-renderer-c...

37 lines
1.2 KiB
HTML
Raw Permalink Normal View History

Crash due to owning renderer not removed from custom scrollbar. https://bugs.webkit.org/show_bug.cgi?id=80610 Reviewed by Eric Seidel. Source/WebCore: Test: scrollbars/scrollbar-owning-renderer-crash.html Changed RenderScrollbar to keep pointer to owning node, instead of the renderer. Renderer can get destroyed without informing the scrollbar, causing crashes later. Remove code from r94107 since it is not needed anymore and saves times when RenderBox is getting destroyed. * page/FrameView.cpp: (WebCore::FrameView::createScrollbar): pass renderer's node. * page/FrameView.h: * rendering/RenderBox.cpp: (WebCore::RenderBox::willBeDestroyed): no longer need this. came originally from r94107. * rendering/RenderLayer.cpp: (WebCore::RenderLayer::createScrollbar): pass renderer's node. (WebCore::RenderLayer::destroyScrollbar): no longer need to clear owning renderer. * rendering/RenderListBox.cpp: (WebCore::RenderListBox::createScrollbar): pass renderer's node. * rendering/RenderMenuList.cpp: (WebCore::RenderMenuList::createScrollbar): pass renderer's node. * rendering/RenderScrollbar.cpp: (WebCore::RenderScrollbar::createCustomScrollbar): Store owner node instead of renderer. (WebCore::RenderScrollbar::RenderScrollbar): Store owner node instead of renderer. (WebCore::RenderScrollbar::owningRenderer): calculate owning renderer from owner node. * rendering/RenderScrollbar.h: (RenderScrollbar): * rendering/RenderTextControlSingleLine.cpp: (WebCore::RenderTextControlSingleLine::createScrollbar): pass renderer's node. LayoutTests: * scrollbars/scrollbar-owning-renderer-crash-expected.txt: Added. * scrollbars/scrollbar-owning-renderer-crash.html: Added. Canonical link: https://commits.webkit.org/103525@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@116476 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-05-09 01:45:23 +00:00
<html id="html1">
<head id="head1">
<style>
::-webkit-scrollbar { height: 50000; }
</style>
<script>
Use testRunner instead of layoutTestController in networkinformation, perf, plugins, pointer-lock, printing, scrollbars, and security tests https://bugs.webkit.org/show_bug.cgi?id=89181 Reviewed by Kent Tamura. * perf/clone-with-focus.html: * perf/nested-combined-selectors.html: * perf/table-rows-length-caching.html: * platform/chromium/plugins/call-as-function.html: * platform/chromium/plugins/get-url-with-blank-target2.html: * platform/chromium/plugins/get-url-with-iframe-target-no-crash.html: * platform/chromium/printing/custom-page-size-style-expected.txt: * platform/chromium/printing/custom-page-size-style.html: * platform/gtk/plugins/invalidate-rect-with-null-npp-argument.html: * platform/gtk/scrollbars/overflow-scrollbar-horizontal-wheel-scroll.html: * platform/mac-wk2/plugins/contents-scale-factor.html: * platform/mac-wk2/plugins/mouse-events-scaled.html: * platform/mac/plugins/bindings-array-apply-crash.html: * platform/mac/plugins/bindings-objc-long-method-name.html: * platform/mac/plugins/bindings-objc-method-name-conversion.html: * platform/mac/plugins/bindings-test-objc.html: * platform/mac/plugins/call-as-function-test.html: * platform/mac/plugins/convert-point.html: * platform/mac/plugins/disable-plugins.html: * platform/mac/plugins/jsobjc-dom-wrappers.html: * platform/mac/plugins/jsobjc-simple.html: * platform/mac/plugins/pluginDocumentView-deallocated-dataSource.html-disabled: * platform/mac/plugins/root-object-premature-delete-crash.html: * platform/mac/plugins/supports-carbon-event-model.html: * platform/mac/plugins/testplugin-onnew-onpaint.html: * platform/mac/plugins/throw-on-dealloc.html: * platform/mac/plugins/undefined-property-crash.html: * platform/mac/plugins/update-widget-from-style-recalc.html: * platform/mac/plugins/webScriptObject-exception-deadlock.html: * platform/mac/scrollbars/key-window-not-first-responder.html: * platform/qt/plugins/application-plugin-plugins-disabled.html: * platform/win/plugins/call-javascript-that-destroys-plugin.html: * platform/win/plugins/get-value-netscape-window.html: * platform/win/plugins/iframe-inside-overflow.html: * platform/win/plugins/npn-invalidate-rect-invalidates-window.html: * platform/win/plugins/visibility-hidden.html: * platform/win/plugins/window-geometry-initialized-before-set-window.html: * platform/win/plugins/window-region-is-set-to-clip-rect.html: * platform/win/plugins/windowless-paint-rect-coordinates.html: * plugins/: * pointer-lock/lock-fail-responses-expected.txt: * pointer-lock/lock-fail-responses.html: * pointer-lock/pointer-lock-api.html: * pointer-lock/pointerlockchange-pointerlockerror-events-expected.txt: * pointer-lock/pointerlockchange-pointerlockerror-events.html: * pointer-lock/pointerlocklost-event-expected.txt: * pointer-lock/pointerlocklost-event.html: * printing/compositing-layer-printing.html: * printing/css2.1/README.txt: * printing/css2.1/page-break-after-000.html: * printing/css2.1/page-break-after-001.html: * printing/css2.1/page-break-after-002.html: * printing/css2.1/page-break-after-003.html: * printing/css2.1/page-break-after-004.html: * printing/css2.1/page-break-before-000.html: * printing/css2.1/page-break-before-001.html: * printing/css2.1/page-break-before-002.html: * printing/css2.1/page-break-inside-000.html: * printing/iframe-print.html: * printing/media-queries-print.html: * printing/numberOfPages-expected.txt: * printing/page-count-layout-overflow.html: * printing/page-count-relayout-shrink.html: * printing/page-count-with-one-word.html: * printing/page-format-data-display-none.html: * printing/page-format-data-expected.txt: * printing/page-format-data.html: * printing/page-rule-css-text.html: * printing/page-rule-in-media-query.html: * printing/page-rule-selection-expected.txt: * printing/page-rule-selection.html: * printing/pageNumerForElementById-expected.txt: * printing/print-close-crash.html: * printing/pseudo-class-outside-page.html: * printing/resources/paged-media-test-utils.js: (pageNumberForElementShouldBe): (numberOfPagesShouldBe): (runPrintingTest): * printing/return-from-printing-mode.html: * printing/script-tests/numberOfPages.js: * printing/script-tests/pageNumerForElementById.js: * printing/setPrinting.html: * printing/simultaneous-position-float-change.html: * printing/single-line-must-not-be-split-into-two-pages.html: * printing/width-overflow.html: * printing/zoomed-document.html: * scrollbars/hidden-iframe-scrollbar-crash.html: * scrollbars/hidden-iframe-scrollbar-crash2.html: * scrollbars/hidden-scrollbar-prevents-layout.html: * scrollbars/overflow-custom-scrollbar-crash.html: * scrollbars/resources/hidden-iframe-scrollbar-crash2.html: * scrollbars/scroll-rtl-or-bt-layer.html: * scrollbars/scrollable-iframe-remove-crash.html: * scrollbars/scrollbar-click-does-not-blur-content.html: * scrollbars/scrollbar-crash-on-refresh.html: * scrollbars/scrollbar-drag-thumb-with-large-content.html: * scrollbars/scrollbar-gradient-crash.html: * scrollbars/scrollbar-iframe-click-does-not-blur-content.html: * scrollbars/scrollbar-initial-position.html: * scrollbars/scrollbar-middleclick-nopaste.html: * scrollbars/scrollbar-miss-mousemove-disabled.html: * scrollbars/scrollbar-miss-mousemove.html: * scrollbars/scrollbar-owning-renderer-crash.html: * scrollbars/scrollbar-part-created-with-no-parent-crash.html: * scrollbars/scrollbar-percent-padding-crash.html: * scrollbars/scrollbar-scrollbarparts-repaint-crash.html: * scrollbars/scrollevent-iframe-no-scrolling-wheel.html: * scrollbars/scrollevent-iframe-no-scrolling.html: * security/autocomplete-cleared-on-back.html: * security/block-test-no-port.html: * security/block-test.html: * security/set-form-autocomplete-attribute.html: Canonical link: https://commits.webkit.org/107031@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@120417 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-06-15 07:38:37 +00:00
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
Crash due to owning renderer not removed from custom scrollbar. https://bugs.webkit.org/show_bug.cgi?id=80610 Reviewed by Eric Seidel. Source/WebCore: Test: scrollbars/scrollbar-owning-renderer-crash.html Changed RenderScrollbar to keep pointer to owning node, instead of the renderer. Renderer can get destroyed without informing the scrollbar, causing crashes later. Remove code from r94107 since it is not needed anymore and saves times when RenderBox is getting destroyed. * page/FrameView.cpp: (WebCore::FrameView::createScrollbar): pass renderer's node. * page/FrameView.h: * rendering/RenderBox.cpp: (WebCore::RenderBox::willBeDestroyed): no longer need this. came originally from r94107. * rendering/RenderLayer.cpp: (WebCore::RenderLayer::createScrollbar): pass renderer's node. (WebCore::RenderLayer::destroyScrollbar): no longer need to clear owning renderer. * rendering/RenderListBox.cpp: (WebCore::RenderListBox::createScrollbar): pass renderer's node. * rendering/RenderMenuList.cpp: (WebCore::RenderMenuList::createScrollbar): pass renderer's node. * rendering/RenderScrollbar.cpp: (WebCore::RenderScrollbar::createCustomScrollbar): Store owner node instead of renderer. (WebCore::RenderScrollbar::RenderScrollbar): Store owner node instead of renderer. (WebCore::RenderScrollbar::owningRenderer): calculate owning renderer from owner node. * rendering/RenderScrollbar.h: (RenderScrollbar): * rendering/RenderTextControlSingleLine.cpp: (WebCore::RenderTextControlSingleLine::createScrollbar): pass renderer's node. LayoutTests: * scrollbars/scrollbar-owning-renderer-crash-expected.txt: Added. * scrollbars/scrollbar-owning-renderer-crash.html: Added. Canonical link: https://commits.webkit.org/103525@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@116476 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-05-09 01:45:23 +00:00
}
function runTest() {
child = document.getElementById('head1');
child.parentNode.removeChild(child);
document.body.offsetTop;
child = document.getElementById('html1');
child.parentNode.removeChild(child);
document.open();
document.write("WebKit bug 80610 - Crash due to owning renderer not removed from custom scrollbar. <br />");
document.write("PASS. WebKit didn't crash.");
document.close();
}
function finish() {
if (window.eventSender)
eventSender.mouseMoveTo(100, 100);
Use testRunner instead of layoutTestController in networkinformation, perf, plugins, pointer-lock, printing, scrollbars, and security tests https://bugs.webkit.org/show_bug.cgi?id=89181 Reviewed by Kent Tamura. * perf/clone-with-focus.html: * perf/nested-combined-selectors.html: * perf/table-rows-length-caching.html: * platform/chromium/plugins/call-as-function.html: * platform/chromium/plugins/get-url-with-blank-target2.html: * platform/chromium/plugins/get-url-with-iframe-target-no-crash.html: * platform/chromium/printing/custom-page-size-style-expected.txt: * platform/chromium/printing/custom-page-size-style.html: * platform/gtk/plugins/invalidate-rect-with-null-npp-argument.html: * platform/gtk/scrollbars/overflow-scrollbar-horizontal-wheel-scroll.html: * platform/mac-wk2/plugins/contents-scale-factor.html: * platform/mac-wk2/plugins/mouse-events-scaled.html: * platform/mac/plugins/bindings-array-apply-crash.html: * platform/mac/plugins/bindings-objc-long-method-name.html: * platform/mac/plugins/bindings-objc-method-name-conversion.html: * platform/mac/plugins/bindings-test-objc.html: * platform/mac/plugins/call-as-function-test.html: * platform/mac/plugins/convert-point.html: * platform/mac/plugins/disable-plugins.html: * platform/mac/plugins/jsobjc-dom-wrappers.html: * platform/mac/plugins/jsobjc-simple.html: * platform/mac/plugins/pluginDocumentView-deallocated-dataSource.html-disabled: * platform/mac/plugins/root-object-premature-delete-crash.html: * platform/mac/plugins/supports-carbon-event-model.html: * platform/mac/plugins/testplugin-onnew-onpaint.html: * platform/mac/plugins/throw-on-dealloc.html: * platform/mac/plugins/undefined-property-crash.html: * platform/mac/plugins/update-widget-from-style-recalc.html: * platform/mac/plugins/webScriptObject-exception-deadlock.html: * platform/mac/scrollbars/key-window-not-first-responder.html: * platform/qt/plugins/application-plugin-plugins-disabled.html: * platform/win/plugins/call-javascript-that-destroys-plugin.html: * platform/win/plugins/get-value-netscape-window.html: * platform/win/plugins/iframe-inside-overflow.html: * platform/win/plugins/npn-invalidate-rect-invalidates-window.html: * platform/win/plugins/visibility-hidden.html: * platform/win/plugins/window-geometry-initialized-before-set-window.html: * platform/win/plugins/window-region-is-set-to-clip-rect.html: * platform/win/plugins/windowless-paint-rect-coordinates.html: * plugins/: * pointer-lock/lock-fail-responses-expected.txt: * pointer-lock/lock-fail-responses.html: * pointer-lock/pointer-lock-api.html: * pointer-lock/pointerlockchange-pointerlockerror-events-expected.txt: * pointer-lock/pointerlockchange-pointerlockerror-events.html: * pointer-lock/pointerlocklost-event-expected.txt: * pointer-lock/pointerlocklost-event.html: * printing/compositing-layer-printing.html: * printing/css2.1/README.txt: * printing/css2.1/page-break-after-000.html: * printing/css2.1/page-break-after-001.html: * printing/css2.1/page-break-after-002.html: * printing/css2.1/page-break-after-003.html: * printing/css2.1/page-break-after-004.html: * printing/css2.1/page-break-before-000.html: * printing/css2.1/page-break-before-001.html: * printing/css2.1/page-break-before-002.html: * printing/css2.1/page-break-inside-000.html: * printing/iframe-print.html: * printing/media-queries-print.html: * printing/numberOfPages-expected.txt: * printing/page-count-layout-overflow.html: * printing/page-count-relayout-shrink.html: * printing/page-count-with-one-word.html: * printing/page-format-data-display-none.html: * printing/page-format-data-expected.txt: * printing/page-format-data.html: * printing/page-rule-css-text.html: * printing/page-rule-in-media-query.html: * printing/page-rule-selection-expected.txt: * printing/page-rule-selection.html: * printing/pageNumerForElementById-expected.txt: * printing/print-close-crash.html: * printing/pseudo-class-outside-page.html: * printing/resources/paged-media-test-utils.js: (pageNumberForElementShouldBe): (numberOfPagesShouldBe): (runPrintingTest): * printing/return-from-printing-mode.html: * printing/script-tests/numberOfPages.js: * printing/script-tests/pageNumerForElementById.js: * printing/setPrinting.html: * printing/simultaneous-position-float-change.html: * printing/single-line-must-not-be-split-into-two-pages.html: * printing/width-overflow.html: * printing/zoomed-document.html: * scrollbars/hidden-iframe-scrollbar-crash.html: * scrollbars/hidden-iframe-scrollbar-crash2.html: * scrollbars/hidden-scrollbar-prevents-layout.html: * scrollbars/overflow-custom-scrollbar-crash.html: * scrollbars/resources/hidden-iframe-scrollbar-crash2.html: * scrollbars/scroll-rtl-or-bt-layer.html: * scrollbars/scrollable-iframe-remove-crash.html: * scrollbars/scrollbar-click-does-not-blur-content.html: * scrollbars/scrollbar-crash-on-refresh.html: * scrollbars/scrollbar-drag-thumb-with-large-content.html: * scrollbars/scrollbar-gradient-crash.html: * scrollbars/scrollbar-iframe-click-does-not-blur-content.html: * scrollbars/scrollbar-initial-position.html: * scrollbars/scrollbar-middleclick-nopaste.html: * scrollbars/scrollbar-miss-mousemove-disabled.html: * scrollbars/scrollbar-miss-mousemove.html: * scrollbars/scrollbar-owning-renderer-crash.html: * scrollbars/scrollbar-part-created-with-no-parent-crash.html: * scrollbars/scrollbar-percent-padding-crash.html: * scrollbars/scrollbar-scrollbarparts-repaint-crash.html: * scrollbars/scrollevent-iframe-no-scrolling-wheel.html: * scrollbars/scrollevent-iframe-no-scrolling.html: * security/autocomplete-cleared-on-back.html: * security/block-test-no-port.html: * security/block-test.html: * security/set-form-autocomplete-attribute.html: Canonical link: https://commits.webkit.org/107031@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@120417 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-06-15 07:38:37 +00:00
if (window.testRunner)
testRunner.notifyDone();
Crash due to owning renderer not removed from custom scrollbar. https://bugs.webkit.org/show_bug.cgi?id=80610 Reviewed by Eric Seidel. Source/WebCore: Test: scrollbars/scrollbar-owning-renderer-crash.html Changed RenderScrollbar to keep pointer to owning node, instead of the renderer. Renderer can get destroyed without informing the scrollbar, causing crashes later. Remove code from r94107 since it is not needed anymore and saves times when RenderBox is getting destroyed. * page/FrameView.cpp: (WebCore::FrameView::createScrollbar): pass renderer's node. * page/FrameView.h: * rendering/RenderBox.cpp: (WebCore::RenderBox::willBeDestroyed): no longer need this. came originally from r94107. * rendering/RenderLayer.cpp: (WebCore::RenderLayer::createScrollbar): pass renderer's node. (WebCore::RenderLayer::destroyScrollbar): no longer need to clear owning renderer. * rendering/RenderListBox.cpp: (WebCore::RenderListBox::createScrollbar): pass renderer's node. * rendering/RenderMenuList.cpp: (WebCore::RenderMenuList::createScrollbar): pass renderer's node. * rendering/RenderScrollbar.cpp: (WebCore::RenderScrollbar::createCustomScrollbar): Store owner node instead of renderer. (WebCore::RenderScrollbar::RenderScrollbar): Store owner node instead of renderer. (WebCore::RenderScrollbar::owningRenderer): calculate owning renderer from owner node. * rendering/RenderScrollbar.h: (RenderScrollbar): * rendering/RenderTextControlSingleLine.cpp: (WebCore::RenderTextControlSingleLine::createScrollbar): pass renderer's node. LayoutTests: * scrollbars/scrollbar-owning-renderer-crash-expected.txt: Added. * scrollbars/scrollbar-owning-renderer-crash.html: Added. Canonical link: https://commits.webkit.org/103525@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@116476 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2012-05-09 01:45:23 +00:00
}
setTimeout("if (window.eventSender) eventSender.mouseMoveTo(0, 0);", 0);
setTimeout("runTest();", 10);
setTimeout("finish();", 11);
</script>
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
</head>
</html>