gecko-dev/widget/android/AndroidAlerts.h
Jim Chen 52c109b436 Bug 1288821 - Convert callObserver/removeObserver to native method; r=snorp
Combine the callObserver and removeObserver methods used for notifying
alert listeners into the native method
GeckoAppShell.notifyAlertListener. Keep track of the listener and the
alert cookie on the native side so that we don't need
GeckoAppShell.ALERT_COOKIES anymore.
2016-08-04 09:17:54 -04:00

50 lines
1.1 KiB
C++

/* -*- 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/. */
#ifndef mozilla_widget_AndroidAlerts_h__
#define mozilla_widget_AndroidAlerts_h__
#include "nsClassHashtable.h"
#include "nsCOMPtr.h"
#include "nsHashKeys.h"
#include "nsIAlertsService.h"
#include "nsIObserver.h"
#include "mozilla/StaticPtr.h"
namespace mozilla {
namespace widget {
class AndroidAlerts : public nsIAlertsService
{
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIALERTSSERVICE
AndroidAlerts() {}
static void NotifyListener(const nsAString& aName, const char* aTopic);
protected:
virtual ~AndroidAlerts()
{
sAlertInfoMap = nullptr;
}
struct AlertInfo
{
nsCOMPtr<nsIObserver> listener;
nsString cookie;
};
using AlertInfoMap = nsClassHashtable<nsStringHashKey, AlertInfo>;
static StaticAutoPtr<AlertInfoMap> sAlertInfoMap;
};
} // namespace widget
} // namespace mozilla
#endif // nsAndroidAlerts_h__