This test verifies that sandboxing of plugins works as intended. Three tests are made, each in one sandboxed and one non-sandboxed IFrame: applets, embeds, and objects.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


NOTE: The first sub-test will fail in DumpRenderTree, since DumpRenderTree does not support applets. That sub-test must be run in Safari instead.

FAIL (self.appletFrame1.document['app'].init) != undefined should be true. Was false.
PASS (self.appletFrame2.document['app'].init) == undefined is true
PASS (self.embedFrame1.document.getElementById('plugin').destroyStream) != undefined is true
PASS (self.embedFrame2.document.getElementById('plugin').destroyStream) == undefined is true
PASS (self.objectFrame1.document.getElementById('plugin').destroyStream) != undefined is true
PASS (self.objectFrame2.document.getElementById('plugin').destroyStream) == undefined is true
PASS successfullyParsed is true

TEST COMPLETE
         
