be7766910f14e8faff3f776d3f8ab826264616d7
[platform/framework/web/crosswalk-tizen.git] / src / extension / extension_instance.h
1 // Copyright 2015 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_EXTENSION_EXTENSION_INSTANCE_H_
6 #define WRT_EXTENSION_EXTENSION_INSTANCE_H_
7
8 #include <string>
9 #include <functional>
10
11 #include "extension/xwalk/XW_Extension.h"
12
13 namespace wrt {
14
15 class Extension;
16
17 class ExtensionInstance {
18  public:
19   typedef std::function<void(const std::string&)> MessageCallback;
20
21   ExtensionInstance(Extension* extension, XW_Instance xw_instance);
22   virtual ~ExtensionInstance();
23
24   void HandleMessage(const std::string& msg);
25   void HandleSyncMessage(const std::string& msg);
26
27   void SetPostMessageCallback(MessageCallback callback);
28   void SetSendSyncReplyCallback(MessageCallback callback);
29
30  private:
31   friend class ExtensionAdapter;
32
33   void PostMessageToJS(const std::string& msg);
34   void SyncReplyToJS(const std::string& reply);
35
36   Extension* extension_;
37   XW_Instance xw_instance_;
38   void* instance_data_;
39
40   MessageCallback post_message_callback_;
41   MessageCallback send_sync_reply_callback_;
42 };
43
44 }  // namespace wrt
45
46 #endif  // WRT_EXTENSION_EXTENSION_INSTANCE_H_