<head>
<script src="../fast/js/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>
