2 * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 #ifndef WRT_EXTENSION_EXTENSION_ADAPTER_H_
18 #define WRT_EXTENSION_EXTENSION_ADAPTER_H_
22 #include "extension/extension.h"
23 #include "extension/extension_instance.h"
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"
33 class ExtensionAdapter {
35 typedef std::map<XW_Extension, Extension*> ExtensionMap;
36 typedef std::map<XW_Instance, ExtensionInstance*> InstanceMap;
38 static ExtensionAdapter* GetInstance();
40 XW_Extension GetNextXWExtension();
41 XW_Instance GetNextXWInstance();
43 void RegisterExtension(Extension* extension);
44 void UnregisterExtension(Extension* extension);
46 void RegisterInstance(ExtensionInstance* instance);
47 void UnregisterInstance(ExtensionInstance* instance);
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);
55 virtual ~ExtensionAdapter();
57 static Extension* GetExtension(XW_Extension xw_extension);
58 static ExtensionInstance* GetExtensionInstance(XW_Instance xw_instance);
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,
74 static void SyncMessagingRegister(XW_Extension xw_extension,
75 XW_HandleSyncMessageCallback handle_sync_message);
76 static void SyncMessagingSetSyncReply(XW_Instance xw_instance,
78 static void EntryPointsSetExtraJSEntryPoints(XW_Extension xw_extension,
79 const char** entry_points);
80 static void RuntimeGetStringVariable(XW_Extension xw_extension,
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);
89 ExtensionMap extension_map_;
90 InstanceMap instance_map_;
92 XW_Extension next_xw_extension_;
93 XW_Instance next_xw_instance_;
98 #endif // WRT_EXTENSION_EXTENSION_ADAPTER_H_