Rabbit-R1/switch port/java/sources/androidx/fragment/app/FragmentStore.java
2024-05-21 17:08:36 -04:00

371 lines
14 KiB
Java

package androidx.fragment.app;
import android.os.Bundle;
import android.util.Log;
import android.view.ViewGroup;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes2.dex */
public class FragmentStore {
private static final String TAG = "FragmentManager";
private FragmentManagerViewModel mNonConfig;
private final ArrayList<Fragment> mAdded = new ArrayList<>();
private final HashMap<String, FragmentStateManager> mActive = new HashMap<>();
private final HashMap<String, Bundle> mSavedState = new HashMap<>();
/* JADX INFO: Access modifiers changed from: package-private */
public HashMap<String, Bundle> getAllSavedState() {
return this.mSavedState;
}
/* JADX INFO: Access modifiers changed from: package-private */
public FragmentManagerViewModel getNonConfig() {
return this.mNonConfig;
}
/* JADX INFO: Access modifiers changed from: package-private */
public void setNonConfig(FragmentManagerViewModel fragmentManagerViewModel) {
this.mNonConfig = fragmentManagerViewModel;
}
/* JADX INFO: Access modifiers changed from: package-private */
public void resetActiveFragments() {
this.mActive.clear();
}
/* JADX INFO: Access modifiers changed from: package-private */
public void restoreAddedFragments(List<String> list) {
this.mAdded.clear();
if (list != null) {
for (String str : list) {
Fragment findActiveFragment = findActiveFragment(str);
if (findActiveFragment == null) {
throw new IllegalStateException("No instantiated fragment for (" + str + ")");
}
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "restoreSaveState: added (" + str + "): " + findActiveFragment);
}
addFragment(findActiveFragment);
}
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void makeActive(FragmentStateManager fragmentStateManager) {
Fragment fragment = fragmentStateManager.getFragment();
if (containsActiveFragment(fragment.mWho)) {
return;
}
this.mActive.put(fragment.mWho, fragmentStateManager);
if (fragment.mRetainInstanceChangedWhileDetached) {
if (fragment.mRetainInstance) {
this.mNonConfig.addRetainedFragment(fragment);
} else {
this.mNonConfig.removeRetainedFragment(fragment);
}
fragment.mRetainInstanceChangedWhileDetached = false;
}
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "Added fragment to active set " + fragment);
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void addFragment(Fragment fragment) {
if (this.mAdded.contains(fragment)) {
throw new IllegalStateException("Fragment already added: " + fragment);
}
synchronized (this.mAdded) {
this.mAdded.add(fragment);
}
fragment.mAdded = true;
}
/* JADX INFO: Access modifiers changed from: package-private */
public void dispatchStateChange(int i) {
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
if (fragmentStateManager != null) {
fragmentStateManager.setFragmentManagerState(i);
}
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void moveToExpectedState() {
Iterator<Fragment> it = this.mAdded.iterator();
while (it.hasNext()) {
FragmentStateManager fragmentStateManager = this.mActive.get(it.next().mWho);
if (fragmentStateManager != null) {
fragmentStateManager.moveToExpectedState();
}
}
for (FragmentStateManager fragmentStateManager2 : this.mActive.values()) {
if (fragmentStateManager2 != null) {
fragmentStateManager2.moveToExpectedState();
Fragment fragment = fragmentStateManager2.getFragment();
if (fragment.mRemoving && !fragment.isInBackStack()) {
if (fragment.mBeingSaved && !this.mSavedState.containsKey(fragment.mWho)) {
setSavedState(fragment.mWho, fragmentStateManager2.saveState());
}
makeInactive(fragmentStateManager2);
}
}
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void removeFragment(Fragment fragment) {
synchronized (this.mAdded) {
this.mAdded.remove(fragment);
}
fragment.mAdded = false;
}
/* JADX INFO: Access modifiers changed from: package-private */
public void makeInactive(FragmentStateManager fragmentStateManager) {
Fragment fragment = fragmentStateManager.getFragment();
if (fragment.mRetainInstance) {
this.mNonConfig.removeRetainedFragment(fragment);
}
if (this.mActive.get(fragment.mWho) == fragmentStateManager && this.mActive.put(fragment.mWho, null) != null && FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "Removed fragment from active set " + fragment);
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void burpActive() {
this.mActive.values().removeAll(Collections.singleton(null));
}
/* JADX INFO: Access modifiers changed from: package-private */
public Bundle getSavedState(String str) {
return this.mSavedState.get(str);
}
/* JADX INFO: Access modifiers changed from: package-private */
public Bundle setSavedState(String str, Bundle bundle) {
if (bundle != null) {
return this.mSavedState.put(str, bundle);
}
return this.mSavedState.remove(str);
}
/* JADX INFO: Access modifiers changed from: package-private */
public void restoreSaveState(HashMap<String, Bundle> hashMap) {
this.mSavedState.clear();
this.mSavedState.putAll(hashMap);
}
/* JADX INFO: Access modifiers changed from: package-private */
public ArrayList<String> saveActiveFragments() {
ArrayList<String> arrayList = new ArrayList<>(this.mActive.size());
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
if (fragmentStateManager != null) {
Fragment fragment = fragmentStateManager.getFragment();
setSavedState(fragment.mWho, fragmentStateManager.saveState());
arrayList.add(fragment.mWho);
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "Saved state of " + fragment + ": " + fragment.mSavedFragmentState);
}
}
}
return arrayList;
}
/* JADX INFO: Access modifiers changed from: package-private */
public ArrayList<String> saveAddedFragments() {
synchronized (this.mAdded) {
if (this.mAdded.isEmpty()) {
return null;
}
ArrayList<String> arrayList = new ArrayList<>(this.mAdded.size());
Iterator<Fragment> it = this.mAdded.iterator();
while (it.hasNext()) {
Fragment next = it.next();
arrayList.add(next.mWho);
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "saveAllState: adding fragment (" + next.mWho + "): " + next);
}
}
return arrayList;
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public List<FragmentStateManager> getActiveFragmentStateManagers() {
ArrayList arrayList = new ArrayList();
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
if (fragmentStateManager != null) {
arrayList.add(fragmentStateManager);
}
}
return arrayList;
}
/* JADX INFO: Access modifiers changed from: package-private */
public List<Fragment> getFragments() {
ArrayList arrayList;
if (this.mAdded.isEmpty()) {
return Collections.emptyList();
}
synchronized (this.mAdded) {
arrayList = new ArrayList(this.mAdded);
}
return arrayList;
}
/* JADX INFO: Access modifiers changed from: package-private */
public List<Fragment> getActiveFragments() {
ArrayList arrayList = new ArrayList();
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
if (fragmentStateManager != null) {
arrayList.add(fragmentStateManager.getFragment());
} else {
arrayList.add(null);
}
}
return arrayList;
}
/* JADX INFO: Access modifiers changed from: package-private */
public int getActiveFragmentCount() {
return this.mActive.size();
}
/* JADX INFO: Access modifiers changed from: package-private */
public Fragment findFragmentById(int i) {
for (int size = this.mAdded.size() - 1; size >= 0; size--) {
Fragment fragment = this.mAdded.get(size);
if (fragment != null && fragment.mFragmentId == i) {
return fragment;
}
}
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
if (fragmentStateManager != null) {
Fragment fragment2 = fragmentStateManager.getFragment();
if (fragment2.mFragmentId == i) {
return fragment2;
}
}
}
return null;
}
/* JADX INFO: Access modifiers changed from: package-private */
public Fragment findFragmentByTag(String str) {
if (str != null) {
for (int size = this.mAdded.size() - 1; size >= 0; size--) {
Fragment fragment = this.mAdded.get(size);
if (fragment != null && str.equals(fragment.mTag)) {
return fragment;
}
}
}
if (str == null) {
return null;
}
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
if (fragmentStateManager != null) {
Fragment fragment2 = fragmentStateManager.getFragment();
if (str.equals(fragment2.mTag)) {
return fragment2;
}
}
}
return null;
}
/* JADX INFO: Access modifiers changed from: package-private */
public boolean containsActiveFragment(String str) {
return this.mActive.get(str) != null;
}
/* JADX INFO: Access modifiers changed from: package-private */
public FragmentStateManager getFragmentStateManager(String str) {
return this.mActive.get(str);
}
/* JADX INFO: Access modifiers changed from: package-private */
public Fragment findFragmentByWho(String str) {
Fragment findFragmentByWho;
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
if (fragmentStateManager != null && (findFragmentByWho = fragmentStateManager.getFragment().findFragmentByWho(str)) != null) {
return findFragmentByWho;
}
}
return null;
}
/* JADX INFO: Access modifiers changed from: package-private */
public Fragment findActiveFragment(String str) {
FragmentStateManager fragmentStateManager = this.mActive.get(str);
if (fragmentStateManager != null) {
return fragmentStateManager.getFragment();
}
return null;
}
/* JADX INFO: Access modifiers changed from: package-private */
public int findFragmentIndexInContainer(Fragment fragment) {
ViewGroup viewGroup = fragment.mContainer;
if (viewGroup == null) {
return -1;
}
int indexOf = this.mAdded.indexOf(fragment);
for (int i = indexOf - 1; i >= 0; i--) {
Fragment fragment2 = this.mAdded.get(i);
if (fragment2.mContainer == viewGroup && fragment2.mView != null) {
return viewGroup.indexOfChild(fragment2.mView) + 1;
}
}
while (true) {
indexOf++;
if (indexOf >= this.mAdded.size()) {
return -1;
}
Fragment fragment3 = this.mAdded.get(indexOf);
if (fragment3.mContainer == viewGroup && fragment3.mView != null) {
return viewGroup.indexOfChild(fragment3.mView);
}
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public void dump(String str, FileDescriptor fileDescriptor, PrintWriter printWriter, String[] strArr) {
String str2 = str + " ";
if (!this.mActive.isEmpty()) {
printWriter.print(str);
printWriter.println("Active Fragments:");
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
printWriter.print(str);
if (fragmentStateManager != null) {
Fragment fragment = fragmentStateManager.getFragment();
printWriter.println(fragment);
fragment.dump(str2, fileDescriptor, printWriter, strArr);
} else {
printWriter.println("null");
}
}
}
int size = this.mAdded.size();
if (size > 0) {
printWriter.print(str);
printWriter.println("Added Fragments:");
for (int i = 0; i < size; i++) {
Fragment fragment2 = this.mAdded.get(i);
printWriter.print(str);
printWriter.print(" #");
printWriter.print(i);
printWriter.print(": ");
printWriter.println(fragment2.toString());
}
}
}
}