Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(438)

Side by Side Diff: third_party/WebKit/LayoutTests/fast/dom/lenient-this.html

Issue 1380503002: binding: Makes Window/Location's attributes accessor-type properties. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated a test result. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <title>[LenientThis] test</title> 2 <title>[LenientThis] test</title>
3 <script src="../../resources/testharness.js"></script> 3 <script src="../../resources/testharness.js"></script>
4 <script src="../../resources/testharnessreport.js"></script> 4 <script src="../../resources/testharnessreport.js"></script>
5 <script> 5 <script>
6 test(function() { 6 test(function() {
7 // GlobalEventHandlers.onmouseenter is [LenientThis]. 7 // GlobalEventHandlers.onmouseenter is [LenientThis].
8 assert_equals(document.onmouseenter, null, "|this| is an appropriate object. "); 8 assert_equals(document.onmouseenter, null, "|this| is an appropriate object. ");
9 assert_equals(Document.prototype.onmouseenter, undefined, "|this| is not an appropriate object."); 9 assert_equals(Document.prototype.onmouseenter, undefined, "|this| is not an appropriate object.");
10 Document.prototype.onmouseenter = 'foo'; // must not throw. 10 Document.prototype.onmouseenter = 'foo'; // must not throw.
11 assert_equals(Document.prototype.onmouseenter, undefined, "the value must no t change."); 11 assert_equals(Document.prototype.onmouseenter, undefined, "the value must no t change.");
12 12
13 // GlobalEventHandlers.onmousedown is NOT [LenientThis]. 13 // GlobalEventHandlers.onmousedown is NOT [LenientThis].
14 assert_equals(document.onmousedown, null, "|this| is an appropriate object." ); 14 assert_equals(document.onmousedown, null, "|this| is an appropriate object." );
15 assert_throws(null, function() { 15 assert_throws(null, function() {
16 Document.prototype.onmousedown; 16 Document.prototype.onmousedown;
17 }, "Document.prototype is invalid as |this|."); 17 }, "Document.prototype is invalid as |this|.");
18 assert_throws(null, function() { 18 assert_throws(null, function() {
19 Document.prototype.onmousedown = 'foo'; 19 Document.prototype.onmousedown = 'foo';
20 }, "Document.prototype is invalid as |this|."); 20 }, "Document.prototype is invalid as |this|.");
21 }); 21 }, "Test [LenientThis] and non-[LenientThis].");
22
23 test(function() {
24 var noop = function() {};
25 var testPatterns = [
26 {name: 'document', instance: document, holder: Document.prototype, noninst ance: window},
27 {name: 'window', instance: window, holder: window, noninstance: document}
28 ];
29 function msg(pattern, text) {
30 return '[' + pattern.name + '] ' + text;
31 }
32 for (var p, i = 0; p = testPatterns[i]; ++i) {
33 var pd = Object.getOwnPropertyDescriptor(p.holder, 'onmouseleave');
34 // get
35 assert_equals(pd.get.call(p.noninstance), undefined, msg(p, 'get: non-inst ance should return undefined.'));
36 assert_equals(pd.get.call(p.instance), null, msg(p, 'get: instance should return null by default.'));
37
38 // set
39 assert_equals(pd.set.call(p.noninstance, noop), undefined, msg(p, 'set: se tter always returns undefined.'));
40 assert_equals(pd.get.call(p.noninstance), undefined, msg(p, 'set: non-inst ance should returns undefined.'));
41 assert_equals(pd.set.call(p.instance, noop), undefined, msg(p, 'set: even instance should return undefined.'));
42 assert_equals(pd.get.call(p.instance), noop, msg(p, 'set: instance should return the assigned function.'));
43 }
44
45 // document specific tests.
46 pd = Object.getOwnPropertyDescriptor(Document.prototype, 'onmouseleave');
47 assert_equals(pd.get.call(null), undefined, '[document] get: null is not a v alid instance.');
48 assert_equals(pd.get.call(undefined), undefined, '[document] get: undefined is not a valid instance.');
49
50 // window specific tests.
51 pd = Object.getOwnPropertyDescriptor(window, 'onmouseleave');
52 assert_equals(pd.get.call(null), noop, '[window] get: null should be interpr eted as the global object.');
53 assert_equals(pd.get.call(undefined), noop, '[window] get: undefined should be interpreted as the global object.');
54 assert_equals(pd.set.call(undefined, null), undefined, '[window] set: return s undefined.');
55 assert_equals(pd.get.call(undefined), null, '[window] set: should be updated .');
56
57 }, "Test with extracted accessors.");
22 </script> 58 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698