| 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 |