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

Commit b624f91a authored by Ben Lin's avatar Ben Lin Committed by Android (Google) Code Review
Browse files

Merge "Proper refresh when Authentication finishes with Activity.RESULT_OK." into oc-dev

parents ffa81dc4 f2cd8342
Loading
Loading
Loading
Loading
+32 −0
Original line number Original line Diff line number Diff line
@@ -22,8 +22,10 @@ import static com.android.documentsui.base.Shared.DEBUG;


import android.app.Activity;
import android.app.Activity;
import android.app.LoaderManager.LoaderCallbacks;
import android.app.LoaderManager.LoaderCallbacks;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.IntentSender;
import android.content.Loader;
import android.content.Loader;
import android.content.pm.ResolveInfo;
import android.content.pm.ResolveInfo;
import android.database.Cursor;
import android.database.Cursor;
@@ -76,6 +78,10 @@ import javax.annotation.Nullable;
public abstract class AbstractActionHandler<T extends Activity & CommonAddons>
public abstract class AbstractActionHandler<T extends Activity & CommonAddons>
        implements ActionHandler {
        implements ActionHandler {


    @VisibleForTesting
    public static final int CODE_FORWARD = 42;
    public static final int CODE_AUTHENTICATION = 43;

    @VisibleForTesting
    @VisibleForTesting
    static final int LOADER_ID = 42;
    static final int LOADER_ID = 42;


@@ -147,6 +153,32 @@ public abstract class AbstractActionHandler<T extends Activity & CommonAddons>
                listener).executeOnExecutor(ProviderExecutor.forAuthority(root.authority));
                listener).executeOnExecutor(ProviderExecutor.forAuthority(root.authority));
    }
    }


    @Override
    public void startAuthentication(PendingIntent intent) {
        try {
            mActivity.startIntentSenderForResult(intent.getIntentSender(), CODE_AUTHENTICATION,
                    null, 0, 0, 0);
        } catch (IntentSender.SendIntentException cancelled) {
            Log.d(TAG, "Authentication Pending Intent either canceled or ignored.");
        }
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
            case CODE_AUTHENTICATION:
                onAuthenticationResult(resultCode);
                break;
        }
    }

    private void onAuthenticationResult(int resultCode) {
        if (resultCode == Activity.RESULT_OK) {
            Log.v(TAG, "Authentication was successful. Refreshing directory now.");
            mActivity.refreshCurrentRootAndDirectory(AnimationView.ANIM_NONE);
        }
    }

    @Override
    @Override
    public void getRootDocument(RootInfo root, int timeout, Consumer<DocumentInfo> callback) {
    public void getRootDocument(RootInfo root, int timeout, Consumer<DocumentInfo> callback) {
        GetRootDocumentTask task = new GetRootDocumentTask(
        GetRootDocumentTask task = new GetRootDocumentTask(
+10 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.documentsui;
package com.android.documentsui;


import android.annotation.IntDef;
import android.annotation.IntDef;
import android.app.PendingIntent;
import android.content.ContentProvider;
import android.content.ContentProvider;
import android.content.Intent;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.content.pm.ResolveInfo;
@@ -48,6 +49,8 @@ public interface ActionHandler {
    public static final int VIEW_TYPE_REGULAR = 1;
    public static final int VIEW_TYPE_REGULAR = 1;
    public static final int VIEW_TYPE_PREVIEW = 2;
    public static final int VIEW_TYPE_PREVIEW = 2;


    void onActivityResult(int requestCode, int resultCode, Intent data);

    void openSettings(RootInfo root);
    void openSettings(RootInfo root);


    /**
    /**
@@ -73,6 +76,13 @@ public interface ActionHandler {
     */
     */
    void refreshDocument(DocumentInfo doc, BooleanConsumer callback);
    void refreshDocument(DocumentInfo doc, BooleanConsumer callback);



    /**
     * Attempts to start the authentication process caused by
     * {@link android.app.AuthenticationRequiredException}.
     */
    void startAuthentication(PendingIntent intent);

    void showAppDetails(ResolveInfo info);
    void showAppDetails(ResolveInfo info);


    void openRoot(RootInfo root);
    void openRoot(RootInfo root);
+5 −2
Original line number Original line Diff line number Diff line
@@ -44,7 +44,6 @@ import android.widget.Toolbar;
import com.android.documentsui.AbstractActionHandler.CommonAddons;
import com.android.documentsui.AbstractActionHandler.CommonAddons;
import com.android.documentsui.Injector.Injected;
import com.android.documentsui.Injector.Injected;
import com.android.documentsui.NavigationViewManager.Breadcrumb;
import com.android.documentsui.NavigationViewManager.Breadcrumb;
import com.android.documentsui.archives.ArchivesProvider;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.base.Shared;
import com.android.documentsui.base.Shared;
@@ -65,7 +64,6 @@ import com.android.documentsui.sidebar.RootsFragment;
import com.android.documentsui.sorting.SortController;
import com.android.documentsui.sorting.SortController;
import com.android.documentsui.sorting.SortModel;
import com.android.documentsui.sorting.SortModel;


import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Date;
import java.util.Date;
import java.util.List;
import java.util.List;
@@ -584,6 +582,11 @@ public abstract class BaseActivity
        return super.dispatchKeyEvent(event);
        return super.dispatchKeyEvent(event);
    }
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        mInjector.actions.onActivityResult(requestCode, resultCode, data);
    }

    /**
    /**
     * Pops the top entry off the directory stack, and returns the user to the previous directory.
     * Pops the top entry off the directory stack, and returns the user to the previous directory.
     * If the directory stack only contains one item, this method does nothing.
     * If the directory stack only contains one item, this method does nothing.
+5 −0
Original line number Original line Diff line number Diff line
@@ -1249,5 +1249,10 @@ public class DirectoryFragment extends Fragment
        public void onBindDocumentHolder(DocumentHolder holder, Cursor cursor) {
        public void onBindDocumentHolder(DocumentHolder holder, Cursor cursor) {
            setupDragAndDropOnDocumentView(holder.itemView, cursor);
            setupDragAndDropOnDocumentView(holder.itemView, cursor);
        }
        }

        @Override
        public ActionHandler getActionHandler() {
            return mActions;
        }
    }
    }
}
}
+2 −0
Original line number Original line Diff line number Diff line
@@ -24,6 +24,7 @@ import android.provider.DocumentsContract.Document;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView;


import com.android.documentsui.ActionHandler;
import com.android.documentsui.Model;
import com.android.documentsui.Model;
import com.android.documentsui.base.EventListener;
import com.android.documentsui.base.EventListener;
import com.android.documentsui.base.Features;
import com.android.documentsui.base.Features;
@@ -103,6 +104,7 @@ public abstract class DocumentsAdapter
    interface Environment {
    interface Environment {
        Context getContext();
        Context getContext();
        Features getFeatures();
        Features getFeatures();
        ActionHandler getActionHandler();
        int getColumnCount();
        int getColumnCount();
        State getDisplayState();
        State getDisplayState();
        boolean isInSearchMode();
        boolean isInSearchMode();
Loading