gecko-dev/widget/android/AndroidAlerts.cpp

127 lines
4.1 KiB
C++
Raw Normal View History

/* -*- Mode: c++; tab-width: 40; indent-tabs-mode: nil; c-basic-offset: 4; -*- */
/* 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 "AndroidAlerts.h"
#include "GeneratedJNIWrappers.h"
#include "nsAlertsUtils.h"
namespace mozilla {
namespace widget {
NS_IMPL_ISUPPORTS(AndroidAlerts, nsIAlertsService)
Bug 1305498 - Refactor notification code to be more concise; r=sebastian Bug 1305498 - 1. Remove NotificationClient task queue; r=sebastian Not sure why we needed a task queue for NotificationClient actions. The actions all go through IPC and are non-blocking, so it's perfectly fine to perform them off of whatever thread we're on. Bug 1305498 - 2. Integrate NotificationHandler et al into NotificationCllient; r=sebastian There's no reason to have NotificationHandler, AppNotificationClient, and ServiceNotificationClient all separate from the base NotificationClient class. This patch adds the functionality of those three classes to NotificationClient. The notifications hash map is changed from a ConcurrentHashMap to a regular HashMap with synchronization because I think the use case here doesn't warrant the added performance and overhead of ConcurrentHashMap. NotificationService is changed to match the new NotificationClient. Now the only job for NotificationService is to set a notification as foreground, rather than to manage all notifications like before. NotificationHandler, AppNotificationClient, and ServiceNotificationClient will be removed in a later patch. Bug 1305498 - 3. Set NotificationListener in GeckoApplication; r=sebastian Set NotificationListener once in GeckoApplication.onCreate, instead of spreading it out in GeckoApp, BrowserApp, and GeckoService. This is possible because there's no longer a distinction between AppNotificationClient and ServiceNotificationClient in the new, consolidated NotificationClient. Bug 1305498 - 4. Remove obsolete notification classes; r=sebastian Remove AppNotificationClient, ServiceNotificationClient, and NotificationHandler, now that they've all been replaced by the new, consolidated NotificationClient. Bug 1305498 - 5. Use NotificationReceiver for web notification callbacks; r=sebastian Previously, web notification callbacks went to GeckoApp directly, but that presented some problems such as not being able to implement the on-close callback, because we don't want to launch GeckoApp when the notification is closed by swiping. This patch makes us use NotificationReceiver for callbacks, and let NotificationReceiver launch GeckoApp if necessary. Bug 1305498 - 6. Don't keep notification cookie in native code; r=sebastian Keep the notification cookie a single location (in the notification intent itself), and simplify the native notification handling code. Bug 1305498 - 7. Use NotificationReceiver for persistent notifications; r=sebastian Currently, persistent notification callbacks go through a different code path, but it'd be more consistent and correct to let persistent notification callbacks go through NotificationReceiver as well. This takes care of some housekeeping work that was missing for persistent notifications, such as deleting the mNotifications entry when the notification is closed.
2016-10-06 01:52:32 +00:00
StaticAutoPtr<AndroidAlerts::ListenerMap> AndroidAlerts::sListenerMap;
NS_IMETHODIMP
AndroidAlerts::ShowAlertNotification(const nsAString & aImageUrl,
const nsAString & aAlertTitle,
const nsAString & aAlertText,
bool aAlertTextClickable,
const nsAString & aAlertCookie,
nsIObserver * aAlertListener,
const nsAString & aAlertName,
const nsAString & aBidi,
const nsAString & aLang,
const nsAString & aData,
nsIPrincipal * aPrincipal,
bool aInPrivateBrowsing,
bool aRequireInteraction)
{
MOZ_ASSERT_UNREACHABLE("Should be implemented by nsAlertsService.");
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP
AndroidAlerts::ShowAlert(nsIAlertNotification* aAlert,
nsIObserver* aAlertListener)
{
return ShowPersistentNotification(EmptyString(), aAlert, aAlertListener);
}
NS_IMETHODIMP
AndroidAlerts::ShowPersistentNotification(const nsAString& aPersistentData,
nsIAlertNotification* aAlert,
nsIObserver* aAlertListener)
{
// nsAlertsService disables our alerts backend if we ever return failure
// here. To keep the backend enabled, we always return NS_OK even if we
// encounter an error here.
nsresult rv;
nsAutoString imageUrl;
rv = aAlert->GetImageURL(imageUrl);
NS_ENSURE_SUCCESS(rv, NS_OK);
nsAutoString title;
rv = aAlert->GetTitle(title);
NS_ENSURE_SUCCESS(rv, NS_OK);
nsAutoString text;
rv = aAlert->GetText(text);
NS_ENSURE_SUCCESS(rv, NS_OK);
nsAutoString cookie;
rv = aAlert->GetCookie(cookie);
NS_ENSURE_SUCCESS(rv, NS_OK);
nsAutoString name;
rv = aAlert->GetName(name);
NS_ENSURE_SUCCESS(rv, NS_OK);
nsCOMPtr<nsIPrincipal> principal;
rv = aAlert->GetPrincipal(getter_AddRefs(principal));
NS_ENSURE_SUCCESS(rv, NS_OK);
nsAutoString host;
nsAlertsUtils::GetSourceHostPort(principal, host);
if (aPersistentData.IsEmpty() && aAlertListener) {
Bug 1305498 - Refactor notification code to be more concise; r=sebastian Bug 1305498 - 1. Remove NotificationClient task queue; r=sebastian Not sure why we needed a task queue for NotificationClient actions. The actions all go through IPC and are non-blocking, so it's perfectly fine to perform them off of whatever thread we're on. Bug 1305498 - 2. Integrate NotificationHandler et al into NotificationCllient; r=sebastian There's no reason to have NotificationHandler, AppNotificationClient, and ServiceNotificationClient all separate from the base NotificationClient class. This patch adds the functionality of those three classes to NotificationClient. The notifications hash map is changed from a ConcurrentHashMap to a regular HashMap with synchronization because I think the use case here doesn't warrant the added performance and overhead of ConcurrentHashMap. NotificationService is changed to match the new NotificationClient. Now the only job for NotificationService is to set a notification as foreground, rather than to manage all notifications like before. NotificationHandler, AppNotificationClient, and ServiceNotificationClient will be removed in a later patch. Bug 1305498 - 3. Set NotificationListener in GeckoApplication; r=sebastian Set NotificationListener once in GeckoApplication.onCreate, instead of spreading it out in GeckoApp, BrowserApp, and GeckoService. This is possible because there's no longer a distinction between AppNotificationClient and ServiceNotificationClient in the new, consolidated NotificationClient. Bug 1305498 - 4. Remove obsolete notification classes; r=sebastian Remove AppNotificationClient, ServiceNotificationClient, and NotificationHandler, now that they've all been replaced by the new, consolidated NotificationClient. Bug 1305498 - 5. Use NotificationReceiver for web notification callbacks; r=sebastian Previously, web notification callbacks went to GeckoApp directly, but that presented some problems such as not being able to implement the on-close callback, because we don't want to launch GeckoApp when the notification is closed by swiping. This patch makes us use NotificationReceiver for callbacks, and let NotificationReceiver launch GeckoApp if necessary. Bug 1305498 - 6. Don't keep notification cookie in native code; r=sebastian Keep the notification cookie a single location (in the notification intent itself), and simplify the native notification handling code. Bug 1305498 - 7. Use NotificationReceiver for persistent notifications; r=sebastian Currently, persistent notification callbacks go through a different code path, but it'd be more consistent and correct to let persistent notification callbacks go through NotificationReceiver as well. This takes care of some housekeeping work that was missing for persistent notifications, such as deleting the mNotifications entry when the notification is closed.
2016-10-06 01:52:32 +00:00
if (!sListenerMap) {
sListenerMap = new ListenerMap();
}
// This will remove any observers already registered for this name.
Bug 1305498 - Refactor notification code to be more concise; r=sebastian Bug 1305498 - 1. Remove NotificationClient task queue; r=sebastian Not sure why we needed a task queue for NotificationClient actions. The actions all go through IPC and are non-blocking, so it's perfectly fine to perform them off of whatever thread we're on. Bug 1305498 - 2. Integrate NotificationHandler et al into NotificationCllient; r=sebastian There's no reason to have NotificationHandler, AppNotificationClient, and ServiceNotificationClient all separate from the base NotificationClient class. This patch adds the functionality of those three classes to NotificationClient. The notifications hash map is changed from a ConcurrentHashMap to a regular HashMap with synchronization because I think the use case here doesn't warrant the added performance and overhead of ConcurrentHashMap. NotificationService is changed to match the new NotificationClient. Now the only job for NotificationService is to set a notification as foreground, rather than to manage all notifications like before. NotificationHandler, AppNotificationClient, and ServiceNotificationClient will be removed in a later patch. Bug 1305498 - 3. Set NotificationListener in GeckoApplication; r=sebastian Set NotificationListener once in GeckoApplication.onCreate, instead of spreading it out in GeckoApp, BrowserApp, and GeckoService. This is possible because there's no longer a distinction between AppNotificationClient and ServiceNotificationClient in the new, consolidated NotificationClient. Bug 1305498 - 4. Remove obsolete notification classes; r=sebastian Remove AppNotificationClient, ServiceNotificationClient, and NotificationHandler, now that they've all been replaced by the new, consolidated NotificationClient. Bug 1305498 - 5. Use NotificationReceiver for web notification callbacks; r=sebastian Previously, web notification callbacks went to GeckoApp directly, but that presented some problems such as not being able to implement the on-close callback, because we don't want to launch GeckoApp when the notification is closed by swiping. This patch makes us use NotificationReceiver for callbacks, and let NotificationReceiver launch GeckoApp if necessary. Bug 1305498 - 6. Don't keep notification cookie in native code; r=sebastian Keep the notification cookie a single location (in the notification intent itself), and simplify the native notification handling code. Bug 1305498 - 7. Use NotificationReceiver for persistent notifications; r=sebastian Currently, persistent notification callbacks go through a different code path, but it'd be more consistent and correct to let persistent notification callbacks go through NotificationReceiver as well. This takes care of some housekeeping work that was missing for persistent notifications, such as deleting the mNotifications entry when the notification is closed.
2016-10-06 01:52:32 +00:00
sListenerMap->Put(name, aAlertListener);
}
java::GeckoAppShell::ShowNotification(
name, cookie, title, text, host, imageUrl,
!aPersistentData.IsEmpty() ? jni::StringParam(aPersistentData)
: jni::StringParam(nullptr));
return NS_OK;
}
NS_IMETHODIMP
AndroidAlerts::CloseAlert(const nsAString& aAlertName,
nsIPrincipal* aPrincipal)
{
Bug 1305498 - Refactor notification code to be more concise; r=sebastian Bug 1305498 - 1. Remove NotificationClient task queue; r=sebastian Not sure why we needed a task queue for NotificationClient actions. The actions all go through IPC and are non-blocking, so it's perfectly fine to perform them off of whatever thread we're on. Bug 1305498 - 2. Integrate NotificationHandler et al into NotificationCllient; r=sebastian There's no reason to have NotificationHandler, AppNotificationClient, and ServiceNotificationClient all separate from the base NotificationClient class. This patch adds the functionality of those three classes to NotificationClient. The notifications hash map is changed from a ConcurrentHashMap to a regular HashMap with synchronization because I think the use case here doesn't warrant the added performance and overhead of ConcurrentHashMap. NotificationService is changed to match the new NotificationClient. Now the only job for NotificationService is to set a notification as foreground, rather than to manage all notifications like before. NotificationHandler, AppNotificationClient, and ServiceNotificationClient will be removed in a later patch. Bug 1305498 - 3. Set NotificationListener in GeckoApplication; r=sebastian Set NotificationListener once in GeckoApplication.onCreate, instead of spreading it out in GeckoApp, BrowserApp, and GeckoService. This is possible because there's no longer a distinction between AppNotificationClient and ServiceNotificationClient in the new, consolidated NotificationClient. Bug 1305498 - 4. Remove obsolete notification classes; r=sebastian Remove AppNotificationClient, ServiceNotificationClient, and NotificationHandler, now that they've all been replaced by the new, consolidated NotificationClient. Bug 1305498 - 5. Use NotificationReceiver for web notification callbacks; r=sebastian Previously, web notification callbacks went to GeckoApp directly, but that presented some problems such as not being able to implement the on-close callback, because we don't want to launch GeckoApp when the notification is closed by swiping. This patch makes us use NotificationReceiver for callbacks, and let NotificationReceiver launch GeckoApp if necessary. Bug 1305498 - 6. Don't keep notification cookie in native code; r=sebastian Keep the notification cookie a single location (in the notification intent itself), and simplify the native notification handling code. Bug 1305498 - 7. Use NotificationReceiver for persistent notifications; r=sebastian Currently, persistent notification callbacks go through a different code path, but it'd be more consistent and correct to let persistent notification callbacks go through NotificationReceiver as well. This takes care of some housekeeping work that was missing for persistent notifications, such as deleting the mNotifications entry when the notification is closed.
2016-10-06 01:52:32 +00:00
// We delete the entry in sListenerMap later, when CloseNotification calls
// NotifyListener.
java::GeckoAppShell::CloseNotification(aAlertName);
return NS_OK;
}
void
Bug 1305498 - Refactor notification code to be more concise; r=sebastian Bug 1305498 - 1. Remove NotificationClient task queue; r=sebastian Not sure why we needed a task queue for NotificationClient actions. The actions all go through IPC and are non-blocking, so it's perfectly fine to perform them off of whatever thread we're on. Bug 1305498 - 2. Integrate NotificationHandler et al into NotificationCllient; r=sebastian There's no reason to have NotificationHandler, AppNotificationClient, and ServiceNotificationClient all separate from the base NotificationClient class. This patch adds the functionality of those three classes to NotificationClient. The notifications hash map is changed from a ConcurrentHashMap to a regular HashMap with synchronization because I think the use case here doesn't warrant the added performance and overhead of ConcurrentHashMap. NotificationService is changed to match the new NotificationClient. Now the only job for NotificationService is to set a notification as foreground, rather than to manage all notifications like before. NotificationHandler, AppNotificationClient, and ServiceNotificationClient will be removed in a later patch. Bug 1305498 - 3. Set NotificationListener in GeckoApplication; r=sebastian Set NotificationListener once in GeckoApplication.onCreate, instead of spreading it out in GeckoApp, BrowserApp, and GeckoService. This is possible because there's no longer a distinction between AppNotificationClient and ServiceNotificationClient in the new, consolidated NotificationClient. Bug 1305498 - 4. Remove obsolete notification classes; r=sebastian Remove AppNotificationClient, ServiceNotificationClient, and NotificationHandler, now that they've all been replaced by the new, consolidated NotificationClient. Bug 1305498 - 5. Use NotificationReceiver for web notification callbacks; r=sebastian Previously, web notification callbacks went to GeckoApp directly, but that presented some problems such as not being able to implement the on-close callback, because we don't want to launch GeckoApp when the notification is closed by swiping. This patch makes us use NotificationReceiver for callbacks, and let NotificationReceiver launch GeckoApp if necessary. Bug 1305498 - 6. Don't keep notification cookie in native code; r=sebastian Keep the notification cookie a single location (in the notification intent itself), and simplify the native notification handling code. Bug 1305498 - 7. Use NotificationReceiver for persistent notifications; r=sebastian Currently, persistent notification callbacks go through a different code path, but it'd be more consistent and correct to let persistent notification callbacks go through NotificationReceiver as well. This takes care of some housekeeping work that was missing for persistent notifications, such as deleting the mNotifications entry when the notification is closed.
2016-10-06 01:52:32 +00:00
AndroidAlerts::NotifyListener(const nsAString& aName, const char* aTopic,
const char16_t* aCookie)
{
Bug 1305498 - Refactor notification code to be more concise; r=sebastian Bug 1305498 - 1. Remove NotificationClient task queue; r=sebastian Not sure why we needed a task queue for NotificationClient actions. The actions all go through IPC and are non-blocking, so it's perfectly fine to perform them off of whatever thread we're on. Bug 1305498 - 2. Integrate NotificationHandler et al into NotificationCllient; r=sebastian There's no reason to have NotificationHandler, AppNotificationClient, and ServiceNotificationClient all separate from the base NotificationClient class. This patch adds the functionality of those three classes to NotificationClient. The notifications hash map is changed from a ConcurrentHashMap to a regular HashMap with synchronization because I think the use case here doesn't warrant the added performance and overhead of ConcurrentHashMap. NotificationService is changed to match the new NotificationClient. Now the only job for NotificationService is to set a notification as foreground, rather than to manage all notifications like before. NotificationHandler, AppNotificationClient, and ServiceNotificationClient will be removed in a later patch. Bug 1305498 - 3. Set NotificationListener in GeckoApplication; r=sebastian Set NotificationListener once in GeckoApplication.onCreate, instead of spreading it out in GeckoApp, BrowserApp, and GeckoService. This is possible because there's no longer a distinction between AppNotificationClient and ServiceNotificationClient in the new, consolidated NotificationClient. Bug 1305498 - 4. Remove obsolete notification classes; r=sebastian Remove AppNotificationClient, ServiceNotificationClient, and NotificationHandler, now that they've all been replaced by the new, consolidated NotificationClient. Bug 1305498 - 5. Use NotificationReceiver for web notification callbacks; r=sebastian Previously, web notification callbacks went to GeckoApp directly, but that presented some problems such as not being able to implement the on-close callback, because we don't want to launch GeckoApp when the notification is closed by swiping. This patch makes us use NotificationReceiver for callbacks, and let NotificationReceiver launch GeckoApp if necessary. Bug 1305498 - 6. Don't keep notification cookie in native code; r=sebastian Keep the notification cookie a single location (in the notification intent itself), and simplify the native notification handling code. Bug 1305498 - 7. Use NotificationReceiver for persistent notifications; r=sebastian Currently, persistent notification callbacks go through a different code path, but it'd be more consistent and correct to let persistent notification callbacks go through NotificationReceiver as well. This takes care of some housekeeping work that was missing for persistent notifications, such as deleting the mNotifications entry when the notification is closed.
2016-10-06 01:52:32 +00:00
if (!sListenerMap) {
return;
}
Bug 1305498 - Refactor notification code to be more concise; r=sebastian Bug 1305498 - 1. Remove NotificationClient task queue; r=sebastian Not sure why we needed a task queue for NotificationClient actions. The actions all go through IPC and are non-blocking, so it's perfectly fine to perform them off of whatever thread we're on. Bug 1305498 - 2. Integrate NotificationHandler et al into NotificationCllient; r=sebastian There's no reason to have NotificationHandler, AppNotificationClient, and ServiceNotificationClient all separate from the base NotificationClient class. This patch adds the functionality of those three classes to NotificationClient. The notifications hash map is changed from a ConcurrentHashMap to a regular HashMap with synchronization because I think the use case here doesn't warrant the added performance and overhead of ConcurrentHashMap. NotificationService is changed to match the new NotificationClient. Now the only job for NotificationService is to set a notification as foreground, rather than to manage all notifications like before. NotificationHandler, AppNotificationClient, and ServiceNotificationClient will be removed in a later patch. Bug 1305498 - 3. Set NotificationListener in GeckoApplication; r=sebastian Set NotificationListener once in GeckoApplication.onCreate, instead of spreading it out in GeckoApp, BrowserApp, and GeckoService. This is possible because there's no longer a distinction between AppNotificationClient and ServiceNotificationClient in the new, consolidated NotificationClient. Bug 1305498 - 4. Remove obsolete notification classes; r=sebastian Remove AppNotificationClient, ServiceNotificationClient, and NotificationHandler, now that they've all been replaced by the new, consolidated NotificationClient. Bug 1305498 - 5. Use NotificationReceiver for web notification callbacks; r=sebastian Previously, web notification callbacks went to GeckoApp directly, but that presented some problems such as not being able to implement the on-close callback, because we don't want to launch GeckoApp when the notification is closed by swiping. This patch makes us use NotificationReceiver for callbacks, and let NotificationReceiver launch GeckoApp if necessary. Bug 1305498 - 6. Don't keep notification cookie in native code; r=sebastian Keep the notification cookie a single location (in the notification intent itself), and simplify the native notification handling code. Bug 1305498 - 7. Use NotificationReceiver for persistent notifications; r=sebastian Currently, persistent notification callbacks go through a different code path, but it'd be more consistent and correct to let persistent notification callbacks go through NotificationReceiver as well. This takes care of some housekeeping work that was missing for persistent notifications, such as deleting the mNotifications entry when the notification is closed.
2016-10-06 01:52:32 +00:00
nsCOMPtr<nsIObserver> listener = sListenerMap->Get(aName);
if (!listener) {
return;
}
Bug 1305498 - Refactor notification code to be more concise; r=sebastian Bug 1305498 - 1. Remove NotificationClient task queue; r=sebastian Not sure why we needed a task queue for NotificationClient actions. The actions all go through IPC and are non-blocking, so it's perfectly fine to perform them off of whatever thread we're on. Bug 1305498 - 2. Integrate NotificationHandler et al into NotificationCllient; r=sebastian There's no reason to have NotificationHandler, AppNotificationClient, and ServiceNotificationClient all separate from the base NotificationClient class. This patch adds the functionality of those three classes to NotificationClient. The notifications hash map is changed from a ConcurrentHashMap to a regular HashMap with synchronization because I think the use case here doesn't warrant the added performance and overhead of ConcurrentHashMap. NotificationService is changed to match the new NotificationClient. Now the only job for NotificationService is to set a notification as foreground, rather than to manage all notifications like before. NotificationHandler, AppNotificationClient, and ServiceNotificationClient will be removed in a later patch. Bug 1305498 - 3. Set NotificationListener in GeckoApplication; r=sebastian Set NotificationListener once in GeckoApplication.onCreate, instead of spreading it out in GeckoApp, BrowserApp, and GeckoService. This is possible because there's no longer a distinction between AppNotificationClient and ServiceNotificationClient in the new, consolidated NotificationClient. Bug 1305498 - 4. Remove obsolete notification classes; r=sebastian Remove AppNotificationClient, ServiceNotificationClient, and NotificationHandler, now that they've all been replaced by the new, consolidated NotificationClient. Bug 1305498 - 5. Use NotificationReceiver for web notification callbacks; r=sebastian Previously, web notification callbacks went to GeckoApp directly, but that presented some problems such as not being able to implement the on-close callback, because we don't want to launch GeckoApp when the notification is closed by swiping. This patch makes us use NotificationReceiver for callbacks, and let NotificationReceiver launch GeckoApp if necessary. Bug 1305498 - 6. Don't keep notification cookie in native code; r=sebastian Keep the notification cookie a single location (in the notification intent itself), and simplify the native notification handling code. Bug 1305498 - 7. Use NotificationReceiver for persistent notifications; r=sebastian Currently, persistent notification callbacks go through a different code path, but it'd be more consistent and correct to let persistent notification callbacks go through NotificationReceiver as well. This takes care of some housekeeping work that was missing for persistent notifications, such as deleting the mNotifications entry when the notification is closed.
2016-10-06 01:52:32 +00:00
listener->Observe(nullptr, aTopic, aCookie);
if (NS_LITERAL_CSTRING("alertfinished").Equals(aTopic)) {
Bug 1305498 - Refactor notification code to be more concise; r=sebastian Bug 1305498 - 1. Remove NotificationClient task queue; r=sebastian Not sure why we needed a task queue for NotificationClient actions. The actions all go through IPC and are non-blocking, so it's perfectly fine to perform them off of whatever thread we're on. Bug 1305498 - 2. Integrate NotificationHandler et al into NotificationCllient; r=sebastian There's no reason to have NotificationHandler, AppNotificationClient, and ServiceNotificationClient all separate from the base NotificationClient class. This patch adds the functionality of those three classes to NotificationClient. The notifications hash map is changed from a ConcurrentHashMap to a regular HashMap with synchronization because I think the use case here doesn't warrant the added performance and overhead of ConcurrentHashMap. NotificationService is changed to match the new NotificationClient. Now the only job for NotificationService is to set a notification as foreground, rather than to manage all notifications like before. NotificationHandler, AppNotificationClient, and ServiceNotificationClient will be removed in a later patch. Bug 1305498 - 3. Set NotificationListener in GeckoApplication; r=sebastian Set NotificationListener once in GeckoApplication.onCreate, instead of spreading it out in GeckoApp, BrowserApp, and GeckoService. This is possible because there's no longer a distinction between AppNotificationClient and ServiceNotificationClient in the new, consolidated NotificationClient. Bug 1305498 - 4. Remove obsolete notification classes; r=sebastian Remove AppNotificationClient, ServiceNotificationClient, and NotificationHandler, now that they've all been replaced by the new, consolidated NotificationClient. Bug 1305498 - 5. Use NotificationReceiver for web notification callbacks; r=sebastian Previously, web notification callbacks went to GeckoApp directly, but that presented some problems such as not being able to implement the on-close callback, because we don't want to launch GeckoApp when the notification is closed by swiping. This patch makes us use NotificationReceiver for callbacks, and let NotificationReceiver launch GeckoApp if necessary. Bug 1305498 - 6. Don't keep notification cookie in native code; r=sebastian Keep the notification cookie a single location (in the notification intent itself), and simplify the native notification handling code. Bug 1305498 - 7. Use NotificationReceiver for persistent notifications; r=sebastian Currently, persistent notification callbacks go through a different code path, but it'd be more consistent and correct to let persistent notification callbacks go through NotificationReceiver as well. This takes care of some housekeeping work that was missing for persistent notifications, such as deleting the mNotifications entry when the notification is closed.
2016-10-06 01:52:32 +00:00
sListenerMap->Remove(aName);
}
}
} // namespace widget
} // namespace mozilla