<html>
<head>
<script>
var frames = 2;
if (window.testRunner) {
	testRunner.dumpAsText();
	testRunner.dumpChildFramesAsText();
	testRunner.setPrivateBrowsingEnabled(true);
	testRunner.waitUntilDone();
	internals.settings.setStorageBlockingPolicy('BlockThirdParty');
}

function decrement() {
	--frames;
	if (!frames) {
		if (window.testRunner)
			testRunner.setPrivateBrowsingEnabled(false);
		for (var i = 0; i < 2; ++i) {
			var frame = document.getElementsByTagName('iframe')[i].contentWindow;
			frame.postMessage('loaded', '*');
		}
		frames = 2;
	}
}

window.onmessage = function() {
	--frames;
	if (window.testRunner) {
		internals.settings.setStorageBlockingPolicy('AllowAll');
		testRunner.notifyDone();
	}
}
</script>
<body>
<p>This iframe should have private browsing enabled:</p>
<iframe src="http://localhost:8000/security/resources/cross-origin-iframe-for-plugin-async.html" onload="decrement()"></iframe>
<p>This iframe should not have private browsing enabled:</p>
<iframe src="http://127.0.0.1:8000/security/resources/cross-origin-iframe-for-plugin-async.html" onload="decrement()"></iframe>
</body>
</html>
