| 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/strings/stringprintf.h" | 5 #include "base/strings/stringprintf.h" |
| 6 #include "extensions/grit/extensions_renderer_resources.h" | 6 #include "extensions/grit/extensions_renderer_resources.h" |
| 7 #include "extensions/renderer/module_system_test.h" | 7 #include "extensions/renderer/module_system_test.h" |
| 8 #include "gin/dictionary.h" | 8 #include "gin/dictionary.h" |
| 9 | 9 |
| 10 namespace extensions { | 10 namespace extensions { |
| 11 namespace { | 11 namespace { |
| 12 | 12 |
| 13 class UtilsUnittest : public ModuleSystemTest { | 13 class UtilsUnittest : public ModuleSystemTest { |
| 14 private: | 14 public: |
| 15 void SetUp() override { | 15 void SetUp() override { |
| 16 ModuleSystemTest::SetUp(); | 16 ModuleSystemTest::SetUp(); |
| 17 | 17 |
| 18 env()->RegisterModule("utils", IDR_UTILS_JS); | 18 env()->RegisterModule("utils", IDR_UTILS_JS); |
| 19 env()->RegisterTestFile("utils_unittest", "utils_unittest.js"); | 19 env()->RegisterTestFile("utils_unittest", "utils_unittest.js"); |
| 20 env()->OverrideNativeHandler("schema_registry", | 20 env()->OverrideNativeHandler("schema_registry", |
| 21 "exports.$set('GetSchema', function() {});"); | 21 "exports.$set('GetSchema', function() {});"); |
| 22 env()->OverrideNativeHandler("logging", | 22 env()->OverrideNativeHandler("logging", |
| 23 "exports.$set('CHECK', function() {});\n" | 23 "exports.$set('CHECK', function() {});\n" |
| 24 "exports.$set('DCHECK', function() {});\n" | 24 "exports.$set('DCHECK', function() {});\n" |
| 25 "exports.$set('WARNING', function() {});"); | 25 "exports.$set('WARNING', function() {});"); |
| 26 env()->OverrideNativeHandler("v8_context", ""); | 26 env()->OverrideNativeHandler("v8_context", ""); |
| 27 gin::Dictionary chrome(env()->isolate(), env()->CreateGlobal("chrome")); | 27 gin::Dictionary chrome(env()->isolate(), env()->CreateGlobal("chrome")); |
| 28 gin::Dictionary chrome_runtime( | 28 gin::Dictionary chrome_runtime( |
| 29 gin::Dictionary::CreateEmpty(env()->isolate())); | 29 gin::Dictionary::CreateEmpty(env()->isolate())); |
| 30 chrome.Set("runtime", chrome_runtime); | 30 chrome.Set("runtime", chrome_runtime); |
| 31 } | 31 } |
| 32 |
| 33 void RunTest(const std::string& test_name) { RunTestImpl(test_name, false); } |
| 34 |
| 35 void RunTestWithPromises(const std::string& test_name) { |
| 36 RunTestImpl(test_name, true); |
| 37 } |
| 38 |
| 39 private: |
| 40 void RunTestImpl(const std::string& test_name, bool run_promises) { |
| 41 ModuleSystem::NativesEnabledScope natives_enabled_scope( |
| 42 env()->module_system()); |
| 43 ASSERT_FALSE(env() |
| 44 ->module_system() |
| 45 ->Require("utils_unittest") |
| 46 .ToLocalChecked() |
| 47 .IsEmpty()); |
| 48 env()->module_system()->CallModuleMethodSafe("utils_unittest", test_name); |
| 49 if (run_promises) |
| 50 RunResolvedPromises(); |
| 51 } |
| 32 }; | 52 }; |
| 33 | 53 |
| 34 TEST_F(UtilsUnittest, TestNothing) { | 54 TEST_F(UtilsUnittest, TestNothing) { |
| 35 ExpectNoAssertionsMade(); | 55 ExpectNoAssertionsMade(); |
| 36 } | 56 } |
| 37 | 57 |
| 38 TEST_F(UtilsUnittest, SuperClass) { | 58 TEST_F(UtilsUnittest, SuperClass) { |
| 39 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 59 RunTest("testSuperClass"); |
| 40 env()->module_system()); | |
| 41 env()->module_system()->CallModuleMethodSafe("utils_unittest", | |
| 42 "testSuperClass"); | |
| 43 } | 60 } |
| 44 | 61 |
| 45 TEST_F(UtilsUnittest, PromiseNoResult) { | 62 TEST_F(UtilsUnittest, PromiseNoResult) { |
| 46 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 63 RunTestWithPromises("testPromiseNoResult"); |
| 47 env()->module_system()); | |
| 48 env()->module_system()->CallModuleMethodSafe("utils_unittest", | |
| 49 "testPromiseNoResult"); | |
| 50 RunResolvedPromises(); | |
| 51 } | 64 } |
| 52 | 65 |
| 53 TEST_F(UtilsUnittest, PromiseOneResult) { | 66 TEST_F(UtilsUnittest, PromiseOneResult) { |
| 54 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 67 RunTestWithPromises("testPromiseOneResult"); |
| 55 env()->module_system()); | |
| 56 env()->module_system()->CallModuleMethodSafe("utils_unittest", | |
| 57 "testPromiseOneResult"); | |
| 58 RunResolvedPromises(); | |
| 59 } | 68 } |
| 60 | 69 |
| 61 TEST_F(UtilsUnittest, PromiseTwoResults) { | 70 TEST_F(UtilsUnittest, PromiseTwoResults) { |
| 62 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 71 RunTestWithPromises("testPromiseTwoResults"); |
| 63 env()->module_system()); | |
| 64 env()->module_system()->CallModuleMethodSafe("utils_unittest", | |
| 65 "testPromiseTwoResults"); | |
| 66 RunResolvedPromises(); | |
| 67 } | 72 } |
| 68 | 73 |
| 69 TEST_F(UtilsUnittest, PromiseError) { | 74 TEST_F(UtilsUnittest, PromiseError) { |
| 70 ModuleSystem::NativesEnabledScope natives_enabled_scope( | 75 RunTestWithPromises("testPromiseError"); |
| 71 env()->module_system()); | |
| 72 env()->module_system()->CallModuleMethodSafe("utils_unittest", | |
| 73 "testPromiseError"); | |
| 74 RunResolvedPromises(); | |
| 75 } | 76 } |
| 76 | 77 |
| 77 } // namespace | 78 } // namespace |
| 78 } // namespace extensions | 79 } // namespace extensions |
| OLD | NEW |