Bug 1337910 - Notify observers from Gecko event queue; r=snorp

Call NotifyObservers from the Gecko event queue instead of the Android
event queue, to better support Promises in notified JS code.
This commit is contained in:
Jim Chen 2017-03-06 15:32:37 -05:00
Родитель 3a24d6364c
Коммит 3f746133a9
3 изменённых файлов: 9 добавлений и 2 удалений

Просмотреть файл

@ -254,7 +254,7 @@ public class GeckoAppShell
@WrapForJNI(calledFrom = "gecko")
public static native void syncNotifyObservers(String topic, String data);
@WrapForJNI(stubName = "NotifyObservers", dispatchTo = "gecko")
@WrapForJNI(stubName = "NotifyObservers", dispatchTo = "proxy")
private static native void nativeNotifyObservers(String topic, String data);
@RobocopTarget

Просмотреть файл

@ -1520,7 +1520,7 @@ public:
static const mozilla::jni::CallingThread callingThread =
mozilla::jni::CallingThread::ANY;
static const mozilla::jni::DispatchTarget dispatchTarget =
mozilla::jni::DispatchTarget::GECKO;
mozilla::jni::DispatchTarget::PROXY;
};
struct NotifyAlertListener_t {

Просмотреть файл

@ -259,6 +259,13 @@ public:
NotifyObservers(aTopic, aData);
}
template<typename Functor>
static void OnNativeCall(Functor&& aCall)
{
MOZ_ASSERT(aCall.IsTarget(&NotifyObservers));
NS_DispatchToMainThread(NS_NewRunnableFunction(mozilla::Move(aCall)));
}
static void NotifyObservers(jni::String::Param aTopic,
jni::String::Param aData)
{