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.
5 package org.xwalk.core.extensions;
7 import android.util.Log;
9 import java.util.ArrayList;
11 import org.chromium.base.CalledByNative;
12 import org.chromium.base.JNINamespace;
15 * This class is the implementation class for XWalkExtension by calling internal
16 * XWalkExtension class.
18 @JNINamespace("xwalk::extensions")
19 public abstract class XWalkExtensionAndroid {
20 private final static String TAG = "XWalkExtensionAndroid";
21 private int mXWalkExtension;
23 public XWalkExtensionAndroid(String name, String jsApi) {
24 mXWalkExtension = nativeGetOrCreateExtension(name, jsApi, null);
27 public XWalkExtensionAndroid(String name, String jsApi, String[] entryPoints) {
28 mXWalkExtension = nativeGetOrCreateExtension(name, jsApi, entryPoints);
31 protected void destroyExtension() {
32 if (mXWalkExtension == 0) {
33 Log.e(TAG, "The extension to be destroyed is invalid!");
37 nativeDestroyExtension(mXWalkExtension);
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!");
47 nativePostMessage(mXWalkExtension, instanceID, message);
50 public void broadcastMessage(String message) {
51 if (mXWalkExtension == 0) {
52 Log.e(TAG, "Can not broadcast message to an invalid extension!");
56 nativeBroadcastMessage(mXWalkExtension, message);
60 public abstract void handleMessage(int instanceID, String message);
63 public abstract String handleSyncMessage(int instanceID, String message);
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);