1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "mojo/android/javatests/mojo_test_case.h" 6 7#include "base/android/jni_android.h" 8#include "base/android/scoped_java_ref.h" 9#include "base/at_exit.h" 10#include "base/bind.h" 11#include "base/logging.h" 12#include "base/message_loop/message_loop.h" 13#include "base/run_loop.h" 14#include "base/test/test_support_android.h" 15#include "jni/MojoTestCase_jni.h" 16#include "mojo/public/cpp/environment/environment.h" 17 18namespace { 19 20struct TestEnvironment { 21 base::ShadowingAtExitManager at_exit; 22 base::MessageLoopForUI message_loop; 23}; 24 25} // namespace 26 27namespace mojo { 28namespace android { 29 30static void InitApplicationContext(JNIEnv* env, 31 jobject jcaller, 32 jobject context) { 33 base::android::ScopedJavaLocalRef<jobject> scoped_context(env, context); 34 base::android::InitApplicationContext(env, scoped_context); 35 base::InitAndroidTestMessageLoop(); 36} 37 38static jlong SetupTestEnvironment(JNIEnv* env, jobject jcaller) { 39 return reinterpret_cast<intptr_t>(new TestEnvironment()); 40} 41 42static void TearDownTestEnvironment(JNIEnv* env, 43 jobject jcaller, 44 jlong test_environment) { 45 delete reinterpret_cast<TestEnvironment*>(test_environment); 46} 47 48static void RunLoop(JNIEnv* env, jobject jcaller, jlong timeout_ms) { 49 base::MessageLoop::current()->PostDelayedTask( 50 FROM_HERE, 51 base::MessageLoop::QuitClosure(), 52 base::TimeDelta::FromMilliseconds(timeout_ms)); 53 base::RunLoop run_loop; 54 run_loop.Run(); 55} 56 57bool RegisterMojoTestCase(JNIEnv* env) { 58 return RegisterNativesImpl(env); 59} 60 61} // namespace android 62} // namespace mojo 63