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

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

Issue 2962353002: Add probe for V8.Complie (Closed)
Patch Set: fix tests Created 3 years, 5 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 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/ScriptStreamer.h" 5 #include "bindings/core/v8/ScriptStreamer.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "bindings/core/v8/ScriptSourceCode.h" 9 #include "bindings/core/v8/ScriptSourceCode.h"
10 #include "bindings/core/v8/ScriptStreamerThread.h" 10 #include "bindings/core/v8/ScriptStreamerThread.h"
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 ProcessTasksUntilStreamingComplete(); 143 ProcessTasksUntilStreamingComplete();
144 EXPECT_TRUE(client->Finished()); 144 EXPECT_TRUE(client->Finished());
145 bool error_occurred = false; 145 bool error_occurred = false;
146 ScriptSourceCode source_code = GetPendingScript() 146 ScriptSourceCode source_code = GetPendingScript()
147 ->GetSource(NullURL(), error_occurred) 147 ->GetSource(NullURL(), error_occurred)
148 ->GetScriptSourceCode(); 148 ->GetScriptSourceCode();
149 EXPECT_FALSE(error_occurred); 149 EXPECT_FALSE(error_occurred);
150 EXPECT_TRUE(source_code.Streamer()); 150 EXPECT_TRUE(source_code.Streamer());
151 v8::TryCatch try_catch(scope.GetIsolate()); 151 v8::TryCatch try_catch(scope.GetIsolate());
152 v8::Local<v8::Script> script; 152 v8::Local<v8::Script> script;
153 EXPECT_TRUE(V8ScriptRunner::CompileScript(source_code, scope.GetIsolate(), 153 EXPECT_TRUE(V8ScriptRunner::CompileScript(scope.GetScriptState(), source_code,
154 kSharableCrossOrigin, 154 kSharableCrossOrigin,
155 kV8CacheOptionsDefault) 155 kV8CacheOptionsDefault)
156 .ToLocal(&script)); 156 .ToLocal(&script));
157 EXPECT_FALSE(try_catch.HasCaught()); 157 EXPECT_FALSE(try_catch.HasCaught());
158 } 158 }
159 159
160 TEST_F(ScriptStreamingTest, CompilingStreamedScriptWithParseError) { 160 TEST_F(ScriptStreamingTest, CompilingStreamedScriptWithParseError) {
161 // Test that scripts with parse errors are handled properly. In those cases, 161 // Test that scripts with parse errors are handled properly. In those cases,
162 // the V8 side typically finished before loading finishes: make sure we 162 // the V8 side typically finished before loading finishes: make sure we
163 // handle it gracefully. 163 // handle it gracefully.
(...skipping 19 matching lines...) Expand all
183 EXPECT_TRUE(client->Finished()); 183 EXPECT_TRUE(client->Finished());
184 184
185 bool error_occurred = false; 185 bool error_occurred = false;
186 ScriptSourceCode source_code = GetPendingScript() 186 ScriptSourceCode source_code = GetPendingScript()
187 ->GetSource(NullURL(), error_occurred) 187 ->GetSource(NullURL(), error_occurred)
188 ->GetScriptSourceCode(); 188 ->GetScriptSourceCode();
189 EXPECT_FALSE(error_occurred); 189 EXPECT_FALSE(error_occurred);
190 EXPECT_TRUE(source_code.Streamer()); 190 EXPECT_TRUE(source_code.Streamer());
191 v8::TryCatch try_catch(scope.GetIsolate()); 191 v8::TryCatch try_catch(scope.GetIsolate());
192 v8::Local<v8::Script> script; 192 v8::Local<v8::Script> script;
193 EXPECT_FALSE(V8ScriptRunner::CompileScript(source_code, scope.GetIsolate(), 193 EXPECT_FALSE(V8ScriptRunner::CompileScript(scope.GetScriptState(),
194 kSharableCrossOrigin, 194 source_code, kSharableCrossOrigin,
195 kV8CacheOptionsDefault) 195 kV8CacheOptionsDefault)
196 .ToLocal(&script)); 196 .ToLocal(&script));
197 EXPECT_TRUE(try_catch.HasCaught()); 197 EXPECT_TRUE(try_catch.HasCaught());
198 } 198 }
199 199
200 TEST_F(ScriptStreamingTest, CancellingStreaming) { 200 TEST_F(ScriptStreamingTest, CancellingStreaming) {
201 // Test that the upper layers (PendingScript and up) can be ramped down 201 // Test that the upper layers (PendingScript and up) can be ramped down
202 // while streaming is ongoing, and ScriptStreamer handles it gracefully. 202 // while streaming is ongoing, and ScriptStreamer handles it gracefully.
203 V8TestingScope scope; 203 V8TestingScope scope;
204 ScriptStreamer::StartStreaming( 204 ScriptStreamer::StartStreaming(
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 ProcessTasksUntilStreamingComplete(); 336 ProcessTasksUntilStreamingComplete();
337 EXPECT_TRUE(client->Finished()); 337 EXPECT_TRUE(client->Finished());
338 bool error_occurred = false; 338 bool error_occurred = false;
339 ScriptSourceCode source_code = GetPendingScript() 339 ScriptSourceCode source_code = GetPendingScript()
340 ->GetSource(NullURL(), error_occurred) 340 ->GetSource(NullURL(), error_occurred)
341 ->GetScriptSourceCode(); 341 ->GetScriptSourceCode();
342 EXPECT_FALSE(error_occurred); 342 EXPECT_FALSE(error_occurred);
343 EXPECT_TRUE(source_code.Streamer()); 343 EXPECT_TRUE(source_code.Streamer());
344 v8::TryCatch try_catch(scope.GetIsolate()); 344 v8::TryCatch try_catch(scope.GetIsolate());
345 v8::Local<v8::Script> script; 345 v8::Local<v8::Script> script;
346 EXPECT_TRUE(V8ScriptRunner::CompileScript(source_code, scope.GetIsolate(), 346 EXPECT_TRUE(V8ScriptRunner::CompileScript(scope.GetScriptState(), source_code,
347 kSharableCrossOrigin, 347 kSharableCrossOrigin,
348 kV8CacheOptionsDefault) 348 kV8CacheOptionsDefault)
349 .ToLocal(&script)); 349 .ToLocal(&script));
350 EXPECT_FALSE(try_catch.HasCaught()); 350 EXPECT_FALSE(try_catch.HasCaught());
351 } 351 }
352 352
353 TEST_F(ScriptStreamingTest, EncodingChanges) { 353 TEST_F(ScriptStreamingTest, EncodingChanges) {
354 // It's possible that the encoding of the Resource changes after we start 354 // It's possible that the encoding of the Resource changes after we start
355 // loading it. 355 // loading it.
356 V8TestingScope scope; 356 V8TestingScope scope;
(...skipping 16 matching lines...) Expand all
373 ProcessTasksUntilStreamingComplete(); 373 ProcessTasksUntilStreamingComplete();
374 EXPECT_TRUE(client->Finished()); 374 EXPECT_TRUE(client->Finished());
375 bool error_occurred = false; 375 bool error_occurred = false;
376 ScriptSourceCode source_code = GetPendingScript() 376 ScriptSourceCode source_code = GetPendingScript()
377 ->GetSource(NullURL(), error_occurred) 377 ->GetSource(NullURL(), error_occurred)
378 ->GetScriptSourceCode(); 378 ->GetScriptSourceCode();
379 EXPECT_FALSE(error_occurred); 379 EXPECT_FALSE(error_occurred);
380 EXPECT_TRUE(source_code.Streamer()); 380 EXPECT_TRUE(source_code.Streamer());
381 v8::TryCatch try_catch(scope.GetIsolate()); 381 v8::TryCatch try_catch(scope.GetIsolate());
382 v8::Local<v8::Script> script; 382 v8::Local<v8::Script> script;
383 EXPECT_TRUE(V8ScriptRunner::CompileScript(source_code, scope.GetIsolate(), 383 EXPECT_TRUE(V8ScriptRunner::CompileScript(scope.GetScriptState(), source_code,
384 kSharableCrossOrigin, 384 kSharableCrossOrigin,
385 kV8CacheOptionsDefault) 385 kV8CacheOptionsDefault)
386 .ToLocal(&script)); 386 .ToLocal(&script));
387 EXPECT_FALSE(try_catch.HasCaught()); 387 EXPECT_FALSE(try_catch.HasCaught());
388 } 388 }
389 389
390 TEST_F(ScriptStreamingTest, EncodingFromBOM) { 390 TEST_F(ScriptStreamingTest, EncodingFromBOM) {
391 // Byte order marks should be removed before giving the data to V8. They 391 // Byte order marks should be removed before giving the data to V8. They
392 // will also affect encoding detection. 392 // will also affect encoding detection.
393 V8TestingScope scope; 393 V8TestingScope scope;
(...skipping 17 matching lines...) Expand all
411 ProcessTasksUntilStreamingComplete(); 411 ProcessTasksUntilStreamingComplete();
412 EXPECT_TRUE(client->Finished()); 412 EXPECT_TRUE(client->Finished());
413 bool error_occurred = false; 413 bool error_occurred = false;
414 ScriptSourceCode source_code = GetPendingScript() 414 ScriptSourceCode source_code = GetPendingScript()
415 ->GetSource(NullURL(), error_occurred) 415 ->GetSource(NullURL(), error_occurred)
416 ->GetScriptSourceCode(); 416 ->GetScriptSourceCode();
417 EXPECT_FALSE(error_occurred); 417 EXPECT_FALSE(error_occurred);
418 EXPECT_TRUE(source_code.Streamer()); 418 EXPECT_TRUE(source_code.Streamer());
419 v8::TryCatch try_catch(scope.GetIsolate()); 419 v8::TryCatch try_catch(scope.GetIsolate());
420 v8::Local<v8::Script> script; 420 v8::Local<v8::Script> script;
421 EXPECT_TRUE(V8ScriptRunner::CompileScript(source_code, scope.GetIsolate(), 421 EXPECT_TRUE(V8ScriptRunner::CompileScript(scope.GetScriptState(), source_code,
422 kSharableCrossOrigin, 422 kSharableCrossOrigin,
423 kV8CacheOptionsDefault) 423 kV8CacheOptionsDefault)
424 .ToLocal(&script)); 424 .ToLocal(&script));
425 EXPECT_FALSE(try_catch.HasCaught()); 425 EXPECT_FALSE(try_catch.HasCaught());
426 } 426 }
427 427
428 // A test for crbug.com/711703. Should not crash. 428 // A test for crbug.com/711703. Should not crash.
429 TEST_F(ScriptStreamingTest, GarbageCollectDuringStreaming) { 429 TEST_F(ScriptStreamingTest, GarbageCollectDuringStreaming) {
430 V8TestingScope scope; 430 V8TestingScope scope;
431 ScriptStreamer::StartStreaming( 431 ScriptStreamer::StartStreaming(
432 GetPendingScript(), ScriptStreamer::kParsingBlocking, settings_.get(), 432 GetPendingScript(), ScriptStreamer::kParsingBlocking, settings_.get(),
433 scope.GetScriptState(), loading_task_runner_); 433 scope.GetScriptState(), loading_task_runner_);
434 434
435 TestPendingScriptClient* client = new TestPendingScriptClient; 435 TestPendingScriptClient* client = new TestPendingScriptClient;
436 GetPendingScript()->WatchForLoad(client); 436 GetPendingScript()->WatchForLoad(client);
437 EXPECT_FALSE(client->Finished()); 437 EXPECT_FALSE(client->Finished());
438 438
439 pending_script_ = nullptr; 439 pending_script_ = nullptr;
440 ThreadState::Current()->CollectGarbage(BlinkGC::kNoHeapPointersOnStack, 440 ThreadState::Current()->CollectGarbage(BlinkGC::kNoHeapPointersOnStack,
441 BlinkGC::kGCWithSweep, 441 BlinkGC::kGCWithSweep,
442 BlinkGC::kForcedGC); 442 BlinkGC::kForcedGC);
443 } 443 }
444 444
445 } // namespace 445 } // namespace
446 446
447 } // namespace blink 447 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698