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

Side by Side Diff: Source/bindings/core/v8/ScriptPromiseResolverTest.cpp

Issue 783423003: Make ScriptPromiseResolver RefCountedWillBeRefCountedGarbageCollected. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: WIP: 1st trial Created 6 years 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium 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 #include "config.h" 5 #include "config.h"
6 #include "bindings/core/v8/ScriptPromiseResolver.h" 6 #include "bindings/core/v8/ScriptPromiseResolver.h"
7 7
8 #include "bindings/core/v8/ScriptFunction.h" 8 #include "bindings/core/v8/ScriptFunction.h"
9 #include "bindings/core/v8/ScriptValue.h" 9 #include "bindings/core/v8/ScriptValue.h"
10 #include "bindings/core/v8/V8Binding.h" 10 #include "bindings/core/v8/V8Binding.h"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 OwnPtr<DummyPageHolder> m_pageHolder; 68 OwnPtr<DummyPageHolder> m_pageHolder;
69 ScriptState* scriptState() const { return ScriptState::forMainWorld(&m_pageH older->frame()); } 69 ScriptState* scriptState() const { return ScriptState::forMainWorld(&m_pageH older->frame()); }
70 ExecutionContext* executionContext() const { return &m_pageHolder->document( ); } 70 ExecutionContext* executionContext() const { return &m_pageHolder->document( ); }
71 v8::Isolate* isolate() const { return scriptState()->isolate(); } 71 v8::Isolate* isolate() const { return scriptState()->isolate(); }
72 }; 72 };
73 73
74 TEST_F(ScriptPromiseResolverTest, construct) 74 TEST_F(ScriptPromiseResolverTest, construct)
75 { 75 {
76 ASSERT_FALSE(executionContext()->activeDOMObjectsAreStopped()); 76 ASSERT_FALSE(executionContext()->activeDOMObjectsAreStopped());
77 ScriptState::Scope scope(scriptState()); 77 ScriptState::Scope scope(scriptState());
78 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState()); 78 ScriptPromiseResolver::create(scriptState());
79 } 79 }
80 80
81 TEST_F(ScriptPromiseResolverTest, resolve) 81 TEST_F(ScriptPromiseResolverTest, resolve)
82 { 82 {
83 RefPtr<ScriptPromiseResolver> resolver; 83 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver;
84 ScriptPromise promise; 84 ScriptPromise promise;
85 { 85 {
86 ScriptState::Scope scope(scriptState()); 86 ScriptState::Scope scope(scriptState());
87 resolver = ScriptPromiseResolver::create(scriptState()); 87 resolver = ScriptPromiseResolver::create(scriptState());
88 promise = resolver->promise(); 88 promise = resolver->promise();
89 } 89 }
90 90
91 String onFulfilled, onRejected; 91 String onFulfilled, onRejected;
92 ASSERT_FALSE(promise.isEmpty()); 92 ASSERT_FALSE(promise.isEmpty());
93 { 93 {
(...skipping 27 matching lines...) Expand all
121 resolver->resolve("bye"); 121 resolver->resolve("bye");
122 resolver->reject("bye"); 122 resolver->reject("bye");
123 isolate()->RunMicrotasks(); 123 isolate()->RunMicrotasks();
124 124
125 EXPECT_EQ("hello", onFulfilled); 125 EXPECT_EQ("hello", onFulfilled);
126 EXPECT_EQ(String(), onRejected); 126 EXPECT_EQ(String(), onRejected);
127 } 127 }
128 128
129 TEST_F(ScriptPromiseResolverTest, reject) 129 TEST_F(ScriptPromiseResolverTest, reject)
130 { 130 {
131 RefPtr<ScriptPromiseResolver> resolver; 131 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver;
132 ScriptPromise promise; 132 ScriptPromise promise;
133 { 133 {
134 ScriptState::Scope scope(scriptState()); 134 ScriptState::Scope scope(scriptState());
135 resolver = ScriptPromiseResolver::create(scriptState()); 135 resolver = ScriptPromiseResolver::create(scriptState());
136 promise = resolver->promise(); 136 promise = resolver->promise();
137 } 137 }
138 138
139 String onFulfilled, onRejected; 139 String onFulfilled, onRejected;
140 ASSERT_FALSE(promise.isEmpty()); 140 ASSERT_FALSE(promise.isEmpty());
141 { 141 {
(...skipping 27 matching lines...) Expand all
169 resolver->resolve("bye"); 169 resolver->resolve("bye");
170 resolver->reject("bye"); 170 resolver->reject("bye");
171 isolate()->RunMicrotasks(); 171 isolate()->RunMicrotasks();
172 172
173 EXPECT_EQ(String(), onFulfilled); 173 EXPECT_EQ(String(), onFulfilled);
174 EXPECT_EQ("hello", onRejected); 174 EXPECT_EQ("hello", onRejected);
175 } 175 }
176 176
177 TEST_F(ScriptPromiseResolverTest, stop) 177 TEST_F(ScriptPromiseResolverTest, stop)
178 { 178 {
179 RefPtr<ScriptPromiseResolver> resolver; 179 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver;
180 ScriptPromise promise; 180 ScriptPromise promise;
181 { 181 {
182 ScriptState::Scope scope(scriptState()); 182 ScriptState::Scope scope(scriptState());
183 resolver = ScriptPromiseResolver::create(scriptState()); 183 resolver = ScriptPromiseResolver::create(scriptState());
184 promise = resolver->promise(); 184 promise = resolver->promise();
185 } 185 }
186 186
187 String onFulfilled, onRejected; 187 String onFulfilled, onRejected;
188 ASSERT_FALSE(promise.isEmpty()); 188 ASSERT_FALSE(promise.isEmpty());
189 { 189 {
190 ScriptState::Scope scope(scriptState()); 190 ScriptState::Scope scope(scriptState());
191 promise.then(Function::createFunction(scriptState(), &onFulfilled), Func tion::createFunction(scriptState(), &onRejected)); 191 promise.then(Function::createFunction(scriptState(), &onFulfilled), Func tion::createFunction(scriptState(), &onRejected));
192 } 192 }
193 193
194 executionContext()->stopActiveDOMObjects(); 194 executionContext()->stopActiveDOMObjects();
195 { 195 {
196 ScriptState::Scope scope(scriptState()); 196 ScriptState::Scope scope(scriptState());
197 EXPECT_TRUE(resolver->promise().isEmpty()); 197 EXPECT_TRUE(resolver->promise().isEmpty());
198 } 198 }
199 199
200 resolver->resolve("hello"); 200 resolver->resolve("hello");
201 isolate()->RunMicrotasks(); 201 isolate()->RunMicrotasks();
202 202
203 EXPECT_EQ(String(), onFulfilled); 203 EXPECT_EQ(String(), onFulfilled);
204 EXPECT_EQ(String(), onRejected); 204 EXPECT_EQ(String(), onRejected);
205 } 205 }
206 206
207 #if !ENABLE(OILPAN)
207 TEST_F(ScriptPromiseResolverTest, keepAliveUntilResolved) 208 TEST_F(ScriptPromiseResolverTest, keepAliveUntilResolved)
208 { 209 {
209 RefPtr<ScriptPromiseResolver> resolver; 210 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver;
210 { 211 {
211 ScriptState::Scope scope(scriptState()); 212 ScriptState::Scope scope(scriptState());
212 resolver = ScriptPromiseResolver::create(scriptState()); 213 resolver = ScriptPromiseResolver::create(scriptState());
213 } 214 }
214 EXPECT_EQ(1, resolver->refCount()); 215 EXPECT_EQ(1, resolver->refCount());
215 resolver->keepAliveWhilePending(); 216 resolver->keepAliveWhilePending();
216 EXPECT_EQ(2, resolver->refCount()); 217 EXPECT_EQ(2, resolver->refCount());
217 218
218 resolver->resolve("hello"); 219 resolver->resolve("hello");
219 EXPECT_EQ(1, resolver->refCount()); 220 EXPECT_EQ(1, resolver->refCount());
220 } 221 }
221 222
222 TEST_F(ScriptPromiseResolverTest, keepAliveUntilRejected) 223 TEST_F(ScriptPromiseResolverTest, keepAliveUntilRejected)
223 { 224 {
224 RefPtr<ScriptPromiseResolver> resolver; 225 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver;
225 { 226 {
226 ScriptState::Scope scope(scriptState()); 227 ScriptState::Scope scope(scriptState());
227 resolver = ScriptPromiseResolver::create(scriptState()); 228 resolver = ScriptPromiseResolver::create(scriptState());
228 } 229 }
229 EXPECT_EQ(1, resolver->refCount()); 230 EXPECT_EQ(1, resolver->refCount());
230 resolver->keepAliveWhilePending(); 231 resolver->keepAliveWhilePending();
231 EXPECT_EQ(2, resolver->refCount()); 232 EXPECT_EQ(2, resolver->refCount());
232 233
233 resolver->reject("hello"); 234 resolver->reject("hello");
234 EXPECT_EQ(1, resolver->refCount()); 235 EXPECT_EQ(1, resolver->refCount());
235 } 236 }
236 237
237 TEST_F(ScriptPromiseResolverTest, keepAliveUntilStopped) 238 TEST_F(ScriptPromiseResolverTest, keepAliveUntilStopped)
238 { 239 {
239 RefPtr<ScriptPromiseResolver> resolver; 240 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver;
240 { 241 {
241 ScriptState::Scope scope(scriptState()); 242 ScriptState::Scope scope(scriptState());
242 resolver = ScriptPromiseResolver::create(scriptState()); 243 resolver = ScriptPromiseResolver::create(scriptState());
243 } 244 }
244 EXPECT_EQ(1, resolver->refCount()); 245 EXPECT_EQ(1, resolver->refCount());
245 resolver->keepAliveWhilePending(); 246 resolver->keepAliveWhilePending();
246 EXPECT_EQ(2, resolver->refCount()); 247 EXPECT_EQ(2, resolver->refCount());
247 248
248 executionContext()->stopActiveDOMObjects(); 249 executionContext()->stopActiveDOMObjects();
249 EXPECT_EQ(1, resolver->refCount()); 250 EXPECT_EQ(1, resolver->refCount());
250 } 251 }
251 252
252 TEST_F(ScriptPromiseResolverTest, suspend) 253 TEST_F(ScriptPromiseResolverTest, suspend)
253 { 254 {
254 RefPtr<ScriptPromiseResolver> resolver; 255 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver;
255 { 256 {
256 ScriptState::Scope scope(scriptState()); 257 ScriptState::Scope scope(scriptState());
257 resolver = ScriptPromiseResolver::create(scriptState()); 258 resolver = ScriptPromiseResolver::create(scriptState());
258 } 259 }
259 EXPECT_EQ(1, resolver->refCount()); 260 EXPECT_EQ(1, resolver->refCount());
260 resolver->keepAliveWhilePending(); 261 resolver->keepAliveWhilePending();
261 EXPECT_EQ(2, resolver->refCount()); 262 EXPECT_EQ(2, resolver->refCount());
262 executionContext()->suspendActiveDOMObjects(); 263 executionContext()->suspendActiveDOMObjects();
263 resolver->resolve("hello"); 264 resolver->resolve("hello");
264 EXPECT_EQ(3, resolver->refCount()); 265 EXPECT_EQ(3, resolver->refCount());
265 266
266 executionContext()->stopActiveDOMObjects(); 267 executionContext()->stopActiveDOMObjects();
267 EXPECT_EQ(1, resolver->refCount()); 268 EXPECT_EQ(1, resolver->refCount());
268 } 269 }
270 #endif
269 271
270 TEST_F(ScriptPromiseResolverTest, resolveVoid) 272 TEST_F(ScriptPromiseResolverTest, resolveVoid)
271 { 273 {
272 RefPtr<ScriptPromiseResolver> resolver; 274 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver;
273 ScriptPromise promise; 275 ScriptPromise promise;
274 { 276 {
275 ScriptState::Scope scope(scriptState()); 277 ScriptState::Scope scope(scriptState());
276 resolver = ScriptPromiseResolver::create(scriptState()); 278 resolver = ScriptPromiseResolver::create(scriptState());
277 promise = resolver->promise(); 279 promise = resolver->promise();
278 } 280 }
279 281
280 String onFulfilled, onRejected; 282 String onFulfilled, onRejected;
281 ASSERT_FALSE(promise.isEmpty()); 283 ASSERT_FALSE(promise.isEmpty());
282 { 284 {
283 ScriptState::Scope scope(scriptState()); 285 ScriptState::Scope scope(scriptState());
284 promise.then(Function::createFunction(scriptState(), &onFulfilled), Func tion::createFunction(scriptState(), &onRejected)); 286 promise.then(Function::createFunction(scriptState(), &onFulfilled), Func tion::createFunction(scriptState(), &onRejected));
285 } 287 }
286 288
287 resolver->resolve(); 289 resolver->resolve();
288 isolate()->RunMicrotasks(); 290 isolate()->RunMicrotasks();
289 291
290 EXPECT_EQ("undefined", onFulfilled); 292 EXPECT_EQ("undefined", onFulfilled);
291 EXPECT_EQ(String(), onRejected); 293 EXPECT_EQ(String(), onRejected);
292 } 294 }
293 295
294 TEST_F(ScriptPromiseResolverTest, rejectVoid) 296 TEST_F(ScriptPromiseResolverTest, rejectVoid)
295 { 297 {
296 RefPtr<ScriptPromiseResolver> resolver; 298 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver;
297 ScriptPromise promise; 299 ScriptPromise promise;
298 { 300 {
299 ScriptState::Scope scope(scriptState()); 301 ScriptState::Scope scope(scriptState());
300 resolver = ScriptPromiseResolver::create(scriptState()); 302 resolver = ScriptPromiseResolver::create(scriptState());
301 promise = resolver->promise(); 303 promise = resolver->promise();
302 } 304 }
303 305
304 String onFulfilled, onRejected; 306 String onFulfilled, onRejected;
305 ASSERT_FALSE(promise.isEmpty()); 307 ASSERT_FALSE(promise.isEmpty());
306 { 308 {
307 ScriptState::Scope scope(scriptState()); 309 ScriptState::Scope scope(scriptState());
308 promise.then(Function::createFunction(scriptState(), &onFulfilled), Func tion::createFunction(scriptState(), &onRejected)); 310 promise.then(Function::createFunction(scriptState(), &onFulfilled), Func tion::createFunction(scriptState(), &onRejected));
309 } 311 }
310 312
311 resolver->reject(); 313 resolver->reject();
312 isolate()->RunMicrotasks(); 314 isolate()->RunMicrotasks();
313 315
314 EXPECT_EQ(String(), onFulfilled); 316 EXPECT_EQ(String(), onFulfilled);
315 EXPECT_EQ("undefined", onRejected); 317 EXPECT_EQ("undefined", onRejected);
316 } 318 }
317 319
318 } // namespace 320 } // namespace
319 321
320 } // namespace blink 322 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698