2021-06-27 20:44:35 +00:00
package androidx.activity.result ;
import android.annotation.SuppressLint ;
import android.content.Intent ;
import android.os.Bundle ;
import android.util.Log ;
import androidx.activity.result.contract.ActivityResultContract ;
import androidx.annotation.MainThread ;
import androidx.annotation.NonNull ;
import androidx.annotation.Nullable ;
import androidx.core.app.ActivityOptionsCompat ;
import androidx.lifecycle.Lifecycle ;
import androidx.lifecycle.LifecycleEventObserver ;
import androidx.lifecycle.LifecycleOwner ;
import c.d.b.a.a ;
import java.util.ArrayList ;
import java.util.HashMap ;
import java.util.Iterator ;
import java.util.Map ;
import java.util.Random ;
public abstract class ActivityResultRegistry {
private static final int INITIAL_REQUEST_CODE_VALUE = 65536 ;
private static final String KEY_COMPONENT_ACTIVITY_PENDING_RESULTS = " KEY_COMPONENT_ACTIVITY_PENDING_RESULT " ;
private static final String KEY_COMPONENT_ACTIVITY_RANDOM_OBJECT = " KEY_COMPONENT_ACTIVITY_RANDOM_OBJECT " ;
private static final String KEY_COMPONENT_ACTIVITY_REGISTERED_KEYS = " KEY_COMPONENT_ACTIVITY_REGISTERED_KEYS " ;
private static final String KEY_COMPONENT_ACTIVITY_REGISTERED_RCS = " KEY_COMPONENT_ACTIVITY_REGISTERED_RCS " ;
private static final String LOG_TAG = " ActivityResultRegistry " ;
public final transient Map < String , CallbackAndContract < ? > > mKeyToCallback = new HashMap ( ) ;
private final Map < String , LifecycleContainer > mKeyToLifecycleContainers = new HashMap ( ) ;
private final Map < String , Integer > mKeyToRc = new HashMap ( ) ;
public final Map < String , Object > mParsedPendingResults = new HashMap ( ) ;
public final Bundle mPendingResults = new Bundle ( ) ;
private Random mRandom = new Random ( ) ;
private final Map < Integer , String > mRcToKey = new HashMap ( ) ;
/* renamed from: androidx.activity.result.ActivityResultRegistry$1 reason: invalid class name */
public class AnonymousClass1 implements LifecycleEventObserver {
public final /* synthetic */ ActivityResultCallback val$callback ;
public final /* synthetic */ ActivityResultContract val$contract ;
public final /* synthetic */ String val$key ;
public AnonymousClass1 ( String str , ActivityResultCallback activityResultCallback , ActivityResultContract activityResultContract ) {
this . val$key = str ;
this . val$callback = activityResultCallback ;
this . val$contract = activityResultContract ;
}
@Override // androidx.lifecycle.LifecycleEventObserver
public void onStateChanged ( @NonNull LifecycleOwner lifecycleOwner , @NonNull Lifecycle . Event event ) {
if ( Lifecycle . Event . ON_START . equals ( event ) ) {
ActivityResultRegistry . this . mKeyToCallback . put ( this . val$key , new CallbackAndContract < > ( this . val$callback , this . val$contract ) ) ;
if ( ActivityResultRegistry . this . mParsedPendingResults . containsKey ( this . val$key ) ) {
Object obj = ActivityResultRegistry . this . mParsedPendingResults . get ( this . val$key ) ;
ActivityResultRegistry . this . mParsedPendingResults . remove ( this . val$key ) ;
this . val$callback . onActivityResult ( obj ) ;
}
ActivityResult activityResult = ( ActivityResult ) ActivityResultRegistry . this . mPendingResults . getParcelable ( this . val$key ) ;
if ( activityResult ! = null ) {
ActivityResultRegistry . this . mPendingResults . remove ( this . val$key ) ;
this . val$callback . onActivityResult ( this . val$contract . parseResult ( activityResult . getResultCode ( ) , activityResult . getData ( ) ) ) ;
}
} else if ( Lifecycle . Event . ON_STOP . equals ( event ) ) {
ActivityResultRegistry . this . mKeyToCallback . remove ( this . val$key ) ;
} else if ( Lifecycle . Event . ON_DESTROY . equals ( event ) ) {
ActivityResultRegistry . this . unregister ( this . val$key ) ;
}
}
}
/* renamed from: androidx.activity.result.ActivityResultRegistry$2 reason: invalid class name */
public class AnonymousClass2 extends ActivityResultLauncher < I > {
public final /* synthetic */ ActivityResultContract val$contract ;
public final /* synthetic */ String val$key ;
public final /* synthetic */ int val$requestCode ;
public AnonymousClass2 ( int i , ActivityResultContract activityResultContract , String str ) {
this . val$requestCode = i ;
this . val$contract = activityResultContract ;
this . val$key = str ;
}
@Override // androidx.activity.result.ActivityResultLauncher
@NonNull
public ActivityResultContract < I , ? > getContract ( ) {
return this . val$contract ;
}
@Override // androidx.activity.result.ActivityResultLauncher
public void launch ( I i , @Nullable ActivityOptionsCompat activityOptionsCompat ) {
ActivityResultRegistry . this . onLaunch ( this . val$requestCode , this . val$contract , i , activityOptionsCompat ) ;
}
@Override // androidx.activity.result.ActivityResultLauncher
public void unregister ( ) {
ActivityResultRegistry . this . unregister ( this . val$key ) ;
}
}
/* renamed from: androidx.activity.result.ActivityResultRegistry$3 reason: invalid class name */
public class AnonymousClass3 extends ActivityResultLauncher < I > {
public final /* synthetic */ ActivityResultContract val$contract ;
public final /* synthetic */ String val$key ;
public final /* synthetic */ int val$requestCode ;
public AnonymousClass3 ( int i , ActivityResultContract activityResultContract , String str ) {
this . val$requestCode = i ;
this . val$contract = activityResultContract ;
this . val$key = str ;
}
@Override // androidx.activity.result.ActivityResultLauncher
@NonNull
public ActivityResultContract < I , ? > getContract ( ) {
return this . val$contract ;
}
@Override // androidx.activity.result.ActivityResultLauncher
public void launch ( I i , @Nullable ActivityOptionsCompat activityOptionsCompat ) {
ActivityResultRegistry . this . onLaunch ( this . val$requestCode , this . val$contract , i , activityOptionsCompat ) ;
}
@Override // androidx.activity.result.ActivityResultLauncher
public void unregister ( ) {
ActivityResultRegistry . this . unregister ( this . val$key ) ;
}
}
public static class CallbackAndContract < O > {
public final ActivityResultCallback < O > mCallback ;
public final ActivityResultContract < ? , O > mContract ;
public CallbackAndContract ( ActivityResultCallback < O > activityResultCallback , ActivityResultContract < ? , O > activityResultContract ) {
this . mCallback = activityResultCallback ;
this . mContract = activityResultContract ;
}
}
public static class LifecycleContainer {
public final Lifecycle mLifecycle ;
private final ArrayList < LifecycleEventObserver > mObservers = new ArrayList < > ( ) ;
public LifecycleContainer ( @NonNull Lifecycle lifecycle ) {
this . mLifecycle = lifecycle ;
}
public void addObserver ( @NonNull LifecycleEventObserver lifecycleEventObserver ) {
this . mLifecycle . addObserver ( lifecycleEventObserver ) ;
this . mObservers . add ( lifecycleEventObserver ) ;
}
public void clearObservers ( ) {
Iterator < LifecycleEventObserver > it = this . mObservers . iterator ( ) ;
while ( it . hasNext ( ) ) {
this . mLifecycle . removeObserver ( it . next ( ) ) ;
}
this . mObservers . clear ( ) ;
}
}
private void bindRcKey ( int i , String str ) {
this . mRcToKey . put ( Integer . valueOf ( i ) , str ) ;
this . mKeyToRc . put ( str , Integer . valueOf ( i ) ) ;
}
private < O > void doDispatch ( String str , int i , @Nullable Intent intent , @Nullable CallbackAndContract < O > callbackAndContract ) {
ActivityResultCallback < O > activityResultCallback ;
if ( callbackAndContract = = null | | ( activityResultCallback = callbackAndContract . mCallback ) = = null ) {
this . mParsedPendingResults . remove ( str ) ;
this . mPendingResults . putParcelable ( str , new ActivityResult ( i , intent ) ) ;
return ;
}
activityResultCallback . onActivityResult ( callbackAndContract . mContract . parseResult ( i , intent ) ) ;
}
private int generateRandomNumber ( ) {
int nextInt = this . mRandom . nextInt ( 2147418112 ) ;
while ( true ) {
int i = nextInt + 65536 ;
if ( ! this . mRcToKey . containsKey ( Integer . valueOf ( i ) ) ) {
return i ;
}
nextInt = this . mRandom . nextInt ( 2147418112 ) ;
}
}
private int registerKey ( String str ) {
Integer num = this . mKeyToRc . get ( str ) ;
if ( num ! = null ) {
return num . intValue ( ) ;
}
int generateRandomNumber = generateRandomNumber ( ) ;
bindRcKey ( generateRandomNumber , str ) ;
return generateRandomNumber ;
}
@MainThread
public final boolean dispatchResult ( int i , int i2 , @Nullable Intent intent ) {
String str = this . mRcToKey . get ( Integer . valueOf ( i ) ) ;
if ( str = = null ) {
return false ;
}
doDispatch ( str , i2 , intent , this . mKeyToCallback . get ( str ) ) ;
return true ;
}
@MainThread
public final < O > boolean dispatchResult ( int i , @SuppressLint ( { " UnknownNullness " } ) O o ) {
ActivityResultCallback < ? > activityResultCallback ;
String str = this . mRcToKey . get ( Integer . valueOf ( i ) ) ;
if ( str = = null ) {
return false ;
}
CallbackAndContract < ? > callbackAndContract = this . mKeyToCallback . get ( str ) ;
if ( callbackAndContract = = null | | ( activityResultCallback = callbackAndContract . mCallback ) = = null ) {
this . mPendingResults . remove ( str ) ;
this . mParsedPendingResults . put ( str , o ) ;
return true ;
}
activityResultCallback . onActivityResult ( o ) ;
return true ;
}
@MainThread
public abstract < I , O > void onLaunch ( int i , @NonNull ActivityResultContract < I , O > activityResultContract , @SuppressLint ( { " UnknownNullness " } ) I i2 , @Nullable ActivityOptionsCompat activityOptionsCompat ) ;
public final void onRestoreInstanceState ( @Nullable Bundle bundle ) {
if ( bundle ! = null ) {
ArrayList < Integer > integerArrayList = bundle . getIntegerArrayList ( " KEY_COMPONENT_ACTIVITY_REGISTERED_RCS " ) ;
ArrayList < String > stringArrayList = bundle . getStringArrayList ( " KEY_COMPONENT_ACTIVITY_REGISTERED_KEYS " ) ;
if ( ! ( stringArrayList = = null | | integerArrayList = = null ) ) {
int size = stringArrayList . size ( ) ;
for ( int i = 0 ; i < size ; i + + ) {
bindRcKey ( integerArrayList . get ( i ) . intValue ( ) , stringArrayList . get ( i ) ) ;
}
this . mRandom = ( Random ) bundle . getSerializable ( " KEY_COMPONENT_ACTIVITY_RANDOM_OBJECT " ) ;
this . mPendingResults . putAll ( bundle . getBundle ( " KEY_COMPONENT_ACTIVITY_PENDING_RESULT " ) ) ;
}
}
}
public final void onSaveInstanceState ( @NonNull Bundle bundle ) {
bundle . putIntegerArrayList ( " KEY_COMPONENT_ACTIVITY_REGISTERED_RCS " , new ArrayList < > ( this . mRcToKey . keySet ( ) ) ) ;
bundle . putStringArrayList ( " KEY_COMPONENT_ACTIVITY_REGISTERED_KEYS " , new ArrayList < > ( this . mRcToKey . values ( ) ) ) ;
bundle . putBundle ( " KEY_COMPONENT_ACTIVITY_PENDING_RESULT " , ( Bundle ) this . mPendingResults . clone ( ) ) ;
bundle . putSerializable ( " KEY_COMPONENT_ACTIVITY_RANDOM_OBJECT " , this . mRandom ) ;
}
/* JADX DEBUG: Multi-variable search result rejected for r6v0, resolved type: androidx.activity.result.ActivityResultCallback<O> */
/* JADX WARN: Multi-variable type inference failed */
@NonNull
public final < I , O > ActivityResultLauncher < I > register ( @NonNull String str , @NonNull ActivityResultContract < I , O > activityResultContract , @NonNull ActivityResultCallback < O > activityResultCallback ) {
int registerKey = registerKey ( str ) ;
this . mKeyToCallback . put ( str , new CallbackAndContract < > ( activityResultCallback , activityResultContract ) ) ;
if ( this . mParsedPendingResults . containsKey ( str ) ) {
Object obj = this . mParsedPendingResults . get ( str ) ;
this . mParsedPendingResults . remove ( str ) ;
activityResultCallback . onActivityResult ( obj ) ;
}
ActivityResult activityResult = ( ActivityResult ) this . mPendingResults . getParcelable ( str ) ;
if ( activityResult ! = null ) {
this . mPendingResults . remove ( str ) ;
activityResultCallback . onActivityResult ( activityResultContract . parseResult ( activityResult . getResultCode ( ) , activityResult . getData ( ) ) ) ;
}
return new AnonymousClass3 ( registerKey , activityResultContract , str ) ;
}
@NonNull
public final < I , O > ActivityResultLauncher < I > register ( @NonNull String str , @NonNull LifecycleOwner lifecycleOwner , @NonNull ActivityResultContract < I , O > activityResultContract , @NonNull ActivityResultCallback < O > activityResultCallback ) {
Lifecycle lifecycle = lifecycleOwner . getLifecycle ( ) ;
if ( ! lifecycle . getCurrentState ( ) . isAtLeast ( Lifecycle . State . STARTED ) ) {
int registerKey = registerKey ( str ) ;
LifecycleContainer lifecycleContainer = this . mKeyToLifecycleContainers . get ( str ) ;
if ( lifecycleContainer = = null ) {
lifecycleContainer = new LifecycleContainer ( lifecycle ) ;
}
lifecycleContainer . addObserver ( new AnonymousClass1 ( str , activityResultCallback , activityResultContract ) ) ;
this . mKeyToLifecycleContainers . put ( str , lifecycleContainer ) ;
return new AnonymousClass2 ( registerKey , activityResultContract , str ) ;
}
throw new IllegalStateException ( " LifecycleOwner " + lifecycleOwner + " is attempting to register while current state is " + lifecycle . getCurrentState ( ) + " . LifecycleOwners must call register before they are STARTED. " ) ;
}
@MainThread
public final void unregister ( @NonNull String str ) {
Integer remove = this . mKeyToRc . remove ( str ) ;
if ( remove ! = null ) {
this . mRcToKey . remove ( remove ) ;
}
this . mKeyToCallback . remove ( str ) ;
if ( this . mParsedPendingResults . containsKey ( str ) ) {
2021-07-27 04:36:47 +00:00
StringBuilder P = a . P ( " Dropping pending result for request " , str , " : " ) ;
P . append ( this . mParsedPendingResults . get ( str ) ) ;
Log . w ( " ActivityResultRegistry " , P . toString ( ) ) ;
2021-06-27 20:44:35 +00:00
this . mParsedPendingResults . remove ( str ) ;
}
if ( this . mPendingResults . containsKey ( str ) ) {
2021-07-27 04:36:47 +00:00
StringBuilder P2 = a . P ( " Dropping pending result for request " , str , " : " ) ;
P2 . append ( this . mPendingResults . getParcelable ( str ) ) ;
Log . w ( " ActivityResultRegistry " , P2 . toString ( ) ) ;
2021-06-27 20:44:35 +00:00
this . mPendingResults . remove ( str ) ;
}
LifecycleContainer lifecycleContainer = this . mKeyToLifecycleContainers . get ( str ) ;
if ( lifecycleContainer ! = null ) {
lifecycleContainer . clearObservers ( ) ;
this . mKeyToLifecycleContainers . remove ( str ) ;
}
}
}