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

Commit 596ae3bc authored by Tomasz Mikolajewski's avatar Tomasz Mikolajewski Committed by Android (Google) Code Review
Browse files

Merge "Fix tapping on more than one failure notification."

parents 419b9fe9 63e2aae0
Loading
Loading
Loading
Loading
+5 −3
Original line number Original line Diff line number Diff line
@@ -104,10 +104,12 @@ public class FilesActivity extends BaseActivity {
            // loading or restoring the stack.
            // loading or restoring the stack.
            //
            //
            // When restoring from a stack, if a URI is present, it should only ever
            // When restoring from a stack, if a URI is present, it should only ever
            // be a launch URI. Launch URIs support sensible activity management, but
            // be a launch URI, or a fake Uri from notifications.
            // don't specify a real content target.
            // Launch URIs support sensible activity management, but don't specify a real
            // content target.
            if (DEBUG) Log.d(TAG, "Launching with non-empty stack.");
            if (DEBUG) Log.d(TAG, "Launching with non-empty stack.");
            checkState(uri == null || LauncherActivity.isLaunchUri(uri));
            checkState(uri == null || uri.getAuthority() == null ||
                    LauncherActivity.isLaunchUri(uri));
            refreshCurrentRootAndDirectory(ANIM_NONE);
            refreshCurrentRootAndDirectory(ANIM_NONE);
        } else if (DocumentsContract.isRootUri(this, uri)) {
        } else if (DocumentsContract.isRootUri(this, uri)) {
            if (DEBUG) Log.d(TAG, "Launching with root URI.");
            if (DEBUG) Log.d(TAG, "Launching with root URI.");
+1 −1
Original line number Original line Diff line number Diff line
@@ -354,7 +354,7 @@ public final class Metrics {
     * a single ROOT_OTHER bucket.
     * a single ROOT_OTHER bucket.
     */
     */
    private static @Root int sanitizeRoot(Uri uri) {
    private static @Root int sanitizeRoot(Uri uri) {
        if (uri == null || LauncherActivity.isLaunchUri(uri)) {
        if (uri == null || uri.getAuthority() == null || LauncherActivity.isLaunchUri(uri)) {
            return ROOT_NONE;
            return ROOT_NONE;
        }
        }


+1 −1
Original line number Original line Diff line number Diff line
@@ -186,7 +186,7 @@ class CopyJob extends Job {


    @Override
    @Override
    Notification getWarningNotification() {
    Notification getWarningNotification() {
        final Intent navigateIntent = buildNavigateIntent();
        final Intent navigateIntent = buildNavigateIntent(INTENT_TAG_WARNING);
        navigateIntent.putExtra(EXTRA_DIALOG_TYPE, DIALOG_TYPE_CONVERTED);
        navigateIntent.putExtra(EXTRA_DIALOG_TYPE, DIALOG_TYPE_CONVERTED);
        navigateIntent.putExtra(EXTRA_OPERATION, operationType);
        navigateIntent.putExtra(EXTRA_OPERATION, operationType);


+18 −4
Original line number Original line Diff line number Diff line
@@ -35,6 +35,7 @@ import android.content.ContentProviderClient;
import android.content.ContentResolver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.net.Uri;
import android.os.Parcelable;
import android.os.Parcelable;
import android.os.RemoteException;
import android.os.RemoteException;
import android.provider.DocumentsContract;
import android.provider.DocumentsContract;
@@ -60,6 +61,12 @@ import java.util.Map;
 */
 */
abstract public class Job implements Runnable {
abstract public class Job implements Runnable {
    private static final String TAG = "Job";
    private static final String TAG = "Job";

    static final String INTENT_TAG_WARNING = "warning";
    static final String INTENT_TAG_FAILURE = "failure";
    static final String INTENT_TAG_PROGRESS = "progress";
    static final String INTENT_TAG_CANCEL = "cancel";

    final Context service;
    final Context service;
    final Context appContext;
    final Context appContext;
    final Listener listener;
    final Listener listener;
@@ -130,6 +137,10 @@ abstract public class Job implements Runnable {


    abstract Notification getWarningNotification();
    abstract Notification getWarningNotification();


    Uri getDataUriForIntent(String tag) {
        return Uri.parse(String.format("data,%s-%s", tag, id));
    }

    ContentProviderClient getClient(DocumentInfo doc) throws RemoteException {
    ContentProviderClient getClient(DocumentInfo doc) throws RemoteException {
        ContentProviderClient client = mClients.get(doc.authority);
        ContentProviderClient client = mClients.get(doc.authority);
        if (client == null) {
        if (client == null) {
@@ -193,10 +204,9 @@ abstract public class Job implements Runnable {
    }
    }


    Notification getFailureNotification(@PluralsRes int titleId, @DrawableRes int icon) {
    Notification getFailureNotification(@PluralsRes int titleId, @DrawableRes int icon) {
        final Intent navigateIntent = buildNavigateIntent();
        final Intent navigateIntent = buildNavigateIntent(INTENT_TAG_FAILURE);
        navigateIntent.putExtra(EXTRA_DIALOG_TYPE, OperationDialogFragment.DIALOG_TYPE_FAILURE);
        navigateIntent.putExtra(EXTRA_DIALOG_TYPE, OperationDialogFragment.DIALOG_TYPE_FAILURE);
        navigateIntent.putExtra(EXTRA_OPERATION, operationType);
        navigateIntent.putExtra(EXTRA_OPERATION, operationType);

        navigateIntent.putParcelableArrayListExtra(EXTRA_SRC_LIST, failedFiles);
        navigateIntent.putParcelableArrayListExtra(EXTRA_SRC_LIST, failedFiles);


        final Notification.Builder errorBuilder = new Notification.Builder(service)
        final Notification.Builder errorBuilder = new Notification.Builder(service)
@@ -219,7 +229,8 @@ abstract public class Job implements Runnable {
        Notification.Builder progressBuilder = new Notification.Builder(service)
        Notification.Builder progressBuilder = new Notification.Builder(service)
                .setContentTitle(title)
                .setContentTitle(title)
                .setContentIntent(
                .setContentIntent(
                        PendingIntent.getActivity(appContext, 0, buildNavigateIntent(), 0))
                        PendingIntent.getActivity(appContext, 0,
                                buildNavigateIntent(INTENT_TAG_PROGRESS), 0))
                .setCategory(Notification.CATEGORY_PROGRESS)
                .setCategory(Notification.CATEGORY_PROGRESS)
                .setSmallIcon(icon)
                .setSmallIcon(icon)
                .setOngoing(true);
                .setOngoing(true);
@@ -241,15 +252,18 @@ abstract public class Job implements Runnable {
    /**
    /**
     * Creates an intent for navigating back to the destination directory.
     * Creates an intent for navigating back to the destination directory.
     */
     */
    Intent buildNavigateIntent() {
    Intent buildNavigateIntent(String tag) {
        Intent intent = new Intent(service, FilesActivity.class);
        Intent intent = new Intent(service, FilesActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setAction(DocumentsContract.ACTION_BROWSE);
        intent.setAction(DocumentsContract.ACTION_BROWSE);
        intent.setData(getDataUriForIntent(tag));
        intent.putExtra(Shared.EXTRA_STACK, (Parcelable) stack);
        intent.putExtra(Shared.EXTRA_STACK, (Parcelable) stack);
        return intent;
        return intent;
    }
    }


    Intent createCancelIntent() {
    Intent createCancelIntent() {
        final Intent cancelIntent = new Intent(service, FileOperationService.class);
        final Intent cancelIntent = new Intent(service, FileOperationService.class);
        cancelIntent.setData(getDataUriForIntent(INTENT_TAG_CANCEL));
        cancelIntent.putExtra(EXTRA_CANCEL, true);
        cancelIntent.putExtra(EXTRA_CANCEL, true);
        cancelIntent.putExtra(EXTRA_JOB_ID, id);
        cancelIntent.putExtra(EXTRA_JOB_ID, id);
        return cancelIntent;
        return cancelIntent;