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

Commit 63e2aae0 authored by Tomasz Mikolajewski's avatar Tomasz Mikolajewski
Browse files

Fix tapping on more than one failure notification.

Bug: 26809248
Change-Id: I4e52b7e7a9e09d57b8a2231a09c9121b5fd19e51
parent e4b65c04
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;