Avi Drissman | e4622aa | 2022-09-08 20:36:06 | [diff] [blame^] | 1 | // Copyright 2015 The Chromium Authors |
boliu | 9b51b51 | 2017-02-03 15:35:05 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | #ifndef BASE_ANDROID_JAVA_EXCEPTION_REPORTER_H_ |
| 6 | #define BASE_ANDROID_JAVA_EXCEPTION_REPORTER_H_ |
| 7 | |
| 8 | #include <jni.h> |
| 9 | |
Tobias Sargeant | 5e78771d | 2019-09-21 13:49:23 | [diff] [blame] | 10 | #include "base/android/scoped_java_ref.h" |
boliu | 9b51b51 | 2017-02-03 15:35:05 | [diff] [blame] | 11 | #include "base/base_export.h" |
Hans Wennborg | 9f3bb63d | 2020-04-21 11:12:38 | [diff] [blame] | 12 | #include "base/callback_forward.h" |
boliu | 9b51b51 | 2017-02-03 15:35:05 | [diff] [blame] | 13 | |
| 14 | namespace base { |
| 15 | namespace android { |
| 16 | |
| 17 | // Install the exception handler. This should only be called once per process. |
| 18 | BASE_EXPORT void InitJavaExceptionReporter(); |
| 19 | |
boliu | 328eda13 | 2017-02-10 16:39:57 | [diff] [blame] | 20 | // Same as above except the handler ensures child process exists immediately |
| 21 | // after an unhandled exception. This is used for child processes because |
| 22 | // DumpWithoutCrashing does not work for child processes on Android. |
| 23 | BASE_EXPORT void InitJavaExceptionReporterForChildProcess(); |
| 24 | |
Joshua Peraza | 7814da2 | 2018-07-10 21:37:50 | [diff] [blame] | 25 | // Sets a callback to be called with the contents of a Java exception, which may |
| 26 | // be nullptr. |
| 27 | BASE_EXPORT void SetJavaExceptionCallback(void (*)(const char* exception)); |
| 28 | |
| 29 | // Calls the Java exception callback, if any, with exception. |
| 30 | void SetJavaException(const char* exception); |
| 31 | |
Tobias Sargeant | 5e78771d | 2019-09-21 13:49:23 | [diff] [blame] | 32 | // Sets a filter that determines whether a java exception should cause a crash |
| 33 | // report. |java_exception_filter| should return true if a crash report should |
| 34 | // be generated. |
Tobias Sargeant | e3608f8 | 2019-09-30 14:10:32 | [diff] [blame] | 35 | BASE_EXPORT void SetJavaExceptionFilter( |
Tobias Sargeant | 5e78771d | 2019-09-21 13:49:23 | [diff] [blame] | 36 | base::RepeatingCallback<bool(const JavaRef<jthrowable>&)> |
| 37 | java_exception_filter); |
| 38 | |
boliu | 9b51b51 | 2017-02-03 15:35:05 | [diff] [blame] | 39 | } // namespace android |
| 40 | } // namespace base |
| 41 | |
| 42 | #endif // BASE_ANDROID_JAVA_EXCEPTION_REPORTER_H_ |