<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul, pre { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[23987] trunk</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/23987">23987</a></dd>
<dt>Author</dt> <dd>weinig</dd>
<dt>Date</dt> <dd>2007-07-04 13:04:31 -0700 (Wed, 04 Jul 2007)</dd>
</dl>

<h3>Log Message</h3>
<pre>LayoutTests:

        Reviewed by Mitz.

        Test for http://bugs.webkit.org/show_bug.cgi?id=14504
        REGRESSION (r23573): Amazon Book Excerpt can not be viewed in recent nightly

        * fast/dom/Window/window-property-shadowing-expected.txt: Added.
        * fast/dom/Window/window-property-shadowing.html: Added.

WebCore:

        Reviewed by Mitz.

        Patch for http://bugs.webkit.org/show_bug.cgi?id=14504
        REGRESSION (r23573): Amazon Book Excerpt can not be viewed in recent nightly

        - Made it possible (again) to shadow window properties with local variable names.

        Test: fast/dom/Window/window-property-shadowing.html

        * bindings/js/JSDOMWindowCustom.cpp:
        (WebCore::JSDOMWindow::customPut):
        * bindings/js/kjs_window.cpp:
        (KJS::Window::put):
        * bindings/scripts/CodeGeneratorJS.pm:
        * page/DOMWindow.idl:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkWebCoreChangeLog">trunk/WebCore/ChangeLog</a></li>
<li><a href="#trunkWebCorebindingsjsJSDOMWindowCustomcpp">trunk/WebCore/bindings/js/JSDOMWindowCustom.cpp</a></li>
<li><a href="#trunkWebCorebindingsjskjs_windowcpp">trunk/WebCore/bindings/js/kjs_window.cpp</a></li>
<li><a href="#trunkWebCorebindingsscriptsCodeGeneratorJSpm">trunk/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkWebCorepageDOMWindowidl">trunk/WebCore/page/DOMWindow.idl</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastdomWindowwindowpropertyshadowingexpectedtxt">trunk/LayoutTests/fast/dom/Window/window-property-shadowing-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastdomWindowwindowpropertyshadowinghtml">trunk/LayoutTests/fast/dom/Window/window-property-shadowing.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (23986 => 23987)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2007-07-04 18:37:11 UTC (rev 23986)
+++ trunk/LayoutTests/ChangeLog        2007-07-04 20:04:31 UTC (rev 23987)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2007-07-04  Sam Weinig  &lt;sam@webkit.org&gt;
+
+        Reviewed by Mitz.
+
+        Test for http://bugs.webkit.org/show_bug.cgi?id=14504
+        REGRESSION (r23573): Amazon Book Excerpt can not be viewed in recent nightly
+
+        * fast/dom/Window/window-property-shadowing-expected.txt: Added.
+        * fast/dom/Window/window-property-shadowing.html: Added.
+
</ins><span class="cx"> 2007-07-03  Darin Adler  &lt;darin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Reviewed by Tim Hatcher.
</span></span></pre></div>
<a id="trunkLayoutTestsfastdomWindowwindowpropertyshadowingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/dom/Window/window-property-shadowing-expected.txt (0 => 23987)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/Window/window-property-shadowing-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/dom/Window/window-property-shadowing-expected.txt        2007-07-04 20:04:31 UTC (rev 23987)
</span><span class="lines">@@ -0,0 +1,201 @@
</span><ins>+PASS: screen successfully shadowed
+PASS: history successfully shadowed
+PASS: locationbar successfully shadowed
+PASS: menubar successfully shadowed
+PASS: personalbar successfully shadowed
+PASS: statusbar successfully shadowed
+PASS: toolbar successfully shadowed
+PASS: devicePixelRatio successfully shadowed
+PASS: closed successfully shadowed
+PASS: crypto successfully shadowed
+PASS: defaultStatus successfully shadowed
+PASS: defaultstatus successfully shadowed
+PASS: status successfully shadowed
+PASS: frames successfully shadowed
+PASS: event successfully shadowed
+PASS: innerHeight successfully shadowed
+PASS: innerWidth successfully shadowed
+PASS: length successfully shadowed
+PASS: name successfully shadowed
+PASS: navigator successfully shadowed
+PASS: location successfully shadowed
+PASS: clientInformation successfully shadowed
+PASS: offscreenBuffering successfully shadowed
+PASS: opener successfully shadowed
+PASS: outerHeight successfully shadowed
+PASS: outerWidth successfully shadowed
+PASS: pageXOffset successfully shadowed
+PASS: pageYOffset successfully shadowed
+PASS: parent successfully shadowed
+PASS: screenX successfully shadowed
+PASS: screenY successfully shadowed
+PASS: screenLeft successfully shadowed
+PASS: screenTop successfully shadowed
+PASS: scrollX successfully shadowed
+PASS: scrollY successfully shadowed
+PASS: self successfully shadowed
+PASS: top successfully shadowed
+PASS: onabort successfully shadowed
+PASS: onblur successfully shadowed
+PASS: onchange successfully shadowed
+PASS: onclick successfully shadowed
+PASS: ondblclick successfully shadowed
+PASS: onerror successfully shadowed
+PASS: onfocus successfully shadowed
+PASS: onkeydown successfully shadowed
+PASS: onkeypress successfully shadowed
+PASS: onkeyup successfully shadowed
+PASS: onload successfully shadowed
+PASS: onmousedown successfully shadowed
+PASS: onmousemove successfully shadowed
+PASS: onmouseout successfully shadowed
+PASS: onmouseover successfully shadowed
+PASS: onmouseup successfully shadowed
+PASS: onmousewheel successfully shadowed
+PASS: onreset successfully shadowed
+PASS: onresize successfully shadowed
+PASS: onscroll successfully shadowed
+PASS: onsearch successfully shadowed
+PASS: onselect successfully shadowed
+PASS: onsubmit successfully shadowed
+PASS: onunload successfully shadowed
+PASS: onbeforeunload successfully shadowed
+PASS: frameElement successfully shadowed
+PASS: window successfully shadowed
+PASS: getSelection successfully shadowed
+PASS: getComputedStyle successfully shadowed
+PASS: getMatchedCSSRules successfully shadowed
+PASS: atob successfully shadowed
+PASS: btoa successfully shadowed
+PASS: scroll successfully shadowed
+PASS: scrollBy successfully shadowed
+PASS: scrollTo successfully shadowed
+PASS: moveBy successfully shadowed
+PASS: moveTo successfully shadowed
+PASS: resizeBy successfully shadowed
+PASS: resizeTo successfully shadowed
+PASS: alert successfully shadowed
+PASS: confirm successfully shadowed
+PASS: prompt successfully shadowed
+PASS: open successfully shadowed
+PASS: print successfully shadowed
+PASS: setTimeout successfully shadowed
+PASS: clearTimeout successfully shadowed
+PASS: focus successfully shadowed
+PASS: blur successfully shadowed
+PASS: close successfully shadowed
+PASS: setInterval successfully shadowed
+PASS: clearInterval successfully shadowed
+PASS: captureEvents successfully shadowed
+PASS: releaseEvents successfully shadowed
+PASS: addEventListener successfully shadowed
+PASS: removeEventListener successfully shadowed
+PASS: showModalDialog successfully shadowed
+PASS: find successfully shadowed
+PASS: stop successfully shadowed
+PASS: Image successfully shadowed
+PASS: Option successfully shadowed
+PASS: DOMException successfully shadowed
+PASS: XMLHttpRequest successfully shadowed
+PASS: XSLTProcessor successfully shadowed
+PASS: StyleSheet successfully shadowed
+PASS: CSSStyleSheet successfully shadowed
+PASS: CSSValue successfully shadowed
+PASS: CSSPrimitiveValue successfully shadowed
+PASS: CSSValueList successfully shadowed
+PASS: CSSRule successfully shadowed
+PASS: CSSCharsetRule successfully shadowed
+PASS: CSSFontFaceRule successfully shadowed
+PASS: CSSImportRule successfully shadowed
+PASS: CSSMediaRule successfully shadowed
+PASS: CSSPageRule successfully shadowed
+PASS: CSSStyleRule successfully shadowed
+PASS: CSSStyleDeclaration successfully shadowed
+PASS: MediaList successfully shadowed
+PASS: Counter successfully shadowed
+PASS: CSSRuleList successfully shadowed
+PASS: Rect successfully shadowed
+PASS: DOMImplementation successfully shadowed
+PASS: DocumentFragment successfully shadowed
+PASS: Document successfully shadowed
+PASS: Node successfully shadowed
+PASS: NodeList successfully shadowed
+PASS: NamedNodeMap successfully shadowed
+PASS: CharacterData successfully shadowed
+PASS: Attr successfully shadowed
+PASS: Element successfully shadowed
+PASS: Text successfully shadowed
+PASS: Comment successfully shadowed
+PASS: CDATASection successfully shadowed
+PASS: DocumentType successfully shadowed
+PASS: Notation successfully shadowed
+PASS: Entity successfully shadowed
+PASS: EntityReference successfully shadowed
+PASS: ProcessingInstruction successfully shadowed
+PASS: HTMLDocument successfully shadowed
+PASS: HTMLElement successfully shadowed
+PASS: HTMLAnchorElement successfully shadowed
+PASS: HTMLAppletElement successfully shadowed
+PASS: HTMLAreaElement successfully shadowed
+PASS: HTMLBRElement successfully shadowed
+PASS: HTMLBaseElement successfully shadowed
+PASS: HTMLBaseFontElement successfully shadowed
+PASS: HTMLBlockquoteElement successfully shadowed
+PASS: HTMLBodyElement successfully shadowed
+PASS: HTMLButtonElement successfully shadowed
+PASS: HTMLCanvasElement successfully shadowed
+PASS: HTMLDListElement successfully shadowed
+PASS: HTMLDirectoryElement successfully shadowed
+PASS: HTMLDivElement successfully shadowed
+PASS: HTMLEmbedElement successfully shadowed
+PASS: HTMLFieldSetElement successfully shadowed
+PASS: HTMLFontElement successfully shadowed
+PASS: HTMLFormElement successfully shadowed
+PASS: HTMLFrameElement successfully shadowed
+PASS: HTMLFrameSetElement successfully shadowed
+PASS: HTMLHRElement successfully shadowed
+PASS: HTMLHeadElement successfully shadowed
+PASS: HTMLHeadingElement successfully shadowed
+PASS: HTMLHtmlElement successfully shadowed
+PASS: HTMLIFrameElement successfully shadowed
+PASS: HTMLImageElement successfully shadowed
+PASS: HTMLInputElement successfully shadowed
+PASS: HTMLIsIndexElement successfully shadowed
+PASS: HTMLLIElement successfully shadowed
+PASS: HTMLLabelElement successfully shadowed
+PASS: HTMLLegendElement successfully shadowed
+PASS: HTMLLinkElement successfully shadowed
+PASS: HTMLMapElement successfully shadowed
+PASS: HTMLMarqueeElement successfully shadowed
+PASS: HTMLMenuElement successfully shadowed
+PASS: HTMLMetaElement successfully shadowed
+PASS: HTMLModElement successfully shadowed
+PASS: HTMLOListElement successfully shadowed
+PASS: HTMLObjectElement successfully shadowed
+PASS: HTMLOptGroupElement successfully shadowed
+PASS: HTMLOptionElement successfully shadowed
+PASS: HTMLParagraphElement successfully shadowed
+PASS: HTMLParamElement successfully shadowed
+PASS: HTMLPreElement successfully shadowed
+PASS: HTMLQuoteElement successfully shadowed
+PASS: HTMLScriptElement successfully shadowed
+PASS: HTMLSelectElement successfully shadowed
+PASS: HTMLStyleElement successfully shadowed
+PASS: HTMLTableCaptionElement successfully shadowed
+PASS: HTMLTableCellElement successfully shadowed
+PASS: HTMLTableColElement successfully shadowed
+PASS: HTMLTableElement successfully shadowed
+PASS: HTMLTableRowElement successfully shadowed
+PASS: HTMLTableSectionElement successfully shadowed
+PASS: HTMLTextAreaElement successfully shadowed
+PASS: HTMLTitleElement successfully shadowed
+PASS: HTMLUListElement successfully shadowed
+PASS: Event successfully shadowed
+PASS: MutationEvent successfully shadowed
+PASS: NodeFilter successfully shadowed
+PASS: Range successfully shadowed
+PASS: RangeException successfully shadowed
+PASS: XMLDocument successfully shadowed
+PASS: DOMParser successfully shadowed
+PASS: XMLSerializer successfully shadowed
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastdomWindowwindowpropertyshadowinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/dom/Window/window-property-shadowing.html (0 => 23987)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/dom/Window/window-property-shadowing.html                                (rev 0)
+++ trunk/LayoutTests/fast/dom/Window/window-property-shadowing.html        2007-07-04 20:04:31 UTC (rev 23987)
</span><span class="lines">@@ -0,0 +1,424 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;
+        function log(msg)
+        {
+            document.getElementById('console').appendChild(document.createTextNode(msg + '\n'));
+        }
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    &lt;pre id=&quot;console&quot;&gt;&lt;/pre&gt;
+    &lt;script&gt;
+        if (window.layoutTestController)
+            layoutTestController.dumpAsText();
+
+        // Window Attributes
+        var screen = 1;
+        log(screen == 1 ? &quot;PASS: screen successfully shadowed&quot; : &quot;FAIL: screen was not shadowed&quot;);
+        var history = 1;
+        log(history == 1 ? &quot;PASS: history successfully shadowed&quot; : &quot;FAIL: history was not shadowed&quot;);
+        var locationbar = 1;
+        log(locationbar == 1 ? &quot;PASS: locationbar successfully shadowed&quot; : &quot;FAIL: locationbar was not shadowed&quot;);
+        var menubar = 1;
+        log(menubar == 1 ? &quot;PASS: menubar successfully shadowed&quot; : &quot;FAIL: menubar was not shadowed&quot;);
+        var personalbar = 1;
+        log(personalbar == 1 ? &quot;PASS: personalbar successfully shadowed&quot; : &quot;FAIL: personalbar was not shadowed&quot;);
+        var statusbar = 1;
+        log(statusbar == 1 ? &quot;PASS: statusbar successfully shadowed&quot; : &quot;FAIL: statusbar was not shadowed&quot;);
+        var toolbar = 1;
+        log(toolbar == 1 ? &quot;PASS: toolbar successfully shadowed&quot; : &quot;FAIL: toolbar was not shadowed&quot;);
+        var devicePixelRatio = 1;
+        log(devicePixelRatio == 1 ? &quot;PASS: devicePixelRatio successfully shadowed&quot; : &quot;FAIL: devicePixelRatio was not shadowed&quot;);
+        var closed = 1;
+        log(closed == 1 ? &quot;PASS: closed successfully shadowed&quot; : &quot;FAIL: closed was not shadowed&quot;);
+        var crypto = 1;
+        log(crypto == 1 ? &quot;PASS: crypto successfully shadowed&quot; : &quot;FAIL: crypto was not shadowed&quot;);
+        var defaultStatus = 1;
+        log(defaultStatus == 1 ? &quot;PASS: defaultStatus successfully shadowed&quot; : &quot;FAIL: defaultStatus was not shadowed&quot;);
+        var defaultstatus = 1;
+        log(defaultstatus == 1 ? &quot;PASS: defaultstatus successfully shadowed&quot; : &quot;FAIL: defaultstatus was not shadowed&quot;);
+        var status = 1;
+        log(status == 1 ? &quot;PASS: status successfully shadowed&quot; : &quot;FAIL: status was not shadowed&quot;);
+        var frames = 1;
+        log(frames == 1 ? &quot;PASS: frames successfully shadowed&quot; : &quot;FAIL: frames was not shadowed&quot;);
+        var event = 1;
+        log(event == 1 ? &quot;PASS: event successfully shadowed&quot; : &quot;FAIL: event was not shadowed&quot;);
+        var innerHeight = 1;
+        log(innerHeight == 1 ? &quot;PASS: innerHeight successfully shadowed&quot; : &quot;FAIL: innerHeight was not shadowed&quot;);
+        var innerWidth = 1;
+        log(innerWidth == 1 ? &quot;PASS: innerWidth successfully shadowed&quot; : &quot;FAIL: innerWidth was not shadowed&quot;);
+        var length = 1;
+        log(length == 1 ? &quot;PASS: length successfully shadowed&quot; : &quot;FAIL: length was not shadowed&quot;);
+        var name = 1;
+        log(name == 1 ? &quot;PASS: name successfully shadowed&quot; : &quot;FAIL: name was not shadowed&quot;);
+        var navigator = 1;
+        log(navigator == 1 ? &quot;PASS: navigator successfully shadowed&quot; : &quot;FAIL: navigator was not shadowed&quot;);
+        var location = 1;
+        log(location == 1 ? &quot;PASS: location successfully shadowed&quot; : &quot;FAIL: location was not shadowed&quot;);
+        var clientInformation = 1;
+        log(clientInformation == 1 ? &quot;PASS: clientInformation successfully shadowed&quot; : &quot;FAIL: clientInformation was not shadowed&quot;);
+        var offscreenBuffering = 1;
+        log(offscreenBuffering == 1 ? &quot;PASS: offscreenBuffering successfully shadowed&quot; : &quot;FAIL: offscreenBuffering was not shadowed&quot;);
+        var opener = 1;
+        log(opener == 1 ? &quot;PASS: opener successfully shadowed&quot; : &quot;FAIL: opener was not shadowed&quot;);
+        var outerHeight = 1;
+        log(outerHeight == 1 ? &quot;PASS: outerHeight successfully shadowed&quot; : &quot;FAIL: outerHeight was not shadowed&quot;);
+        var outerWidth = 1;
+        log(outerWidth == 1 ? &quot;PASS: outerWidth successfully shadowed&quot; : &quot;FAIL: outerWidth was not shadowed&quot;);
+        var pageXOffset = 1;
+        log(pageXOffset == 1 ? &quot;PASS: pageXOffset successfully shadowed&quot; : &quot;FAIL: pageXOffset was not shadowed&quot;);
+        var pageYOffset = 1;
+        log(pageYOffset == 1 ? &quot;PASS: pageYOffset successfully shadowed&quot; : &quot;FAIL: pageYOffset was not shadowed&quot;);
+        var parent = 1;
+        log(parent == 1 ? &quot;PASS: parent successfully shadowed&quot; : &quot;FAIL: parent was not shadowed&quot;);
+        var screenX = 1;
+        log(screenX == 1 ? &quot;PASS: screenX successfully shadowed&quot; : &quot;FAIL: screenX was not shadowed&quot;);
+        var screenY = 1;
+        log(screenY == 1 ? &quot;PASS: screenY successfully shadowed&quot; : &quot;FAIL: screenY was not shadowed&quot;);
+        var screenLeft = 1;
+        log(screenLeft == 1 ? &quot;PASS: screenLeft successfully shadowed&quot; : &quot;FAIL: screenLeft was not shadowed&quot;);
+        var screenTop = 1;
+        log(screenTop == 1 ? &quot;PASS: screenTop successfully shadowed&quot; : &quot;FAIL: screenTop was not shadowed&quot;);
+        var scrollX = 1;
+        log(scrollX == 1 ? &quot;PASS: scrollX successfully shadowed&quot; : &quot;FAIL: scrollX was not shadowed&quot;);
+        var scrollY = 1;
+        log(scrollY == 1 ? &quot;PASS: scrollY successfully shadowed&quot; : &quot;FAIL: scrollY was not shadowed&quot;);
+        var self = 1;
+        log(self == 1 ? &quot;PASS: self successfully shadowed&quot; : &quot;FAIL: self was not shadowed&quot;);
+        var top = 1;
+        log(top == 1 ? &quot;PASS: top successfully shadowed&quot; : &quot;FAIL: top was not shadowed&quot;);
+        var onabort = 1;
+        log(onabort == 1 ? &quot;PASS: onabort successfully shadowed&quot; : &quot;FAIL: onabort was not shadowed&quot;);
+        var onblur = 1;
+        log(onblur == 1 ? &quot;PASS: onblur successfully shadowed&quot; : &quot;FAIL: onblur was not shadowed&quot;);
+        var onchange = 1;
+        log(onchange == 1 ? &quot;PASS: onchange successfully shadowed&quot; : &quot;FAIL: onchange was not shadowed&quot;);
+        var onclick = 1;
+        log(onclick == 1 ? &quot;PASS: onclick successfully shadowed&quot; : &quot;FAIL: onclick was not shadowed&quot;);
+        var ondblclick = 1;
+        log(ondblclick == 1 ? &quot;PASS: ondblclick successfully shadowed&quot; : &quot;FAIL: ondblclick was not shadowed&quot;);
+        var onerror = 1;
+        log(onerror == 1 ? &quot;PASS: onerror successfully shadowed&quot; : &quot;FAIL: onerror was not shadowed&quot;);
+        var onfocus = 1;
+        log(onfocus == 1 ? &quot;PASS: onfocus successfully shadowed&quot; : &quot;FAIL: onfocus was not shadowed&quot;);
+        var onkeydown = 1;
+        log(onkeydown == 1 ? &quot;PASS: onkeydown successfully shadowed&quot; : &quot;FAIL: onkeydown was not shadowed&quot;);
+        var onkeypress = 1;
+        log(onkeypress == 1 ? &quot;PASS: onkeypress successfully shadowed&quot; : &quot;FAIL: onkeypress was not shadowed&quot;);
+        var onkeyup = 1;
+        log(onkeyup == 1 ? &quot;PASS: onkeyup successfully shadowed&quot; : &quot;FAIL: onkeyup was not shadowed&quot;);
+        var onload = 1;
+        log(onload == 1 ? &quot;PASS: onload successfully shadowed&quot; : &quot;FAIL: onload was not shadowed&quot;);
+        var onmousedown = 1;
+        log(onmousedown == 1 ? &quot;PASS: onmousedown successfully shadowed&quot; : &quot;FAIL: onmousedown was not shadowed&quot;);
+        var onmousemove = 1;
+        log(onmousemove == 1 ? &quot;PASS: onmousemove successfully shadowed&quot; : &quot;FAIL: onmousemove was not shadowed&quot;);
+        var onmouseout = 1;
+        log(onmouseout == 1 ? &quot;PASS: onmouseout successfully shadowed&quot; : &quot;FAIL: onmouseout was not shadowed&quot;);
+        var onmouseover = 1;
+        log(onmouseover == 1 ? &quot;PASS: onmouseover successfully shadowed&quot; : &quot;FAIL: onmouseover was not shadowed&quot;);
+        var onmouseup = 1;
+        log(onmouseup == 1 ? &quot;PASS: onmouseup successfully shadowed&quot; : &quot;FAIL: onmouseup was not shadowed&quot;);
+        var onmousewheel = 1;
+        log(onmousewheel == 1 ? &quot;PASS: onmousewheel successfully shadowed&quot; : &quot;FAIL: onmousewheel was not shadowed&quot;);
+        var onreset = 1;
+        log(onreset == 1 ? &quot;PASS: onreset successfully shadowed&quot; : &quot;FAIL: onreset was not shadowed&quot;);
+        var onresize = 1;
+        log(onresize == 1 ? &quot;PASS: onresize successfully shadowed&quot; : &quot;FAIL: onresize was not shadowed&quot;);
+        var onscroll = 1;
+        log(onscroll == 1 ? &quot;PASS: onscroll successfully shadowed&quot; : &quot;FAIL: onscroll was not shadowed&quot;);
+        var onsearch = 1;
+        log(onsearch == 1 ? &quot;PASS: onsearch successfully shadowed&quot; : &quot;FAIL: onsearch was not shadowed&quot;);
+        var onselect = 1;
+        log(onselect == 1 ? &quot;PASS: onselect successfully shadowed&quot; : &quot;FAIL: onselect was not shadowed&quot;);
+        var onsubmit = 1;
+        log(onsubmit == 1 ? &quot;PASS: onsubmit successfully shadowed&quot; : &quot;FAIL: onsubmit was not shadowed&quot;);
+        var onunload = 1;
+        log(onunload == 1 ? &quot;PASS: onunload successfully shadowed&quot; : &quot;FAIL: onunload was not shadowed&quot;);
+        var onbeforeunload = 1;
+        log(onbeforeunload == 1 ? &quot;PASS: onbeforeunload successfully shadowed&quot; : &quot;FAIL: onbeforeunload was not shadowed&quot;);
+        var frameElement = 1;
+        log(frameElement == 1 ? &quot;PASS: frameElement successfully shadowed&quot; : &quot;FAIL: frameElement was not shadowed&quot;);
+        var window = 1;
+        log(window == 1 ? &quot;PASS: window successfully shadowed&quot; : &quot;FAIL: window was not shadowed&quot;);
+
+        // Window functions
+        var getSelection = 1;
+        log(getSelection == 1 ? &quot;PASS: getSelection successfully shadowed&quot; : &quot;FAIL: getSelection was not shadowed&quot;);
+        var getComputedStyle = 1;
+        log(getComputedStyle == 1 ? &quot;PASS: getComputedStyle successfully shadowed&quot; : &quot;FAIL: getComputedStyle was not shadowed&quot;);
+        var getMatchedCSSRules = 1;
+        log(getMatchedCSSRules == 1 ? &quot;PASS: getMatchedCSSRules successfully shadowed&quot; : &quot;FAIL: getMatchedCSSRules was not shadowed&quot;);
+        var atob = 1;
+        log(atob == 1 ? &quot;PASS: atob successfully shadowed&quot; : &quot;FAIL: atob was not shadowed&quot;);
+        var btoa = 1;
+        log(btoa == 1 ? &quot;PASS: btoa successfully shadowed&quot; : &quot;FAIL: btoa was not shadowed&quot;);
+        var scroll = 1;
+        log(scroll == 1 ? &quot;PASS: scroll successfully shadowed&quot; : &quot;FAIL: scroll was not shadowed&quot;);
+        var scrollBy = 1;
+        log(scrollBy == 1 ? &quot;PASS: scrollBy successfully shadowed&quot; : &quot;FAIL: scrollBy was not shadowed&quot;);
+        var scrollTo = 1;
+        log(scrollTo == 1 ? &quot;PASS: scrollTo successfully shadowed&quot; : &quot;FAIL: scrollTo was not shadowed&quot;);
+        var moveBy = 1;
+        log(moveBy == 1 ? &quot;PASS: moveBy successfully shadowed&quot; : &quot;FAIL: moveBy was not shadowed&quot;);
+        var moveTo = 1;
+        log(moveTo == 1 ? &quot;PASS: moveTo successfully shadowed&quot; : &quot;FAIL: moveTo was not shadowed&quot;);
+        var resizeBy = 1;
+        log(resizeBy == 1 ? &quot;PASS: resizeBy successfully shadowed&quot; : &quot;FAIL: resizeBy was not shadowed&quot;);
+        var resizeTo = 1;
+        log(resizeTo == 1 ? &quot;PASS: resizeTo successfully shadowed&quot; : &quot;FAIL: resizeTo was not shadowed&quot;);
+        var alert = 1;
+        log(alert == 1 ? &quot;PASS: alert successfully shadowed&quot; : &quot;FAIL: alert was not shadowed&quot;);
+        var confirm = 1;
+        log(confirm == 1 ? &quot;PASS: confirm successfully shadowed&quot; : &quot;FAIL: confirm was not shadowed&quot;);
+        var prompt = 1;
+        log(prompt == 1 ? &quot;PASS: prompt successfully shadowed&quot; : &quot;FAIL: prompt was not shadowed&quot;);
+        var open = 1;
+        log(open == 1 ? &quot;PASS: open successfully shadowed&quot; : &quot;FAIL: open was not shadowed&quot;);
+        var print = 1;
+        log(print == 1 ? &quot;PASS: print successfully shadowed&quot; : &quot;FAIL: print was not shadowed&quot;);
+        var setTimeout = 1;
+        log(setTimeout == 1 ? &quot;PASS: setTimeout successfully shadowed&quot; : &quot;FAIL: setTimeout was not shadowed&quot;);
+        var clearTimeout = 1;
+        log(clearTimeout == 1 ? &quot;PASS: clearTimeout successfully shadowed&quot; : &quot;FAIL: clearTimeout was not shadowed&quot;);
+        var focus = 1;
+        log(focus == 1 ? &quot;PASS: focus successfully shadowed&quot; : &quot;FAIL: focus was not shadowed&quot;);
+        var blur = 1;
+        log(blur == 1 ? &quot;PASS: blur successfully shadowed&quot; : &quot;FAIL: blur was not shadowed&quot;);
+        var close = 1;
+        log(close == 1 ? &quot;PASS: close successfully shadowed&quot; : &quot;FAIL: close was not shadowed&quot;);
+        var setInterval = 1;
+        log(setInterval == 1 ? &quot;PASS: setInterval successfully shadowed&quot; : &quot;FAIL: setInterval was not shadowed&quot;);
+        var clearInterval = 1;
+        log(clearInterval == 1 ? &quot;PASS: clearInterval successfully shadowed&quot; : &quot;FAIL: clearInterval was not shadowed&quot;);
+        var captureEvents = 1;
+        log(captureEvents == 1 ? &quot;PASS: captureEvents successfully shadowed&quot; : &quot;FAIL: captureEvents was not shadowed&quot;);
+        var releaseEvents = 1;
+        log(releaseEvents == 1 ? &quot;PASS: releaseEvents successfully shadowed&quot; : &quot;FAIL: releaseEvents was not shadowed&quot;);
+        var addEventListener = 1;
+        log(addEventListener == 1 ? &quot;PASS: addEventListener successfully shadowed&quot; : &quot;FAIL: addEventListener was not shadowed&quot;);
+        var removeEventListener = 1;
+        log(removeEventListener == 1 ? &quot;PASS: removeEventListener successfully shadowed&quot; : &quot;FAIL: removeEventListener was not shadowed&quot;);
+        var showModalDialog = 1;
+        log(showModalDialog == 1 ? &quot;PASS: showModalDialog successfully shadowed&quot; : &quot;FAIL: showModalDialog was not shadowed&quot;);
+        var find = 1;
+        log(find == 1 ? &quot;PASS: find successfully shadowed&quot; : &quot;FAIL: find was not shadowed&quot;);
+        var stop = 1;
+        log(stop == 1 ? &quot;PASS: stop successfully shadowed&quot; : &quot;FAIL: stop was not shadowed&quot;);
+
+        // Constructors
+        var Image = 1;
+        log(Image == 1 ? &quot;PASS: Image successfully shadowed&quot; : &quot;FAIL: Image was not shadowed&quot;);
+        var Option = 1;
+        log(Option == 1 ? &quot;PASS: Option successfully shadowed&quot; : &quot;FAIL: Option was not shadowed&quot;);
+        var DOMException = 1;
+        log(DOMException == 1 ? &quot;PASS: DOMException successfully shadowed&quot; : &quot;FAIL: DOMException was not shadowed&quot;);
+        var XMLHttpRequest = 1;
+        log(XMLHttpRequest == 1 ? &quot;PASS: XMLHttpRequest successfully shadowed&quot; : &quot;FAIL: XMLHttpRequest was not shadowed&quot;);
+        var XSLTProcessor = 1;
+        log(XSLTProcessor == 1 ? &quot;PASS: XSLTProcessor successfully shadowed&quot; : &quot;FAIL: XSLTProcessor was not shadowed&quot;);
+        var StyleSheet = 1;
+        log(StyleSheet == 1 ? &quot;PASS: StyleSheet successfully shadowed&quot; : &quot;FAIL: StyleSheet was not shadowed&quot;);
+        var CSSStyleSheet = 1;
+        log(CSSStyleSheet == 1 ? &quot;PASS: CSSStyleSheet successfully shadowed&quot; : &quot;FAIL: CSSStyleSheet was not shadowed&quot;);
+        var CSSValue = 1;
+        log(CSSValue == 1 ? &quot;PASS: CSSValue successfully shadowed&quot; : &quot;FAIL: CSSValue was not shadowed&quot;);
+        var CSSPrimitiveValue = 1;
+        log(CSSPrimitiveValue == 1 ? &quot;PASS: CSSPrimitiveValue successfully shadowed&quot; : &quot;FAIL: CSSPrimitiveValue was not shadowed&quot;);
+        var CSSValueList = 1;
+        log(CSSValueList == 1 ? &quot;PASS: CSSValueList successfully shadowed&quot; : &quot;FAIL: CSSValueList was not shadowed&quot;);
+        var CSSRule = 1;
+        log(CSSRule == 1 ? &quot;PASS: CSSRule successfully shadowed&quot; : &quot;FAIL: CSSRule was not shadowed&quot;);
+        var CSSCharsetRule = 1;
+        log(CSSCharsetRule == 1 ? &quot;PASS: CSSCharsetRule successfully shadowed&quot; : &quot;FAIL: CSSCharsetRule was not shadowed&quot;);
+        var CSSFontFaceRule = 1;
+        log(CSSFontFaceRule == 1 ? &quot;PASS: CSSFontFaceRule successfully shadowed&quot; : &quot;FAIL: CSSFontFaceRule was not shadowed&quot;);
+        var CSSImportRule = 1;
+        log(CSSImportRule == 1 ? &quot;PASS: CSSImportRule successfully shadowed&quot; : &quot;FAIL: CSSImportRule was not shadowed&quot;);
+        var CSSMediaRule = 1;
+        log(CSSMediaRule == 1 ? &quot;PASS: CSSMediaRule successfully shadowed&quot; : &quot;FAIL: CSSMediaRule was not shadowed&quot;);
+        var CSSPageRule = 1;
+        log(CSSPageRule == 1 ? &quot;PASS: CSSPageRule successfully shadowed&quot; : &quot;FAIL: CSSPageRule was not shadowed&quot;);
+        var CSSStyleRule = 1;
+        log(CSSStyleRule == 1 ? &quot;PASS: CSSStyleRule successfully shadowed&quot; : &quot;FAIL: CSSStyleRule was not shadowed&quot;);
+        var CSSStyleDeclaration = 1;
+        log(CSSStyleDeclaration == 1 ? &quot;PASS: CSSStyleDeclaration successfully shadowed&quot; : &quot;FAIL: CSSStyleDeclaration was not shadowed&quot;);
+        var MediaList = 1;
+        log(MediaList == 1 ? &quot;PASS: MediaList successfully shadowed&quot; : &quot;FAIL: MediaList was not shadowed&quot;);
+        var Counter = 1;
+        log(Counter == 1 ? &quot;PASS: Counter successfully shadowed&quot; : &quot;FAIL: Counter was not shadowed&quot;);
+        var CSSRuleList = 1;
+        log(CSSRuleList == 1 ? &quot;PASS: CSSRuleList successfully shadowed&quot; : &quot;FAIL: CSSRuleList was not shadowed&quot;);
+        var Rect = 1;
+        log(Rect == 1 ? &quot;PASS: Rect successfully shadowed&quot; : &quot;FAIL: Rect was not shadowed&quot;);
+        var DOMImplementation = 1;
+        log(DOMImplementation == 1 ? &quot;PASS: DOMImplementation successfully shadowed&quot; : &quot;FAIL: DOMImplementation was not shadowed&quot;);
+        var DocumentFragment = 1;
+        log(DocumentFragment == 1 ? &quot;PASS: DocumentFragment successfully shadowed&quot; : &quot;FAIL: DocumentFragment was not shadowed&quot;);
+        var Document = 1;
+        log(Document == 1 ? &quot;PASS: Document successfully shadowed&quot; : &quot;FAIL: Document was not shadowed&quot;);
+        var Node = 1;
+        log(Node == 1 ? &quot;PASS: Node successfully shadowed&quot; : &quot;FAIL: Node was not shadowed&quot;);
+        var NodeList = 1;
+        log(NodeList == 1 ? &quot;PASS: NodeList successfully shadowed&quot; : &quot;FAIL: NodeList was not shadowed&quot;);
+        var NamedNodeMap = 1;
+        log(NamedNodeMap == 1 ? &quot;PASS: NamedNodeMap successfully shadowed&quot; : &quot;FAIL: NamedNodeMap was not shadowed&quot;);
+        var CharacterData = 1;
+        log(CharacterData == 1 ? &quot;PASS: CharacterData successfully shadowed&quot; : &quot;FAIL: CharacterData was not shadowed&quot;);
+        var Attr = 1;
+        log(Attr == 1 ? &quot;PASS: Attr successfully shadowed&quot; : &quot;FAIL: Attr was not shadowed&quot;);
+        var Element = 1;
+        log(Element == 1 ? &quot;PASS: Element successfully shadowed&quot; : &quot;FAIL: Element was not shadowed&quot;);
+        var Text = 1;
+        log(Text == 1 ? &quot;PASS: Text successfully shadowed&quot; : &quot;FAIL: Text was not shadowed&quot;);
+        var Comment = 1;
+        log(Comment == 1 ? &quot;PASS: Comment successfully shadowed&quot; : &quot;FAIL: Comment was not shadowed&quot;);
+        var CDATASection = 1;
+        log(CDATASection == 1 ? &quot;PASS: CDATASection successfully shadowed&quot; : &quot;FAIL: CDATASection was not shadowed&quot;);
+        var DocumentType = 1;
+        log(DocumentType == 1 ? &quot;PASS: DocumentType successfully shadowed&quot; : &quot;FAIL: DocumentType was not shadowed&quot;);
+        var Notation = 1;
+        log(Notation == 1 ? &quot;PASS: Notation successfully shadowed&quot; : &quot;FAIL: Notation was not shadowed&quot;);
+        var Entity = 1;
+        log(Entity == 1 ? &quot;PASS: Entity successfully shadowed&quot; : &quot;FAIL: Entity was not shadowed&quot;);
+        var EntityReference = 1;
+        log(EntityReference == 1 ? &quot;PASS: EntityReference successfully shadowed&quot; : &quot;FAIL: EntityReference was not shadowed&quot;);
+        var ProcessingInstruction = 1;
+        log(ProcessingInstruction == 1 ? &quot;PASS: ProcessingInstruction successfully shadowed&quot; : &quot;FAIL: ProcessingInstruction was not shadowed&quot;);
+        var HTMLDocument = 1;
+        log(HTMLDocument == 1 ? &quot;PASS: HTMLDocument successfully shadowed&quot; : &quot;FAIL: HTMLDocument was not shadowed&quot;);
+        var HTMLElement = 1;
+        log(HTMLElement == 1 ? &quot;PASS: HTMLElement successfully shadowed&quot; : &quot;FAIL: HTMLElement was not shadowed&quot;);
+        var HTMLAnchorElement = 1;
+        log(HTMLAnchorElement == 1 ? &quot;PASS: HTMLAnchorElement successfully shadowed&quot; : &quot;FAIL: HTMLAnchorElement was not shadowed&quot;);
+        var HTMLAppletElement = 1;
+        log(HTMLAppletElement == 1 ? &quot;PASS: HTMLAppletElement successfully shadowed&quot; : &quot;FAIL: HTMLAppletElement was not shadowed&quot;);
+        var HTMLAreaElement = 1;
+        log(HTMLAreaElement == 1 ? &quot;PASS: HTMLAreaElement successfully shadowed&quot; : &quot;FAIL: HTMLAreaElement was not shadowed&quot;);
+        var HTMLBRElement = 1;
+        log(HTMLBRElement == 1 ? &quot;PASS: HTMLBRElement successfully shadowed&quot; : &quot;FAIL: HTMLBRElement was not shadowed&quot;);
+        var HTMLBaseElement = 1;
+        log(HTMLBaseElement == 1 ? &quot;PASS: HTMLBaseElement successfully shadowed&quot; : &quot;FAIL: HTMLBaseElement was not shadowed&quot;);
+        var HTMLBaseFontElement = 1;
+        log(HTMLBaseFontElement == 1 ? &quot;PASS: HTMLBaseFontElement successfully shadowed&quot; : &quot;FAIL: HTMLBaseFontElement was not shadowed&quot;);
+        var HTMLBlockquoteElement = 1;
+        log(HTMLBlockquoteElement == 1 ? &quot;PASS: HTMLBlockquoteElement successfully shadowed&quot; : &quot;FAIL: HTMLBlockquoteElement was not shadowed&quot;);
+        var HTMLBodyElement = 1;
+        log(HTMLBodyElement == 1 ? &quot;PASS: HTMLBodyElement successfully shadowed&quot; : &quot;FAIL: HTMLBodyElement was not shadowed&quot;);
+        var HTMLButtonElement = 1;
+        log(HTMLButtonElement == 1 ? &quot;PASS: HTMLButtonElement successfully shadowed&quot; : &quot;FAIL: HTMLButtonElement was not shadowed&quot;);
+        var HTMLCanvasElement = 1;
+        log(HTMLCanvasElement == 1 ? &quot;PASS: HTMLCanvasElement successfully shadowed&quot; : &quot;FAIL: HTMLCanvasElement was not shadowed&quot;);
+        var HTMLDListElement = 1;
+        log(HTMLDListElement == 1 ? &quot;PASS: HTMLDListElement successfully shadowed&quot; : &quot;FAIL: HTMLDListElement was not shadowed&quot;);
+        var HTMLDirectoryElement = 1;
+        log(HTMLDirectoryElement == 1 ? &quot;PASS: HTMLDirectoryElement successfully shadowed&quot; : &quot;FAIL: HTMLDirectoryElement was not shadowed&quot;);
+        var HTMLDivElement = 1;
+        log(HTMLDivElement == 1 ? &quot;PASS: HTMLDivElement successfully shadowed&quot; : &quot;FAIL: HTMLDivElement was not shadowed&quot;);
+        var HTMLEmbedElement = 1;
+        log(HTMLEmbedElement == 1 ? &quot;PASS: HTMLEmbedElement successfully shadowed&quot; : &quot;FAIL: HTMLEmbedElement was not shadowed&quot;);
+        var HTMLFieldSetElement = 1;
+        log(HTMLFieldSetElement == 1 ? &quot;PASS: HTMLFieldSetElement successfully shadowed&quot; : &quot;FAIL: HTMLFieldSetElement was not shadowed&quot;);
+        var HTMLFontElement = 1;
+        log(HTMLFontElement == 1 ? &quot;PASS: HTMLFontElement successfully shadowed&quot; : &quot;FAIL: HTMLFontElement was not shadowed&quot;);
+        var HTMLFormElement = 1;
+        log(HTMLFormElement == 1 ? &quot;PASS: HTMLFormElement successfully shadowed&quot; : &quot;FAIL: HTMLFormElement was not shadowed&quot;);
+        var HTMLFrameElement = 1;
+        log(HTMLFrameElement == 1 ? &quot;PASS: HTMLFrameElement successfully shadowed&quot; : &quot;FAIL: HTMLFrameElement was not shadowed&quot;);
+        var HTMLFrameSetElement = 1;
+        log(HTMLFrameSetElement == 1 ? &quot;PASS: HTMLFrameSetElement successfully shadowed&quot; : &quot;FAIL: HTMLFrameSetElement was not shadowed&quot;);
+        var HTMLHRElement = 1;
+        log(HTMLHRElement == 1 ? &quot;PASS: HTMLHRElement successfully shadowed&quot; : &quot;FAIL: HTMLHRElement was not shadowed&quot;);
+        var HTMLHeadElement = 1;
+        log(HTMLHeadElement == 1 ? &quot;PASS: HTMLHeadElement successfully shadowed&quot; : &quot;FAIL: HTMLHeadElement was not shadowed&quot;);
+        var HTMLHeadingElement = 1;
+        log(HTMLHeadingElement == 1 ? &quot;PASS: HTMLHeadingElement successfully shadowed&quot; : &quot;FAIL: HTMLHeadingElement was not shadowed&quot;);
+        var HTMLHtmlElement = 1;
+        log(HTMLHtmlElement == 1 ? &quot;PASS: HTMLHtmlElement successfully shadowed&quot; : &quot;FAIL: HTMLHtmlElement was not shadowed&quot;);
+        var HTMLIFrameElement = 1;
+        log(HTMLIFrameElement == 1 ? &quot;PASS: HTMLIFrameElement successfully shadowed&quot; : &quot;FAIL: HTMLIFrameElement was not shadowed&quot;);
+        var HTMLImageElement = 1;
+        log(HTMLImageElement == 1 ? &quot;PASS: HTMLImageElement successfully shadowed&quot; : &quot;FAIL: HTMLImageElement was not shadowed&quot;);
+        var HTMLInputElement = 1;
+        log(HTMLInputElement == 1 ? &quot;PASS: HTMLInputElement successfully shadowed&quot; : &quot;FAIL: HTMLInputElement was not shadowed&quot;);
+        var HTMLIsIndexElement = 1;
+        log(HTMLIsIndexElement == 1 ? &quot;PASS: HTMLIsIndexElement successfully shadowed&quot; : &quot;FAIL: HTMLIsIndexElement was not shadowed&quot;);
+        var HTMLLIElement = 1;
+        log(HTMLLIElement == 1 ? &quot;PASS: HTMLLIElement successfully shadowed&quot; : &quot;FAIL: HTMLLIElement was not shadowed&quot;);
+        var HTMLLabelElement = 1;
+        log(HTMLLabelElement == 1 ? &quot;PASS: HTMLLabelElement successfully shadowed&quot; : &quot;FAIL: HTMLLabelElement was not shadowed&quot;);
+        var HTMLLegendElement = 1;
+        log(HTMLLegendElement == 1 ? &quot;PASS: HTMLLegendElement successfully shadowed&quot; : &quot;FAIL: HTMLLegendElement was not shadowed&quot;);
+        var HTMLLinkElement = 1;
+        log(HTMLLinkElement == 1 ? &quot;PASS: HTMLLinkElement successfully shadowed&quot; : &quot;FAIL: HTMLLinkElement was not shadowed&quot;);
+        var HTMLMapElement = 1;
+        log(HTMLMapElement == 1 ? &quot;PASS: HTMLMapElement successfully shadowed&quot; : &quot;FAIL: HTMLMapElement was not shadowed&quot;);
+        var HTMLMarqueeElement = 1;
+        log(HTMLMarqueeElement == 1 ? &quot;PASS: HTMLMarqueeElement successfully shadowed&quot; : &quot;FAIL: HTMLMarqueeElement was not shadowed&quot;);
+        var HTMLMenuElement = 1;
+        log(HTMLMenuElement == 1 ? &quot;PASS: HTMLMenuElement successfully shadowed&quot; : &quot;FAIL: HTMLMenuElement was not shadowed&quot;);
+        var HTMLMetaElement = 1;
+        log(HTMLMetaElement == 1 ? &quot;PASS: HTMLMetaElement successfully shadowed&quot; : &quot;FAIL: HTMLMetaElement was not shadowed&quot;);
+        var HTMLModElement = 1;
+        log(HTMLModElement == 1 ? &quot;PASS: HTMLModElement successfully shadowed&quot; : &quot;FAIL: HTMLModElement was not shadowed&quot;);
+        var HTMLOListElement = 1;
+        log(HTMLOListElement == 1 ? &quot;PASS: HTMLOListElement successfully shadowed&quot; : &quot;FAIL: HTMLOListElement was not shadowed&quot;);
+        var HTMLObjectElement = 1;
+        log(HTMLObjectElement == 1 ? &quot;PASS: HTMLObjectElement successfully shadowed&quot; : &quot;FAIL: HTMLObjectElement was not shadowed&quot;);
+        var HTMLOptGroupElement = 1;
+        log(HTMLOptGroupElement == 1 ? &quot;PASS: HTMLOptGroupElement successfully shadowed&quot; : &quot;FAIL: HTMLOptGroupElement was not shadowed&quot;);
+        var HTMLOptionElement = 1;
+        log(HTMLOptionElement == 1 ? &quot;PASS: HTMLOptionElement successfully shadowed&quot; : &quot;FAIL: HTMLOptionElement was not shadowed&quot;);
+        var HTMLParagraphElement = 1;
+        log(HTMLParagraphElement == 1 ? &quot;PASS: HTMLParagraphElement successfully shadowed&quot; : &quot;FAIL: HTMLParagraphElement was not shadowed&quot;);
+        var HTMLParamElement = 1;
+        log(HTMLParamElement == 1 ? &quot;PASS: HTMLParamElement successfully shadowed&quot; : &quot;FAIL: HTMLParamElement was not shadowed&quot;);
+        var HTMLPreElement = 1;
+        log(HTMLPreElement == 1 ? &quot;PASS: HTMLPreElement successfully shadowed&quot; : &quot;FAIL: HTMLPreElement was not shadowed&quot;);
+        var HTMLQuoteElement = 1;
+        log(HTMLQuoteElement == 1 ? &quot;PASS: HTMLQuoteElement successfully shadowed&quot; : &quot;FAIL: HTMLQuoteElement was not shadowed&quot;);
+        var HTMLScriptElement = 1;
+        log(HTMLScriptElement == 1 ? &quot;PASS: HTMLScriptElement successfully shadowed&quot; : &quot;FAIL: HTMLScriptElement was not shadowed&quot;);
+        var HTMLSelectElement = 1;
+        log(HTMLSelectElement == 1 ? &quot;PASS: HTMLSelectElement successfully shadowed&quot; : &quot;FAIL: HTMLSelectElement was not shadowed&quot;);
+        var HTMLStyleElement = 1;
+        log(HTMLStyleElement == 1 ? &quot;PASS: HTMLStyleElement successfully shadowed&quot; : &quot;FAIL: HTMLStyleElement was not shadowed&quot;);
+        var HTMLTableCaptionElement = 1;
+        log(HTMLTableCaptionElement == 1 ? &quot;PASS: HTMLTableCaptionElement successfully shadowed&quot; : &quot;FAIL: HTMLTableCaptionElement was not shadowed&quot;);
+        var HTMLTableCellElement = 1;
+        log(HTMLTableCellElement == 1 ? &quot;PASS: HTMLTableCellElement successfully shadowed&quot; : &quot;FAIL: HTMLTableCellElement was not shadowed&quot;);
+        var HTMLTableColElement = 1;
+        log(HTMLTableColElement == 1 ? &quot;PASS: HTMLTableColElement successfully shadowed&quot; : &quot;FAIL: HTMLTableColElement was not shadowed&quot;);
+        var HTMLTableElement = 1;
+        log(HTMLTableElement == 1 ? &quot;PASS: HTMLTableElement successfully shadowed&quot; : &quot;FAIL: HTMLTableElement was not shadowed&quot;);
+        var HTMLTableRowElement = 1;
+        log(HTMLTableRowElement == 1 ? &quot;PASS: HTMLTableRowElement successfully shadowed&quot; : &quot;FAIL: HTMLTableRowElement was not shadowed&quot;);
+        var HTMLTableSectionElement = 1;
+        log(HTMLTableSectionElement == 1 ? &quot;PASS: HTMLTableSectionElement successfully shadowed&quot; : &quot;FAIL: HTMLTableSectionElement was not shadowed&quot;);
+        var HTMLTextAreaElement = 1;
+        log(HTMLTextAreaElement == 1 ? &quot;PASS: HTMLTextAreaElement successfully shadowed&quot; : &quot;FAIL: HTMLTextAreaElement was not shadowed&quot;);
+        var HTMLTitleElement = 1;
+        log(HTMLTitleElement == 1 ? &quot;PASS: HTMLTitleElement successfully shadowed&quot; : &quot;FAIL: HTMLTitleElement was not shadowed&quot;);
+        var HTMLUListElement = 1;
+        log(HTMLUListElement == 1 ? &quot;PASS: HTMLUListElement successfully shadowed&quot; : &quot;FAIL: HTMLUListElement was not shadowed&quot;);
+        var Event = 1;
+        log(Event == 1 ? &quot;PASS: Event successfully shadowed&quot; : &quot;FAIL: Event was not shadowed&quot;);
+        var MutationEvent = 1;
+        log(MutationEvent == 1 ? &quot;PASS: MutationEvent successfully shadowed&quot; : &quot;FAIL: MutationEvent was not shadowed&quot;);
+        var NodeFilter = 1;
+        log(NodeFilter == 1 ? &quot;PASS: NodeFilter successfully shadowed&quot; : &quot;FAIL: NodeFilter was not shadowed&quot;);
+        var Range = 1;
+        log(Range == 1 ? &quot;PASS: Range successfully shadowed&quot; : &quot;FAIL: Range was not shadowed&quot;);
+        var RangeException = 1;
+        log(RangeException == 1 ? &quot;PASS: RangeException successfully shadowed&quot; : &quot;FAIL: RangeException was not shadowed&quot;);
+        var XMLDocument = 1;
+        log(XMLDocument == 1 ? &quot;PASS: XMLDocument successfully shadowed&quot; : &quot;FAIL: XMLDocument was not shadowed&quot;);
+        var DOMParser = 1;
+        log(DOMParser == 1 ? &quot;PASS: DOMParser successfully shadowed&quot; : &quot;FAIL: DOMParser was not shadowed&quot;);
+        var XMLSerializer = 1;
+        log(XMLSerializer == 1 ? &quot;PASS: XMLSerializer successfully shadowed&quot; : &quot;FAIL: XMLSerializer was not shadowed&quot;);
+    &lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/ChangeLog (23986 => 23987)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/ChangeLog        2007-07-04 18:37:11 UTC (rev 23986)
+++ trunk/WebCore/ChangeLog        2007-07-04 20:04:31 UTC (rev 23987)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2007-07-04  Sam Weinig  &lt;sam@webkit.org&gt;
+
+        Reviewed by Mitz.
+
+        Patch for http://bugs.webkit.org/show_bug.cgi?id=14504
+        REGRESSION (r23573): Amazon Book Excerpt can not be viewed in recent nightly
+
+        - Made it possible (again) to shadow window properties with local variable names.
+
+        Test: fast/dom/Window/window-property-shadowing.html
+
+        * bindings/js/JSDOMWindowCustom.cpp:
+        (WebCore::JSDOMWindow::customPut):
+        * bindings/js/kjs_window.cpp:
+        (KJS::Window::put):
+        * bindings/scripts/CodeGeneratorJS.pm:
+        * page/DOMWindow.idl:
+
</ins><span class="cx"> 2007-07-03  Alice Liu  &lt;alice.liu@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Reviewed by Adam.
</span></span></pre></div>
<a id="trunkWebCorebindingsjsJSDOMWindowCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/bindings/js/JSDOMWindowCustom.cpp (23986 => 23987)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/bindings/js/JSDOMWindowCustom.cpp        2007-07-04 18:37:11 UTC (rev 23986)
+++ trunk/WebCore/bindings/js/JSDOMWindowCustom.cpp        2007-07-04 20:04:31 UTC (rev 23987)
</span><span class="lines">@@ -29,4 +29,19 @@
</span><span class="cx">     return getOverridePropertySlot(exec, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool JSDOMWindow::customPut(KJS::ExecState* exec, const KJS::Identifier&amp; propertyName, KJS::JSValue* value, int attr)
+{
+    if (!frame())
+        return true;
+
+    // Called by an internal KJS call or if we have a local override (e.g. &quot;var location&quot;)
+    // If yes, save time and jump directly to JSObject.
+    if ((attr != KJS::None &amp;&amp; attr != KJS::DontDelete) || (KJS::JSObject::getDirect(propertyName) &amp;&amp; isSafeScript(exec))) {
+        JSObject::put(exec, propertyName, value, attr);
+        return true;
+    }
+
+    return false;
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkWebCorebindingsjskjs_windowcpp"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/bindings/js/kjs_window.cpp (23986 => 23987)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/bindings/js/kjs_window.cpp        2007-07-04 18:37:11 UTC (rev 23986)
+++ trunk/WebCore/bindings/js/kjs_window.cpp        2007-07-04 20:04:31 UTC (rev 23987)
</span><span class="lines">@@ -874,20 +874,8 @@
</span><span class="cx">   return JSObject::getOwnPropertySlot(exec, propertyName, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Window::put(ExecState* exec, const Identifier &amp;propertyName, JSValue *value, int attr)
</del><ins>+void Window::put(ExecState* exec, const Identifier&amp; propertyName, JSValue* value, int attr)
</ins><span class="cx"> {
</span><del>-  if (!m_frame)
-    return;
-    
-  // Called by an internal KJS call.
-  // If yes, save time and jump directly to JSObject.
-  if ((attr != None &amp;&amp; attr != DontDelete)
-       // Same thing if we have a local override (e.g. &quot;var location&quot;)
-       || (JSObject::getDirect(propertyName) &amp;&amp; isSafeScript(exec))) {
-    JSObject::put( exec, propertyName, value, attr );
-    return;
-  }
-
</del><span class="cx">   const HashEntry* entry = Lookup::findEntry(&amp;WindowTable, propertyName);
</span><span class="cx">   if (entry) {
</span><span class="cx">     switch(entry-&gt;value) {
</span></span></pre></div>
<a id="trunkWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/bindings/scripts/CodeGeneratorJS.pm (23986 => 23987)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/bindings/scripts/CodeGeneratorJS.pm        2007-07-04 18:37:11 UTC (rev 23986)
+++ trunk/WebCore/bindings/scripts/CodeGeneratorJS.pm        2007-07-04 20:04:31 UTC (rev 23987)
</span><span class="lines">@@ -984,8 +984,7 @@
</span><span class="cx">                 push(@implContent, &quot;    }\n&quot;);
</span><span class="cx">             }
</span><span class="cx">             if ($dataNode-&gt;extendedAttributes-&gt;{&quot;CustomPutFunction&quot;}) {
</span><del>-                push(@implContent, &quot;    bool didPut = customPut(exec, propertyName, value, attr);\n&quot;);
-                push(@implContent, &quot;    if (didPut)\n&quot;);
</del><ins>+                push(@implContent, &quot;    if (customPut(exec, propertyName, value, attr))\n&quot;);
</ins><span class="cx">                 push(@implContent, &quot;        return;\n&quot;);
</span><span class="cx">             }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkWebCorepageDOMWindowidl"></a>
<div class="modfile"><h4>Modified: trunk/WebCore/page/DOMWindow.idl (23986 => 23987)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/WebCore/page/DOMWindow.idl        2007-07-04 18:37:11 UTC (rev 23986)
+++ trunk/WebCore/page/DOMWindow.idl        2007-07-04 20:04:31 UTC (rev 23987)
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx"> 
</span><span class="cx"> module window {
</span><span class="cx"> 
</span><del>-    interface [LegacyParent=KJS::Window, DoNotCache, CheckDomainSecurity, GenerateNativeConverter, CustomGetOwnPropertySlot] DOMWindow {
</del><ins>+    interface [LegacyParent=KJS::Window, DoNotCache, CheckDomainSecurity, GenerateNativeConverter, CustomGetOwnPropertySlot, CustomPutFunction] DOMWindow {
</ins><span class="cx">         // DOM Level 0
</span><span class="cx">         readonly attribute Screen screen;
</span><span class="cx">         readonly attribute [DoNotCheckDomainSecurity] History history;
</span></span></pre>
</div>
</div>

</body>
</html>