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

Commit e62906a3 authored by Tony Huang's avatar Tony Huang Committed by Android (Google) Code Review
Browse files

Merge "Remove grant flags before forward to other activity"

parents 24232b8c f79ea861
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -298,7 +298,12 @@ class ActionHandler<T extends FragmentActivity & Addons> extends AbstractActionH
        Metrics.logAppVisited(info);
        mInjector.pickResult.increaseActionCount();
        final Intent intent = new Intent(mActivity.getIntent());
        intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_FORWARD_RESULT);
        final int flagsRemoved = Intent.FLAG_ACTIVITY_FORWARD_RESULT
                | Intent.FLAG_GRANT_READ_URI_PERMISSION
                | Intent.FLAG_GRANT_WRITE_URI_PERMISSION
                | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
                | Intent.FLAG_GRANT_PREFIX_URI_PERMISSION;
        intent.setFlags(intent.getFlags() & ~flagsRemoved);
        intent.setComponent(new ComponentName(
                info.activityInfo.applicationInfo.packageName, info.activityInfo.name));
        try {
+20 −0
Original line number Diff line number Diff line
@@ -544,6 +544,26 @@ public class ActionHandlerTest {
        assertNotNull(mActivity.startActivityForResult.getLastValue().first);
    }

    @Test
    public void testOpenAppRoot_removeFlags() throws Exception {
        mActivity.intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT
                | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
                | Intent.FLAG_GRANT_PREFIX_URI_PERMISSION
                | Intent.FLAG_GRANT_WRITE_URI_PERMISSION
                | Intent.FLAG_GRANT_READ_URI_PERMISSION);
        mHandler.openRoot(TestResolveInfo.create());
        assertEquals((long) mActivity.startActivityForResult.getLastValue().second,
                AbstractActionHandler.CODE_FORWARD);
        assertNotNull(mActivity.startActivityForResult.getLastValue().first);

        int flags = mActivity.startActivityForResult.getLastValue().first.getFlags();
        assertEquals(0, flags & Intent.FLAG_ACTIVITY_FORWARD_RESULT);
        assertEquals(0, flags & Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
        assertEquals(0, flags & Intent.FLAG_GRANT_PREFIX_URI_PERMISSION);
        assertEquals(0, flags & Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        assertEquals(0, flags & Intent.FLAG_GRANT_READ_URI_PERMISSION);
    }

    @Test
    public void testOpenAppRootWithQueryContent_matchedContent() throws Exception {
        final String queryContent = "query";