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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "extensions/renderer/module_system.h" | 6 #include "extensions/renderer/module_system.h" |
7 #include "extensions/renderer/module_system_test.h" | 7 #include "extensions/renderer/module_system_test.h" |
8 #include "gin/modules/module_registry.h" | 8 #include "gin/modules/module_registry.h" |
9 | 9 |
10 namespace extensions { | 10 namespace extensions { |
(...skipping 16 matching lines...) Expand all Loading... | |
27 void Increment(const v8::FunctionCallbackInfo<v8::Value>& args) { | 27 void Increment(const v8::FunctionCallbackInfo<v8::Value>& args) { |
28 counter_++; | 28 counter_++; |
29 } | 29 } |
30 | 30 |
31 private: | 31 private: |
32 int counter_; | 32 int counter_; |
33 }; | 33 }; |
34 | 34 |
35 class TestExceptionHandler : public ModuleSystem::ExceptionHandler { | 35 class TestExceptionHandler : public ModuleSystem::ExceptionHandler { |
36 public: | 36 public: |
37 TestExceptionHandler() : handled_exception_(false) {} | 37 TestExceptionHandler() |
38 : ModuleSystem::ExceptionHandler(NULL), handled_exception_(false) {} | |
not at google - send to devlin
2015/06/12 16:51:37
Same s/NULL/nullptr/.
bashi
2015/06/16 03:12:47
Done.
| |
38 | 39 |
39 void HandleUncaughtException(const v8::TryCatch& try_catch) override { | 40 void HandleUncaughtException(const v8::TryCatch& try_catch) override { |
40 handled_exception_ = true; | 41 handled_exception_ = true; |
41 } | 42 } |
42 | 43 |
43 bool handled_exception() const { return handled_exception_; } | 44 bool handled_exception() const { return handled_exception_; } |
44 | 45 |
45 private: | 46 private: |
46 bool handled_exception_; | 47 bool handled_exception_; |
47 }; | 48 }; |
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
397 " requireNative('assert').AssertTrue(result == 'pong');" | 398 " requireNative('assert').AssertTrue(result == 'pong');" |
398 " });" | 399 " });" |
399 "});"); | 400 "});"); |
400 scoped_ptr<ModuleSystemTestEnvironment> other_env = CreateEnvironment(); | 401 scoped_ptr<ModuleSystemTestEnvironment> other_env = CreateEnvironment(); |
401 other_env->RegisterModule("ping", | 402 other_env->RegisterModule("ping", |
402 "define('ping', ['natives'], function(natives) {" | 403 "define('ping', ['natives'], function(natives) {" |
403 " return function() {" | 404 " return function() {" |
404 " return 'pong';" | 405 " return 'pong';" |
405 " }" | 406 " }" |
406 "});"); | 407 "});"); |
407 gin::ModuleRegistry::From(env()->context()->v8_context())->AddBuiltinModule( | 408 gin::ModuleRegistry::From(env()->context()->v8_context()) |
408 env()->isolate(), "natives", other_env->module_system()->NewInstance()); | 409 ->AddBuiltinModule( |
410 env()->isolate(), "natives", | |
411 other_env->module_system()->NewInstance()); | |
409 gin::ModuleRegistry::From(other_env->context()->v8_context()) | 412 gin::ModuleRegistry::From(other_env->context()->v8_context()) |
410 ->AddBuiltinModule( | 413 ->AddBuiltinModule( |
411 env()->isolate(), "natives", env()->module_system()->NewInstance()); | 414 env()->isolate(), "natives", |
415 env()->module_system()->NewInstance()); | |
412 env()->module_system()->Require("test"); | 416 env()->module_system()->Require("test"); |
413 RunResolvedPromises(); | 417 RunResolvedPromises(); |
414 } | 418 } |
415 | 419 |
416 TEST_F(ModuleSystemTest, TestRequireAsyncBetweenContexts) { | 420 TEST_F(ModuleSystemTest, TestRequireAsyncBetweenContexts) { |
417 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 421 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
418 env()->module_system()); | 422 env()->module_system()); |
419 env()->RegisterModule("pong", | 423 env()->RegisterModule("pong", |
420 "define('pong', [], function() {" | 424 "define('pong', [], function() {" |
421 " return function() { return 'done'; };" | 425 " return function() { return 'done'; };" |
422 "});"); | 426 "});"); |
423 env()->RegisterModule( | 427 env()->RegisterModule( |
424 "test", | 428 "test", |
425 "requireAsync('natives').then(function(natives) {" | 429 "requireAsync('natives').then(function(natives) {" |
426 " natives.requireAsync('ping').then(function(ping) {" | 430 " natives.requireAsync('ping').then(function(ping) {" |
427 " return ping();" | 431 " return ping();" |
428 " }).then(function(pong) {" | 432 " }).then(function(pong) {" |
429 " return pong();" | 433 " return pong();" |
430 " }).then(function(result) {" | 434 " }).then(function(result) {" |
431 " requireNative('assert').AssertTrue(result == 'done');" | 435 " requireNative('assert').AssertTrue(result == 'done');" |
432 " });" | 436 " });" |
433 "});"); | 437 "});"); |
434 scoped_ptr<ModuleSystemTestEnvironment> other_env = CreateEnvironment(); | 438 scoped_ptr<ModuleSystemTestEnvironment> other_env = CreateEnvironment(); |
435 other_env->RegisterModule("ping", | 439 other_env->RegisterModule("ping", |
436 "define('ping', ['natives'], function(natives) {" | 440 "define('ping', ['natives'], function(natives) {" |
437 " return function() {" | 441 " return function() {" |
438 " return natives.requireAsync('pong');" | 442 " return natives.requireAsync('pong');" |
439 " }" | 443 " }" |
440 "});"); | 444 "});"); |
441 gin::ModuleRegistry::From(env()->context()->v8_context())->AddBuiltinModule( | 445 gin::ModuleRegistry::From(env()->context()->v8_context()) |
442 env()->isolate(), "natives", other_env->module_system()->NewInstance()); | 446 ->AddBuiltinModule( |
447 env()->isolate(), "natives", | |
448 other_env->module_system()->NewInstance()); | |
443 gin::ModuleRegistry::From(other_env->context()->v8_context()) | 449 gin::ModuleRegistry::From(other_env->context()->v8_context()) |
444 ->AddBuiltinModule( | 450 ->AddBuiltinModule( |
445 env()->isolate(), "natives", env()->module_system()->NewInstance()); | 451 env()->isolate(), "natives", |
452 env()->module_system()->NewInstance()); | |
446 env()->module_system()->Require("test"); | 453 env()->module_system()->Require("test"); |
447 RunResolvedPromises(); | 454 RunResolvedPromises(); |
448 } | 455 } |
449 | 456 |
450 TEST_F(ModuleSystemTest, TestRequireAsyncFromContextWithNoModuleRegistry) { | 457 TEST_F(ModuleSystemTest, TestRequireAsyncFromContextWithNoModuleRegistry) { |
451 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 458 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
452 env()->module_system()); | 459 env()->module_system()); |
453 env()->RegisterModule("test", | 460 env()->RegisterModule("test", |
454 "requireAsync('natives').then(function(natives) {" | 461 "requireAsync('natives').then(function(natives) {" |
455 " var AssertTrue = requireNative('assert').AssertTrue;" | 462 " var AssertTrue = requireNative('assert').AssertTrue;" |
456 " natives.requireAsync('foo').then(function() {" | 463 " natives.requireAsync('foo').then(function() {" |
457 " AssertTrue(false);" | 464 " AssertTrue(false);" |
458 " }).catch(function(error) {" | 465 " }).catch(function(error) {" |
459 " AssertTrue(error.message == " | 466 " AssertTrue(error.message == " |
460 " 'Extension view no longer exists');" | 467 " 'Extension view no longer exists');" |
461 " });" | 468 " });" |
462 "});"); | 469 "});"); |
463 scoped_ptr<ModuleSystemTestEnvironment> other_env = CreateEnvironment(); | 470 scoped_ptr<ModuleSystemTestEnvironment> other_env = CreateEnvironment(); |
464 gin::ModuleRegistry::From(env()->context()->v8_context())->AddBuiltinModule( | 471 gin::ModuleRegistry::From(env()->context()->v8_context()) |
465 env()->isolate(), "natives", other_env->module_system()->NewInstance()); | 472 ->AddBuiltinModule( |
473 env()->isolate(), "natives", | |
474 other_env->module_system()->NewInstance()); | |
466 other_env->ShutdownGin(); | 475 other_env->ShutdownGin(); |
467 env()->module_system()->Require("test"); | 476 env()->module_system()->Require("test"); |
468 RunResolvedPromises(); | 477 RunResolvedPromises(); |
469 } | 478 } |
470 | 479 |
471 TEST_F(ModuleSystemTest, TestRequireAsyncFromContextWithNoModuleSystem) { | 480 TEST_F(ModuleSystemTest, TestRequireAsyncFromContextWithNoModuleSystem) { |
472 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 481 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
473 env()->module_system()); | 482 env()->module_system()); |
474 env()->RegisterModule("test", | 483 env()->RegisterModule("test", |
475 "requireAsync('natives').then(function(natives) {" | 484 "requireAsync('natives').then(function(natives) {" |
476 " requireNative('assert').AssertTrue(" | 485 " requireNative('assert').AssertTrue(" |
477 " natives.requireAsync('foo') === undefined);" | 486 " natives.requireAsync('foo') === undefined);" |
478 "});"); | 487 "});"); |
479 scoped_ptr<ModuleSystemTestEnvironment> other_env = CreateEnvironment(); | 488 scoped_ptr<ModuleSystemTestEnvironment> other_env = CreateEnvironment(); |
480 gin::ModuleRegistry::From(env()->context()->v8_context())->AddBuiltinModule( | 489 gin::ModuleRegistry::From(env()->context()->v8_context()) |
481 env()->isolate(), "natives", other_env->module_system()->NewInstance()); | 490 ->AddBuiltinModule( |
491 env()->isolate(), "natives", | |
492 other_env->module_system()->NewInstance()); | |
482 other_env->ShutdownModuleSystem(); | 493 other_env->ShutdownModuleSystem(); |
483 env()->module_system()->Require("test"); | 494 env()->module_system()->Require("test"); |
484 RunResolvedPromises(); | 495 RunResolvedPromises(); |
485 } | 496 } |
486 | 497 |
487 } // namespace extensions | 498 } // namespace extensions |
OLD | NEW |