
<p>This test checks cross-frame access security of window attribute setters (rdar://problem/5326791).</p>
<iframe src="http://localhost:8000/security/resources/cross-frame-iframe-for-put-test.html" style=""></iframe>
<pre id="console"></pre>
<script>
function log(s)
{
    document.getElementById("console").appendChild(document.createTextNode(s + "\n"));
}

function setForbiddenProperty(obj, prop)
{
    try {
        obj[prop] = "FAIL!! CUSTOM " + prop;
    } catch (ex) {
        log("PASS: Unable to set property " + prop + ": " + ex);
    }
}

window.targetWindow = window.frames[0];

window.onload = function()
{
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    // FIXME: This test should use fast/window/resources/window-properties.js instead of a custom list.
    // Constructors
    setForbiddenProperty(targetWindow, "Attr");
    setForbiddenProperty(targetWindow, "CDATASection");
    setForbiddenProperty(targetWindow, "CharacterData");
    setForbiddenProperty(targetWindow, "Comment");
    setForbiddenProperty(targetWindow, "CSSPrimitiveValue");
    setForbiddenProperty(targetWindow, "CSSRule");
    setForbiddenProperty(targetWindow, "CSSStyleDeclaration");
    setForbiddenProperty(targetWindow, "CSSValue");
    setForbiddenProperty(targetWindow, "Document");
    setForbiddenProperty(targetWindow, "DocumentFragment");
    setForbiddenProperty(targetWindow, "DocumentType");
    setForbiddenProperty(targetWindow, "DOMException");
    setForbiddenProperty(targetWindow, "DOMImplementation");
    setForbiddenProperty(targetWindow, "DOMParser");
    setForbiddenProperty(targetWindow, "Element");
    setForbiddenProperty(targetWindow, "Entity");
    setForbiddenProperty(targetWindow, "EntityReference");
    setForbiddenProperty(targetWindow, "EvalError");
    setForbiddenProperty(targetWindow, "Event");
    setForbiddenProperty(targetWindow, "HTMLAnchorElement");
    setForbiddenProperty(targetWindow, "HTMLAppletElement");
    setForbiddenProperty(targetWindow, "HTMLAreaElement");
    setForbiddenProperty(targetWindow, "HTMLBaseElement");
    setForbiddenProperty(targetWindow, "HTMLBaseFontElement");
    setForbiddenProperty(targetWindow, "HTMLBodyElement");
    setForbiddenProperty(targetWindow, "HTMLBRElement");
    setForbiddenProperty(targetWindow, "HTMLButtonElement");
    setForbiddenProperty(targetWindow, "HTMLCanvasElement");
    setForbiddenProperty(targetWindow, "HTMLDirectoryElement");
    setForbiddenProperty(targetWindow, "HTMLDivElement");
    setForbiddenProperty(targetWindow, "HTMLDListElement");
    setForbiddenProperty(targetWindow, "HTMLDocument");
    setForbiddenProperty(targetWindow, "HTMLElement");
    setForbiddenProperty(targetWindow, "HTMLFieldSetElement");
    setForbiddenProperty(targetWindow, "HTMLFontElement");
    setForbiddenProperty(targetWindow, "HTMLFormElement");
    setForbiddenProperty(targetWindow, "HTMLFrameElement");
    setForbiddenProperty(targetWindow, "HTMLFrameSetElement");
    setForbiddenProperty(targetWindow, "HTMLHeadElement");
    setForbiddenProperty(targetWindow, "HTMLHeadingElement");
    setForbiddenProperty(targetWindow, "HTMLHRElement");
    setForbiddenProperty(targetWindow, "HTMLHtmlElement");
    setForbiddenProperty(targetWindow, "HTMLIFrameElement");
    setForbiddenProperty(targetWindow, "HTMLImageElement");
    setForbiddenProperty(targetWindow, "HTMLInputElement");
    setForbiddenProperty(targetWindow, "HTMLLabelElement");
    setForbiddenProperty(targetWindow, "HTMLLegendElement");
    setForbiddenProperty(targetWindow, "HTMLLIElement");
    setForbiddenProperty(targetWindow, "HTMLLinkElement");
    setForbiddenProperty(targetWindow, "HTMLMapElement");
    setForbiddenProperty(targetWindow, "HTMLMarqueeElement");
    setForbiddenProperty(targetWindow, "HTMLMenuElement");
    setForbiddenProperty(targetWindow, "HTMLMetaElement");
    setForbiddenProperty(targetWindow, "HTMLModElement");
    setForbiddenProperty(targetWindow, "HTMLOListElement");
    setForbiddenProperty(targetWindow, "HTMLOptGroupElement");
    setForbiddenProperty(targetWindow, "HTMLOptionElement");
    setForbiddenProperty(targetWindow, "HTMLParagraphElement");
    setForbiddenProperty(targetWindow, "HTMLParamElement");
    setForbiddenProperty(targetWindow, "HTMLPreElement");
    setForbiddenProperty(targetWindow, "HTMLQuoteElement");
    setForbiddenProperty(targetWindow, "HTMLScriptElement");
    setForbiddenProperty(targetWindow, "HTMLSelectElement");
    setForbiddenProperty(targetWindow, "HTMLStyleElement");
    setForbiddenProperty(targetWindow, "HTMLTableCaptionElement");
    setForbiddenProperty(targetWindow, "HTMLTableCellElement");
    setForbiddenProperty(targetWindow, "HTMLTableColElement");
    setForbiddenProperty(targetWindow, "HTMLTableElement");
    setForbiddenProperty(targetWindow, "HTMLTableRowElement");
    setForbiddenProperty(targetWindow, "HTMLTableSectionElement");
    setForbiddenProperty(targetWindow, "HTMLTextAreaElement");
    setForbiddenProperty(targetWindow, "HTMLTitleElement");
    setForbiddenProperty(targetWindow, "HTMLUListElement");
    setForbiddenProperty(targetWindow, "MutationEvent");
    setForbiddenProperty(targetWindow, "Node");
    setForbiddenProperty(targetWindow, "NodeFilter");
    setForbiddenProperty(targetWindow, "Notation");
    setForbiddenProperty(targetWindow, "ProcessingInstruction");
    setForbiddenProperty(targetWindow, "Range");
    setForbiddenProperty(targetWindow, "RangeError");
    setForbiddenProperty(targetWindow, "RangeException");
    setForbiddenProperty(targetWindow, "ReferenceError");
    setForbiddenProperty(targetWindow, "SyntaxError");
    setForbiddenProperty(targetWindow, "Text");
    setForbiddenProperty(targetWindow, "TypeError");
    setForbiddenProperty(targetWindow, "URIError");
    setForbiddenProperty(targetWindow, "XMLDocument");
    setForbiddenProperty(targetWindow, "XMLSerializer");
    setForbiddenProperty(targetWindow, "XPathEvaluator");
    setForbiddenProperty(targetWindow, "XPathResult");

    // FIXME: find a way to test these Constructors
    // setForbiddenProperty(targetWindow, "Image");
    // setForbiddenProperty(targetWindow, "Option");
    // setForbiddenProperty(targetWindow, "XMLHttpRequest");
    // setForbiddenProperty(targetWindow, "XSLTProcessor");

    // Attributes
    setForbiddenProperty(targetWindow, "clientInformation");
    setForbiddenProperty(targetWindow, "closed");
    setForbiddenProperty(targetWindow, "console");
    setForbiddenProperty(targetWindow, "crypto");
    setForbiddenProperty(targetWindow, "defaultStatus");
    setForbiddenProperty(targetWindow, "defaultstatus");
    setForbiddenProperty(targetWindow, "devicePixelRatio");
    setForbiddenProperty(targetWindow, "document");
    setForbiddenProperty(targetWindow, "embeds");
    setForbiddenProperty(targetWindow, "event");
    setForbiddenProperty(targetWindow, "frameElement");
    setForbiddenProperty(targetWindow, "frames");
    setForbiddenProperty(targetWindow, "history");
    setForbiddenProperty(targetWindow, "images");
    setForbiddenProperty(targetWindow, "innerHeight");
    setForbiddenProperty(targetWindow, "innerWidth");
    setForbiddenProperty(targetWindow, "length");
    setForbiddenProperty(targetWindow, "locationbar");
    setForbiddenProperty(targetWindow, "menubar");
    setForbiddenProperty(targetWindow, "name");
    setForbiddenProperty(targetWindow, "navigator");
    setForbiddenProperty(targetWindow, "offscreenBuffering");
    setForbiddenProperty(targetWindow, "onabort");
    setForbiddenProperty(targetWindow, "onbeforeunload");
    setForbiddenProperty(targetWindow, "onblur");
    setForbiddenProperty(targetWindow, "onchange");
    setForbiddenProperty(targetWindow, "onclick");
    setForbiddenProperty(targetWindow, "ondblclick");
    setForbiddenProperty(targetWindow, "onerror");
    setForbiddenProperty(targetWindow, "onfocus");
    setForbiddenProperty(targetWindow, "onkeydown");
    setForbiddenProperty(targetWindow, "onkeypress");
    setForbiddenProperty(targetWindow, "onkeyup");
    setForbiddenProperty(targetWindow, "onload");
    setForbiddenProperty(targetWindow, "onmousedown");
    setForbiddenProperty(targetWindow, "onmousemove");
    setForbiddenProperty(targetWindow, "onmouseout");
    setForbiddenProperty(targetWindow, "onmouseover");
    setForbiddenProperty(targetWindow, "onmouseup");
    setForbiddenProperty(targetWindow, "onmousewheel");
    setForbiddenProperty(targetWindow, "onreset");
    setForbiddenProperty(targetWindow, "onresize");
    setForbiddenProperty(targetWindow, "onscroll");
    setForbiddenProperty(targetWindow, "onsearch");
    setForbiddenProperty(targetWindow, "onselect");
    setForbiddenProperty(targetWindow, "onsubmit");
    setForbiddenProperty(targetWindow, "onunload");
    setForbiddenProperty(targetWindow, "opener");
    setForbiddenProperty(targetWindow, "outerHeight");
    setForbiddenProperty(targetWindow, "outerWidth");
    setForbiddenProperty(targetWindow, "pageXOffset");
    setForbiddenProperty(targetWindow, "pageYOffset");
    setForbiddenProperty(targetWindow, "personalbar");
    setForbiddenProperty(targetWindow, "plugins");
    setForbiddenProperty(targetWindow, "screen");
    setForbiddenProperty(targetWindow, "screenLeft");
    setForbiddenProperty(targetWindow, "screenTop");
    setForbiddenProperty(targetWindow, "screenX");
    setForbiddenProperty(targetWindow, "screenY");
    setForbiddenProperty(targetWindow, "scrollbars");
    setForbiddenProperty(targetWindow, "scrollX");
    setForbiddenProperty(targetWindow, "scrollY");
    setForbiddenProperty(targetWindow, "self");
    setForbiddenProperty(targetWindow, "status");
    setForbiddenProperty(targetWindow, "statusbar");
    setForbiddenProperty(targetWindow, "toolbar");
    setForbiddenProperty(targetWindow, "window");
    setForbiddenProperty(targetWindow, "parent");

    // Functions
    setForbiddenProperty(targetWindow, "addEventListener");
    setForbiddenProperty(targetWindow, "alert");
    setForbiddenProperty(targetWindow, "atob");
    setForbiddenProperty(targetWindow, "blur");
    setForbiddenProperty(targetWindow, "btoa");
    setForbiddenProperty(targetWindow, "captureEvents");
    setForbiddenProperty(targetWindow, "clearInterval");
    setForbiddenProperty(targetWindow, "clearTimeout");
    setForbiddenProperty(targetWindow, "close");
    setForbiddenProperty(targetWindow, "confirm");
    setForbiddenProperty(targetWindow, "constructor");
    setForbiddenProperty(targetWindow, "eval");
    setForbiddenProperty(targetWindow, "find");
    setForbiddenProperty(targetWindow, "focus");
    setForbiddenProperty(targetWindow, "getComputedStyle");
    setForbiddenProperty(targetWindow, "getMatchedCSSRules");
    setForbiddenProperty(targetWindow, "getSelection");
    setForbiddenProperty(targetWindow, "moveBy");
    setForbiddenProperty(targetWindow, "moveTo");
    setForbiddenProperty(targetWindow, "open");
    setForbiddenProperty(targetWindow, "print");
    setForbiddenProperty(targetWindow, "prompt");
    setForbiddenProperty(targetWindow, "releaseEvents");
    setForbiddenProperty(targetWindow, "removeEventListener");
    setForbiddenProperty(targetWindow, "resizeBy");
    setForbiddenProperty(targetWindow, "resizeTo");
    setForbiddenProperty(targetWindow, "scroll");
    setForbiddenProperty(targetWindow, "scrollBy");
    setForbiddenProperty(targetWindow, "scrollTo");
    setForbiddenProperty(targetWindow, "setInterval");
    setForbiddenProperty(targetWindow, "setTimeout");
    setForbiddenProperty(targetWindow, "showModalDialog");
    setForbiddenProperty(targetWindow, "stop");

    setTimeout(function() {
        // log(targetWindow.focus.__proto__);
        log("MAIN WINDOW: !!-- Test ended--!!");

        window.stop();

        if (window.testRunner)
            testRunner.notifyDone();
    }, 1);
}
</script>
