tizen 2.4 release
[framework/web/wrt-plugins-common.git] / src / xwalk-module / extension_manager.h
1 // Copyright 2014 Samsung Electronics Co, Ltd. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef WRT_SERVICE_NODE_EXTENSION_MANAGER_H_
6 #define WRT_SERVICE_NODE_EXTENSION_MANAGER_H_
7
8 #include <string>
9 #include <set>
10 #include <map>
11
12 #include "XW_Extension.h"
13 #include "XW_Extension_SyncMessage.h"
14 #include "extension.h"
15
16 namespace wrt {
17 class RuntimeVariableProvider;
18 namespace xwalk {
19
20 typedef std::map<std::string, Extension*> ExtensionMap;
21
22 class ExtensionManager {
23  public:
24   static ExtensionManager* GetInstance();
25
26   void RegisterExtensionsInDirectory(RuntimeVariableProvider* provider);
27   void RegisterExtensionsByMetadata(RuntimeVariableProvider* provider);
28   void RegisterExtensionsByMetadata(RuntimeVariableProvider* provider,
29                                     const std::string& metafile_path);
30
31
32   ExtensionMap& extensions() {
33     return extensions_;
34   }
35
36  private:
37   ExtensionManager();
38   virtual ~ExtensionManager();
39
40   bool RegisterExtension(Extension* extension);
41
42   ExtensionMap extensions_;
43
44   std::set<std::string> extension_symbols_;
45 };
46
47 } // namespace xwalk
48 } // namespace wrt
49
50 #endif // WRT_SERVICE_NODE_EXTENSION_MANAGER_H_