OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 var realms = [Realm.current(), Realm.create()]; | 5 var realms = [Realm.current(), Realm.create()]; |
6 | 6 |
7 // Check stack trace filtering across security contexts. | 7 // Check stack trace filtering across security contexts. |
8 var thrower_script = | 8 var thrower_script = |
9 "(function () { Realm.eval(Realm.current(), 'throw Error()') })"; | 9 "(function () { Realm.eval(Realm.current(), 'throw Error()') })"; |
10 Realm.shared = { | 10 Realm.shared = { |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 assertFalse(proto === Object.prototype); | 89 assertFalse(proto === Object.prototype); |
90 assertTrue(proto === otherObject.prototype); | 90 assertTrue(proto === otherObject.prototype); |
91 | 91 |
92 // Check function constructor. | 92 // Check function constructor. |
93 var ctor_script = "Function"; | 93 var ctor_script = "Function"; |
94 var ctor_a_script = | 94 var ctor_a_script = |
95 "(function() { return Function.apply(this, ['return 1;']); })"; | 95 "(function() { return Function.apply(this, ['return 1;']); })"; |
96 var ctor_b_script = "Function.bind(this, 'return 1;')"; | 96 var ctor_b_script = "Function.bind(this, 'return 1;')"; |
97 var ctor_c_script = | 97 var ctor_c_script = |
98 "(function() { return Function.call(this, 'return 1;'); })"; | 98 "(function() { return Function.call(this, 'return 1;'); })"; |
| 99 // Also check Promise constructor. |
| 100 var promise_ctor_script = "Promise"; |
99 Realm.shared = { | 101 Realm.shared = { |
100 ctor_0 : Realm.eval(realms[0], ctor_script), | 102 ctor_0 : Realm.eval(realms[0], ctor_script), |
101 ctor_1 : Realm.eval(realms[1], ctor_script), | 103 ctor_1 : Realm.eval(realms[1], ctor_script), |
102 ctor_a_0 : Realm.eval(realms[0], ctor_a_script), | 104 ctor_a_0 : Realm.eval(realms[0], ctor_a_script), |
103 ctor_a_1 : Realm.eval(realms[1], ctor_a_script), | 105 ctor_a_1 : Realm.eval(realms[1], ctor_a_script), |
104 ctor_b_0 : Realm.eval(realms[0], ctor_b_script), | 106 ctor_b_0 : Realm.eval(realms[0], ctor_b_script), |
105 ctor_b_1 : Realm.eval(realms[1], ctor_b_script), | 107 ctor_b_1 : Realm.eval(realms[1], ctor_b_script), |
106 ctor_c_0 : Realm.eval(realms[0], ctor_c_script), | 108 ctor_c_0 : Realm.eval(realms[0], ctor_c_script), |
107 ctor_c_1 : Realm.eval(realms[1], ctor_c_script), | 109 ctor_c_1 : Realm.eval(realms[1], ctor_c_script), |
| 110 promise_ctor_0 : Realm.eval(realms[0], promise_ctor_script), |
| 111 promise_ctor_1 : Realm.eval(realms[1], promise_ctor_script), |
108 } | 112 } |
109 var script_0 = " \ | 113 var script_0 = " \ |
110 var ctor_0 = Realm.shared.ctor_0; \ | 114 var ctor_0 = Realm.shared.ctor_0; \ |
| 115 var promise_ctor_0 = Realm.shared.promise_ctor_0; \ |
111 Realm.shared.direct_0 = ctor_0('return 1'); \ | 116 Realm.shared.direct_0 = ctor_0('return 1'); \ |
112 Realm.shared.indirect_0 = (function() { return ctor_0('return 1;'); })(); \ | 117 Realm.shared.indirect_0 = (function() { return ctor_0('return 1;'); })(); \ |
113 Realm.shared.apply_0 = ctor_0.apply(this, ['return 1']); \ | 118 Realm.shared.apply_0 = ctor_0.apply(this, ['return 1']); \ |
114 Realm.shared.bind_0 = ctor_0.bind(this, 'return 1')(); \ | 119 Realm.shared.bind_0 = ctor_0.bind(this, 'return 1')(); \ |
115 Realm.shared.call_0 = ctor_0.call(this, 'return 1'); \ | 120 Realm.shared.call_0 = ctor_0.call(this, 'return 1'); \ |
116 Realm.shared.proxy_0 = new Proxy(ctor_0, {})('return 1'); \ | 121 Realm.shared.proxy_0 = new Proxy(ctor_0, {})('return 1'); \ |
117 Realm.shared.reflect_0 = Reflect.apply(ctor_0, this, ['return 1']); \ | 122 Realm.shared.reflect_0 = Reflect.apply(ctor_0, this, ['return 1']); \ |
118 Realm.shared.a_0 = Realm.shared.ctor_a_0(); \ | 123 Realm.shared.a_0 = Realm.shared.ctor_a_0(); \ |
119 Realm.shared.b_0 = Realm.shared.ctor_b_0(); \ | 124 Realm.shared.b_0 = Realm.shared.ctor_b_0(); \ |
120 Realm.shared.c_0 = Realm.shared.ctor_c_0(); \ | 125 Realm.shared.c_0 = Realm.shared.ctor_c_0(); \ |
| 126 Realm.shared.p_0 = new promise_ctor_0((res,rej) => res(1)); \ |
121 "; | 127 "; |
122 script = script_0 + script_0.replace(/_0/g, "_1"); | 128 script = script_0 + script_0.replace(/_0/g, "_1"); |
123 Realm.eval(realms[0], script); | 129 Realm.eval(realms[0], script); |
124 assertSame(1, Realm.shared.direct_0()); | 130 assertSame(1, Realm.shared.direct_0()); |
125 assertSame(1, Realm.shared.indirect_0()); | 131 assertSame(1, Realm.shared.indirect_0()); |
126 assertSame(1, Realm.shared.apply_0()); | 132 assertSame(1, Realm.shared.apply_0()); |
127 assertSame(1, Realm.shared.bind_0()); | 133 assertSame(1, Realm.shared.bind_0()); |
128 assertSame(1, Realm.shared.call_0()); | 134 assertSame(1, Realm.shared.call_0()); |
129 assertSame(1, Realm.shared.proxy_0()); | 135 assertSame(1, Realm.shared.proxy_0()); |
130 assertSame(1, Realm.shared.reflect_0()); | 136 assertSame(1, Realm.shared.reflect_0()); |
131 assertSame(1, Realm.shared.a_0()); | 137 assertSame(1, Realm.shared.a_0()); |
132 assertSame(1, Realm.shared.b_0()); | 138 assertSame(1, Realm.shared.b_0()); |
133 assertSame(1, Realm.shared.c_0()); | 139 assertSame(1, Realm.shared.c_0()); |
| 140 assertInstanceof(Realm.shared.p_0, Realm.shared.promise_ctor_0); |
134 assertSame(undefined, Realm.shared.direct_1); | 141 assertSame(undefined, Realm.shared.direct_1); |
135 assertSame(undefined, Realm.shared.indirect_1); | 142 assertSame(undefined, Realm.shared.indirect_1); |
136 assertSame(undefined, Realm.shared.apply_1); | 143 assertSame(undefined, Realm.shared.apply_1); |
137 assertSame(undefined, Realm.shared.bind_1); | 144 assertSame(undefined, Realm.shared.bind_1); |
138 assertSame(undefined, Realm.shared.call_1); | 145 assertSame(undefined, Realm.shared.call_1); |
139 assertSame(undefined, Realm.shared.proxy_1); | 146 assertSame(undefined, Realm.shared.proxy_1); |
140 assertSame(undefined, Realm.shared.reflect_1); | 147 assertSame(undefined, Realm.shared.reflect_1); |
141 assertSame(undefined, Realm.shared.a_1); | 148 assertSame(undefined, Realm.shared.a_1); |
142 assertSame(undefined, Realm.shared.b_1); | 149 assertSame(undefined, Realm.shared.b_1); |
143 assertSame(undefined, Realm.shared.c_1); | 150 assertSame(undefined, Realm.shared.c_1); |
| 151 assertSame(undefined, Realm.shared.p_1); |
144 Realm.eval(realms[1], script); | 152 Realm.eval(realms[1], script); |
145 assertSame(undefined, Realm.shared.direct_0); | 153 assertSame(undefined, Realm.shared.direct_0); |
146 assertSame(undefined, Realm.shared.indirect_0); | 154 assertSame(undefined, Realm.shared.indirect_0); |
147 assertSame(undefined, Realm.shared.apply_0); | 155 assertSame(undefined, Realm.shared.apply_0); |
148 assertSame(undefined, Realm.shared.bind_0); | 156 assertSame(undefined, Realm.shared.bind_0); |
149 assertSame(undefined, Realm.shared.call_0); | 157 assertSame(undefined, Realm.shared.call_0); |
150 assertSame(undefined, Realm.shared.proxy_0); | 158 assertSame(undefined, Realm.shared.proxy_0); |
151 assertSame(undefined, Realm.shared.reflect_0); | 159 assertSame(undefined, Realm.shared.reflect_0); |
152 assertSame(undefined, Realm.shared.a_0); | 160 assertSame(undefined, Realm.shared.a_0); |
153 assertSame(undefined, Realm.shared.b_0); | 161 assertSame(undefined, Realm.shared.b_0); |
154 assertSame(undefined, Realm.shared.c_0); | 162 assertSame(undefined, Realm.shared.c_0); |
| 163 assertSame(undefined, Realm.shared.p_0); |
155 assertSame(1, Realm.shared.direct_1()); | 164 assertSame(1, Realm.shared.direct_1()); |
156 assertSame(1, Realm.shared.indirect_1()); | 165 assertSame(1, Realm.shared.indirect_1()); |
157 assertSame(1, Realm.shared.apply_1()); | 166 assertSame(1, Realm.shared.apply_1()); |
158 assertSame(1, Realm.shared.bind_1()); | 167 assertSame(1, Realm.shared.bind_1()); |
159 assertSame(1, Realm.shared.call_1()); | 168 assertSame(1, Realm.shared.call_1()); |
160 assertSame(1, Realm.shared.proxy_1()); | 169 assertSame(1, Realm.shared.proxy_1()); |
161 assertSame(1, Realm.shared.reflect_1()); | 170 assertSame(1, Realm.shared.reflect_1()); |
162 assertSame(1, Realm.shared.a_1()); | 171 assertSame(1, Realm.shared.a_1()); |
163 assertSame(1, Realm.shared.b_1()); | 172 assertSame(1, Realm.shared.b_1()); |
164 assertSame(1, Realm.shared.c_1()); | 173 assertSame(1, Realm.shared.c_1()); |
| 174 assertInstanceof(Realm.shared.p_1, Realm.shared.promise_ctor_1); |
OLD | NEW |