Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / fast / js / var-declarations-shadowing.html
1 <p>
2 This page tests var declarations that attempt to shadow interesting global properties in
3 interesting ways. <a href="http://bugs.webkit.org/show_bug.cgi?id=16644">Bug 16644</a>.
4 </p>
5
6 <p>
7 If the test passes, you'll see a series of PASS messages below.
8 </p>
9
10 <pre id="console"></pre>
11
12 <script>
13 if (window.testRunner)
14     testRunner.dumpAsText();
15
16 function log(s)
17 {
18     document.getElementById("console").appendChild(document.createTextNode(s + "\n"));
19 }
20
21 function shouldBe(a, aDescription, b)
22 {
23     if (a == b) {
24         log("PASS: " + aDescription + " should be " + b + " and is.");
25     } else {
26         log("FAIL: " + aDescription + " should be " + b + " but instead is " + a + ".");
27     }
28 }
29
30 var marker = { };
31
32 var Node; // shadow existing property of the global object
33 eval("var Element;"); // ditto, but using eval
34
35 var toString; // shadow existing property of the global object's prototype
36 eval("var valueOf;"); // ditto, but using eval
37
38 shouldBe(Node == undefined, "Node == undefined", false);
39 shouldBe(eval('Node == undefined'), "eval('Node == undefined')", false);
40
41 shouldBe(Element == undefined, "Element == undefined", false);
42 shouldBe(eval('Element == undefined'), "eval('Element == undefined')", false);
43
44 shouldBe(toString == undefined, "toString == undefined", false);
45 shouldBe(eval('toString == undefined'), "eval('toString == undefined')", false);
46
47 shouldBe(valueOf == undefined, "valueOf == undefined", false);
48 shouldBe(eval('valueOf == undefined'), "eval('valueOf == undefined')", false);
49
50 log("-----");
51
52 // Repeat the tests above, this time explicitly overwriting existing properties
53
54 var HTMLElement = marker;
55 eval("var HTMLLinkElement = marker;");
56
57 var moveBy = marker;
58 eval("var find = marker;");
59
60 shouldBe(HTMLElement == marker, "HTMLElement == marker", true);
61 shouldBe(eval('HTMLElement == marker'), "eval('HTMLElement == marker')", true);
62
63 shouldBe(HTMLLinkElement == marker, "HTMLLinkElement == marker", true);
64 shouldBe(eval('HTMLLinkElement == marker'), "eval('HTMLLinkElement == marker')", true);
65
66 shouldBe(moveBy == marker, "moveBy == marker", true);
67 shouldBe(eval('moveBy == marker'), "eval('moveBy == marker')", true);
68
69 shouldBe(find == marker, "find == marker", true);
70 shouldBe(eval('find == marker'), "eval('find == marker')", true);
71
72 log("-----");
73
74 // Various variable names that are, or at one point were, unsettable in WebKit.
75
76 try {
77     eval("var locationbar = marker");
78 } catch(e) { }
79 shouldBe(locationbar == marker, "locationbar == marker", true);
80 shouldBe(eval('locationbar == marker'), "eval('locationbar == marker')", true);
81
82 try {
83     eval("var menubar = marker");
84 } catch(e) { }
85 shouldBe(menubar == marker, "menubar == marker", true);
86 shouldBe(eval('menubar == marker'), "eval('menubar == marker')", true);
87
88 try {
89     eval("var personalbar = marker");
90 } catch(e) { }
91 shouldBe(personalbar == marker, "personalbar == marker", true);
92 shouldBe(eval('personalbar == marker'), "eval('personalbar == marker')", true);
93
94 try {
95     eval("var scrollbars = marker");
96 } catch(e) { }
97 shouldBe(scrollbars == marker, "scrollbars == marker", true);
98 shouldBe(eval('scrollbars == marker'), "eval('scrollbars == marker')", true);
99
100 try {
101     eval("var statusbar = marker");
102 } catch(e) { }
103 shouldBe(statusbar == marker, "statusbar == marker", true);
104 shouldBe(eval('statusbar == marker'), "eval('statusbar == marker')", true);
105
106 try {
107     eval("var toolbar = marker");
108 } catch(e) { }
109 shouldBe(toolbar == marker, "toolbar == marker", true);
110 shouldBe(eval('toolbar == marker'), "eval('toolbar == marker')", true);
111
112 try {
113     eval("var offscreenBuffering = marker");
114 } catch(e) { }
115 shouldBe(offscreenBuffering == marker, "offscreenBuffering == marker", true);
116 shouldBe(eval('offscreenBuffering == marker'), "eval('offscreenBuffering == marker')", true);
117
118 try {
119     eval("var outerHeight = marker");
120 } catch(e) { }
121 shouldBe(outerHeight == marker, "outerHeight == marker", true);
122 shouldBe(eval('outerHeight == marker'), "eval('outerHeight == marker')", true);
123
124 try {
125     eval("var outerWidth = marker");
126 } catch(e) { }
127 shouldBe(outerWidth == marker, "outerWidth == marker", true);
128 shouldBe(eval('outerWidth == marker'), "eval('outerWidth == marker')", true);
129
130 try {
131     eval("var innerHeight = marker");
132 } catch(e) { }
133 shouldBe(innerHeight == marker, "innerHeight == marker", true);
134 shouldBe(eval('innerHeight == marker'), "eval('innerHeight == marker')", true);
135
136 try {
137     eval("var innerWidth = marker");
138 } catch(e) { }
139 shouldBe(innerWidth == marker, "innerWidth == marker", true);
140 shouldBe(eval('innerWidth == marker'), "eval('innerWidth == marker')", true);
141
142 try {
143     eval("var screenX = marker");
144 } catch(e) { }
145 shouldBe(screenX == marker, "screenX == marker", true);
146 shouldBe(eval('screenX == marker'), "eval('screenX == marker')", true);
147
148 try {
149     eval("var screenY = marker");
150 } catch(e) { }
151 shouldBe(screenY == marker, "screenY == marker", true);
152 shouldBe(eval('screenY == marker'), "eval('screenY == marker')", true);
153
154 try {
155     eval("var screenLeft = marker");
156 } catch(e) { }
157 shouldBe(screenLeft == marker, "screenLeft == marker", true);
158 shouldBe(eval('screenLeft == marker'), "eval('screenLeft == marker')", true);
159
160 try {
161     eval("var screenTop = marker");
162 } catch(e) { }
163 shouldBe(screenTop == marker, "screenTop == marker", true);
164 shouldBe(eval('screenTop == marker'), "eval('screenTop == marker')", true);
165
166 try {
167     eval("var scrollX = marker");
168 } catch(e) { }
169 shouldBe(scrollX == marker, "scrollX == marker", true);
170 shouldBe(eval('scrollX == marker'), "eval('scrollX == marker')", true);
171
172 try {
173     eval("var scrollY = marker");
174 } catch(e) { }
175 shouldBe(scrollY == marker, "scrollY == marker", true);
176 shouldBe(eval('scrollY == marker'), "eval('scrollY == marker')", true);
177
178 try {
179     eval("var length = marker");
180 } catch(e) { }
181 shouldBe(length == marker, "length == marker", true);
182 shouldBe(eval('length == marker'), "eval('length == marker')", true);
183
184 try {
185     eval("var self = marker");
186 } catch(e) { }
187 shouldBe(self == marker, "self == marker", true);
188 shouldBe(eval('self == marker'), "eval('self == marker')", true);
189
190 try {
191     eval("var frames = marker");
192 } catch(e) { }
193 shouldBe(frames == marker, "frames == marker", true);
194 shouldBe(eval('frames == marker'), "eval('frames == marker')", true);
195
196 try {
197     eval("var opener = marker");
198 } catch(e) { }
199 shouldBe(opener == marker, "opener == marker", true);
200 shouldBe(eval('opener == marker'), "eval('opener == marker')", true);
201
202 try {
203     eval("var parent = marker");
204 } catch(e) { }
205 shouldBe(parent == marker, "parent == marker", true);
206 shouldBe(eval('parent == marker'), "eval('parent == marker')", true);
207
208 try {
209     eval("var devicePixelRatio = marker");
210 } catch(e) { }
211 shouldBe(devicePixelRatio == marker, "devicePixelRatio == marker", true);
212 shouldBe(eval('devicePixelRatio == marker'), "eval('devicePixelRatio == marker')", true);
213
214 try {
215     eval("var devicePixelRatio = marker");
216 } catch(e) { }
217 shouldBe(devicePixelRatio == marker, "devicePixelRatio == marker", true);
218 shouldBe(eval('devicePixelRatio == marker'), "eval('devicePixelRatio == marker')", true);
219
220 try {
221     eval("var navigator = marker");
222 } catch(e) { }
223 shouldBe(navigator == marker, "navigator == marker", false);
224 shouldBe(eval('navigator == marker'), "eval('navigator == marker')", false);
225
226 try {
227     eval("var clientInformation = marker");
228 } catch(e) { }
229 shouldBe(clientInformation == marker, "clientInformation == marker", true);
230 shouldBe(eval('clientInformation == marker'), "eval('clientInformation == marker')", true);
231
232 try {
233     eval("var status = marker");
234 } catch(e) { }
235 shouldBe(status == marker, "status == marker", true);
236 shouldBe(eval('status == marker'), "eval('status == marker')", true);
237
238 try {
239     eval("var defaultStatus = marker");
240 } catch(e) { }
241 shouldBe(defaultStatus == marker, "defaultStatus == marker", true);
242 shouldBe(eval('defaultStatus == marker'), "eval('defaultStatus == marker')", true);
243
244 try {
245     eval("var defaultstatus = marker");
246 } catch(e) { }
247 shouldBe(defaultstatus == marker, "defaultstatus == marker", true);
248 shouldBe(eval('defaultstatus == marker'), "eval('defaultstatus == marker')", true);
249
250 try {
251     eval("var screen = marker");
252 } catch(e) { }
253 shouldBe(screen == marker, "screen == marker", true);
254 shouldBe(eval('screen == marker'), "eval('screen == marker')", true);
255
256 try {
257     eval("var history = marker");
258 } catch(e) { }
259 shouldBe(history == marker, "history == marker", false);
260 shouldBe(eval('history == marker'), "eval('history == marker')", false);
261
262 log("-----");
263
264 try {
265     eval("var frameElement = marker");
266 } catch(e) { }
267 shouldBe(frameElement == marker, "frameElement == marker", false);
268 shouldBe(eval('frameElement == marker'), "eval('frameElement == marker')", false);
269
270 try {
271     eval("var pageXOffset = marker");
272 } catch(e) { }
273 shouldBe(pageXOffset == marker, "pageXOffset == marker", false);
274 shouldBe(eval('pageXOffset == marker'), "eval('pageXOffset == marker')", false);
275
276 try {
277     eval("var pageYOffset = marker");
278 } catch(e) { }
279 shouldBe(pageYOffset == marker, "pageYOffset == marker", false);
280 shouldBe(eval('pageYOffset == marker'), "eval('pageYOffset == marker')", false);
281
282 try {
283     eval("var closed = marker");
284 } catch(e) { }
285 shouldBe(closed == marker, "closed == marker", false);
286 shouldBe(eval('closed == marker'), "eval('closed == marker')", false);
287
288 try {
289     eval("var window = marker");
290 } catch(e) { }
291 shouldBe(window == marker, "window == marker", false);
292 shouldBe(eval('window == marker'), "eval('window == marker')", false);
293
294 try {
295     eval("var document = marker");
296 } catch(e) { }
297 shouldBe(document == marker, "document == marker", false);
298 shouldBe(eval('document == marker'), "eval('document == marker')", false);
299
300 try {
301     eval("var crypto = marker");
302 } catch(e) { }
303 shouldBe(crypto == marker, "crypto == marker", false);
304 shouldBe(eval('crypto == marker'), "eval('crypto == marker')", false);
305
306 try {
307     eval("var top = marker");
308 } catch(e) { }
309 shouldBe(top == marker, "top == marker", false);
310 shouldBe(eval('top == marker'), "eval('top == marker')", false);
311
312 </script>