Loading core/java/com/android/internal/inputmethod/ResultCallbacks.java +11 −24 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import android.annotation.BinderThread; import android.annotation.NonNull; import android.annotation.Nullable; import java.lang.ref.WeakReference; import java.util.concurrent.atomic.AtomicReference; /** Loading @@ -38,15 +37,9 @@ public final class ResultCallbacks { @AnyThread @Nullable private static <T> T unwrap(@NonNull AtomicReference<WeakReference<T>> atomicRef) { final WeakReference<T> ref = atomicRef.getAndSet(null); if (ref == null) { // Double-call is guaranteed to be ignored here. return null; } final T value = ref.get(); ref.clear(); return value; private static <T> T unwrap(@NonNull AtomicReference<T> atomicRef) { // Only the first caller will receive the non-null original object. return atomicRef.getAndSet(null); } /** Loading @@ -58,8 +51,7 @@ public final class ResultCallbacks { */ @AnyThread public static IIntResultCallback.Stub of(@NonNull Completable.Int value) { final AtomicReference<WeakReference<Completable.Int>> atomicRef = new AtomicReference<>(new WeakReference<>(value)); final AtomicReference<Completable.Int> atomicRef = new AtomicReference<>(value); return new IIntResultCallback.Stub() { @BinderThread Loading Loading @@ -95,8 +87,7 @@ public final class ResultCallbacks { @AnyThread public static ICharSequenceResultCallback.Stub of( @NonNull Completable.CharSequence value) { final AtomicReference<WeakReference<Completable.CharSequence>> atomicRef = new AtomicReference<>(new WeakReference<>(value)); final AtomicReference<Completable.CharSequence> atomicRef = new AtomicReference<>(value); return new ICharSequenceResultCallback.Stub() { @BinderThread Loading @@ -122,8 +113,7 @@ public final class ResultCallbacks { @AnyThread public static IExtractedTextResultCallback.Stub of( @NonNull Completable.ExtractedText value) { final AtomicReference<WeakReference<Completable.ExtractedText>> atomicRef = new AtomicReference<>(new WeakReference<>(value)); final AtomicReference<Completable.ExtractedText> atomicRef = new AtomicReference<>(value); return new IExtractedTextResultCallback.Stub() { @BinderThread Loading @@ -149,8 +139,7 @@ public final class ResultCallbacks { @AnyThread public static ISurroundingTextResultCallback.Stub of( @NonNull Completable.SurroundingText value) { final AtomicReference<WeakReference<Completable.SurroundingText>> atomicRef = new AtomicReference<>(new WeakReference<>(value)); final AtomicReference<Completable.SurroundingText> atomicRef = new AtomicReference<>(value); return new ISurroundingTextResultCallback.Stub() { @BinderThread Loading @@ -174,8 +163,7 @@ public final class ResultCallbacks { */ @AnyThread public static IBooleanResultCallback.Stub of(@NonNull Completable.Boolean value) { final AtomicReference<WeakReference<Completable.Boolean>> atomicRef = new AtomicReference<>(new WeakReference<>(value)); final AtomicReference<Completable.Boolean> atomicRef = new AtomicReference<>(value); return new IBooleanResultCallback.Stub() { @BinderThread Loading Loading @@ -209,8 +197,7 @@ public final class ResultCallbacks { */ @AnyThread public static IVoidResultCallback.Stub of(@NonNull Completable.Void value) { final AtomicReference<WeakReference<Completable.Void>> atomicRef = new AtomicReference<>(new WeakReference<>(value)); final AtomicReference<Completable.Void> atomicRef = new AtomicReference<>(value); return new IVoidResultCallback.Stub() { @BinderThread Loading Loading @@ -246,8 +233,8 @@ public final class ResultCallbacks { @AnyThread public static IIInputContentUriTokenResultCallback.Stub of( @NonNull Completable.IInputContentUriToken value) { final AtomicReference<WeakReference<Completable.IInputContentUriToken>> atomicRef = new AtomicReference<>(new WeakReference<>(value)); final AtomicReference<Completable.IInputContentUriToken> atomicRef = new AtomicReference<>(value); return new IIInputContentUriTokenResultCallback.Stub() { @BinderThread Loading Loading
core/java/com/android/internal/inputmethod/ResultCallbacks.java +11 −24 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import android.annotation.BinderThread; import android.annotation.NonNull; import android.annotation.Nullable; import java.lang.ref.WeakReference; import java.util.concurrent.atomic.AtomicReference; /** Loading @@ -38,15 +37,9 @@ public final class ResultCallbacks { @AnyThread @Nullable private static <T> T unwrap(@NonNull AtomicReference<WeakReference<T>> atomicRef) { final WeakReference<T> ref = atomicRef.getAndSet(null); if (ref == null) { // Double-call is guaranteed to be ignored here. return null; } final T value = ref.get(); ref.clear(); return value; private static <T> T unwrap(@NonNull AtomicReference<T> atomicRef) { // Only the first caller will receive the non-null original object. return atomicRef.getAndSet(null); } /** Loading @@ -58,8 +51,7 @@ public final class ResultCallbacks { */ @AnyThread public static IIntResultCallback.Stub of(@NonNull Completable.Int value) { final AtomicReference<WeakReference<Completable.Int>> atomicRef = new AtomicReference<>(new WeakReference<>(value)); final AtomicReference<Completable.Int> atomicRef = new AtomicReference<>(value); return new IIntResultCallback.Stub() { @BinderThread Loading Loading @@ -95,8 +87,7 @@ public final class ResultCallbacks { @AnyThread public static ICharSequenceResultCallback.Stub of( @NonNull Completable.CharSequence value) { final AtomicReference<WeakReference<Completable.CharSequence>> atomicRef = new AtomicReference<>(new WeakReference<>(value)); final AtomicReference<Completable.CharSequence> atomicRef = new AtomicReference<>(value); return new ICharSequenceResultCallback.Stub() { @BinderThread Loading @@ -122,8 +113,7 @@ public final class ResultCallbacks { @AnyThread public static IExtractedTextResultCallback.Stub of( @NonNull Completable.ExtractedText value) { final AtomicReference<WeakReference<Completable.ExtractedText>> atomicRef = new AtomicReference<>(new WeakReference<>(value)); final AtomicReference<Completable.ExtractedText> atomicRef = new AtomicReference<>(value); return new IExtractedTextResultCallback.Stub() { @BinderThread Loading @@ -149,8 +139,7 @@ public final class ResultCallbacks { @AnyThread public static ISurroundingTextResultCallback.Stub of( @NonNull Completable.SurroundingText value) { final AtomicReference<WeakReference<Completable.SurroundingText>> atomicRef = new AtomicReference<>(new WeakReference<>(value)); final AtomicReference<Completable.SurroundingText> atomicRef = new AtomicReference<>(value); return new ISurroundingTextResultCallback.Stub() { @BinderThread Loading @@ -174,8 +163,7 @@ public final class ResultCallbacks { */ @AnyThread public static IBooleanResultCallback.Stub of(@NonNull Completable.Boolean value) { final AtomicReference<WeakReference<Completable.Boolean>> atomicRef = new AtomicReference<>(new WeakReference<>(value)); final AtomicReference<Completable.Boolean> atomicRef = new AtomicReference<>(value); return new IBooleanResultCallback.Stub() { @BinderThread Loading Loading @@ -209,8 +197,7 @@ public final class ResultCallbacks { */ @AnyThread public static IVoidResultCallback.Stub of(@NonNull Completable.Void value) { final AtomicReference<WeakReference<Completable.Void>> atomicRef = new AtomicReference<>(new WeakReference<>(value)); final AtomicReference<Completable.Void> atomicRef = new AtomicReference<>(value); return new IVoidResultCallback.Stub() { @BinderThread Loading Loading @@ -246,8 +233,8 @@ public final class ResultCallbacks { @AnyThread public static IIInputContentUriTokenResultCallback.Stub of( @NonNull Completable.IInputContentUriToken value) { final AtomicReference<WeakReference<Completable.IInputContentUriToken>> atomicRef = new AtomicReference<>(new WeakReference<>(value)); final AtomicReference<Completable.IInputContentUriToken> atomicRef = new AtomicReference<>(value); return new IIInputContentUriTokenResultCallback.Stub() { @BinderThread Loading