summaryrefslogtreecommitdiffstats
path: root/mobile/android/javaaddons
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/javaaddons')
-rw-r--r--mobile/android/javaaddons/Makefile.in9
-rw-r--r--mobile/android/javaaddons/java/org/mozilla/javaaddons/JavaAddonInterfaceV1.java51
-rw-r--r--mobile/android/javaaddons/moz.build11
3 files changed, 71 insertions, 0 deletions
diff --git a/mobile/android/javaaddons/Makefile.in b/mobile/android/javaaddons/Makefile.in
new file mode 100644
index 000000000..a223d6e4e
--- /dev/null
+++ b/mobile/android/javaaddons/Makefile.in
@@ -0,0 +1,9 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+include $(topsrcdir)/config/rules.mk
+
+include $(topsrcdir)/config/android-common.mk
+
+libs:: javaaddons-1.0.jar
diff --git a/mobile/android/javaaddons/java/org/mozilla/javaaddons/JavaAddonInterfaceV1.java b/mobile/android/javaaddons/java/org/mozilla/javaaddons/JavaAddonInterfaceV1.java
new file mode 100644
index 000000000..caf31e7a5
--- /dev/null
+++ b/mobile/android/javaaddons/java/org/mozilla/javaaddons/JavaAddonInterfaceV1.java
@@ -0,0 +1,51 @@
+/* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*-
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.mozilla.javaaddons;
+
+import android.content.Context;
+import org.json.JSONObject;
+
+public interface JavaAddonInterfaceV1 {
+ /**
+ * Callback interface for Gecko requests.
+ * <p/>
+ * For each instance of EventCallback, exactly one of sendResponse, sendError, must be called to prevent observer leaks.
+ * If more than one send* method is called, or if a single send method is called multiple times, an
+ * {@link IllegalStateException} will be thrown.
+ */
+ interface EventCallback {
+ /**
+ * Sends a success response with the given data.
+ *
+ * @param response The response data to send to Gecko. Can be any of the types accepted by
+ * JSONObject#put(String, Object).
+ */
+ public void sendSuccess(Object response);
+
+ /**
+ * Sends an error response with the given data.
+ *
+ * @param response The response data to send to Gecko. Can be any of the types accepted by
+ * JSONObject#put(String, Object).
+ */
+ public void sendError(Object response);
+ }
+
+ interface EventDispatcher {
+ void registerEventListener(EventListener listener, String... events);
+ void unregisterEventListener(EventListener listener);
+
+ void sendRequestToGecko(String event, JSONObject message, RequestCallback callback);
+ }
+
+ interface EventListener {
+ public void handleMessage(final Context context, final String event, final JSONObject message, final EventCallback callback);
+ }
+
+ interface RequestCallback {
+ void onResponse(final Context context, JSONObject jsonObject);
+ }
+}
diff --git a/mobile/android/javaaddons/moz.build b/mobile/android/javaaddons/moz.build
new file mode 100644
index 000000000..c2f004cc1
--- /dev/null
+++ b/mobile/android/javaaddons/moz.build
@@ -0,0 +1,11 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+jar = add_java_jar('javaaddons-1.0')
+jar.sources = [
+ 'java/org/mozilla/javaaddons/JavaAddonInterfaceV1.java',
+]
+jar.javac_flags += ['-Xlint:all']