<head>
<script src="../resources/js-test-pre.js"></script>
</head>
<body onload="runTest()">
<p id="description"></p>
<div id="console"></div>
<script>
function runTest() 
{
    if (!window.testRunner) {
        debug("This test can only run from within DumpRenderTree because it requires TestNetscapePlugin.\n");
        return;
    }
    
    plugin1 = document.createElement("embed");
    plugin1.type = "application/x-webkit-test-netscape";
    plugin1.setAttribute('test', 'private-browsing');
    document.body.appendChild(plugin1);
    
    shouldBe("plugin1.privateBrowsingEnabled", "false");

    // Now enable private browsing
    testRunner.setPrivateBrowsingEnabled(true);

    shouldBe("plugin1.privateBrowsingEnabled", "true");
    
    plugin2 = document.createElement("embed");
    plugin2.type = "application/x-webkit-test-netscape";
    plugin2.setAttribute('test', 'private-browsing');
    document.body.appendChild(plugin2);
    
    shouldBe("plugin2.privateBrowsingEnabled", "true");
    testRunner.setPrivateBrowsingEnabled(false);
    shouldBe("plugin1.privateBrowsingEnabled", "false");
    shouldBe("plugin2.privateBrowsingEnabled", "false");
}
</script>

<script>
description("Tests that NPNVprivateModeBool is supported by the WebKit plugin view. \n This test is for WebKit platforms that wish to support NPNVprivateModeBool but do not wish to implement the preference change listener required to support a cachedPrivateBrowsingEnabled property similar to the one provided by Safari and tested for in private-browsing-mode.html");


</script>
