<html>
<head>
<meta charset="utf-8">
<script src="../resources/js-test-pre.js"></script>
<script>
if (window.testRunner)
    testRunner.overridePreference("WebKitJavaEnabled", "1");
</script>
</head>
<body>

<p>Test that Java objects can be passed to NPAPI plug-ins, and vice versa.</p>
<p>Some tests below are written in a way that works around issues with preserving object identity.
They can be simplified once these issues are fixed.</p>

<div id="console"></div>
<embed name="plg" type="application/x-webkit-test-netscape"></embed>
<applet CODE="SharedApplet.class" NAME="javaTest" WIDTH=150 HEIGHT=25 MAYSCRIPT></applet>
<script>

document.plg.remember(document.javaTest.getSelf());
shouldBe('document.plg.getAndForgetRememberedObject() + ""', 'document.javaTest.getSelf() + ""');
document.plg.remember(document.javaTest.getSelf());
shouldBe('document.plg.getAndForgetRememberedObject().getSelf().getSelf() + ""', 'document.javaTest.getSelf() + ""');

shouldBe('document.plg.testHasMethod(document.javaTest, "getSelf")', 'true');
shouldBe('document.plg.testHasMethod(document.javaTest, "doesNotExist")', 'false');
shouldBe('document.plg.testHasMethod(document.javaTest.getSelf(), "getSelf")', 'true');
shouldBe('document.plg.testHasMethod(document.javaTest.getSelf(), "doesNotExist")', 'false');

document.javaTest.remember(document.plg.testObject);
shouldBe('document.javaTest.getAndForgetRememberedObject().objectPointer', 'document.plg.testObject.objectPointer');

shouldBe('typeof document.javaTest.testGetMember(document.plg, "testDOMAccess")', '"function"');

</script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>
