| 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 "extensions/renderer/module_system_test.h" | 5 #include "extensions/renderer/module_system_test.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <memory> |
| 10 #include <string> | 11 #include <string> |
| 11 #include <utility> | 12 #include <utility> |
| 12 | 13 |
| 13 #include "base/callback.h" | 14 #include "base/callback.h" |
| 14 #include "base/command_line.h" | 15 #include "base/command_line.h" |
| 15 #include "base/files/file_path.h" | 16 #include "base/files/file_path.h" |
| 16 #include "base/files/file_util.h" | 17 #include "base/files/file_util.h" |
| 17 #include "base/lazy_instance.h" | 18 #include "base/lazy_instance.h" |
| 18 #include "base/memory/scoped_ptr.h" | 19 #include "base/memory/ptr_util.h" |
| 19 #include "base/path_service.h" | 20 #include "base/path_service.h" |
| 20 #include "base/strings/string_piece.h" | 21 #include "base/strings/string_piece.h" |
| 21 #include "extensions/common/extension_paths.h" | 22 #include "extensions/common/extension_paths.h" |
| 22 #include "extensions/renderer/logging_native_handler.h" | 23 #include "extensions/renderer/logging_native_handler.h" |
| 23 #include "extensions/renderer/object_backed_native_handler.h" | 24 #include "extensions/renderer/object_backed_native_handler.h" |
| 24 #include "extensions/renderer/safe_builtins.h" | 25 #include "extensions/renderer/safe_builtins.h" |
| 25 #include "extensions/renderer/utils_native_handler.h" | 26 #include "extensions/renderer/utils_native_handler.h" |
| 26 #include "ui/base/resource/resource_bundle.h" | 27 #include "ui/base/resource/resource_bundle.h" |
| 27 | 28 |
| 28 namespace extensions { | 29 namespace extensions { |
| (...skipping 16 matching lines...) Expand all Loading... |
| 45 new v8::ExtensionConfiguration(static_cast<int>(names_.size()), | 46 new v8::ExtensionConfiguration(static_cast<int>(names_.size()), |
| 46 names_.data())) { | 47 names_.data())) { |
| 47 v8::RegisterExtension(safe_builtins_.get()); | 48 v8::RegisterExtension(safe_builtins_.get()); |
| 48 } | 49 } |
| 49 | 50 |
| 50 v8::ExtensionConfiguration* GetConfiguration() { | 51 v8::ExtensionConfiguration* GetConfiguration() { |
| 51 return configuration_.get(); | 52 return configuration_.get(); |
| 52 } | 53 } |
| 53 | 54 |
| 54 private: | 55 private: |
| 55 scoped_ptr<v8::Extension> safe_builtins_; | 56 std::unique_ptr<v8::Extension> safe_builtins_; |
| 56 std::vector<const char*> names_; | 57 std::vector<const char*> names_; |
| 57 scoped_ptr<v8::ExtensionConfiguration> configuration_; | 58 std::unique_ptr<v8::ExtensionConfiguration> configuration_; |
| 58 }; | 59 }; |
| 59 | 60 |
| 60 base::LazyInstance<V8ExtensionConfigurator>::Leaky g_v8_extension_configurator = | 61 base::LazyInstance<V8ExtensionConfigurator>::Leaky g_v8_extension_configurator = |
| 61 LAZY_INSTANCE_INITIALIZER; | 62 LAZY_INSTANCE_INITIALIZER; |
| 62 | 63 |
| 63 } // namespace | 64 } // namespace |
| 64 | 65 |
| 65 // Native JS functions for doing asserts. | 66 // Native JS functions for doing asserts. |
| 66 class ModuleSystemTestEnvironment::AssertNatives | 67 class ModuleSystemTestEnvironment::AssertNatives |
| 67 : public ObjectBackedNativeHandler { | 68 : public ObjectBackedNativeHandler { |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 context_.reset(new ScriptContext(context_holder_->context(), | 137 context_.reset(new ScriptContext(context_holder_->context(), |
| 137 nullptr, // WebFrame | 138 nullptr, // WebFrame |
| 138 nullptr, // Extension | 139 nullptr, // Extension |
| 139 Feature::BLESSED_EXTENSION_CONTEXT, | 140 Feature::BLESSED_EXTENSION_CONTEXT, |
| 140 nullptr, // Effective Extension | 141 nullptr, // Effective Extension |
| 141 Feature::BLESSED_EXTENSION_CONTEXT)); | 142 Feature::BLESSED_EXTENSION_CONTEXT)); |
| 142 context_->v8_context()->Enter(); | 143 context_->v8_context()->Enter(); |
| 143 assert_natives_ = new AssertNatives(context_.get()); | 144 assert_natives_ = new AssertNatives(context_.get()); |
| 144 | 145 |
| 145 { | 146 { |
| 146 scoped_ptr<ModuleSystem> module_system( | 147 std::unique_ptr<ModuleSystem> module_system( |
| 147 new ModuleSystem(context_.get(), source_map_.get())); | 148 new ModuleSystem(context_.get(), source_map_.get())); |
| 148 context_->set_module_system(std::move(module_system)); | 149 context_->set_module_system(std::move(module_system)); |
| 149 } | 150 } |
| 150 ModuleSystem* module_system = context_->module_system(); | 151 ModuleSystem* module_system = context_->module_system(); |
| 151 module_system->RegisterNativeHandler( | 152 module_system->RegisterNativeHandler( |
| 152 "assert", scoped_ptr<NativeHandler>(assert_natives_)); | 153 "assert", std::unique_ptr<NativeHandler>(assert_natives_)); |
| 153 module_system->RegisterNativeHandler( | 154 module_system->RegisterNativeHandler( |
| 154 "logging", | 155 "logging", |
| 155 scoped_ptr<NativeHandler>(new LoggingNativeHandler(context_.get()))); | 156 std::unique_ptr<NativeHandler>(new LoggingNativeHandler(context_.get()))); |
| 156 module_system->RegisterNativeHandler( | 157 module_system->RegisterNativeHandler( |
| 157 "utils", | 158 "utils", |
| 158 scoped_ptr<NativeHandler>(new UtilsNativeHandler(context_.get()))); | 159 std::unique_ptr<NativeHandler>(new UtilsNativeHandler(context_.get()))); |
| 159 module_system->SetExceptionHandlerForTest( | 160 module_system->SetExceptionHandlerForTest( |
| 160 scoped_ptr<ModuleSystem::ExceptionHandler>(new FailsOnException)); | 161 std::unique_ptr<ModuleSystem::ExceptionHandler>(new FailsOnException)); |
| 161 } | 162 } |
| 162 | 163 |
| 163 ModuleSystemTestEnvironment::~ModuleSystemTestEnvironment() { | 164 ModuleSystemTestEnvironment::~ModuleSystemTestEnvironment() { |
| 164 if (context_->is_valid()) | 165 if (context_->is_valid()) |
| 165 ShutdownModuleSystem(); | 166 ShutdownModuleSystem(); |
| 166 } | 167 } |
| 167 | 168 |
| 168 void ModuleSystemTestEnvironment::RegisterModule(const std::string& name, | 169 void ModuleSystemTestEnvironment::RegisterModule(const std::string& name, |
| 169 const std::string& code) { | 170 const std::string& code) { |
| 170 source_map_->RegisterModule(name, code); | 171 source_map_->RegisterModule(name, code); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 // Run the GC until the heap size reaches a steady state to ensure that | 241 // Run the GC until the heap size reaches a steady state to ensure that |
| 241 // all the garbage is collected. | 242 // all the garbage is collected. |
| 242 while (stats.used_heap_size() != old_heap_size) { | 243 while (stats.used_heap_size() != old_heap_size) { |
| 243 old_heap_size = stats.used_heap_size(); | 244 old_heap_size = stats.used_heap_size(); |
| 244 isolate_->RequestGarbageCollectionForTesting( | 245 isolate_->RequestGarbageCollectionForTesting( |
| 245 v8::Isolate::kFullGarbageCollection); | 246 v8::Isolate::kFullGarbageCollection); |
| 246 isolate_->GetHeapStatistics(&stats); | 247 isolate_->GetHeapStatistics(&stats); |
| 247 } | 248 } |
| 248 } | 249 } |
| 249 | 250 |
| 250 scoped_ptr<ModuleSystemTestEnvironment> ModuleSystemTest::CreateEnvironment() { | 251 std::unique_ptr<ModuleSystemTestEnvironment> |
| 251 return make_scoped_ptr(new ModuleSystemTestEnvironment(isolate_)); | 252 ModuleSystemTest::CreateEnvironment() { |
| 253 return base::WrapUnique(new ModuleSystemTestEnvironment(isolate_)); |
| 252 } | 254 } |
| 253 | 255 |
| 254 void ModuleSystemTest::ExpectNoAssertionsMade() { | 256 void ModuleSystemTest::ExpectNoAssertionsMade() { |
| 255 should_assertions_be_made_ = false; | 257 should_assertions_be_made_ = false; |
| 256 } | 258 } |
| 257 | 259 |
| 258 void ModuleSystemTest::RunResolvedPromises() { | 260 void ModuleSystemTest::RunResolvedPromises() { |
| 259 v8::MicrotasksScope::PerformCheckpoint(isolate_); | 261 v8::MicrotasksScope::PerformCheckpoint(isolate_); |
| 260 } | 262 } |
| 261 | 263 |
| 262 } // namespace extensions | 264 } // namespace extensions |
| OLD | NEW |