OLD | NEW |
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 "bindings/core/v8/ScriptPromiseResolver.h" | 5 #include "bindings/core/v8/ScriptPromiseResolver.h" |
6 | 6 |
7 #include "bindings/core/v8/ScriptFunction.h" | 7 #include "bindings/core/v8/ScriptFunction.h" |
8 #include "bindings/core/v8/ScriptValue.h" | 8 #include "bindings/core/v8/ScriptValue.h" |
9 #include "bindings/core/v8/V8Binding.h" | 9 #include "bindings/core/v8/V8Binding.h" |
10 #include "core/dom/DOMException.h" | 10 #include "core/dom/DOMException.h" |
(...skipping 20 matching lines...) Expand all Loading... |
31 private: | 31 private: |
32 Function(ScriptState* scriptState, String* value) | 32 Function(ScriptState* scriptState, String* value) |
33 : ScriptFunction(scriptState) | 33 : ScriptFunction(scriptState) |
34 , m_value(value) | 34 , m_value(value) |
35 { | 35 { |
36 } | 36 } |
37 | 37 |
38 ScriptValue call(ScriptValue value) override | 38 ScriptValue call(ScriptValue value) override |
39 { | 39 { |
40 ASSERT(!value.isEmpty()); | 40 ASSERT(!value.isEmpty()); |
41 *m_value = toCoreString(value.v8Value()->ToString(scriptState()->context
()).ToLocalChecked()); | 41 *m_value = toCoreString(value.v8Value()->ToString(getScriptState()->cont
ext()).ToLocalChecked()); |
42 return value; | 42 return value; |
43 } | 43 } |
44 | 44 |
45 String* m_value; | 45 String* m_value; |
46 }; | 46 }; |
47 | 47 |
48 class ScriptPromiseResolverTest : public ::testing::Test { | 48 class ScriptPromiseResolverTest : public ::testing::Test { |
49 public: | 49 public: |
50 ScriptPromiseResolverTest() | 50 ScriptPromiseResolverTest() |
51 : m_pageHolder(DummyPageHolder::create()) | 51 : m_pageHolder(DummyPageHolder::create()) |
52 { | 52 { |
53 } | 53 } |
54 | 54 |
55 ~ScriptPromiseResolverTest() override | 55 ~ScriptPromiseResolverTest() override |
56 { | 56 { |
57 ScriptState::Scope scope(scriptState()); | 57 ScriptState::Scope scope(getScriptState()); |
58 // FIXME: We put this statement here to clear an exception from the | 58 // FIXME: We put this statement here to clear an exception from the |
59 // isolate. | 59 // isolate. |
60 createClosure(callback, v8::Undefined(isolate()), isolate()); | 60 createClosure(callback, v8::Undefined(isolate()), isolate()); |
61 | 61 |
62 // Execute all pending microtasks | 62 // Execute all pending microtasks |
63 v8::MicrotasksScope::PerformCheckpoint(isolate()); | 63 v8::MicrotasksScope::PerformCheckpoint(isolate()); |
64 } | 64 } |
65 | 65 |
66 OwnPtr<DummyPageHolder> m_pageHolder; | 66 OwnPtr<DummyPageHolder> m_pageHolder; |
67 ScriptState* scriptState() const { return ScriptState::forMainWorld(&m_pageH
older->frame()); } | 67 ScriptState* getScriptState() const { return ScriptState::forMainWorld(&m_pa
geHolder->frame()); } |
68 ExecutionContext* executionContext() const { return &m_pageHolder->document(
); } | 68 ExecutionContext* getExecutionContext() const { return &m_pageHolder->docume
nt(); } |
69 v8::Isolate* isolate() const { return scriptState()->isolate(); } | 69 v8::Isolate* isolate() const { return getScriptState()->isolate(); } |
70 }; | 70 }; |
71 | 71 |
72 TEST_F(ScriptPromiseResolverTest, construct) | 72 TEST_F(ScriptPromiseResolverTest, construct) |
73 { | 73 { |
74 ASSERT_FALSE(executionContext()->activeDOMObjectsAreStopped()); | 74 ASSERT_FALSE(getExecutionContext()->activeDOMObjectsAreStopped()); |
75 ScriptState::Scope scope(scriptState()); | 75 ScriptState::Scope scope(getScriptState()); |
76 ScriptPromiseResolver::create(scriptState()); | 76 ScriptPromiseResolver::create(getScriptState()); |
77 } | 77 } |
78 | 78 |
79 TEST_F(ScriptPromiseResolverTest, resolve) | 79 TEST_F(ScriptPromiseResolverTest, resolve) |
80 { | 80 { |
81 ScriptPromiseResolver* resolver = nullptr; | 81 ScriptPromiseResolver* resolver = nullptr; |
82 ScriptPromise promise; | 82 ScriptPromise promise; |
83 { | 83 { |
84 ScriptState::Scope scope(scriptState()); | 84 ScriptState::Scope scope(getScriptState()); |
85 resolver = ScriptPromiseResolver::create(scriptState()); | 85 resolver = ScriptPromiseResolver::create(getScriptState()); |
86 promise = resolver->promise(); | 86 promise = resolver->promise(); |
87 } | 87 } |
88 | 88 |
89 String onFulfilled, onRejected; | 89 String onFulfilled, onRejected; |
90 ASSERT_FALSE(promise.isEmpty()); | 90 ASSERT_FALSE(promise.isEmpty()); |
91 { | 91 { |
92 ScriptState::Scope scope(scriptState()); | 92 ScriptState::Scope scope(getScriptState()); |
93 promise.then(Function::createFunction(scriptState(), &onFulfilled), Func
tion::createFunction(scriptState(), &onRejected)); | 93 promise.then(Function::createFunction(getScriptState(), &onFulfilled), F
unction::createFunction(getScriptState(), &onRejected)); |
94 } | 94 } |
95 | 95 |
96 EXPECT_EQ(String(), onFulfilled); | 96 EXPECT_EQ(String(), onFulfilled); |
97 EXPECT_EQ(String(), onRejected); | 97 EXPECT_EQ(String(), onRejected); |
98 | 98 |
99 v8::MicrotasksScope::PerformCheckpoint(isolate()); | 99 v8::MicrotasksScope::PerformCheckpoint(isolate()); |
100 | 100 |
101 EXPECT_EQ(String(), onFulfilled); | 101 EXPECT_EQ(String(), onFulfilled); |
102 EXPECT_EQ(String(), onRejected); | 102 EXPECT_EQ(String(), onRejected); |
103 | 103 |
104 resolver->resolve("hello"); | 104 resolver->resolve("hello"); |
105 | 105 |
106 { | 106 { |
107 ScriptState::Scope scope(scriptState()); | 107 ScriptState::Scope scope(getScriptState()); |
108 EXPECT_TRUE(resolver->promise().isEmpty()); | 108 EXPECT_TRUE(resolver->promise().isEmpty()); |
109 } | 109 } |
110 | 110 |
111 EXPECT_EQ(String(), onFulfilled); | 111 EXPECT_EQ(String(), onFulfilled); |
112 EXPECT_EQ(String(), onRejected); | 112 EXPECT_EQ(String(), onRejected); |
113 | 113 |
114 v8::MicrotasksScope::PerformCheckpoint(isolate()); | 114 v8::MicrotasksScope::PerformCheckpoint(isolate()); |
115 | 115 |
116 EXPECT_EQ("hello", onFulfilled); | 116 EXPECT_EQ("hello", onFulfilled); |
117 EXPECT_EQ(String(), onRejected); | 117 EXPECT_EQ(String(), onRejected); |
118 | 118 |
119 resolver->resolve("bye"); | 119 resolver->resolve("bye"); |
120 resolver->reject("bye"); | 120 resolver->reject("bye"); |
121 v8::MicrotasksScope::PerformCheckpoint(isolate()); | 121 v8::MicrotasksScope::PerformCheckpoint(isolate()); |
122 | 122 |
123 EXPECT_EQ("hello", onFulfilled); | 123 EXPECT_EQ("hello", onFulfilled); |
124 EXPECT_EQ(String(), onRejected); | 124 EXPECT_EQ(String(), onRejected); |
125 } | 125 } |
126 | 126 |
127 TEST_F(ScriptPromiseResolverTest, reject) | 127 TEST_F(ScriptPromiseResolverTest, reject) |
128 { | 128 { |
129 ScriptPromiseResolver* resolver = nullptr; | 129 ScriptPromiseResolver* resolver = nullptr; |
130 ScriptPromise promise; | 130 ScriptPromise promise; |
131 { | 131 { |
132 ScriptState::Scope scope(scriptState()); | 132 ScriptState::Scope scope(getScriptState()); |
133 resolver = ScriptPromiseResolver::create(scriptState()); | 133 resolver = ScriptPromiseResolver::create(getScriptState()); |
134 promise = resolver->promise(); | 134 promise = resolver->promise(); |
135 } | 135 } |
136 | 136 |
137 String onFulfilled, onRejected; | 137 String onFulfilled, onRejected; |
138 ASSERT_FALSE(promise.isEmpty()); | 138 ASSERT_FALSE(promise.isEmpty()); |
139 { | 139 { |
140 ScriptState::Scope scope(scriptState()); | 140 ScriptState::Scope scope(getScriptState()); |
141 promise.then(Function::createFunction(scriptState(), &onFulfilled), Func
tion::createFunction(scriptState(), &onRejected)); | 141 promise.then(Function::createFunction(getScriptState(), &onFulfilled), F
unction::createFunction(getScriptState(), &onRejected)); |
142 } | 142 } |
143 | 143 |
144 EXPECT_EQ(String(), onFulfilled); | 144 EXPECT_EQ(String(), onFulfilled); |
145 EXPECT_EQ(String(), onRejected); | 145 EXPECT_EQ(String(), onRejected); |
146 | 146 |
147 v8::MicrotasksScope::PerformCheckpoint(isolate()); | 147 v8::MicrotasksScope::PerformCheckpoint(isolate()); |
148 | 148 |
149 EXPECT_EQ(String(), onFulfilled); | 149 EXPECT_EQ(String(), onFulfilled); |
150 EXPECT_EQ(String(), onRejected); | 150 EXPECT_EQ(String(), onRejected); |
151 | 151 |
152 resolver->reject("hello"); | 152 resolver->reject("hello"); |
153 | 153 |
154 { | 154 { |
155 ScriptState::Scope scope(scriptState()); | 155 ScriptState::Scope scope(getScriptState()); |
156 EXPECT_TRUE(resolver->promise().isEmpty()); | 156 EXPECT_TRUE(resolver->promise().isEmpty()); |
157 } | 157 } |
158 | 158 |
159 EXPECT_EQ(String(), onFulfilled); | 159 EXPECT_EQ(String(), onFulfilled); |
160 EXPECT_EQ(String(), onRejected); | 160 EXPECT_EQ(String(), onRejected); |
161 | 161 |
162 v8::MicrotasksScope::PerformCheckpoint(isolate()); | 162 v8::MicrotasksScope::PerformCheckpoint(isolate()); |
163 | 163 |
164 EXPECT_EQ(String(), onFulfilled); | 164 EXPECT_EQ(String(), onFulfilled); |
165 EXPECT_EQ("hello", onRejected); | 165 EXPECT_EQ("hello", onRejected); |
166 | 166 |
167 resolver->resolve("bye"); | 167 resolver->resolve("bye"); |
168 resolver->reject("bye"); | 168 resolver->reject("bye"); |
169 v8::MicrotasksScope::PerformCheckpoint(isolate()); | 169 v8::MicrotasksScope::PerformCheckpoint(isolate()); |
170 | 170 |
171 EXPECT_EQ(String(), onFulfilled); | 171 EXPECT_EQ(String(), onFulfilled); |
172 EXPECT_EQ("hello", onRejected); | 172 EXPECT_EQ("hello", onRejected); |
173 } | 173 } |
174 | 174 |
175 TEST_F(ScriptPromiseResolverTest, stop) | 175 TEST_F(ScriptPromiseResolverTest, stop) |
176 { | 176 { |
177 ScriptPromiseResolver* resolver = nullptr; | 177 ScriptPromiseResolver* resolver = nullptr; |
178 ScriptPromise promise; | 178 ScriptPromise promise; |
179 { | 179 { |
180 ScriptState::Scope scope(scriptState()); | 180 ScriptState::Scope scope(getScriptState()); |
181 resolver = ScriptPromiseResolver::create(scriptState()); | 181 resolver = ScriptPromiseResolver::create(getScriptState()); |
182 promise = resolver->promise(); | 182 promise = resolver->promise(); |
183 } | 183 } |
184 | 184 |
185 String onFulfilled, onRejected; | 185 String onFulfilled, onRejected; |
186 ASSERT_FALSE(promise.isEmpty()); | 186 ASSERT_FALSE(promise.isEmpty()); |
187 { | 187 { |
188 ScriptState::Scope scope(scriptState()); | 188 ScriptState::Scope scope(getScriptState()); |
189 promise.then(Function::createFunction(scriptState(), &onFulfilled), Func
tion::createFunction(scriptState(), &onRejected)); | 189 promise.then(Function::createFunction(getScriptState(), &onFulfilled), F
unction::createFunction(getScriptState(), &onRejected)); |
190 } | 190 } |
191 | 191 |
192 executionContext()->stopActiveDOMObjects(); | 192 getExecutionContext()->stopActiveDOMObjects(); |
193 { | 193 { |
194 ScriptState::Scope scope(scriptState()); | 194 ScriptState::Scope scope(getScriptState()); |
195 EXPECT_TRUE(resolver->promise().isEmpty()); | 195 EXPECT_TRUE(resolver->promise().isEmpty()); |
196 } | 196 } |
197 | 197 |
198 resolver->resolve("hello"); | 198 resolver->resolve("hello"); |
199 v8::MicrotasksScope::PerformCheckpoint(isolate()); | 199 v8::MicrotasksScope::PerformCheckpoint(isolate()); |
200 | 200 |
201 EXPECT_EQ(String(), onFulfilled); | 201 EXPECT_EQ(String(), onFulfilled); |
202 EXPECT_EQ(String(), onRejected); | 202 EXPECT_EQ(String(), onRejected); |
203 } | 203 } |
204 | 204 |
(...skipping 23 matching lines...) Expand all Loading... |
228 } | 228 } |
229 }; | 229 }; |
230 | 230 |
231 int ScriptPromiseResolverKeepAlive::s_destructorCalls = 0; | 231 int ScriptPromiseResolverKeepAlive::s_destructorCalls = 0; |
232 | 232 |
233 TEST_F(ScriptPromiseResolverTest, keepAliveUntilResolved) | 233 TEST_F(ScriptPromiseResolverTest, keepAliveUntilResolved) |
234 { | 234 { |
235 ScriptPromiseResolverKeepAlive::reset(); | 235 ScriptPromiseResolverKeepAlive::reset(); |
236 ScriptPromiseResolver* resolver = nullptr; | 236 ScriptPromiseResolver* resolver = nullptr; |
237 { | 237 { |
238 ScriptState::Scope scope(scriptState()); | 238 ScriptState::Scope scope(getScriptState()); |
239 resolver = ScriptPromiseResolverKeepAlive::create(scriptState()); | 239 resolver = ScriptPromiseResolverKeepAlive::create(getScriptState()); |
240 } | 240 } |
241 resolver->keepAliveWhilePending(); | 241 resolver->keepAliveWhilePending(); |
242 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); | 242 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); |
243 ASSERT_TRUE(ScriptPromiseResolverKeepAlive::isAlive()); | 243 ASSERT_TRUE(ScriptPromiseResolverKeepAlive::isAlive()); |
244 | 244 |
245 resolver->resolve("hello"); | 245 resolver->resolve("hello"); |
246 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); | 246 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); |
247 EXPECT_FALSE(ScriptPromiseResolverKeepAlive::isAlive()); | 247 EXPECT_FALSE(ScriptPromiseResolverKeepAlive::isAlive()); |
248 } | 248 } |
249 | 249 |
250 TEST_F(ScriptPromiseResolverTest, keepAliveUntilRejected) | 250 TEST_F(ScriptPromiseResolverTest, keepAliveUntilRejected) |
251 { | 251 { |
252 ScriptPromiseResolverKeepAlive::reset(); | 252 ScriptPromiseResolverKeepAlive::reset(); |
253 ScriptPromiseResolver* resolver = nullptr; | 253 ScriptPromiseResolver* resolver = nullptr; |
254 { | 254 { |
255 ScriptState::Scope scope(scriptState()); | 255 ScriptState::Scope scope(getScriptState()); |
256 resolver = ScriptPromiseResolverKeepAlive::create(scriptState()); | 256 resolver = ScriptPromiseResolverKeepAlive::create(getScriptState()); |
257 } | 257 } |
258 resolver->keepAliveWhilePending(); | 258 resolver->keepAliveWhilePending(); |
259 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); | 259 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); |
260 ASSERT_TRUE(ScriptPromiseResolverKeepAlive::isAlive()); | 260 ASSERT_TRUE(ScriptPromiseResolverKeepAlive::isAlive()); |
261 | 261 |
262 resolver->reject("hello"); | 262 resolver->reject("hello"); |
263 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); | 263 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); |
264 EXPECT_FALSE(ScriptPromiseResolverKeepAlive::isAlive()); | 264 EXPECT_FALSE(ScriptPromiseResolverKeepAlive::isAlive()); |
265 } | 265 } |
266 | 266 |
267 TEST_F(ScriptPromiseResolverTest, keepAliveUntilStopped) | 267 TEST_F(ScriptPromiseResolverTest, keepAliveUntilStopped) |
268 { | 268 { |
269 ScriptPromiseResolverKeepAlive::reset(); | 269 ScriptPromiseResolverKeepAlive::reset(); |
270 ScriptPromiseResolver* resolver = nullptr; | 270 ScriptPromiseResolver* resolver = nullptr; |
271 { | 271 { |
272 ScriptState::Scope scope(scriptState()); | 272 ScriptState::Scope scope(getScriptState()); |
273 resolver = ScriptPromiseResolverKeepAlive::create(scriptState()); | 273 resolver = ScriptPromiseResolverKeepAlive::create(getScriptState()); |
274 } | 274 } |
275 resolver->keepAliveWhilePending(); | 275 resolver->keepAliveWhilePending(); |
276 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); | 276 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); |
277 EXPECT_TRUE(ScriptPromiseResolverKeepAlive::isAlive()); | 277 EXPECT_TRUE(ScriptPromiseResolverKeepAlive::isAlive()); |
278 | 278 |
279 executionContext()->stopActiveDOMObjects(); | 279 getExecutionContext()->stopActiveDOMObjects(); |
280 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); | 280 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); |
281 EXPECT_FALSE(ScriptPromiseResolverKeepAlive::isAlive()); | 281 EXPECT_FALSE(ScriptPromiseResolverKeepAlive::isAlive()); |
282 } | 282 } |
283 | 283 |
284 TEST_F(ScriptPromiseResolverTest, suspend) | 284 TEST_F(ScriptPromiseResolverTest, suspend) |
285 { | 285 { |
286 ScriptPromiseResolverKeepAlive::reset(); | 286 ScriptPromiseResolverKeepAlive::reset(); |
287 ScriptPromiseResolver* resolver = nullptr; | 287 ScriptPromiseResolver* resolver = nullptr; |
288 { | 288 { |
289 ScriptState::Scope scope(scriptState()); | 289 ScriptState::Scope scope(getScriptState()); |
290 resolver = ScriptPromiseResolverKeepAlive::create(scriptState()); | 290 resolver = ScriptPromiseResolverKeepAlive::create(getScriptState()); |
291 } | 291 } |
292 resolver->keepAliveWhilePending(); | 292 resolver->keepAliveWhilePending(); |
293 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); | 293 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); |
294 ASSERT_TRUE(ScriptPromiseResolverKeepAlive::isAlive()); | 294 ASSERT_TRUE(ScriptPromiseResolverKeepAlive::isAlive()); |
295 | 295 |
296 executionContext()->suspendActiveDOMObjects(); | 296 getExecutionContext()->suspendActiveDOMObjects(); |
297 resolver->resolve("hello"); | 297 resolver->resolve("hello"); |
298 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); | 298 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); |
299 EXPECT_TRUE(ScriptPromiseResolverKeepAlive::isAlive()); | 299 EXPECT_TRUE(ScriptPromiseResolverKeepAlive::isAlive()); |
300 | 300 |
301 executionContext()->stopActiveDOMObjects(); | 301 getExecutionContext()->stopActiveDOMObjects(); |
302 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); | 302 Heap::collectGarbage(BlinkGC::NoHeapPointersOnStack, BlinkGC::GCWithSweep, B
linkGC::ForcedGC); |
303 EXPECT_FALSE(ScriptPromiseResolverKeepAlive::isAlive()); | 303 EXPECT_FALSE(ScriptPromiseResolverKeepAlive::isAlive()); |
304 } | 304 } |
305 | 305 |
306 TEST_F(ScriptPromiseResolverTest, resolveVoid) | 306 TEST_F(ScriptPromiseResolverTest, resolveVoid) |
307 { | 307 { |
308 ScriptPromiseResolver* resolver = nullptr; | 308 ScriptPromiseResolver* resolver = nullptr; |
309 ScriptPromise promise; | 309 ScriptPromise promise; |
310 { | 310 { |
311 ScriptState::Scope scope(scriptState()); | 311 ScriptState::Scope scope(getScriptState()); |
312 resolver = ScriptPromiseResolver::create(scriptState()); | 312 resolver = ScriptPromiseResolver::create(getScriptState()); |
313 promise = resolver->promise(); | 313 promise = resolver->promise(); |
314 } | 314 } |
315 | 315 |
316 String onFulfilled, onRejected; | 316 String onFulfilled, onRejected; |
317 ASSERT_FALSE(promise.isEmpty()); | 317 ASSERT_FALSE(promise.isEmpty()); |
318 { | 318 { |
319 ScriptState::Scope scope(scriptState()); | 319 ScriptState::Scope scope(getScriptState()); |
320 promise.then(Function::createFunction(scriptState(), &onFulfilled), Func
tion::createFunction(scriptState(), &onRejected)); | 320 promise.then(Function::createFunction(getScriptState(), &onFulfilled), F
unction::createFunction(getScriptState(), &onRejected)); |
321 } | 321 } |
322 | 322 |
323 resolver->resolve(); | 323 resolver->resolve(); |
324 v8::MicrotasksScope::PerformCheckpoint(isolate()); | 324 v8::MicrotasksScope::PerformCheckpoint(isolate()); |
325 | 325 |
326 EXPECT_EQ("undefined", onFulfilled); | 326 EXPECT_EQ("undefined", onFulfilled); |
327 EXPECT_EQ(String(), onRejected); | 327 EXPECT_EQ(String(), onRejected); |
328 } | 328 } |
329 | 329 |
330 TEST_F(ScriptPromiseResolverTest, rejectVoid) | 330 TEST_F(ScriptPromiseResolverTest, rejectVoid) |
331 { | 331 { |
332 ScriptPromiseResolver* resolver = nullptr; | 332 ScriptPromiseResolver* resolver = nullptr; |
333 ScriptPromise promise; | 333 ScriptPromise promise; |
334 { | 334 { |
335 ScriptState::Scope scope(scriptState()); | 335 ScriptState::Scope scope(getScriptState()); |
336 resolver = ScriptPromiseResolver::create(scriptState()); | 336 resolver = ScriptPromiseResolver::create(getScriptState()); |
337 promise = resolver->promise(); | 337 promise = resolver->promise(); |
338 } | 338 } |
339 | 339 |
340 String onFulfilled, onRejected; | 340 String onFulfilled, onRejected; |
341 ASSERT_FALSE(promise.isEmpty()); | 341 ASSERT_FALSE(promise.isEmpty()); |
342 { | 342 { |
343 ScriptState::Scope scope(scriptState()); | 343 ScriptState::Scope scope(getScriptState()); |
344 promise.then(Function::createFunction(scriptState(), &onFulfilled), Func
tion::createFunction(scriptState(), &onRejected)); | 344 promise.then(Function::createFunction(getScriptState(), &onFulfilled), F
unction::createFunction(getScriptState(), &onRejected)); |
345 } | 345 } |
346 | 346 |
347 resolver->reject(); | 347 resolver->reject(); |
348 v8::MicrotasksScope::PerformCheckpoint(isolate()); | 348 v8::MicrotasksScope::PerformCheckpoint(isolate()); |
349 | 349 |
350 EXPECT_EQ(String(), onFulfilled); | 350 EXPECT_EQ(String(), onFulfilled); |
351 EXPECT_EQ("undefined", onRejected); | 351 EXPECT_EQ("undefined", onRejected); |
352 } | 352 } |
353 | 353 |
354 } // namespace | 354 } // namespace |
355 | 355 |
356 } // namespace blink | 356 } // namespace blink |
OLD | NEW |