Fix invalid licenses
[platform/framework/web/crosswalk-tizen.git] / src / extension / extension_adapter.h
1 /*
2  * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16  
17 #ifndef WRT_EXTENSION_EXTENSION_ADAPTER_H_
18 #define WRT_EXTENSION_EXTENSION_ADAPTER_H_
19
20 #include <map>
21
22 #include "extension/extension.h"
23 #include "extension/extension_instance.h"
24
25 #include "extension/xwalk/XW_Extension.h"
26 #include "extension/xwalk/XW_Extension_SyncMessage.h"
27 #include "extension/xwalk/XW_Extension_EntryPoints.h"
28 #include "extension/xwalk/XW_Extension_Runtime.h"
29 #include "extension/xwalk/XW_Extension_Permissions.h"
30
31 namespace wrt {
32
33 class ExtensionAdapter {
34  public:
35   typedef std::map<XW_Extension, Extension*> ExtensionMap;
36   typedef std::map<XW_Instance, ExtensionInstance*> InstanceMap;
37
38   static ExtensionAdapter* GetInstance();
39
40   XW_Extension GetNextXWExtension();
41   XW_Instance GetNextXWInstance();
42
43   void RegisterExtension(Extension* extension);
44   void UnregisterExtension(Extension* extension);
45
46   void RegisterInstance(ExtensionInstance* instance);
47   void UnregisterInstance(ExtensionInstance* instance);
48
49   // Returns the correct struct according to interface asked. This is
50   // passed to external extensions in XW_Initialize() call.
51   static const void* GetInterface(const char* name);
52
53  private:
54   ExtensionAdapter();
55   virtual ~ExtensionAdapter();
56
57   static Extension* GetExtension(XW_Extension xw_extension);
58   static ExtensionInstance* GetExtensionInstance(XW_Instance xw_instance);
59
60   static void CoreSetExtensionName(XW_Extension xw_extension, const char* name);
61   static void CoreSetJavaScriptAPI(XW_Extension xw_extension,
62                                    const char* javascript_api);
63   static void CoreRegisterInstanceCallbacks(XW_Extension xw_extension,
64                                      XW_CreatedInstanceCallback created,
65                                      XW_DestroyedInstanceCallback destroyed);
66   static void CoreRegisterShutdownCallback(XW_Extension xw_extension,
67                                     XW_ShutdownCallback shutdown);
68   static void CoreSetInstanceData(XW_Instance xw_instance, void* data);
69   static void* CoreGetInstanceData(XW_Instance xw_instance);
70   static void MessagingRegister(XW_Extension xw_extension,
71                                 XW_HandleMessageCallback handle_message);
72   static void MessagingPostMessage(XW_Instance xw_instance,
73                                    const char* message);
74   static void SyncMessagingRegister(XW_Extension xw_extension,
75                              XW_HandleSyncMessageCallback handle_sync_message);
76   static void SyncMessagingSetSyncReply(XW_Instance xw_instance,
77                                         const char* reply);
78   static void EntryPointsSetExtraJSEntryPoints(XW_Extension xw_extension,
79                                                const char** entry_points);
80   static void RuntimeGetStringVariable(XW_Extension xw_extension,
81                                        const char* key,
82                                        char* value,
83                                        unsigned int value_len);
84   static int PermissionsCheckAPIAccessControl(XW_Extension xw_extension,
85                                               const char* api_name);
86   static int PermissionsRegisterPermissions(XW_Extension xw_extension,
87                                             const char* perm_table);
88
89   ExtensionMap extension_map_;
90   InstanceMap instance_map_;
91
92   XW_Extension next_xw_extension_;
93   XW_Instance next_xw_instance_;
94 };
95
96 }  // namespace wrt
97
98 #endif  // WRT_EXTENSION_EXTENSION_ADAPTER_H_