|  | // 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 |