e97b759a6a5a6478e46832f41413bfab0df31aef
[platform/framework/web/crosswalk.git] / src / xwalk / extensions / android / java / src / org / xwalk / core / extensions / XWalkExtensionAndroid.java
1 // Copyright (c) 2013 Intel Corporation. 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 package org.xwalk.core.extensions;
6
7 import android.util.Log;
8
9 import java.util.ArrayList;
10
11 import org.chromium.base.CalledByNative;
12 import org.chromium.base.JNINamespace;
13
14 /**
15  * This class is the implementation class for XWalkExtension by calling internal
16  * XWalkExtension class.
17  */
18 @JNINamespace("xwalk::extensions")
19 public abstract class XWalkExtensionAndroid {
20     private final static String TAG = "XWalkExtensionAndroid";
21     private int mXWalkExtension;
22
23     public XWalkExtensionAndroid(String name, String jsApi) {
24         mXWalkExtension = nativeGetOrCreateExtension(name, jsApi, null);
25     }
26
27     public XWalkExtensionAndroid(String name, String jsApi, String[] entryPoints) {
28         mXWalkExtension = nativeGetOrCreateExtension(name, jsApi, entryPoints);
29     }
30
31     protected void destroyExtension() {
32         if (mXWalkExtension == 0) {
33             Log.e(TAG, "The extension to be destroyed is invalid!");
34             return;
35         }
36
37         nativeDestroyExtension(mXWalkExtension);
38         mXWalkExtension = 0;
39     }
40
41     public void postMessage(int instanceID, String message) {
42         if (mXWalkExtension == 0) {
43             Log.e(TAG, "Can not post a message to an invalid extension!");
44             return;
45         }
46
47         nativePostMessage(mXWalkExtension, instanceID, message);
48     }
49
50     public void broadcastMessage(String message) {
51         if (mXWalkExtension == 0) {
52             Log.e(TAG, "Can not broadcast message to an invalid extension!");
53             return;
54         }
55
56         nativeBroadcastMessage(mXWalkExtension, message);
57     }
58
59     @CalledByNative
60     public abstract void handleMessage(int instanceID, String message);
61
62     @CalledByNative
63     public abstract String handleSyncMessage(int instanceID, String message);
64
65     private native int nativeGetOrCreateExtension(String name, String jsApi, String[] entryPoints);
66     private native void nativePostMessage(int nativeXWalkExtensionAndroid, int instanceID, String message);
67     private native void nativeBroadcastMessage(int nativeXWalkExtensionAndroid, String message);
68     private native void nativeDestroyExtension(int nativeXWalkExtensionAndroid);
69 }