jclass jsjni_GetGlobalClassRef(const char *className) { nsCOMPtr<nsIThread> mainThread; mozilla::DebugOnly<nsresult> rv = NS_GetMainThread(getter_AddRefs(mainThread)); MOZ_ASSERT(NS_SUCCEEDED(rv)); jclass foundClass; nsRefPtr<nsIRunnable> runnable_ref(new GetGlobalClassRefRunnable(className, &foundClass)); mainThread->Dispatch(runnable_ref, NS_DISPATCH_SYNC); if (!foundClass) return NULL; return foundClass; }
jclass jsjni_GetGlobalClassRef(const char *className) { if (NS_IsMainThread()) { return __jsjni_GetGlobalClassRef(className); } nsCOMPtr<nsIThread> mainThread; mozilla::DebugOnly<nsresult> rv = NS_GetMainThread(getter_AddRefs(mainThread)); MOZ_ASSERT(NS_SUCCEEDED(rv)); jclass foundClass; nsCOMPtr<nsIRunnable> runnable_ref(new GetGlobalClassRefRunnable(className, &foundClass)); nsRefPtr<mozilla::SyncRunnable> sr = new mozilla::SyncRunnable(runnable_ref); sr->DispatchToThread(mainThread); if (!foundClass) return nullptr; return foundClass; }