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

Side by Side Diff: test/mjsunit/cross-realm-filtering.js

Issue 2628863002: Do security checks in the promise constructor (Closed)
Patch Set: updates Created 3 years, 11 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
« no previous file with comments | « src/runtime/runtime-internal.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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);
OLDNEW
« no previous file with comments | « src/runtime/runtime-internal.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698