mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-26 11:45:37 +00:00
52c109b436
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.
50 lines
1.1 KiB
C++
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__
|