OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #ifndef GIN_MODULES_MODULE_REGISTRY_H_ | 5 #ifndef GIN_MODULES_MODULE_REGISTRY_H_ |
6 #define GIN_MODULES_MODULE_REGISTRY_H_ | 6 #define GIN_MODULES_MODULE_REGISTRY_H_ |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 #include <map> | 9 #include <map> |
10 #include <set> | 10 #include <set> |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 const std::set<std::string>& available_modules() const { | 70 const std::set<std::string>& available_modules() const { |
71 return available_modules_; | 71 return available_modules_; |
72 } | 72 } |
73 | 73 |
74 const std::set<std::string>& unsatisfied_dependencies() const { | 74 const std::set<std::string>& unsatisfied_dependencies() const { |
75 return unsatisfied_dependencies_; | 75 return unsatisfied_dependencies_; |
76 } | 76 } |
77 | 77 |
78 private: | 78 private: |
79 typedef ScopedVector<PendingModule> PendingModuleVector; | 79 typedef ScopedVector<PendingModule> PendingModuleVector; |
80 typedef std::map<std::string, LoadModuleCallback> LoadModuleCallbackMap; | 80 typedef std::multimap<std::string, LoadModuleCallback> LoadModuleCallbackMap; |
81 | 81 |
82 explicit ModuleRegistry(v8::Isolate* isolate); | 82 explicit ModuleRegistry(v8::Isolate* isolate); |
83 | 83 |
84 void Load(v8::Isolate* isolate, scoped_ptr<PendingModule> pending); | 84 void Load(v8::Isolate* isolate, scoped_ptr<PendingModule> pending); |
85 void RegisterModule(v8::Isolate* isolate, | 85 void RegisterModule(v8::Isolate* isolate, |
86 const std::string& id, | 86 const std::string& id, |
87 v8::Handle<v8::Value> module); | 87 v8::Handle<v8::Value> module); |
88 | 88 |
89 bool CheckDependencies(PendingModule* pending); | 89 bool CheckDependencies(PendingModule* pending); |
90 bool AttemptToLoad(v8::Isolate* isolate, scoped_ptr<PendingModule> pending); | 90 bool AttemptToLoad(v8::Isolate* isolate, scoped_ptr<PendingModule> pending); |
91 | 91 |
92 v8::Handle<v8::Value> GetModule(v8::Isolate* isolate, const std::string& id); | 92 v8::Handle<v8::Value> GetModule(v8::Isolate* isolate, const std::string& id); |
93 | 93 |
94 std::set<std::string> available_modules_; | 94 std::set<std::string> available_modules_; |
95 std::set<std::string> unsatisfied_dependencies_; | 95 std::set<std::string> unsatisfied_dependencies_; |
96 | 96 |
97 LoadModuleCallbackMap waiting_callbacks_; | 97 LoadModuleCallbackMap waiting_callbacks_; |
98 | 98 |
99 PendingModuleVector pending_modules_; | 99 PendingModuleVector pending_modules_; |
100 v8::Persistent<v8::Object> modules_; | 100 v8::Persistent<v8::Object> modules_; |
101 | 101 |
102 ObserverList<ModuleRegistryObserver> observer_list_; | 102 ObserverList<ModuleRegistryObserver> observer_list_; |
103 | 103 |
104 DISALLOW_COPY_AND_ASSIGN(ModuleRegistry); | 104 DISALLOW_COPY_AND_ASSIGN(ModuleRegistry); |
105 }; | 105 }; |
106 | 106 |
107 } // namespace gin | 107 } // namespace gin |
108 | 108 |
109 #endif // GIN_MODULES_MODULE_REGISTRY_H_ | 109 #endif // GIN_MODULES_MODULE_REGISTRY_H_ |
OLD | NEW |