diff options
Diffstat (limited to 'mobile/android/tests/javaaddons')
7 files changed, 145 insertions, 0 deletions
diff --git a/mobile/android/tests/javaaddons/AndroidManifest.xml.in b/mobile/android/tests/javaaddons/AndroidManifest.xml.in new file mode 100644 index 000000000..b44930b1b --- /dev/null +++ b/mobile/android/tests/javaaddons/AndroidManifest.xml.in @@ -0,0 +1,14 @@ +#filter substitution +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="org.mozilla.javaaddons.test" + android:versionCode="1" + android:versionName="1.0" > + + <uses-sdk android:minSdkVersion="@MOZ_ANDROID_MIN_SDK_VERSION@" +#ifdef MOZ_ANDROID_MAX_SDK_VERSION + android:maxSdkVersion="@MOZ_ANDROID_MAX_SDK_VERSION@" +#endif + android:targetSdkVersion="@ANDROID_TARGET_SDK@"/> + +</manifest> diff --git a/mobile/android/tests/javaaddons/Makefile.in b/mobile/android/tests/javaaddons/Makefile.in new file mode 100644 index 000000000..4baac3f16 --- /dev/null +++ b/mobile/android/tests/javaaddons/Makefile.in @@ -0,0 +1,11 @@ +# 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/. + +ANDROID_MANIFEST_FILE := $(CURDIR)/AndroidManifest.xml + +ANDROID_EXTRA_JARS := javaaddons-test.jar + +include $(topsrcdir)/config/rules.mk + +tools libs:: $(ANDROID_APK_NAME).apk diff --git a/mobile/android/tests/javaaddons/moz.build b/mobile/android/tests/javaaddons/moz.build new file mode 100644 index 000000000..2fabebc56 --- /dev/null +++ b/mobile/android/tests/javaaddons/moz.build @@ -0,0 +1,23 @@ +# -*- 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/. + +ANDROID_APK_NAME = 'javaaddons-test' +ANDROID_APK_PACKAGE = 'org.mozilla.javaaddons.test' + +jar = add_java_jar('javaaddons-test') +jar.extra_jars += [ + TOPOBJDIR + '/mobile/android/javaaddons/javaaddons-1.0.jar', +] +jar.javac_flags += ['-Xlint:all'] +jar.sources += [ + 'src/org/mozilla/javaaddons/test/ClassWithNoRecognizedConstructors.java', + 'src/org/mozilla/javaaddons/test/JavaAddonV0.java', + 'src/org/mozilla/javaaddons/test/JavaAddonV1.java', +] + +OBJDIR_PP_FILES.mobile.android.tests.javaaddons += [ + 'AndroidManifest.xml.in', +] diff --git a/mobile/android/tests/javaaddons/res/values/strings.xml b/mobile/android/tests/javaaddons/res/values/strings.xml new file mode 100644 index 000000000..e4602bbdf --- /dev/null +++ b/mobile/android/tests/javaaddons/res/values/strings.xml @@ -0,0 +1,3 @@ +<resources> + <string name="app_name">org.mozilla.javaaddons.test</string> +</resources> diff --git a/mobile/android/tests/javaaddons/src/org/mozilla/javaaddons/test/ClassWithNoRecognizedConstructors.java b/mobile/android/tests/javaaddons/src/org/mozilla/javaaddons/test/ClassWithNoRecognizedConstructors.java new file mode 100644 index 000000000..93bf5e7cd --- /dev/null +++ b/mobile/android/tests/javaaddons/src/org/mozilla/javaaddons/test/ClassWithNoRecognizedConstructors.java @@ -0,0 +1,11 @@ +/* -*- 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.test; + +public class ClassWithNoRecognizedConstructors { + public ClassWithNoRecognizedConstructors(int a, String b, boolean c) { + } +} diff --git a/mobile/android/tests/javaaddons/src/org/mozilla/javaaddons/test/JavaAddonV0.java b/mobile/android/tests/javaaddons/src/org/mozilla/javaaddons/test/JavaAddonV0.java new file mode 100644 index 000000000..f0ea79535 --- /dev/null +++ b/mobile/android/tests/javaaddons/src/org/mozilla/javaaddons/test/JavaAddonV0.java @@ -0,0 +1,24 @@ +/* -*- 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.test; + +import android.os.Handler; +import android.os.Message; +import android.util.Log; + +import java.util.Map; + +public class JavaAddonV0 implements Handler.Callback { + public JavaAddonV0(Map<String, Handler.Callback> callbacks) { + callbacks.put("JavaAddon:V0", this); + } + + @Override + public boolean handleMessage(Message message) { + Log.i("JavaAddon", "handleMessage " + message.toString()); + return true; + } +} diff --git a/mobile/android/tests/javaaddons/src/org/mozilla/javaaddons/test/JavaAddonV1.java b/mobile/android/tests/javaaddons/src/org/mozilla/javaaddons/test/JavaAddonV1.java new file mode 100644 index 000000000..803a0d740 --- /dev/null +++ b/mobile/android/tests/javaaddons/src/org/mozilla/javaaddons/test/JavaAddonV1.java @@ -0,0 +1,59 @@ +/* -*- 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.test; + +import android.content.Context; +import android.util.Log; +import org.json.JSONException; +import org.json.JSONObject; +import org.mozilla.javaaddons.JavaAddonInterfaceV1.EventCallback; +import org.mozilla.javaaddons.JavaAddonInterfaceV1.EventDispatcher; +import org.mozilla.javaaddons.JavaAddonInterfaceV1.EventListener; +import org.mozilla.javaaddons.JavaAddonInterfaceV1.RequestCallback; + +public class JavaAddonV1 implements EventListener, RequestCallback { + protected final EventDispatcher mDispatcher; + + public JavaAddonV1(Context context, EventDispatcher dispatcher) { + mDispatcher = dispatcher; + mDispatcher.registerEventListener(this, "JavaAddon:V1"); + } + + @Override + public void handleMessage(Context context, String event, JSONObject message, EventCallback callback) { + Log.i("JavaAddon", "handleMessage: " + event + ", " + message.toString()); + final JSONObject output = new JSONObject(); + try { + output.put("outputStringKey", "inputStringKey=" + message.getString("inputStringKey")); + output.put("outputIntKey", 1 + message.getInt("inputIntKey")); + } catch (JSONException e) { + // Should never happen; ignore. + } + // Respond. + if (callback != null) { + callback.sendSuccess(output); + } + + // And send an independent Gecko event. + final JSONObject input = new JSONObject(); + try { + input.put("inputStringKey", "raw"); + input.put("inputIntKey", 3); + } catch (JSONException e) { + // Should never happen; ignore. + } + mDispatcher.sendRequestToGecko("JavaAddon:V1:Request", input, this); + } + + @Override + public void onResponse(Context context, JSONObject jsonObject) { + Log.i("JavaAddon", "onResponse: " + jsonObject.toString()); + // Unregister event listener, so that the JavaScript side can send a test message and + // check it is not handled. + mDispatcher.unregisterEventListener(this); + mDispatcher.sendRequestToGecko("JavaAddon:V1:VerificationRequest", jsonObject, null); + } +} |