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.
5 #include "extension/extension_instance.h"
7 #include "extension/extension_adapter.h"
8 #include "extension/xwalk/XW_Extension_SyncMessage.h"
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_;
20 callback(xw_instance_);
23 ExtensionInstance::~ExtensionInstance() {
24 XW_DestroyedInstanceCallback callback =
25 extension_->destroyed_instance_callback_;
27 callback(xw_instance_);
28 ExtensionAdapter::GetInstance()->UnregisterInstance(this);
31 void ExtensionInstance::HandleMessage(const std::string& msg) {
32 XW_HandleMessageCallback callback = extension_->handle_msg_callback_;
34 callback(xw_instance_, msg.c_str());
37 void ExtensionInstance::HandleSyncMessage(const std::string& msg) {
38 XW_HandleSyncMessageCallback callback = extension_->handle_sync_msg_callback_;
40 callback(xw_instance_, msg.c_str());
44 void ExtensionInstance::SetPostMessageCallback(MessageCallback callback) {
45 post_message_callback_ = callback;
48 void ExtensionInstance::SetSendSyncReplyCallback(MessageCallback callback) {
49 send_sync_reply_callback_ = callback;
52 void ExtensionInstance::PostMessageToJS(const std::string& msg) {
53 post_message_callback_(msg);
56 void ExtensionInstance::SyncReplyToJS(const std::string& reply) {
57 send_sync_reply_callback_(reply);