Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cf120d44 authored by Jon Mann's avatar Jon Mann
Browse files

Fix crash on rotation or input change in RenameDocumentFragment.

Test: ran full test suite
Bug: 35153239
Change-Id: I0875a7abbb9369ee6b68338c2a59010353f3cdb8
parent 26698740
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -817,7 +817,11 @@ public class DirectoryFragment extends Fragment

        // Model must be accessed in UI thread, since underlying cursor is not threadsafe.
        List<DocumentInfo> docs = mModel.getDocuments(selected);
        RenameDocumentFragment.show(getFragmentManager(), docs.get(0), mModel::hasFileWithName);
        RenameDocumentFragment.show(getChildFragmentManager(), docs.get(0));
    }

    Model getModel(){
        return mModel;
    }

    private boolean isDocumentEnabled(String mimeType, int flags) {
+3 −7
Original line number Diff line number Diff line
@@ -52,8 +52,6 @@ import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.Shared;
import com.android.documentsui.ui.Snackbars;

import java.util.function.Predicate;

/**
 * Dialog to rename file or directory.
 */
@@ -62,14 +60,11 @@ public class RenameDocumentFragment extends DialogFragment {
    private DocumentInfo mDocument;
    private EditText mEditText;
    private TextInputLayout mRenameInputWrapper;
    private Predicate<String> mHasFileNamed;
    private @Nullable DialogInterface mDialog;

    public static void show(
            FragmentManager fm, DocumentInfo document, Predicate<String> hasFileNamed) {
    public static void show(FragmentManager fm, DocumentInfo document) {
        final RenameDocumentFragment dialog = new RenameDocumentFragment();
        dialog.mDocument = document;
        dialog.mHasFileNamed = hasFileNamed;
        dialog.show(fm, TAG_RENAME_DOCUMENT);
    }

@@ -192,12 +187,13 @@ public class RenameDocumentFragment extends DialogFragment {

    private void renameDocuments(String newDisplayName) {
        BaseActivity activity = (BaseActivity) getActivity();
        DirectoryFragment directory = (DirectoryFragment) getParentFragment();

        if (!isValidDocumentName(newDisplayName)) {
            Log.w(TAG, "Failed to rename file - invalid name:" + newDisplayName);
            Snackbars.makeSnackbar(getActivity(), R.string.rename_error,
                    Snackbar.LENGTH_SHORT).show();
        } else if (mHasFileNamed.test(newDisplayName)){
        } else if (directory.getModel().hasFileWithName(newDisplayName)){
            mRenameInputWrapper.setError(getContext().getString(R.string.name_conflict));
            selectFileName(mEditText);
            Metrics.logRenameFileError(getContext());