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

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

Issue 1003043002: bindings: Use Maybe APIs in V8ScriptRunner (part 1) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 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 | Annotate | Revision Log
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 5
6 #include "config.h" 6 #include "config.h"
7 #include "bindings/core/v8/ScriptStreamer.h" 7 #include "bindings/core/v8/ScriptStreamer.h"
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 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 156
157 // Process tasks on the main thread until the streaming background thread 157 // Process tasks on the main thread until the streaming background thread
158 // has completed its tasks. 158 // has completed its tasks.
159 processTasksUntilStreamingComplete(); 159 processTasksUntilStreamingComplete();
160 EXPECT_TRUE(client.finished()); 160 EXPECT_TRUE(client.finished());
161 bool errorOccurred = false; 161 bool errorOccurred = false;
162 ScriptSourceCode sourceCode = pendingScript().getSource(KURL(), errorOccurre d); 162 ScriptSourceCode sourceCode = pendingScript().getSource(KURL(), errorOccurre d);
163 EXPECT_FALSE(errorOccurred); 163 EXPECT_FALSE(errorOccurred);
164 EXPECT_TRUE(sourceCode.streamer()); 164 EXPECT_TRUE(sourceCode.streamer());
165 v8::TryCatch tryCatch; 165 v8::TryCatch tryCatch;
166 v8::Handle<v8::Script> script = V8ScriptRunner::compileScript(sourceCode, is olate()); 166 v8::Local<v8::Script> script;
167 EXPECT_FALSE(script.IsEmpty()); 167 EXPECT_TRUE(V8ScriptRunner::compileScript(sourceCode, isolate()).ToLocal(&sc ript));
168 EXPECT_FALSE(tryCatch.HasCaught()); 168 EXPECT_FALSE(tryCatch.HasCaught());
169 } 169 }
170 170
171 TEST_F(ScriptStreamingTest, CompilingStreamedScriptWithParseError) 171 TEST_F(ScriptStreamingTest, CompilingStreamedScriptWithParseError)
172 { 172 {
173 // Test that scripts with parse errors are handled properly. In those cases, 173 // Test that scripts with parse errors are handled properly. In those cases,
174 // the V8 side typically finished before loading finishes: make sure we 174 // the V8 side typically finished before loading finishes: make sure we
175 // handle it gracefully. 175 // handle it gracefully.
176 ScriptStreamer::startStreaming(pendingScript(), m_settings.get(), m_scope.sc riptState()); 176 ScriptStreamer::startStreaming(pendingScript(), m_settings.get(), m_scope.sc riptState());
177 TestScriptResourceClient client; 177 TestScriptResourceClient client;
(...skipping 11 matching lines...) Expand all
189 EXPECT_FALSE(client.finished()); 189 EXPECT_FALSE(client.finished());
190 190
191 finish(); 191 finish();
192 EXPECT_TRUE(client.finished()); 192 EXPECT_TRUE(client.finished());
193 193
194 bool errorOccurred = false; 194 bool errorOccurred = false;
195 ScriptSourceCode sourceCode = pendingScript().getSource(KURL(), errorOccurre d); 195 ScriptSourceCode sourceCode = pendingScript().getSource(KURL(), errorOccurre d);
196 EXPECT_FALSE(errorOccurred); 196 EXPECT_FALSE(errorOccurred);
197 EXPECT_TRUE(sourceCode.streamer()); 197 EXPECT_TRUE(sourceCode.streamer());
198 v8::TryCatch tryCatch; 198 v8::TryCatch tryCatch;
199 v8::Handle<v8::Script> script = V8ScriptRunner::compileScript(sourceCode, is olate()); 199 v8::Local<v8::Script> script;
200 EXPECT_TRUE(script.IsEmpty()); 200 EXPECT_FALSE(V8ScriptRunner::compileScript(sourceCode, isolate()).ToLocal(&s cript));
201 EXPECT_TRUE(tryCatch.HasCaught()); 201 EXPECT_TRUE(tryCatch.HasCaught());
202 } 202 }
203 203
204 TEST_F(ScriptStreamingTest, CancellingStreaming) 204 TEST_F(ScriptStreamingTest, CancellingStreaming)
205 { 205 {
206 // Test that the upper layers (PendingScript and up) can be ramped down 206 // Test that the upper layers (PendingScript and up) can be ramped down
207 // while streaming is ongoing, and ScriptStreamer handles it gracefully. 207 // while streaming is ongoing, and ScriptStreamer handles it gracefully.
208 ScriptStreamer::startStreaming(pendingScript(), m_settings.get(), m_scope.sc riptState()); 208 ScriptStreamer::startStreaming(pendingScript(), m_settings.get(), m_scope.sc riptState());
209 TestScriptResourceClient client; 209 TestScriptResourceClient client;
210 pendingScript().watchForLoad(&client); 210 pendingScript().watchForLoad(&client);
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 320
321 finish(); 321 finish();
322 322
323 processTasksUntilStreamingComplete(); 323 processTasksUntilStreamingComplete();
324 EXPECT_TRUE(client.finished()); 324 EXPECT_TRUE(client.finished());
325 bool errorOccurred = false; 325 bool errorOccurred = false;
326 ScriptSourceCode sourceCode = pendingScript().getSource(KURL(), errorOccurre d); 326 ScriptSourceCode sourceCode = pendingScript().getSource(KURL(), errorOccurre d);
327 EXPECT_FALSE(errorOccurred); 327 EXPECT_FALSE(errorOccurred);
328 EXPECT_TRUE(sourceCode.streamer()); 328 EXPECT_TRUE(sourceCode.streamer());
329 v8::TryCatch tryCatch; 329 v8::TryCatch tryCatch;
330 v8::Handle<v8::Script> script = V8ScriptRunner::compileScript(sourceCode, is olate()); 330 v8::Local<v8::Script> script;
331 EXPECT_FALSE(script.IsEmpty()); 331 EXPECT_TRUE(V8ScriptRunner::compileScript(sourceCode, isolate()).ToLocal(&sc ript));
332 EXPECT_FALSE(tryCatch.HasCaught()); 332 EXPECT_FALSE(tryCatch.HasCaught());
333 } 333 }
334 334
335 TEST_F(ScriptStreamingTest, EncodingChanges) 335 TEST_F(ScriptStreamingTest, EncodingChanges)
336 { 336 {
337 // It's possible that the encoding of the Resource changes after we start 337 // It's possible that the encoding of the Resource changes after we start
338 // loading it. 338 // loading it.
339 m_resource->setEncoding("windows-1252"); 339 m_resource->setEncoding("windows-1252");
340 340
341 ScriptStreamer::startStreaming(pendingScript(), m_settings.get(), m_scope.sc riptState()); 341 ScriptStreamer::startStreaming(pendingScript(), m_settings.get(), m_scope.sc riptState());
342 TestScriptResourceClient client; 342 TestScriptResourceClient client;
343 pendingScript().watchForLoad(&client); 343 pendingScript().watchForLoad(&client);
344 344
345 m_resource->setEncoding("UTF-8"); 345 m_resource->setEncoding("UTF-8");
346 // \xec\x92\x81 are the raw bytes for \uc481. 346 // \xec\x92\x81 are the raw bytes for \uc481.
347 appendData("function foo() { var foob\xec\x92\x81r = 13; return foob\xec\x92 \x81r; } foo();"); 347 appendData("function foo() { var foob\xec\x92\x81r = 13; return foob\xec\x92 \x81r; } foo();");
348 348
349 finish(); 349 finish();
350 350
351 processTasksUntilStreamingComplete(); 351 processTasksUntilStreamingComplete();
352 EXPECT_TRUE(client.finished()); 352 EXPECT_TRUE(client.finished());
353 bool errorOccurred = false; 353 bool errorOccurred = false;
354 ScriptSourceCode sourceCode = pendingScript().getSource(KURL(), errorOccurre d); 354 ScriptSourceCode sourceCode = pendingScript().getSource(KURL(), errorOccurre d);
355 EXPECT_FALSE(errorOccurred); 355 EXPECT_FALSE(errorOccurred);
356 EXPECT_TRUE(sourceCode.streamer()); 356 EXPECT_TRUE(sourceCode.streamer());
357 v8::TryCatch tryCatch; 357 v8::TryCatch tryCatch;
358 v8::Handle<v8::Script> script = V8ScriptRunner::compileScript(sourceCode, is olate()); 358 v8::Local<v8::Script> script;
359 EXPECT_FALSE(script.IsEmpty()); 359 EXPECT_TRUE(V8ScriptRunner::compileScript(sourceCode, isolate()).ToLocal(&sc ript));
360 EXPECT_FALSE(tryCatch.HasCaught()); 360 EXPECT_FALSE(tryCatch.HasCaught());
361 } 361 }
362 362
363 363
364 TEST_F(ScriptStreamingTest, EncodingFromBOM) 364 TEST_F(ScriptStreamingTest, EncodingFromBOM)
365 { 365 {
366 // Byte order marks should be removed before giving the data to V8. They 366 // Byte order marks should be removed before giving the data to V8. They
367 // will also affect encoding detection. 367 // will also affect encoding detection.
368 m_resource->setEncoding("windows-1252"); // This encoding is wrong on purpos e. 368 m_resource->setEncoding("windows-1252"); // This encoding is wrong on purpos e.
369 369
370 ScriptStreamer::startStreaming(pendingScript(), m_settings.get(), m_scope.sc riptState()); 370 ScriptStreamer::startStreaming(pendingScript(), m_settings.get(), m_scope.sc riptState());
371 TestScriptResourceClient client; 371 TestScriptResourceClient client;
372 pendingScript().watchForLoad(&client); 372 pendingScript().watchForLoad(&client);
373 373
374 // \xef\xbb\xbf is the UTF-8 byte order mark. \xec\x92\x81 are the raw bytes 374 // \xef\xbb\xbf is the UTF-8 byte order mark. \xec\x92\x81 are the raw bytes
375 // for \uc481. 375 // for \uc481.
376 appendData("\xef\xbb\xbf function foo() { var foob\xec\x92\x81r = 13; return foob\xec\x92\x81r; } foo();"); 376 appendData("\xef\xbb\xbf function foo() { var foob\xec\x92\x81r = 13; return foob\xec\x92\x81r; } foo();");
377 377
378 finish(); 378 finish();
379 processTasksUntilStreamingComplete(); 379 processTasksUntilStreamingComplete();
380 EXPECT_TRUE(client.finished()); 380 EXPECT_TRUE(client.finished());
381 bool errorOccurred = false; 381 bool errorOccurred = false;
382 ScriptSourceCode sourceCode = pendingScript().getSource(KURL(), errorOccurre d); 382 ScriptSourceCode sourceCode = pendingScript().getSource(KURL(), errorOccurre d);
383 EXPECT_FALSE(errorOccurred); 383 EXPECT_FALSE(errorOccurred);
384 EXPECT_TRUE(sourceCode.streamer()); 384 EXPECT_TRUE(sourceCode.streamer());
385 v8::TryCatch tryCatch; 385 v8::TryCatch tryCatch;
386 v8::Handle<v8::Script> script = V8ScriptRunner::compileScript(sourceCode, is olate()); 386 v8::Local<v8::Script> script;
387 EXPECT_FALSE(script.IsEmpty()); 387 EXPECT_TRUE(V8ScriptRunner::compileScript(sourceCode, isolate()).ToLocal(&sc ript));
388 EXPECT_FALSE(tryCatch.HasCaught()); 388 EXPECT_FALSE(tryCatch.HasCaught());
389 } 389 }
390 390
391 } // namespace 391 } // namespace
392 392
393 } // namespace blink 393 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698