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

Commit 97e21013 authored by Garfield Tan's avatar Garfield Tan Committed by Android (Google) Code Review
Browse files

Merge "Consolidate the initializaion of acceptMimes." into arc-apps

parents 13096a82 78ade2b9
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -106,7 +106,6 @@ public abstract class BaseActivity
        mTag = tag;
    }

    protected abstract void onTaskFinished(Uri... uris);
    protected abstract void refreshDirectory(int anim);
    /** Allows sub-classes to include information in a newly created State instance. */
    protected abstract void includeState(State initialState);
@@ -251,7 +250,6 @@ public abstract class BaseActivity

        state.sortModel = SortModel.createModel();
        state.localOnly = intent.getBooleanExtra(Intent.EXTRA_LOCAL_ONLY, false);
        state.initAcceptMimes(intent);
        state.excludedAuthorities = getExcludedAuthorities();

        includeState(state);
+2 −8
Original line number Diff line number Diff line
@@ -109,17 +109,11 @@ public class State implements android.os.Parcelable {
    /** Name of the package that started DocsUI */
    public List<String> excludedAuthorities = new ArrayList<>();

    public void initAcceptMimes(Intent intent) {
    public void initAcceptMimes(Intent intent, String defaultAcceptMimeType) {
        if (intent.hasExtra(Intent.EXTRA_MIME_TYPES)) {
            acceptMimes = intent.getStringArrayExtra(Intent.EXTRA_MIME_TYPES);
        } else {
            String glob = intent.getType();
            if (glob == null || DocumentsContract.Root.MIME_TYPE_ITEM.equals(glob)) {
                // this means we do not care for the mime type
                acceptMimes = new String[]{"*/*"};
            } else {
                acceptMimes = new String[]{glob};
            }
            acceptMimes = new String[] { defaultAcceptMimeType };
        }
    }

+4 −24
Original line number Diff line number Diff line
@@ -170,6 +170,10 @@ public class FilesActivity extends BaseActivity implements ActionHandler.Addons
    public void includeState(State state) {
        final Intent intent = getIntent();

        // This is a remnant of old logic where we used to initialize accept MIME types in
        // BaseActivity. RootsAccess still rely on this being correctly initialized so we still have
        // to initialize it in FilesActivity.
        state.initAcceptMimes(intent, "*/*");
        state.action = State.ACTION_BROWSE;
        state.allowMultiple = true;

@@ -333,30 +337,6 @@ public class FilesActivity extends BaseActivity implements ActionHandler.Addons
        }
    }

    @Override
    public void onTaskFinished(Uri... uris) {
        if (DEBUG) Log.d(TAG, "onFinished() " + Arrays.toString(uris));

        final Intent intent = new Intent();
        if (uris.length == 1) {
            intent.setData(uris[0]);
        } else if (uris.length > 1) {
            final ClipData clipData = new ClipData(
                    null, mState.acceptMimes, new ClipData.Item(uris[0]));
            for (int i = 1; i < uris.length; i++) {
                clipData.addItem(new ClipData.Item(uris[i]));
            }
            intent.setClipData(clipData);
        }

        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION
                | Intent.FLAG_GRANT_WRITE_URI_PERMISSION
                | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);

        setResult(Activity.RESULT_OK, intent);
        finish();
    }

    @Override
    public Injector<ActionHandler<FilesActivity>> getInjector() {
        return mInjector;
+5 −2
Original line number Diff line number Diff line
@@ -156,6 +156,10 @@ public class PickActivity extends BaseActivity implements ActionHandler.Addons {
    @Override
    protected void includeState(State state) {
        final Intent intent = getIntent();

        String defaultMimeType = (intent.getType() == null) ? "*/*" : intent.getType();
        state.initAcceptMimes(intent, defaultMimeType);

        final String action = intent.getAction();
        if (Intent.ACTION_OPEN_DOCUMENT.equals(action)) {
            state.action = ACTION_OPEN;
@@ -381,8 +385,7 @@ public class PickActivity extends BaseActivity implements ActionHandler.Addons {
                getContentResolver(), Shared.getCallingPackageName(this), mState.stack);
    }

    @Override
    protected void onTaskFinished(Uri... uris) {
    private void onTaskFinished(Uri... uris) {
        if (DEBUG) Log.d(TAG, "onFinished() " + Arrays.toString(uris));

        final Intent intent = new Intent();
+2 −11
Original line number Diff line number Diff line
@@ -42,27 +42,18 @@ public class StateTest {
        mState = new State();
    }

    @Test
    public void testAcceptAllMimeTypesByDefault() {
        mState.initAcceptMimes(mIntent);

        assertArrayEquals(new String[] { "*/*" }, mState.acceptMimes);
    }

    @Test
    public void testAcceptGivenMimeTypesInExtra() {
        mIntent.putExtra(Intent.EXTRA_MIME_TYPES, MIME_TYPES);

        mState.initAcceptMimes(mIntent);
        mState.initAcceptMimes(mIntent, "*/*");

        assertArrayEquals(MIME_TYPES, mState.acceptMimes);
    }

    @Test
    public void testAcceptIntentTypeWithoutExtra() {
        mIntent.setType(MIME_TYPES[0]);

        mState.initAcceptMimes(mIntent);
        mState.initAcceptMimes(mIntent, MIME_TYPES[0]);

        assertArrayEquals(new String[] { MIME_TYPES[0] }, mState.acceptMimes);
    }