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

Commit 5c088971 authored by Presubmit Automerger Backend's avatar Presubmit Automerger Backend
Browse files

[automerge] fix: redirect to root to block access 2p: 901f1d60

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/DocumentsUI/+/16425947

Bug: 200034476
Change-Id: Ic50f21d0093e6f01946026d2a5b22e692720c8b1
parents 21066ec1 901f1d60
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -62,9 +62,12 @@ import com.android.documentsui.queries.SearchViewManager;
import com.android.documentsui.roots.ProvidersAccess;
import com.android.documentsui.services.FileOperationService;

import com.android.documentsui.util.VersionUtils;
import java.util.Arrays;
import java.util.Locale;
import java.util.concurrent.Executor;

import java.util.regex.Pattern;
import javax.annotation.Nullable;

/**
@@ -78,6 +81,8 @@ class ActionHandler<T extends FragmentActivity & Addons> extends AbstractActionH
    private final ActivityConfig mConfig;
    private final LastAccessedStorage mLastAccessed;
    private final UserIdManager mUserIdManager;
    private final static Pattern PATTERN_BLOCK_PATH = Pattern.compile(
        ".*:android\\/(?:data|obb|sandbox)$");

    private UpdatePickResultTask mUpdatePickResultTask;

@@ -157,6 +162,14 @@ class ActionHandler<T extends FragmentActivity & Addons> extends AbstractActionH
    private boolean launchToInitialUri(Intent intent) {
        Uri uri = intent.getParcelableExtra(DocumentsContract.EXTRA_INITIAL_URI);
        if (uri != null) {
            // In android S and above if path contains Android/data, Android/obb
            // or Android/sandbox redirect to the root for which
            // FLAG_DIR_BLOCKS_OPEN_DOCUMENT_TREE is already set
            if(Shared.shouldRestrictStorageAccessFramework(mActivity)
                && (PATTERN_BLOCK_PATH.matcher(uri.getPath().toLowerCase(Locale.ROOT)).matches())){
                loadDeviceRoot();
                return true;
            }
            if (DocumentsContract.isRootUri(mActivity, uri)) {
                loadRoot(uri, UserId.DEFAULT_USER);
                return true;