Implements extension loader and server
[platform/framework/web/crosswalk-tizen.git] / src / extension / extension_instance.cc
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 #include "extension/extension_instance.h"
6
7 #include "extension/extension_adapter.h"
8 #include "extension/xwalk/XW_Extension_SyncMessage.h"
9
10 namespace wrt {
11
12 ExtensionInstance::ExtensionInstance(Extension* extension,
13     XW_Instance xw_instance)
14   : extension_(extension),
15     xw_instance_(xw_instance),
16     instance_data_(NULL) {
17   ExtensionAdapter::GetInstance()->RegisterInstance(this);
18   XW_CreatedInstanceCallback callback = extension_->created_instance_callback_;
19   if (callback)
20     callback(xw_instance_);
21 }
22
23 ExtensionInstance::~ExtensionInstance() {
24   XW_DestroyedInstanceCallback callback =
25       extension_->destroyed_instance_callback_;
26   if (callback)
27     callback(xw_instance_);
28   ExtensionAdapter::GetInstance()->UnregisterInstance(this);
29 }
30
31 void ExtensionInstance::HandleMessage(const std::string& msg) {
32   XW_HandleMessageCallback callback = extension_->handle_msg_callback_;
33   if (callback)
34     callback(xw_instance_, msg.c_str());
35 }
36
37 void ExtensionInstance::HandleSyncMessage(const std::string& msg) {
38   XW_HandleSyncMessageCallback callback = extension_->handle_sync_msg_callback_;
39   if (callback) {
40     callback(xw_instance_, msg.c_str());
41   }
42 }
43
44 void ExtensionInstance::SetPostMessageCallback(MessageCallback callback) {
45   post_message_callback_ = callback;
46 }
47
48 void ExtensionInstance::SetSendSyncReplyCallback(MessageCallback callback) {
49   send_sync_reply_callback_ = callback;
50 }
51
52 void ExtensionInstance::PostMessageToJS(const std::string& msg) {
53   post_message_callback_(msg);
54 }
55
56 void ExtensionInstance::SyncReplyToJS(const std::string& reply) {
57   send_sync_reply_callback_(reply);
58 }
59
60 }  // namespace wrt