haikuwebkit/LayoutTests/plugins/npp-set-window-called-durin...

17 lines
493 B
HTML
Raw Permalink Normal View History

Pass NPP_SetWindow a null window handle during plugin destruction on non-Mac platforms This matches WebKit1. Fixes <http://webkit.org/b/47009> WebKit2 needs to call NPP_SetWindow when destroying a plugin Reviewed by Anders Carlsson. Source/WebKit2: * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: (WebKit::NetscapePlugin::destroy): Null out our NPWindow's window handle and pass it to NPP_SetWindow (unless we're on Mac). Tools: Test that NPP_SetWindow is passed a null window handle during plugin destruction on non-Mac platforms * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp: (pluginLogWithArguments): Moved code to format and log the message here... (pluginLog): ...from here. * DumpRenderTree/TestNetscapePlugIn/PluginObject.h: Added pluginLogWithArguments. * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp: (PluginTest::log): Added. Calls through to pluginLogWithArguments. * DumpRenderTree/TestNetscapePlugIn/PluginTest.h: Added log. * DumpRenderTree/TestNetscapePlugIn/Tests/NPPSetWindowCalledDuringDestruction.cpp: Added. (NPPSetWindowCalledDuringDestruction::setWillBeDestroyed): Records that destruction is about to begin. (NPPSetWindowCalledDuringDestruction::NPPSetWindowCalledDuringDestruction): Simple constructor. (NPPSetWindowCalledDuringDestruction::NPP_GetValue): Creates and returns a ScriptObject that can be used to invoke our setWillBeDestroyed function. (NPPSetWindowCalledDuringDestruction::NPP_SetWindow): Records what has happened (and logs if anything unexpected happens). (NPPSetWindowCalledDuringDestruction::NPP_Destroy): On Mac, logs a failure message if NPP_SetWindow was called during destruction. On other platforms, logs a failure message if NPP_SetWindow was *not* called during destruction. (NPPSetWindowCalledDuringDestruction::ScriptObject::hasMethod): Return true for our only method, setWillBeDestroyed. (NPPSetWindowCalledDuringDestruction::ScriptObject::invoke): Call through to the PluginTest object. * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj: * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro: * GNUmakefile.am: Added new test. * Scripts/old-run-webkit-tests: Skip the new test when using out-of-process plugins with WebKit1 on Mac, since it can't work properly due to <http://webkit.org/b/58077>. LayoutTests: Test that NPP_SetWindow is passed a null window handle during plugin destruction on non-Mac platforms * platform/win-wk2/Skipped: Removed a test that no longer crashes thanks to this fix. * plugins/npp-set-window-called-during-destruction-expected.txt: Added. * plugins/npp-set-window-called-during-destruction.html: Added. * platform/mac/plugins/npp-set-window-called-during-destruction-expected.txt: Added. This is different from the cross-platform results because we don't expect NPP_SetWindow to be called during destruction. * platform/win/plugins/npp-set-window-called-during-destruction-expected.txt: Added. This is a copy of the cross-platform results, needed to override the Mac-specific results. Canonical link: https://commits.webkit.org/73078@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@83300 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-04-08 16:00:38 +00:00
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<embed type="application/x-webkit-test-netscape" test="npp-set-window-called-during-destruction"></embed>
<p>This tests whether a NPP_SetWindow is called during plugin destruction.</p>
<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();
Pass NPP_SetWindow a null window handle during plugin destruction on non-Mac platforms This matches WebKit1. Fixes <http://webkit.org/b/47009> WebKit2 needs to call NPP_SetWindow when destroying a plugin Reviewed by Anders Carlsson. Source/WebKit2: * WebProcess/Plugins/Netscape/NetscapePlugin.cpp: (WebKit::NetscapePlugin::destroy): Null out our NPWindow's window handle and pass it to NPP_SetWindow (unless we're on Mac). Tools: Test that NPP_SetWindow is passed a null window handle during plugin destruction on non-Mac platforms * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp: (pluginLogWithArguments): Moved code to format and log the message here... (pluginLog): ...from here. * DumpRenderTree/TestNetscapePlugIn/PluginObject.h: Added pluginLogWithArguments. * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp: (PluginTest::log): Added. Calls through to pluginLogWithArguments. * DumpRenderTree/TestNetscapePlugIn/PluginTest.h: Added log. * DumpRenderTree/TestNetscapePlugIn/Tests/NPPSetWindowCalledDuringDestruction.cpp: Added. (NPPSetWindowCalledDuringDestruction::setWillBeDestroyed): Records that destruction is about to begin. (NPPSetWindowCalledDuringDestruction::NPPSetWindowCalledDuringDestruction): Simple constructor. (NPPSetWindowCalledDuringDestruction::NPP_GetValue): Creates and returns a ScriptObject that can be used to invoke our setWillBeDestroyed function. (NPPSetWindowCalledDuringDestruction::NPP_SetWindow): Records what has happened (and logs if anything unexpected happens). (NPPSetWindowCalledDuringDestruction::NPP_Destroy): On Mac, logs a failure message if NPP_SetWindow was called during destruction. On other platforms, logs a failure message if NPP_SetWindow was *not* called during destruction. (NPPSetWindowCalledDuringDestruction::ScriptObject::hasMethod): Return true for our only method, setWillBeDestroyed. (NPPSetWindowCalledDuringDestruction::ScriptObject::invoke): Call through to the PluginTest object. * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj: * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro: * GNUmakefile.am: Added new test. * Scripts/old-run-webkit-tests: Skip the new test when using out-of-process plugins with WebKit1 on Mac, since it can't work properly due to <http://webkit.org/b/58077>. LayoutTests: Test that NPP_SetWindow is passed a null window handle during plugin destruction on non-Mac platforms * platform/win-wk2/Skipped: Removed a test that no longer crashes thanks to this fix. * plugins/npp-set-window-called-during-destruction-expected.txt: Added. * plugins/npp-set-window-called-during-destruction.html: Added. * platform/mac/plugins/npp-set-window-called-during-destruction-expected.txt: Added. This is different from the cross-platform results because we don't expect NPP_SetWindow to be called during destruction. * platform/win/plugins/npp-set-window-called-during-destruction-expected.txt: Added. This is a copy of the cross-platform results, needed to override the Mac-specific results. Canonical link: https://commits.webkit.org/73078@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@83300 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2011-04-08 16:00:38 +00:00
var embed = document.getElementsByTagName("embed")[0];
embed.setWillBeDestroyed();
embed.parentNode.removeChild(embed);
</script>
</body>
</html>