| // Copyright 2016 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "base/test/android/java_handler_thread_helpers.h" | |
| #include "base/android/java_handler_thread.h" | |
| #include "base/message_loop/message_loop_current.h" | |
| #include "base/synchronization/waitable_event.h" | |
| #include "jni/JavaHandlerThreadHelpers_jni.h" | |
| namespace base { | |
| namespace android { | |
| // static | |
| std::unique_ptr<JavaHandlerThread> JavaHandlerThreadHelpers::CreateJavaFirst() { | |
| return std::make_unique<JavaHandlerThread>( | |
| Java_JavaHandlerThreadHelpers_testAndGetJavaHandlerThread( | |
| base::android::AttachCurrentThread())); | |
| } | |
| // static | |
| void JavaHandlerThreadHelpers::ThrowExceptionAndAbort(WaitableEvent* event) { | |
| JNIEnv* env = AttachCurrentThread(); | |
| Java_JavaHandlerThreadHelpers_throwException(env); | |
| DCHECK(HasException(env)); | |
| base::MessageLoopCurrentForUI::Get()->Abort(); | |
| event->Signal(); | |
| } | |
| // static | |
| bool JavaHandlerThreadHelpers::IsExceptionTestException( | |
| ScopedJavaLocalRef<jthrowable> exception) { | |
| JNIEnv* env = AttachCurrentThread(); | |
| return Java_JavaHandlerThreadHelpers_isExceptionTestException(env, exception); | |
| } | |
| } // namespace android | |
| } // namespace base |