<!DOCTYPE html>
<html>
<head>
    <title>HTML5 Sandbox: iframe sandbox attribute value support DOMSettableTokenList interface.</title>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
    <link rel="author" title="Microsoft" href="http://www.microsoft.com/" />
    <link rel="help" href="http://dev.w3.org/html5/spec/Overview.html#the-iframe-element" />
    <meta name="assert" content="iframe sandbox attribute value support DOMSettableTokenList interface." />
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
</head>
<body>
    <div id=log></div>
    <iframe id="iframe1" src="about:blank" sandbox="allow-scripts allow-same-origin allow-forms" style="display : none"></iframe>
    <script type="text/javascript">
    
    test(function() {
        var iframeEle = document.getElementById("iframe1");
        assert_equals(iframeEle.sandbox.length, 3)
    }, "DOMSettableTokenList length")
    
    test(function() {
        var iframeEle = document.getElementById("iframe1");
        assert_equals(iframeEle.sandbox.item(1),  "allow-same-origin")
    }, "DOMSettableTokenList item(index)")
    
    test(function() {
        var iframeEle = document.getElementById("iframe1");
        assert_true(iframeEle.sandbox.contains("allow-forms"))
    }, "DOMSettableTokenList contains(DomString)")
    
    test(function() {
        var iframeEle = document.getElementById("iframe1"); 
        iframeEle.sandbox.add("ALLOW-SANDBOX");
        assert_true(iframeEle.sandbox.contains("ALLOW-SANDBOX"))
    }, "DOMSettableTokenList add(DomString)")
    
    test(function() {
        var iframeEle = document.getElementById("iframe1");
        iframeEle.sandbox.remove("ALLOW-SANDBOX");
        assert_false(iframeEle.sandbox.contains("ALLOW-SANDBOX"))
    }, "DOMSettableTokenList remove(DomString)")
        
    test(function() {
        var iframeEle = document.getElementById("iframe1");
        iframeEle.sandbox.remove("ALLOW-SANDBOX");
        assert_true( 
            iframeEle.sandbox.toggle("allow-top-navigation") && iframeEle.sandbox.contains("allow-top-navigation") &&
            !iframeEle.sandbox.toggle("allow-top-navigation") && !iframeEle.sandbox.contains("allow-top-navigation")
        )
    }, "DOMSettableTokenList toggle(DomString) - Returns true if token is now present (it was added); returns false if it is not (it was removed).")

    test(function() {
        var iframeEle = document.getElementById("iframe1");
        assert_equals(iframeEle.sandbox.value, iframeEle.sandbox.toString())
    }, "DOMSettableTokenList sandbox.toString()")
    
    test(function() {
        var iframeEle = document.getElementById("iframe1");
        iframeEle.sandbox.remove("ALLOW-SANDBOX");
        assert_true(iframeEle.sandbox.contains("allow-scripts") != iframeEle.sandbox.contains("Allow-SCRIPTS"))
    }, "DOMSettableTokenList case sensitivity")
    </script>
</body>
</html>
