Backed out changeset 48d6faa3bf0f (bug 1257319)

This commit is contained in:
Carsten "Tomcat" Book 2016-03-23 10:55:06 +01:00
parent 3342e15fa9
commit 15ef5dbe45
5 changed files with 45 additions and 2 deletions

View File

@ -77,6 +77,7 @@ public class GeckoEvent {
APP_FOREGROUNDING(10),
LOAD_URI(12),
NOOP(15),
BROADCAST(19),
VIEWPORT(20),
VISITED(21),
NETWORK_CHANGED(22),
@ -460,6 +461,14 @@ public class GeckoEvent {
return event;
}
@RobocopTarget
public static GeckoEvent createBroadcastEvent(String subject, String data) {
GeckoEvent event = GeckoEvent.get(NativeGeckoEvent.BROADCAST);
event.mCharacters = subject;
event.mCharactersExtra = data;
return event;
}
public static GeckoEvent createViewportEvent(ImmutableViewportMetrics metrics, DisplayPortMetrics displayPort) {
GeckoEvent event = GeckoEvent.get(NativeGeckoEvent.VIEWPORT);
event.mCharacters = "Viewport:Change";

View File

@ -63,6 +63,29 @@ Java_org_mozilla_gecko_GeckoAppShell_notifyGeckoOfEvent(JNIEnv *jenv, jclass jc,
nsAppShell::PostEvent(AndroidGeckoEvent::MakeFromJavaObject(jenv, event));
}
NS_EXPORT void JNICALL
Java_org_mozilla_gecko_GeckoAppShell_notifyGeckoObservers(JNIEnv *aEnv, jclass,
jstring aTopic, jstring aData)
{
if (!NS_IsMainThread()) {
jni::ThrowException(aEnv,
"java/lang/IllegalThreadStateException", "Not on Gecko main thread");
return;
}
nsCOMPtr<nsIObserverService> obsServ =
mozilla::services::GetObserverService();
if (!obsServ) {
jni::ThrowException(aEnv,
"java/lang/IllegalStateException", "No observer service");
return;
}
const nsJNICString topic(aTopic, aEnv);
const nsJNIString data(aData, aEnv);
obsServ->NotifyObservers(nullptr, topic.get(), data.get());
}
NS_EXPORT jlong JNICALL
Java_org_mozilla_gecko_GeckoAppShell_runUiThreadCallback(JNIEnv* env, jclass)
{

View File

@ -390,7 +390,8 @@ AndroidGeckoEvent::Init(JNIEnv *jenv, jobject jobj)
break;
}
case VIEWPORT: {
case VIEWPORT:
case BROADCAST: {
ReadCharactersField(jenv);
ReadCharactersExtraField(jenv);
break;

View File

@ -444,6 +444,14 @@ public:
return event;
}
static AndroidGeckoEvent* MakeBroadcastEvent(const nsCString& topic, const nsCString& data) {
AndroidGeckoEvent* event = new AndroidGeckoEvent();
event->Init(BROADCAST);
CopyUTF8toUTF16(topic, event->mCharacters);
CopyUTF8toUTF16(data, event->mCharactersExtra);
return event;
}
static AndroidGeckoEvent* MakeAddObserver(const nsAString &key, nsIObserver *observer) {
AndroidGeckoEvent *event = new AndroidGeckoEvent();
event->Init(ADD_OBSERVER);
@ -633,6 +641,7 @@ public:
LOAD_URI = 12,
NOOP = 15,
APZ_INPUT_EVENT = 17, // used internally in AndroidJNI/nsAppShell/nsWindow
BROADCAST = 19,
VIEWPORT = 20,
VISITED = 21,
NETWORK_CHANGED = 22,

View File

@ -678,7 +678,8 @@ nsAppShell::LegacyGeckoEvent::Run()
break;
}
case AndroidGeckoEvent::VIEWPORT: {
case AndroidGeckoEvent::VIEWPORT:
case AndroidGeckoEvent::BROADCAST: {
if (curEvent->Characters().Length() == 0)
break;