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

Side by Side Diff: third_party/WebKit/LayoutTests/fast/js/put-forwards.html

Issue 2733763003: Reimplement [PutForwards] per spec (Closed)
Patch Set: avoid using v8::Maybe Created 3 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
(Empty)
1 <!DOCTYPE html>
2 <script src="../../resources/testharness.js"></script>
3 <script src="../../resources/testharnessreport.js"></script>
4 <script>
5 test(() => {
6 var getter_called = false;
7 var element = document.createElement("div");
8 var element_style = element.style;
9 var descriptor = Object.getOwnPropertyDescriptor(HTMLElement.prototype, "style");
10
11 Object.defineProperty(element, "style", {
12 get: function () {
13 getter_called = true;
14 return element_style;
15 },
16 set: descriptor.set
17 });
18
19 element.style = "color: green";
20
21 assert_true(getter_called, "Overridden getter should be called");
22 assert_equals(element_style.color, "green", "Put forwarding still works" );
23 }, "Overriding getter of [PutForwards] attribute");
24
25 test(() => {
26 var setter_called = false;
27 var element = document.createElement("div");
28 var element_style = element.style;
29 var descriptor = Object.getOwnPropertyDescriptor(CSSStyleDeclaration.pro totype, "cssText");
30
31 Object.defineProperty(element_style, "cssText", {
32 get: descriptor.get,
33 set: function (v) {
34 setter_called = true;
35 descriptor.set.call(this, v);
36 }
37 });
38
39 element.style = "color: green";
40
41 assert_true(setter_called, "Overridden setter should be called");
42 assert_equals(element_style.color, "green", "Put forwarding still works" );
43 }, "Overriding setter of [PutForwards] target attribute");
44
45 test(() => {
46 var element = document.createElement("div");
47 var element_style = element.style;
48 var fake_style = { cssText: "original" };
49 var descriptor = Object.getOwnPropertyDescriptor(HTMLElement.prototype, "style");
50
51 Object.defineProperty(element, "style", {
52 get: function () {
53 return fake_style;
54 },
55 set: descriptor.set
56 });
57
58 element.style = "color: green";
59
60 assert_equals(element_style.cssText, "", "Original value intact");
61 assert_equals(fake_style.cssText, "color: green", "Fake style object upd ated");
62 }, "Overriding target of [PutForwards] attribute");
63
64 test(() => {
65 var element = document.createElement("div");
66 var descriptor = Object.getOwnPropertyDescriptor(HTMLElement.prototype, "style");
67
68 Object.defineProperty(element, "style", {
69 get: function () {
70 throw "exception";
71 },
72 set: descriptor.set
73 });
74
75 assert_throws(null, () => element.style = "color: green");
76 }, "Exception propagation from getter of [PutForwards] attribute");
77
78 test(() => {
79 var element = document.createElement("div");
80 var element_style = element.style;
81 var descriptor = Object.getOwnPropertyDescriptor(CSSStyleDeclaration.pro totype, "cssText");
82
83 Object.defineProperty(element_style, "cssText", {
84 get: descriptor.get,
85 set: function (v) {
86 throw "exception";
87 }
88 });
89
90 assert_throws(null, () => element.style = "color: green");
91 }, "Exception propagation from setter of [PutForwards] target attribute");
92
93 test(() => {
94 var element = document.createElement("div");
95 var descriptor = Object.getOwnPropertyDescriptor(HTMLElement.prototype, "style");
96
97 Object.defineProperty(element, "style", {
98 get: function () {
99 return null;
100 },
101 set: descriptor.set
102 });
103
104 assert_throws(new TypeError, () => element.style = "color: green");
105 }, "TypeError when getter of [PutForwards] attribute returns non-object");
106 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698