ADD week 5
This commit is contained in:
		| @@ -0,0 +1,525 @@ | ||||
| package androidx.fragment.app; | ||||
|  | ||||
| import android.util.Log; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import androidx.core.os.CancellationSignal; | ||||
| import androidx.core.view.ViewCompat; | ||||
| import androidx.fragment.R; | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashSet; | ||||
| import java.util.Iterator; | ||||
| import java.util.List; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| abstract class SpecialEffectsController { | ||||
|     private final ViewGroup mContainer; | ||||
|     final ArrayList<Operation> mPendingOperations = new ArrayList<>(); | ||||
|     final ArrayList<Operation> mRunningOperations = new ArrayList<>(); | ||||
|     boolean mOperationDirectionIsPop = false; | ||||
|     boolean mIsContainerPostponed = false; | ||||
|  | ||||
|     abstract void executeOperations(List<Operation> list, boolean z); | ||||
|  | ||||
|     public ViewGroup getContainer() { | ||||
|         return this.mContainer; | ||||
|     } | ||||
|  | ||||
|     void updateOperationDirection(boolean z) { | ||||
|         this.mOperationDirectionIsPop = z; | ||||
|     } | ||||
|  | ||||
|     static SpecialEffectsController getOrCreateController(ViewGroup viewGroup, FragmentManager fragmentManager) { | ||||
|         return getOrCreateController(viewGroup, fragmentManager.getSpecialEffectsControllerFactory()); | ||||
|     } | ||||
|  | ||||
|     static SpecialEffectsController getOrCreateController(ViewGroup viewGroup, SpecialEffectsControllerFactory specialEffectsControllerFactory) { | ||||
|         Object tag = viewGroup.getTag(R.id.special_effects_controller_view_tag); | ||||
|         if (tag instanceof SpecialEffectsController) { | ||||
|             return (SpecialEffectsController) tag; | ||||
|         } | ||||
|         SpecialEffectsController createController = specialEffectsControllerFactory.createController(viewGroup); | ||||
|         viewGroup.setTag(R.id.special_effects_controller_view_tag, createController); | ||||
|         return createController; | ||||
|     } | ||||
|  | ||||
|     SpecialEffectsController(ViewGroup viewGroup) { | ||||
|         this.mContainer = viewGroup; | ||||
|     } | ||||
|  | ||||
|     Operation.LifecycleImpact getAwaitingCompletionLifecycleImpact(FragmentStateManager fragmentStateManager) { | ||||
|         Operation findPendingOperation = findPendingOperation(fragmentStateManager.getFragment()); | ||||
|         Operation.LifecycleImpact lifecycleImpact = findPendingOperation != null ? findPendingOperation.getLifecycleImpact() : null; | ||||
|         Operation findRunningOperation = findRunningOperation(fragmentStateManager.getFragment()); | ||||
|         return (findRunningOperation == null || !(lifecycleImpact == null || lifecycleImpact == Operation.LifecycleImpact.NONE)) ? lifecycleImpact : findRunningOperation.getLifecycleImpact(); | ||||
|     } | ||||
|  | ||||
|     private Operation findPendingOperation(Fragment fragment) { | ||||
|         Iterator<Operation> it = this.mPendingOperations.iterator(); | ||||
|         while (it.hasNext()) { | ||||
|             Operation next = it.next(); | ||||
|             if (next.getFragment().equals(fragment) && !next.isCanceled()) { | ||||
|                 return next; | ||||
|             } | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     private Operation findRunningOperation(Fragment fragment) { | ||||
|         Iterator<Operation> it = this.mRunningOperations.iterator(); | ||||
|         while (it.hasNext()) { | ||||
|             Operation next = it.next(); | ||||
|             if (next.getFragment().equals(fragment) && !next.isCanceled()) { | ||||
|                 return next; | ||||
|             } | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     void enqueueAdd(Operation.State state, FragmentStateManager fragmentStateManager) { | ||||
|         if (FragmentManager.isLoggingEnabled(2)) { | ||||
|             Log.v("FragmentManager", "SpecialEffectsController: Enqueuing add operation for fragment " + fragmentStateManager.getFragment()); | ||||
|         } | ||||
|         enqueue(state, Operation.LifecycleImpact.ADDING, fragmentStateManager); | ||||
|     } | ||||
|  | ||||
|     void enqueueShow(FragmentStateManager fragmentStateManager) { | ||||
|         if (FragmentManager.isLoggingEnabled(2)) { | ||||
|             Log.v("FragmentManager", "SpecialEffectsController: Enqueuing show operation for fragment " + fragmentStateManager.getFragment()); | ||||
|         } | ||||
|         enqueue(Operation.State.VISIBLE, Operation.LifecycleImpact.NONE, fragmentStateManager); | ||||
|     } | ||||
|  | ||||
|     void enqueueHide(FragmentStateManager fragmentStateManager) { | ||||
|         if (FragmentManager.isLoggingEnabled(2)) { | ||||
|             Log.v("FragmentManager", "SpecialEffectsController: Enqueuing hide operation for fragment " + fragmentStateManager.getFragment()); | ||||
|         } | ||||
|         enqueue(Operation.State.GONE, Operation.LifecycleImpact.NONE, fragmentStateManager); | ||||
|     } | ||||
|  | ||||
|     void enqueueRemove(FragmentStateManager fragmentStateManager) { | ||||
|         if (FragmentManager.isLoggingEnabled(2)) { | ||||
|             Log.v("FragmentManager", "SpecialEffectsController: Enqueuing remove operation for fragment " + fragmentStateManager.getFragment()); | ||||
|         } | ||||
|         enqueue(Operation.State.REMOVED, Operation.LifecycleImpact.REMOVING, fragmentStateManager); | ||||
|     } | ||||
|  | ||||
|     private void enqueue(Operation.State state, Operation.LifecycleImpact lifecycleImpact, FragmentStateManager fragmentStateManager) { | ||||
|         synchronized (this.mPendingOperations) { | ||||
|             CancellationSignal cancellationSignal = new CancellationSignal(); | ||||
|             Operation findPendingOperation = findPendingOperation(fragmentStateManager.getFragment()); | ||||
|             if (findPendingOperation != null) { | ||||
|                 findPendingOperation.mergeWith(state, lifecycleImpact); | ||||
|                 return; | ||||
|             } | ||||
|             final FragmentStateManagerOperation fragmentStateManagerOperation = new FragmentStateManagerOperation(state, lifecycleImpact, fragmentStateManager, cancellationSignal); | ||||
|             this.mPendingOperations.add(fragmentStateManagerOperation); | ||||
|             fragmentStateManagerOperation.addCompletionListener(new Runnable() { // from class: androidx.fragment.app.SpecialEffectsController.1 | ||||
|                 @Override // java.lang.Runnable | ||||
|                 public void run() { | ||||
|                     if (SpecialEffectsController.this.mPendingOperations.contains(fragmentStateManagerOperation)) { | ||||
|                         fragmentStateManagerOperation.getFinalState().applyState(fragmentStateManagerOperation.getFragment().mView); | ||||
|                     } | ||||
|                 } | ||||
|             }); | ||||
|             fragmentStateManagerOperation.addCompletionListener(new Runnable() { // from class: androidx.fragment.app.SpecialEffectsController.2 | ||||
|                 @Override // java.lang.Runnable | ||||
|                 public void run() { | ||||
|                     SpecialEffectsController.this.mPendingOperations.remove(fragmentStateManagerOperation); | ||||
|                     SpecialEffectsController.this.mRunningOperations.remove(fragmentStateManagerOperation); | ||||
|                 } | ||||
|             }); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     void markPostponedState() { | ||||
|         synchronized (this.mPendingOperations) { | ||||
|             updateFinalState(); | ||||
|             this.mIsContainerPostponed = false; | ||||
|             int size = this.mPendingOperations.size() - 1; | ||||
|             while (true) { | ||||
|                 if (size < 0) { | ||||
|                     break; | ||||
|                 } | ||||
|                 Operation operation = this.mPendingOperations.get(size); | ||||
|                 Operation.State from = Operation.State.from(operation.getFragment().mView); | ||||
|                 if (operation.getFinalState() == Operation.State.VISIBLE && from != Operation.State.VISIBLE) { | ||||
|                     this.mIsContainerPostponed = operation.getFragment().isPostponed(); | ||||
|                     break; | ||||
|                 } | ||||
|                 size--; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     void forcePostponedExecutePendingOperations() { | ||||
|         if (this.mIsContainerPostponed) { | ||||
|             this.mIsContainerPostponed = false; | ||||
|             executePendingOperations(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     void executePendingOperations() { | ||||
|         if (this.mIsContainerPostponed) { | ||||
|             return; | ||||
|         } | ||||
|         if (!ViewCompat.isAttachedToWindow(this.mContainer)) { | ||||
|             forceCompleteAllOperations(); | ||||
|             this.mOperationDirectionIsPop = false; | ||||
|             return; | ||||
|         } | ||||
|         synchronized (this.mPendingOperations) { | ||||
|             if (!this.mPendingOperations.isEmpty()) { | ||||
|                 ArrayList arrayList = new ArrayList(this.mRunningOperations); | ||||
|                 this.mRunningOperations.clear(); | ||||
|                 Iterator it = arrayList.iterator(); | ||||
|                 while (it.hasNext()) { | ||||
|                     Operation operation = (Operation) it.next(); | ||||
|                     if (FragmentManager.isLoggingEnabled(2)) { | ||||
|                         Log.v("FragmentManager", "SpecialEffectsController: Cancelling operation " + operation); | ||||
|                     } | ||||
|                     operation.cancel(); | ||||
|                     if (!operation.isComplete()) { | ||||
|                         this.mRunningOperations.add(operation); | ||||
|                     } | ||||
|                 } | ||||
|                 updateFinalState(); | ||||
|                 ArrayList arrayList2 = new ArrayList(this.mPendingOperations); | ||||
|                 this.mPendingOperations.clear(); | ||||
|                 this.mRunningOperations.addAll(arrayList2); | ||||
|                 Iterator it2 = arrayList2.iterator(); | ||||
|                 while (it2.hasNext()) { | ||||
|                     ((Operation) it2.next()).onStart(); | ||||
|                 } | ||||
|                 executeOperations(arrayList2, this.mOperationDirectionIsPop); | ||||
|                 this.mOperationDirectionIsPop = false; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     void forceCompleteAllOperations() { | ||||
|         String str; | ||||
|         String str2; | ||||
|         boolean isAttachedToWindow = ViewCompat.isAttachedToWindow(this.mContainer); | ||||
|         synchronized (this.mPendingOperations) { | ||||
|             updateFinalState(); | ||||
|             Iterator<Operation> it = this.mPendingOperations.iterator(); | ||||
|             while (it.hasNext()) { | ||||
|                 it.next().onStart(); | ||||
|             } | ||||
|             Iterator it2 = new ArrayList(this.mRunningOperations).iterator(); | ||||
|             while (it2.hasNext()) { | ||||
|                 Operation operation = (Operation) it2.next(); | ||||
|                 if (FragmentManager.isLoggingEnabled(2)) { | ||||
|                     StringBuilder sb = new StringBuilder(); | ||||
|                     sb.append("SpecialEffectsController: "); | ||||
|                     if (isAttachedToWindow) { | ||||
|                         str2 = ""; | ||||
|                     } else { | ||||
|                         str2 = "Container " + this.mContainer + " is not attached to window. "; | ||||
|                     } | ||||
|                     sb.append(str2); | ||||
|                     sb.append("Cancelling running operation "); | ||||
|                     sb.append(operation); | ||||
|                     Log.v("FragmentManager", sb.toString()); | ||||
|                 } | ||||
|                 operation.cancel(); | ||||
|             } | ||||
|             Iterator it3 = new ArrayList(this.mPendingOperations).iterator(); | ||||
|             while (it3.hasNext()) { | ||||
|                 Operation operation2 = (Operation) it3.next(); | ||||
|                 if (FragmentManager.isLoggingEnabled(2)) { | ||||
|                     StringBuilder sb2 = new StringBuilder(); | ||||
|                     sb2.append("SpecialEffectsController: "); | ||||
|                     if (isAttachedToWindow) { | ||||
|                         str = ""; | ||||
|                     } else { | ||||
|                         str = "Container " + this.mContainer + " is not attached to window. "; | ||||
|                     } | ||||
|                     sb2.append(str); | ||||
|                     sb2.append("Cancelling pending operation "); | ||||
|                     sb2.append(operation2); | ||||
|                     Log.v("FragmentManager", sb2.toString()); | ||||
|                 } | ||||
|                 operation2.cancel(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private void updateFinalState() { | ||||
|         Iterator<Operation> it = this.mPendingOperations.iterator(); | ||||
|         while (it.hasNext()) { | ||||
|             Operation next = it.next(); | ||||
|             if (next.getLifecycleImpact() == Operation.LifecycleImpact.ADDING) { | ||||
|                 next.mergeWith(Operation.State.from(next.getFragment().requireView().getVisibility()), Operation.LifecycleImpact.NONE); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     static class Operation { | ||||
|         private State mFinalState; | ||||
|         private final Fragment mFragment; | ||||
|         private LifecycleImpact mLifecycleImpact; | ||||
|         private final List<Runnable> mCompletionListeners = new ArrayList(); | ||||
|         private final HashSet<CancellationSignal> mSpecialEffectsSignals = new HashSet<>(); | ||||
|         private boolean mIsCanceled = false; | ||||
|         private boolean mIsComplete = false; | ||||
|  | ||||
|         enum LifecycleImpact { | ||||
|             NONE, | ||||
|             ADDING, | ||||
|             REMOVING | ||||
|         } | ||||
|  | ||||
|         public State getFinalState() { | ||||
|             return this.mFinalState; | ||||
|         } | ||||
|  | ||||
|         public final Fragment getFragment() { | ||||
|             return this.mFragment; | ||||
|         } | ||||
|  | ||||
|         LifecycleImpact getLifecycleImpact() { | ||||
|             return this.mLifecycleImpact; | ||||
|         } | ||||
|  | ||||
|         final boolean isCanceled() { | ||||
|             return this.mIsCanceled; | ||||
|         } | ||||
|  | ||||
|         final boolean isComplete() { | ||||
|             return this.mIsComplete; | ||||
|         } | ||||
|  | ||||
|         void onStart() { | ||||
|         } | ||||
|  | ||||
|         enum State { | ||||
|             REMOVED, | ||||
|             VISIBLE, | ||||
|             GONE, | ||||
|             INVISIBLE; | ||||
|  | ||||
|             static State from(View view) { | ||||
|                 return (view.getAlpha() == 0.0f && view.getVisibility() == 0) ? INVISIBLE : from(view.getVisibility()); | ||||
|             } | ||||
|  | ||||
|             static State from(int i) { | ||||
|                 if (i == 0) { | ||||
|                     return VISIBLE; | ||||
|                 } | ||||
|                 if (i == 4) { | ||||
|                     return INVISIBLE; | ||||
|                 } | ||||
|                 if (i == 8) { | ||||
|                     return GONE; | ||||
|                 } | ||||
|                 throw new IllegalArgumentException("Unknown visibility " + i); | ||||
|             } | ||||
|  | ||||
|             void applyState(View view) { | ||||
|                 int i = AnonymousClass3.$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State[ordinal()]; | ||||
|                 if (i == 1) { | ||||
|                     ViewGroup viewGroup = (ViewGroup) view.getParent(); | ||||
|                     if (viewGroup != null) { | ||||
|                         if (FragmentManager.isLoggingEnabled(2)) { | ||||
|                             Log.v("FragmentManager", "SpecialEffectsController: Removing view " + view + " from container " + viewGroup); | ||||
|                         } | ||||
|                         viewGroup.removeView(view); | ||||
|                         return; | ||||
|                     } | ||||
|                     return; | ||||
|                 } | ||||
|                 if (i == 2) { | ||||
|                     if (FragmentManager.isLoggingEnabled(2)) { | ||||
|                         Log.v("FragmentManager", "SpecialEffectsController: Setting view " + view + " to VISIBLE"); | ||||
|                     } | ||||
|                     view.setVisibility(0); | ||||
|                     return; | ||||
|                 } | ||||
|                 if (i == 3) { | ||||
|                     if (FragmentManager.isLoggingEnabled(2)) { | ||||
|                         Log.v("FragmentManager", "SpecialEffectsController: Setting view " + view + " to GONE"); | ||||
|                     } | ||||
|                     view.setVisibility(8); | ||||
|                     return; | ||||
|                 } | ||||
|                 if (i != 4) { | ||||
|                     return; | ||||
|                 } | ||||
|                 if (FragmentManager.isLoggingEnabled(2)) { | ||||
|                     Log.v("FragmentManager", "SpecialEffectsController: Setting view " + view + " to INVISIBLE"); | ||||
|                 } | ||||
|                 view.setVisibility(4); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         Operation(State state, LifecycleImpact lifecycleImpact, Fragment fragment, CancellationSignal cancellationSignal) { | ||||
|             this.mFinalState = state; | ||||
|             this.mLifecycleImpact = lifecycleImpact; | ||||
|             this.mFragment = fragment; | ||||
|             cancellationSignal.setOnCancelListener(new CancellationSignal.OnCancelListener() { // from class: androidx.fragment.app.SpecialEffectsController.Operation.1 | ||||
|                 @Override // androidx.core.os.CancellationSignal.OnCancelListener | ||||
|                 public void onCancel() { | ||||
|                     Operation.this.cancel(); | ||||
|                 } | ||||
|             }); | ||||
|         } | ||||
|  | ||||
|         public String toString() { | ||||
|             return "Operation {" + Integer.toHexString(System.identityHashCode(this)) + "} {mFinalState = " + this.mFinalState + "} {mLifecycleImpact = " + this.mLifecycleImpact + "} {mFragment = " + this.mFragment + "}"; | ||||
|         } | ||||
|  | ||||
|         final void cancel() { | ||||
|             if (isCanceled()) { | ||||
|                 return; | ||||
|             } | ||||
|             this.mIsCanceled = true; | ||||
|             if (this.mSpecialEffectsSignals.isEmpty()) { | ||||
|                 complete(); | ||||
|                 return; | ||||
|             } | ||||
|             Iterator it = new ArrayList(this.mSpecialEffectsSignals).iterator(); | ||||
|             while (it.hasNext()) { | ||||
|                 ((CancellationSignal) it.next()).cancel(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         final void mergeWith(State state, LifecycleImpact lifecycleImpact) { | ||||
|             int i = AnonymousClass3.$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$LifecycleImpact[lifecycleImpact.ordinal()]; | ||||
|             if (i == 1) { | ||||
|                 if (this.mFinalState == State.REMOVED) { | ||||
|                     if (FragmentManager.isLoggingEnabled(2)) { | ||||
|                         Log.v("FragmentManager", "SpecialEffectsController: For fragment " + this.mFragment + " mFinalState = REMOVED -> VISIBLE. mLifecycleImpact = " + this.mLifecycleImpact + " to ADDING."); | ||||
|                     } | ||||
|                     this.mFinalState = State.VISIBLE; | ||||
|                     this.mLifecycleImpact = LifecycleImpact.ADDING; | ||||
|                     return; | ||||
|                 } | ||||
|                 return; | ||||
|             } | ||||
|             if (i == 2) { | ||||
|                 if (FragmentManager.isLoggingEnabled(2)) { | ||||
|                     Log.v("FragmentManager", "SpecialEffectsController: For fragment " + this.mFragment + " mFinalState = " + this.mFinalState + " -> REMOVED. mLifecycleImpact  = " + this.mLifecycleImpact + " to REMOVING."); | ||||
|                 } | ||||
|                 this.mFinalState = State.REMOVED; | ||||
|                 this.mLifecycleImpact = LifecycleImpact.REMOVING; | ||||
|                 return; | ||||
|             } | ||||
|             if (i == 3 && this.mFinalState != State.REMOVED) { | ||||
|                 if (FragmentManager.isLoggingEnabled(2)) { | ||||
|                     Log.v("FragmentManager", "SpecialEffectsController: For fragment " + this.mFragment + " mFinalState = " + this.mFinalState + " -> " + state + ". "); | ||||
|                 } | ||||
|                 this.mFinalState = state; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         final void addCompletionListener(Runnable runnable) { | ||||
|             this.mCompletionListeners.add(runnable); | ||||
|         } | ||||
|  | ||||
|         public final void markStartedSpecialEffect(CancellationSignal cancellationSignal) { | ||||
|             onStart(); | ||||
|             this.mSpecialEffectsSignals.add(cancellationSignal); | ||||
|         } | ||||
|  | ||||
|         public final void completeSpecialEffect(CancellationSignal cancellationSignal) { | ||||
|             if (this.mSpecialEffectsSignals.remove(cancellationSignal) && this.mSpecialEffectsSignals.isEmpty()) { | ||||
|                 complete(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public void complete() { | ||||
|             if (this.mIsComplete) { | ||||
|                 return; | ||||
|             } | ||||
|             if (FragmentManager.isLoggingEnabled(2)) { | ||||
|                 Log.v("FragmentManager", "SpecialEffectsController: " + this + " has called complete."); | ||||
|             } | ||||
|             this.mIsComplete = true; | ||||
|             Iterator<Runnable> it = this.mCompletionListeners.iterator(); | ||||
|             while (it.hasNext()) { | ||||
|                 it.next().run(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /* renamed from: androidx.fragment.app.SpecialEffectsController$3, reason: invalid class name */ | ||||
|     static /* synthetic */ class AnonymousClass3 { | ||||
|         static final /* synthetic */ int[] $SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$LifecycleImpact; | ||||
|         static final /* synthetic */ int[] $SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State; | ||||
|  | ||||
|         static { | ||||
|             int[] iArr = new int[Operation.LifecycleImpact.values().length]; | ||||
|             $SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$LifecycleImpact = iArr; | ||||
|             try { | ||||
|                 iArr[Operation.LifecycleImpact.ADDING.ordinal()] = 1; | ||||
|             } catch (NoSuchFieldError unused) { | ||||
|             } | ||||
|             try { | ||||
|                 $SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$LifecycleImpact[Operation.LifecycleImpact.REMOVING.ordinal()] = 2; | ||||
|             } catch (NoSuchFieldError unused2) { | ||||
|             } | ||||
|             try { | ||||
|                 $SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$LifecycleImpact[Operation.LifecycleImpact.NONE.ordinal()] = 3; | ||||
|             } catch (NoSuchFieldError unused3) { | ||||
|             } | ||||
|             int[] iArr2 = new int[Operation.State.values().length]; | ||||
|             $SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State = iArr2; | ||||
|             try { | ||||
|                 iArr2[Operation.State.REMOVED.ordinal()] = 1; | ||||
|             } catch (NoSuchFieldError unused4) { | ||||
|             } | ||||
|             try { | ||||
|                 $SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State[Operation.State.VISIBLE.ordinal()] = 2; | ||||
|             } catch (NoSuchFieldError unused5) { | ||||
|             } | ||||
|             try { | ||||
|                 $SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State[Operation.State.GONE.ordinal()] = 3; | ||||
|             } catch (NoSuchFieldError unused6) { | ||||
|             } | ||||
|             try { | ||||
|                 $SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State[Operation.State.INVISIBLE.ordinal()] = 4; | ||||
|             } catch (NoSuchFieldError unused7) { | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private static class FragmentStateManagerOperation extends Operation { | ||||
|         private final FragmentStateManager mFragmentStateManager; | ||||
|  | ||||
|         FragmentStateManagerOperation(Operation.State state, Operation.LifecycleImpact lifecycleImpact, FragmentStateManager fragmentStateManager, CancellationSignal cancellationSignal) { | ||||
|             super(state, lifecycleImpact, fragmentStateManager.getFragment(), cancellationSignal); | ||||
|             this.mFragmentStateManager = fragmentStateManager; | ||||
|         } | ||||
|  | ||||
|         @Override // androidx.fragment.app.SpecialEffectsController.Operation | ||||
|         void onStart() { | ||||
|             if (getLifecycleImpact() == Operation.LifecycleImpact.ADDING) { | ||||
|                 Fragment fragment = this.mFragmentStateManager.getFragment(); | ||||
|                 View findFocus = fragment.mView.findFocus(); | ||||
|                 if (findFocus != null) { | ||||
|                     fragment.setFocusedView(findFocus); | ||||
|                     if (FragmentManager.isLoggingEnabled(2)) { | ||||
|                         Log.v("FragmentManager", "requestFocus: Saved focused view " + findFocus + " for Fragment " + fragment); | ||||
|                     } | ||||
|                 } | ||||
|                 View requireView = getFragment().requireView(); | ||||
|                 if (requireView.getParent() == null) { | ||||
|                     this.mFragmentStateManager.addViewToContainer(); | ||||
|                     requireView.setAlpha(0.0f); | ||||
|                 } | ||||
|                 if (requireView.getAlpha() == 0.0f && requireView.getVisibility() == 0) { | ||||
|                     requireView.setVisibility(4); | ||||
|                 } | ||||
|                 requireView.setAlpha(fragment.getPostOnViewCreatedAlpha()); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         @Override // androidx.fragment.app.SpecialEffectsController.Operation | ||||
|         public void complete() { | ||||
|             super.complete(); | ||||
|             this.mFragmentStateManager.moveToExpectedState(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user