Chromium Code Reviews| 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.h" | 5 #include "extensions/renderer/module_system.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
| 10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
| (...skipping 639 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 650 HandleException(try_catch); | 650 HandleException(try_catch); |
| 651 return v8::Undefined(GetIsolate()); | 651 return v8::Undefined(GetIsolate()); |
| 652 } | 652 } |
| 653 } | 653 } |
| 654 return handle_scope.Escape(exports); | 654 return handle_scope.Escape(exports); |
| 655 } | 655 } |
| 656 | 656 |
| 657 void ModuleSystem::OnDidAddPendingModule( | 657 void ModuleSystem::OnDidAddPendingModule( |
| 658 const std::string& id, | 658 const std::string& id, |
| 659 const std::vector<std::string>& dependencies) { | 659 const std::vector<std::string>& dependencies) { |
| 660 if (!source_map_->Contains(id)) | 660 bool module_system_managed = source_map_->Contains(id); |
| 661 return; | |
| 662 | 661 |
| 663 gin::ModuleRegistry* registry = | 662 gin::ModuleRegistry* registry = |
| 664 gin::ModuleRegistry::From(context_->v8_context()); | 663 gin::ModuleRegistry::From(context_->v8_context()); |
| 665 DCHECK(registry); | 664 DCHECK(registry); |
| 666 for (std::vector<std::string>::const_iterator it = dependencies.begin(); | 665 for (const auto& dependency : dependencies) { |
| 667 it != dependencies.end(); | 666 // If a dependency is not available and either the module being loaded or |
| 668 ++it) { | 667 // the particular dependency is one loaded by ModuleSystem, attempt to load |
|
not at google - send to devlin
2015/01/13 21:46:46
first part is a little hard to parse - I eventuall
Sam McNally
2015/01/13 23:48:43
Done.
| |
| 669 if (registry->available_modules().count(*it) == 0) | 668 // it. Ignore other dependencies; the module requesting them should be |
|
not at google - send to devlin
2015/01/13 21:46:46
could you mention what these other dependencies mi
Sam McNally
2015/01/13 23:48:43
Done.
| |
| 670 LoadModule(*it); | 669 // ensuring that its module's dependencies are available. |
| 670 if (registry->available_modules().count(dependency) == 0 && | |
| 671 (module_system_managed || source_map_->Contains(dependency))) { | |
| 672 LoadModule(dependency); | |
| 673 } | |
| 671 } | 674 } |
| 672 registry->AttemptToLoadMoreModules(GetIsolate()); | 675 registry->AttemptToLoadMoreModules(GetIsolate()); |
| 673 } | 676 } |
| 674 | 677 |
| 675 void ModuleSystem::OnModuleLoaded( | 678 void ModuleSystem::OnModuleLoaded( |
| 676 scoped_ptr<v8::UniquePersistent<v8::Promise::Resolver> > resolver, | 679 scoped_ptr<v8::UniquePersistent<v8::Promise::Resolver> > resolver, |
| 677 v8::Handle<v8::Value> value) { | 680 v8::Handle<v8::Value> value) { |
| 678 if (!is_valid()) | 681 if (!is_valid()) |
| 679 return; | 682 return; |
| 680 v8::HandleScope handle_scope(GetIsolate()); | 683 v8::HandleScope handle_scope(GetIsolate()); |
| 681 v8::Handle<v8::Promise::Resolver> resolver_local( | 684 v8::Handle<v8::Promise::Resolver> resolver_local( |
| 682 v8::Local<v8::Promise::Resolver>::New(GetIsolate(), *resolver)); | 685 v8::Local<v8::Promise::Resolver>::New(GetIsolate(), *resolver)); |
| 683 resolver_local->Resolve(value); | 686 resolver_local->Resolve(value); |
| 684 } | 687 } |
| 685 | 688 |
| 686 } // namespace extensions | 689 } // namespace extensions |
| OLD | NEW |