diff options
| -rw-r--r-- | core/java/android/os/Binder.java | 10 | ||||
| -rw-r--r-- | core/jni/android_util_Binder.cpp | 13 |
2 files changed, 23 insertions, 0 deletions
diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java index 6425c250f317..f5130bcf3088 100644 --- a/core/java/android/os/Binder.java +++ b/core/java/android/os/Binder.java @@ -543,6 +543,16 @@ public class Binder implements IBinder { public final native void markVintfStability(); /** + * Use a VINTF-stability binder w/o VINTF requirements. Should be called + * on a binder before it is sent out of process. + * + * This must be called before the object is sent to another process. + * + * @hide + */ + public final native void forceDowngradeToSystemStability(); + + /** * Flush any Binder commands pending in the current thread to the kernel * driver. This can be * useful to call before performing an operation that may block for a long diff --git a/core/jni/android_util_Binder.cpp b/core/jni/android_util_Binder.cpp index 249950419441..e4dddd277b0b 100644 --- a/core/jni/android_util_Binder.cpp +++ b/core/jni/android_util_Binder.cpp @@ -486,9 +486,15 @@ public: } void markVintf() { + AutoMutex _l(mLock); mVintf = true; } + void forceDowngradeToSystemStability() { + AutoMutex _l(mLock); + mVintf = false; + } + sp<IBinder> getExtension() { AutoMutex _l(mLock); sp<JavaBBinder> b = mBinder.promote(); @@ -1013,6 +1019,12 @@ static void android_os_Binder_markVintfStability(JNIEnv* env, jobject clazz) { jbh->markVintf(); } +static void android_os_Binder_forceDowngradeToSystemStability(JNIEnv* env, jobject clazz) { + JavaBBinderHolder* jbh = + (JavaBBinderHolder*) env->GetLongField(clazz, gBinderOffsets.mObject); + jbh->forceDowngradeToSystemStability(); +} + static void android_os_Binder_flushPendingCommands(JNIEnv* env, jobject clazz) { IPCThreadState::self()->flushCommands(); @@ -1076,6 +1088,7 @@ static const JNINativeMethod gBinderMethods[] = { { "clearCallingWorkSource", "()J", (void*)android_os_Binder_clearCallingWorkSource }, { "restoreCallingWorkSource", "(J)V", (void*)android_os_Binder_restoreCallingWorkSource }, { "markVintfStability", "()V", (void*)android_os_Binder_markVintfStability}, + { "forceDowngradeToSystemStability", "()V", (void*)android_os_Binder_forceDowngradeToSystemStability}, { "flushPendingCommands", "()V", (void*)android_os_Binder_flushPendingCommands }, { "getNativeBBinderHolder", "()J", (void*)android_os_Binder_getNativeBBinderHolder }, { "getNativeFinalizer", "()J", (void*)android_os_Binder_getNativeFinalizer }, |