<html>
<head>
<script>
function debug(str) {
    var li = document.createElement('li');
    li.appendChild(document.createTextNode(str));
    document.getElementById('console').appendChild(li)
}

function checkLocationObject(l)
{
    if (!l) {
        debug('could not access top.location');
        return false;
    }

    try {
        l.href;
        debug('could access top.location.href');
        return false;
    } catch (e) {
        console.log(e);
    }
    
    return true;
}

function runTest() {
    var numErrors = 0;

    // Try accessing childFrame.location using NPN_Evaluate
    var l = document.plugin.testEvaluate('top.location')
    if (!checkLocationObject(l))
        numErrors++;

    // Try getting childFrame.location.href using NPN_Evaluate
    var href = document.plugin.testEvaluate('top.location.href');
    if (href) {
        debug("could access top.location.href")
        numErrors++;
    }
    
    // Try accessing childFrame.location using NPN_GetProperty
    var l = document.plugin.testGetProperty('top', 'location');
    if (!checkLocationObject(l))
        numErrors++;
        
    var href = document.plugin.testGetProperty('top', 'location', 'href');
    if (href) {
        debug("could access top.location.href")
        numErrors++;
    }
    
    // Try accessing top.document using NPN_EVALUATE
    var l = document.plugin.testEvaluate('top.document')
    if (l) {
        debug('could access top.document');
        numErrors++;
    }
    
    // Try accessing top.document using NPN_GetProperty
    var l = document.plugin.testGetProperty('top', 'document')
    if (l) {
        debug('could access top.document');
        numErrors++;
    }
    
    if (numErrors == 0)
        document.getElementById('result').innerHTML = 'SUCCESS';
}
    
</script>
</head>
<body onload="runTest()">
<embed name="plugin" type="application/x-webkit-test-netscape"></embed>
<div>This tests that plug-ins can access objects in other frames as allowed by the security model enforced in WebCore.</div>
<ul id="console">
</ul>
<div id="result">FAILURE</div>
</body>
</html>
