summaryrefslogtreecommitdiffstats
path: root/mobile/android/base/java/org/mozilla/gecko/prompts/PromptService.java
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/base/java/org/mozilla/gecko/prompts/PromptService.java')
-rw-r--r--mobile/android/base/java/org/mozilla/gecko/prompts/PromptService.java72
1 files changed, 72 insertions, 0 deletions
diff --git a/mobile/android/base/java/org/mozilla/gecko/prompts/PromptService.java b/mobile/android/base/java/org/mozilla/gecko/prompts/PromptService.java
new file mode 100644
index 000000000..8155cc1c6
--- /dev/null
+++ b/mobile/android/base/java/org/mozilla/gecko/prompts/PromptService.java
@@ -0,0 +1,72 @@
+/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; 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.gecko.prompts;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.mozilla.gecko.EventDispatcher;
+import org.mozilla.gecko.GeckoApp;
+import org.mozilla.gecko.GeckoAppShell;
+import org.mozilla.gecko.util.GeckoEventListener;
+import org.mozilla.gecko.util.ThreadUtils;
+
+import android.content.Context;
+import android.util.Log;
+
+public class PromptService implements GeckoEventListener {
+ private static final String LOGTAG = "GeckoPromptService";
+
+ private final Context mContext;
+
+ public PromptService(Context context) {
+ GeckoApp.getEventDispatcher().registerGeckoThreadListener(this,
+ "Prompt:Show",
+ "Prompt:ShowTop");
+ mContext = context;
+ }
+
+ public void destroy() {
+ GeckoApp.getEventDispatcher().unregisterGeckoThreadListener(this,
+ "Prompt:Show",
+ "Prompt:ShowTop");
+ }
+
+ public void show(final String aTitle, final String aText, final PromptListItem[] aMenuList,
+ final int aChoiceMode, final Prompt.PromptCallback callback) {
+ // The dialog must be created on the UI thread.
+ ThreadUtils.postToUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Prompt p;
+ p = new Prompt(mContext, callback);
+ p.show(aTitle, aText, aMenuList, aChoiceMode);
+ }
+ });
+ }
+
+ // GeckoEventListener implementation
+ @Override
+ public void handleMessage(String event, final JSONObject message) {
+ // The dialog must be created on the UI thread.
+ ThreadUtils.postToUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Prompt p;
+ p = new Prompt(mContext, new Prompt.PromptCallback() {
+ @Override
+ public void onPromptFinished(String jsonResult) {
+ try {
+ EventDispatcher.sendResponse(message, new JSONObject(jsonResult));
+ } catch (JSONException ex) {
+ Log.i(LOGTAG, "Error building json response", ex);
+ }
+ }
+ });
+ p.show(message);
+ }
+ });
+ }
+}