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

Commit aee869cf authored by Garfield Tan's avatar Garfield Tan
Browse files

resolve merge conflicts of 1686883a to master

Change-Id: I27cd31a6639ca2b0017aa257e6f5ef04ab0fe0b8
parents 3e584b03 1686883a
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