diff --git a/dom/push/PushServiceAndroidGCM.jsm b/dom/push/PushServiceAndroidGCM.jsm index 617806210d97..75fc832b881b 100644 --- a/dom/push/PushServiceAndroidGCM.jsm +++ b/dom/push/PushServiceAndroidGCM.jsm @@ -147,19 +147,11 @@ this.PushServiceAndroidGCM = { prefs.observe("debug", this); Services.obs.addObserver(this, "PushServiceAndroidGCM:ReceivedPushMessage", false); - return this._configure(serverURL, !!prefs.get("debug")).then(() => { - return Messaging.sendRequestForResult({ - type: "PushServiceAndroidGCM:Initialized" - }); - }); + return this._configure(serverURL, !!prefs.get("debug")); }, uninit: function() { console.debug("uninit()"); - Messaging.sendRequest({ - type: "PushServiceAndroidGCM:Uninitialized" - }); - this._mainPushService = null; Services.obs.removeObserver(this, "PushServiceAndroidGCM:ReceivedPushMessage"); prefs.ignore("debug", this); diff --git a/mobile/android/base/java/org/mozilla/gecko/push/PushService.java b/mobile/android/base/java/org/mozilla/gecko/push/PushService.java index 838a26514a31..a62c23792d3e 100644 --- a/mobile/android/base/java/org/mozilla/gecko/push/PushService.java +++ b/mobile/android/base/java/org/mozilla/gecko/push/PushService.java @@ -26,8 +26,6 @@ import org.mozilla.gecko.util.EventCallback; import org.mozilla.gecko.util.ThreadUtils; import java.io.IOException; -import java.util.LinkedList; -import java.util.List; import java.util.Map; /** @@ -36,10 +34,6 @@ import java.util.Map; * This singleton services Gecko messages from dom/push/PushServiceAndroidGCM.jsm and Google Cloud * Messaging requests. *

- * It is expected that Gecko is started (if not already running) soon after receiving GCM messages - * otherwise there is a greater risk that pending messages that have not been handle by Gecko will - * be lost if this service is killed. - *

* It's worth noting that we allow the DOM push API in restricted profiles. */ @ReflectionTarget @@ -54,8 +48,6 @@ public class PushService implements BundleEventListener { "PushServiceAndroidGCM:Configure", "PushServiceAndroidGCM:DumpRegistration", "PushServiceAndroidGCM:DumpSubscriptions", - "PushServiceAndroidGCM:Initialized", - "PushServiceAndroidGCM:Uninitialized", "PushServiceAndroidGCM:RegisterUserAgent", "PushServiceAndroidGCM:UnregisterUserAgent", "PushServiceAndroidGCM:SubscribeChannel", @@ -82,10 +74,6 @@ public class PushService implements BundleEventListener { protected final PushManager pushManager; - private boolean canSendPushMessagesToGecko; - - private final List pendingPushMessages; - public PushService(Context context) { pushManager = new PushManager(new PushState(context, "GeckoPushState.json"), new GcmTokenClient(context), new PushManager.PushClientFactory() { @Override @@ -93,8 +81,6 @@ public class PushService implements BundleEventListener { return new PushClient(autopushEndpoint); } }); - - pendingPushMessages = new LinkedList(); } public void onStartup() { @@ -197,26 +183,13 @@ public class PushService implements BundleEventListener { return; } - enqueueOrSendMessage(data.toString()); + Log.i(LOG_TAG, "Delivering dom/push message to Gecko!"); + GeckoAppShell.notifyObservers("PushServiceAndroidGCM:ReceivedPushMessage", data.toString()); } else { Log.e(LOG_TAG, "Message directed to unknown service; dropping: " + subscription.service); } } - protected void enqueueOrSendMessage(final @NonNull String message) { - if (canSendPushMessagesToGecko) { - sendMessageToGeckoService(message); - } else { - Log.i(LOG_TAG, "Service not initialized, adding message to queue."); - pendingPushMessages.add(message); - } - } - - protected void sendMessageToGeckoService(final @NonNull String message) { - Log.i(LOG_TAG, "Delivering dom/push message to Gecko!"); - GeckoAppShell.notifyObservers("PushServiceAndroidGCM:ReceivedPushMessage", message); - } - protected void registerGeckoEventListener() { Log.d(LOG_TAG, "Registered Gecko event listener."); EventDispatcher.getInstance().registerBackgroundThreadListener(this, GECKO_EVENTS); @@ -273,24 +246,6 @@ public class PushService implements BundleEventListener { } return; } - if ("PushServiceAndroidGCM:Initialized".equals(event)) { - // Send all pending messages to Gecko and set the - // canSendPushMessageToGecko flag to true so that - // all new push messages are sent directly to Gecko - // instead of being queued. - canSendPushMessagesToGecko = true; - for (String pushMessage : pendingPushMessages) { - sendMessageToGeckoService(pushMessage); - } - pendingPushMessages.clear(); - callback.sendSuccess(null); - return; - } - if ("PushServiceAndroidGCM:Uninitialized".equals(event)) { - canSendPushMessagesToGecko = false; - callback.sendSuccess(null); - return; - } if ("PushServiceAndroidGCM:RegisterUserAgent".equals(event)) { try { pushManager.registerUserAgent(geckoProfile.getName(), System.currentTimeMillis()); // For side-effects.