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

Side by Side Diff: third_party/WebKit/Source/bindings/core/v8/ReadableStreamOperationsTest.cpp

Issue 1765423004: Revert of Use v8::MicrotasksScope internally in V8RecursionScope. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@v8rs-2-endofscope
Patch Set: Created 4 years, 9 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/ReadableStreamOperations.h" 5 #include "bindings/core/v8/ReadableStreamOperations.h"
6 6
7 #include "bindings/core/v8/ExceptionState.h" 7 #include "bindings/core/v8/ExceptionState.h"
8 #include "bindings/core/v8/ScriptFunction.h" 8 #include "bindings/core/v8/ScriptFunction.h"
9 #include "bindings/core/v8/ScriptState.h" 9 #include "bindings/core/v8/ScriptState.h"
10 #include "bindings/core/v8/ScriptValue.h" 10 #include "bindings/core/v8/ScriptValue.h"
11 #include "bindings/core/v8/V8Binding.h" 11 #include "bindings/core/v8/V8Binding.h"
12 #include "bindings/core/v8/V8BindingForTesting.h" 12 #include "bindings/core/v8/V8BindingForTesting.h"
13 #include "bindings/core/v8/V8BindingMacros.h" 13 #include "bindings/core/v8/V8BindingMacros.h"
14 #include "bindings/core/v8/V8IteratorResultValue.h" 14 #include "bindings/core/v8/V8IteratorResultValue.h"
15 #include "bindings/core/v8/V8RecursionScope.h"
16 #include "bindings/core/v8/V8ThrowException.h" 15 #include "bindings/core/v8/V8ThrowException.h"
17 #include "core/dom/Document.h" 16 #include "core/dom/Document.h"
18 #include "core/streams/ReadableStreamController.h" 17 #include "core/streams/ReadableStreamController.h"
19 #include "core/streams/UnderlyingSourceBase.h" 18 #include "core/streams/UnderlyingSourceBase.h"
20 #include "platform/heap/Handle.h" 19 #include "platform/heap/Handle.h"
21 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
22 #include <v8.h> 21 #include <v8.h>
23 22
24 namespace blink { 23 namespace blink {
25 24
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 ReadableStreamOperationsTest() 131 ReadableStreamOperationsTest()
133 : m_scope(v8::Isolate::GetCurrent()) 132 : m_scope(v8::Isolate::GetCurrent())
134 , m_block(isolate()) 133 , m_block(isolate())
135 , m_document(Document::create()) 134 , m_document(Document::create())
136 { 135 {
137 scriptState()->setExecutionContext(m_document.get()); 136 scriptState()->setExecutionContext(m_document.get());
138 } 137 }
139 ~ReadableStreamOperationsTest() override 138 ~ReadableStreamOperationsTest() override
140 { 139 {
141 // Execute all pending microtasks 140 // Execute all pending microtasks
142 v8::MicrotasksScope::PerformCheckpoint(isolate()); 141 isolate()->RunMicrotasks();
143 EXPECT_FALSE(m_block.HasCaught()); 142 EXPECT_FALSE(m_block.HasCaught());
144 } 143 }
145 144
146 ScriptState* scriptState() const { return m_scope.scriptState(); } 145 ScriptState* scriptState() const { return m_scope.scriptState(); }
147 v8::Isolate* isolate() const { return scriptState()->isolate(); } 146 v8::Isolate* isolate() const { return scriptState()->isolate(); }
148 147
149 ScriptValue eval(const char* s) 148 ScriptValue eval(const char* s)
150 { 149 {
151 v8::Local<v8::String> source; 150 v8::Local<v8::String> source;
152 v8::Local<v8::Script> script; 151 v8::Local<v8::Script> script;
153 V8RecursionScope::MicrotaskSuppression microtasks(isolate());
154 if (!v8Call(v8::String::NewFromUtf8(isolate(), s, v8::NewStringType::kNo rmal), source)) { 152 if (!v8Call(v8::String::NewFromUtf8(isolate(), s, v8::NewStringType::kNo rmal), source)) {
155 ADD_FAILURE(); 153 ADD_FAILURE();
156 return ScriptValue(); 154 return ScriptValue();
157 } 155 }
158 if (!v8Call(v8::Script::Compile(scriptState()->context(), source), scrip t)) { 156 if (!v8Call(v8::Script::Compile(scriptState()->context(), source), scrip t)) {
159 ADD_FAILURE() << "Compilation fails"; 157 ADD_FAILURE() << "Compilation fails";
160 return ScriptValue(); 158 return ScriptValue();
161 } 159 }
162 return ScriptValue(scriptState(), script->Run(scriptState()->context())) ; 160 return ScriptValue(scriptState(), script->Run(scriptState()->context())) ;
163 } 161 }
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 246
249 Iteration* it1 = new Iteration(); 247 Iteration* it1 = new Iteration();
250 Iteration* it2 = new Iteration(); 248 Iteration* it2 = new Iteration();
251 ReadableStreamOperations::read(scriptState(), reader).then( 249 ReadableStreamOperations::read(scriptState(), reader).then(
252 Function::createFunction(scriptState(), it1), 250 Function::createFunction(scriptState(), it1),
253 NotReached::createFunction(scriptState())); 251 NotReached::createFunction(scriptState()));
254 ReadableStreamOperations::read(scriptState(), reader).then( 252 ReadableStreamOperations::read(scriptState(), reader).then(
255 Function::createFunction(scriptState(), it2), 253 Function::createFunction(scriptState(), it2),
256 NotReached::createFunction(scriptState())); 254 NotReached::createFunction(scriptState()));
257 255
258 v8::MicrotasksScope::PerformCheckpoint(isolate()); 256 isolate()->RunMicrotasks();
259 EXPECT_FALSE(it1->isSet()); 257 EXPECT_FALSE(it1->isSet());
260 EXPECT_FALSE(it2->isSet()); 258 EXPECT_FALSE(it2->isSet());
261 259
262 ASSERT_FALSE(evalWithPrintingError("controller.enqueue('hello')").isEmpty()) ; 260 ASSERT_FALSE(evalWithPrintingError("controller.enqueue('hello')").isEmpty()) ;
263 v8::MicrotasksScope::PerformCheckpoint(isolate()); 261 isolate()->RunMicrotasks();
264 EXPECT_TRUE(it1->isSet()); 262 EXPECT_TRUE(it1->isSet());
265 EXPECT_TRUE(it1->isValid()); 263 EXPECT_TRUE(it1->isValid());
266 EXPECT_FALSE(it1->isDone()); 264 EXPECT_FALSE(it1->isDone());
267 EXPECT_EQ("hello", it1->value()); 265 EXPECT_EQ("hello", it1->value());
268 EXPECT_FALSE(it2->isSet()); 266 EXPECT_FALSE(it2->isSet());
269 267
270 ASSERT_FALSE(evalWithPrintingError("controller.close()").isEmpty()); 268 ASSERT_FALSE(evalWithPrintingError("controller.close()").isEmpty());
271 v8::MicrotasksScope::PerformCheckpoint(isolate()); 269 isolate()->RunMicrotasks();
272 EXPECT_TRUE(it1->isSet()); 270 EXPECT_TRUE(it1->isSet());
273 EXPECT_TRUE(it1->isValid()); 271 EXPECT_TRUE(it1->isValid());
274 EXPECT_FALSE(it1->isDone()); 272 EXPECT_FALSE(it1->isDone());
275 EXPECT_EQ("hello", it1->value()); 273 EXPECT_EQ("hello", it1->value());
276 EXPECT_TRUE(it2->isSet()); 274 EXPECT_TRUE(it2->isSet());
277 EXPECT_TRUE(it2->isValid()); 275 EXPECT_TRUE(it2->isValid());
278 EXPECT_TRUE(it2->isDone()); 276 EXPECT_TRUE(it2->isDone());
279 } 277 }
280 278
281 TEST_F(ReadableStreamOperationsTest, CreateReadableStreamWithCustomUnderlyingSou rceAndStrategy) 279 TEST_F(ReadableStreamOperationsTest, CreateReadableStreamWithCustomUnderlyingSou rceAndStrategy)
(...skipping 22 matching lines...) Expand all
304 } 302 }
305 ASSERT_FALSE(reader.isEmpty()); 303 ASSERT_FALSE(reader.isEmpty());
306 304
307 Iteration* it1 = new Iteration(); 305 Iteration* it1 = new Iteration();
308 Iteration* it2 = new Iteration(); 306 Iteration* it2 = new Iteration();
309 Iteration* it3 = new Iteration(); 307 Iteration* it3 = new Iteration();
310 ReadableStreamOperations::read(scriptState(), reader).then(Function::createF unction(scriptState(), it1), NotReached::createFunction(scriptState())); 308 ReadableStreamOperations::read(scriptState(), reader).then(Function::createF unction(scriptState(), it1), NotReached::createFunction(scriptState()));
311 ReadableStreamOperations::read(scriptState(), reader).then(Function::createF unction(scriptState(), it2), NotReached::createFunction(scriptState())); 309 ReadableStreamOperations::read(scriptState(), reader).then(Function::createF unction(scriptState(), it2), NotReached::createFunction(scriptState()));
312 ReadableStreamOperations::read(scriptState(), reader).then(Function::createF unction(scriptState(), it3), NotReached::createFunction(scriptState())); 310 ReadableStreamOperations::read(scriptState(), reader).then(Function::createF unction(scriptState(), it3), NotReached::createFunction(scriptState()));
313 311
314 v8::MicrotasksScope::PerformCheckpoint(isolate()); 312 isolate()->RunMicrotasks();
315 313
316 EXPECT_EQ(10, underlyingSource->desiredSize()); 314 EXPECT_EQ(10, underlyingSource->desiredSize());
317 315
318 EXPECT_TRUE(it1->isSet()); 316 EXPECT_TRUE(it1->isSet());
319 EXPECT_TRUE(it1->isValid()); 317 EXPECT_TRUE(it1->isValid());
320 EXPECT_FALSE(it1->isDone()); 318 EXPECT_FALSE(it1->isDone());
321 EXPECT_EQ("a", it1->value()); 319 EXPECT_EQ("a", it1->value());
322 320
323 EXPECT_TRUE(it2->isSet()); 321 EXPECT_TRUE(it2->isSet());
324 EXPECT_TRUE(it2->isValid()); 322 EXPECT_TRUE(it2->isValid());
325 EXPECT_FALSE(it2->isDone()); 323 EXPECT_FALSE(it2->isDone());
326 EXPECT_EQ("b", it2->value()); 324 EXPECT_EQ("b", it2->value());
327 325
328 EXPECT_FALSE(it3->isSet()); 326 EXPECT_FALSE(it3->isSet());
329 327
330 underlyingSource->close(); 328 underlyingSource->close();
331 v8::MicrotasksScope::PerformCheckpoint(isolate()); 329 isolate()->RunMicrotasks();
332 330
333 EXPECT_TRUE(it3->isSet()); 331 EXPECT_TRUE(it3->isSet());
334 EXPECT_TRUE(it3->isValid()); 332 EXPECT_TRUE(it3->isValid());
335 EXPECT_TRUE(it3->isDone()); 333 EXPECT_TRUE(it3->isDone());
336 } 334 }
337 335
338 } // namespace 336 } // namespace
339 337
340 } // namespace blink 338 } // namespace blink
341 339
OLDNEW
« no previous file with comments | « gin/run_microtasks_observer.cc ('k') | third_party/WebKit/Source/bindings/core/v8/ScriptPromisePropertyTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698