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

Commit 9ee0ffbe authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "resolve merge conflicts of 1686883a to master"

parents b4b8cd20 aee869cf
Loading
Loading
Loading
Loading
+0 −13
Original line number Diff line number Diff line
@@ -79,19 +79,6 @@
                <action android:name="android.intent.action.VIEW_DOWNLOADS" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="application/zip"
                    android:host="com.android.providers.downloads.documents"
                    android:scheme="content" />
                <data android:mimeType="application/x-zip"
                    android:host="com.android.providers.downloads.documents"
                    android:scheme="content" />
                <data android:mimeType="application/x-zip-compressed"
                    android:host="com.android.providers.downloads.documents"
                    android:scheme="content" />
            </intent-filter>
        </activity>

        <activity
+69 −6
Original line number Diff line number Diff line
@@ -22,9 +22,12 @@ import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Parcelable;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
import android.util.Log;

import com.android.documentsui.AbstractActionHandler.CommonAddons;
import com.android.documentsui.LoadDocStackTask.LoadDocStackCallback;
import com.android.documentsui.base.BooleanConsumer;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.DocumentStack;
@@ -36,7 +39,6 @@ import com.android.documentsui.dirlist.AnimationView;
import com.android.documentsui.dirlist.AnimationView.AnimationType;
import com.android.documentsui.dirlist.DocumentDetails;
import com.android.documentsui.files.LauncherActivity;
import com.android.documentsui.files.OpenUriForViewTask;
import com.android.documentsui.roots.LoadRootTask;
import com.android.documentsui.roots.RootsAccess;
import com.android.documentsui.selection.Selection;
@@ -44,6 +46,7 @@ import com.android.documentsui.selection.SelectionManager;
import com.android.documentsui.sidebar.EjectRootTask;

import java.util.List;
import java.util.Objects;
import java.util.concurrent.Executor;

/**
@@ -52,10 +55,13 @@ import java.util.concurrent.Executor;
public abstract class AbstractActionHandler<T extends Activity & CommonAddons>
        implements ActionHandler {

    private static final String TAG = "AbstractActionHandler";

    protected final T mActivity;
    protected final State mState;
    protected final RootsAccess mRoots;
    protected final DocumentsAccess mDocs;
    protected final ProviderAccess mProviders;
    protected final SelectionManager mSelectionMgr;
    protected final SearchViewManager mSearchMgr;
    protected final Lookup<String, Executor> mExecutors;
@@ -65,6 +71,7 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons>
            State state,
            RootsAccess roots,
            DocumentsAccess docs,
            ProviderAccess providers,
            SelectionManager selectionMgr,
            SearchViewManager searchMgr,
            Lookup<String, Executor> executors) {
@@ -72,13 +79,16 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons>
        assert(activity != null);
        assert(state != null);
        assert(roots != null);
        assert(providers != null);
        assert(selectionMgr != null);
        assert(searchMgr != null);
        assert(docs != null);

        mActivity = activity;
        mState = state;
        mRoots = roots;
        mDocs = docs;
        mProviders = providers;
        mSelectionMgr = selectionMgr;
        mSearchMgr = searchMgr;
        mExecutors = executors;
@@ -158,6 +168,50 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons>
    @Override
    public void openContainerDocument(DocumentInfo doc) {
        assert(doc.isContainer());

        if (mSearchMgr.isSearching()) {
            loadDocument(
                    doc.derivedUri,
                    (@Nullable DocumentStack stack) -> openFolderInSearchResult(stack, doc));
        } else {
            openChildContainer(doc);
        }
    }

    private void openFolderInSearchResult(@Nullable DocumentStack stack, DocumentInfo doc) {
        if (stack == null) {
            mState.popDocumentsToRoot();

            // Update navigator to give horizontal breadcrumb a chance to update documents. It
            // doesn't update its content if the size of document stack doesn't change.
            // TODO: update breadcrumb to take range update.
            mActivity.updateNavigator();

            mState.pushDocument(doc);
        } else {
            if (!Objects.equals(mState.stack.root, stack.root)) {
                Log.w(TAG, "Provider returns " + stack.root + " rather than expected "
                        + mState.stack.root);
            }

            mState.stack.clear();
            // Update navigator to give horizontal breadcrumb a chance to update documents. It
            // doesn't update its content if the size of document stack doesn't change.
            // TODO: update breadcrumb to take range update.
            mActivity.updateNavigator();

            mState.setStack(stack);
        }

        // Show an opening animation only if pressing "back" would get us back to the
        // previous directory. Especially after opening a root document, pressing
        // back, wouldn't go to the previous root, but close the activity.
        final int anim = (mState.hasLocationChanged() && mState.stack.size() > 1)
                ? AnimationView.ANIM_ENTER : AnimationView.ANIM_NONE;
        mActivity.refreshCurrentRootAndDirectory(anim);
    }

    private void openChildContainer(DocumentInfo doc) {
        DocumentInfo currentDoc = null;

        if (doc.isDirectory()) {
@@ -169,7 +223,8 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons>
        }

        assert(currentDoc != null);
        mActivity.notifyDirectoryNavigated(doc.derivedUri);
        mActivity.notifyDirectoryNavigated(currentDoc.derivedUri);

        mState.pushDocument(currentDoc);
        // Show an opening animation only if pressing "back" would get us back to the
        // previous directory. Especially after opening a root document, pressing
@@ -189,10 +244,15 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons>
        throw new UnsupportedOperationException("Share not supported!");
    }

    @Override
    public final void loadDocument(Uri uri) {
        new OpenUriForViewTask<>(mActivity, mState, mRoots, mDocs, uri)
                .executeOnExecutor(mExecutors.lookup(uri.getAuthority()));
    protected final void loadDocument(Uri uri, LoadDocStackCallback callback) {
        new LoadDocStackTask(
                mActivity,
                uri,
                mRoots,
                mDocs,
                mProviders,
                callback
                ).executeOnExecutor(mExecutors.lookup(uri.getAuthority()));
    }

    @Override
@@ -223,6 +283,9 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons>
        DocumentInfo getCurrentDirectory();
        void setRootsDrawerOpen(boolean open);

        // TODO: Let navigator listens to State
        void updateNavigator();

        @VisibleForTesting
        void notifyDirectoryNavigated(Uri docUri);
    }
+0 −2
Original line number Diff line number Diff line
@@ -49,8 +49,6 @@ public interface ActionHandler {

    void loadRoot(Uri uri);

    void loadDocument(Uri uri);

    void openSelectedInNewWindow();

    void openInNewWindow(DocumentStack path);
+6 −0
Original line number Diff line number Diff line
@@ -415,6 +415,12 @@ public abstract class BaseActivity<T extends ActionHandler>
                && !root.isDownloads();
    }

    // TODO: make navigator listen to state
    @Override
    public final void updateNavigator() {
        mNavigator.update();
    }

    /**
     * Refreshes the content of the director and the menu/action bar.
     * The current directory name and selection will get updated.
+3 −2
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.util.Log;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.FilteringCursorWrapper;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.base.Shared;
import com.android.documentsui.roots.RootCursorWrapper;
import com.android.documentsui.sorting.SortModel;

@@ -101,8 +102,8 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> {

            cursor = new RootCursorWrapper(mUri.getAuthority(), mRoot.rootId, cursor, -1);

            if (mSearchMode) {
                // Filter directories out of search results, for now
            if (mSearchMode && !Shared.ENABLE_OMC_API_FEATURES) {
                // There is no findPath API. Enable filtering on folders in search mode.
                cursor = new FilteringCursorWrapper(cursor, null, SEARCH_REJECT_MIMES);
            }

Loading