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

Commit d842dd59 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Revert "Handle queued state for progress messages"" into main

parents 23bbf8bb 2b80b10b
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
@@ -25,11 +25,13 @@ import android.app.Notification;
import android.app.Notification.Builder;
import android.content.ContentResolver;
import android.content.Context;
import android.icu.text.MessageFormat;
import android.net.Uri;
import android.os.Messenger;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.provider.DocumentsContract;
import android.text.BidiFormatter;
import android.util.Log;

import com.android.documentsui.R;
@@ -41,6 +43,9 @@ import com.android.documentsui.base.UserId;
import com.android.documentsui.clipping.UrisSupplier;

import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

// TODO: Stop extending CopyJob.
final class CompressJob extends CopyJob {
@@ -90,7 +95,23 @@ final class CompressJob extends CopyJob {

    @Override
    protected String getProgressMessage() {
        return getProgressMessage(R.string.compress_in_progress);
        switch (getState()) {
            case Job.STATE_SET_UP:
            case Job.STATE_COMPLETED:
            case Job.STATE_CANCELED:
                Map<String, Object> formatArgs = new HashMap<>();
                formatArgs.put("count", mResolvedDocs.size());
                if (mResolvedDocs.size() == 1) {
                    formatArgs.put("filename", BidiFormatter.getInstance().unicodeWrap(
                            mResolvedDocs.get(0).displayName));
                }
                return (new MessageFormat(
                                service.getString(getRes(R.string.compress_in_progress)),
                                Locale.getDefault()))
                        .format(formatArgs);
            default:
                return "";
        }
    }

    @Override
+23 −3
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import android.content.res.AssetFileDescriptor;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.database.Cursor;
import android.icu.text.MessageFormat;
import android.net.Uri;
import android.os.DeadObjectException;
import android.os.FileUtils;
@@ -98,6 +99,7 @@ import java.io.SyncFailedException;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Function;
@@ -208,9 +210,27 @@ class CopyJob extends ResolvedResourcesJob {
    }

    protected String getProgressMessage() {
        switch (getState()) {
            case Job.STATE_SET_UP:
            case Job.STATE_COMPLETED:
            case Job.STATE_CANCELED:
                Map<String, Object> formatArgs = new HashMap<>();
        formatArgs.put("directory", BidiFormatter.getInstance().unicodeWrap(mDstInfo.displayName));
        return getProgressMessage(R.string.copy_in_progress, formatArgs);
                formatArgs.put("count", mResolvedDocs.size());
                formatArgs.put("directory",
                        BidiFormatter.getInstance().unicodeWrap(mDstInfo.displayName));
                if (mResolvedDocs.size() == 1) {
                    formatArgs.put("filename",
                            BidiFormatter.getInstance().unicodeWrap(
                                    mResolvedDocs.get(0).displayName));
                }
                return (new MessageFormat(
                                service.getString(getRes(R.string.copy_in_progress)),
                                Locale.getDefault()))
                        .format(formatArgs);

            default:
                return "";
        }
    }

    @Override
+22 −1
Original line number Diff line number Diff line
@@ -24,7 +24,9 @@ import android.app.Notification;
import android.app.Notification.Builder;
import android.content.ContentResolver;
import android.content.Context;
import android.icu.text.MessageFormat;
import android.net.Uri;
import android.text.BidiFormatter;
import android.util.Log;

import com.android.documentsui.MetricConsts;
@@ -37,6 +39,9 @@ import com.android.documentsui.base.UserId;
import com.android.documentsui.clipping.UrisSupplier;

import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import javax.annotation.Nullable;

@@ -95,7 +100,23 @@ final class DeleteJob extends ResolvedResourcesJob {
    }

    private String getProgressMessage() {
        return getProgressMessage(R.string.delete_in_progress);
        switch (getState()) {
            case Job.STATE_SET_UP:
            case Job.STATE_COMPLETED:
            case Job.STATE_CANCELED:
                Map<String, Object> formatArgs = new HashMap<>();
                formatArgs.put("count", mResolvedDocs.size());
                if (mResolvedDocs.size() == 1) {
                    formatArgs.put("filename", BidiFormatter.getInstance().unicodeWrap(
                            mResolvedDocs.get(0).displayName));
                }
                return (new MessageFormat(
                                service.getString(getRes(R.string.delete_in_progress)),
                                Locale.getDefault()))
                        .format(formatArgs);
            default:
                return "";
        }
    }

    @Override
+21 −3
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import static com.android.documentsui.util.Material3Config.getRes;
import android.app.Notification;
import android.app.Notification.Builder;
import android.content.Context;
import android.icu.text.MessageFormat;
import android.net.Uri;
import android.os.DeadObjectException;
import android.os.Messenger;
@@ -45,6 +46,7 @@ import com.android.documentsui.clipping.UrisSupplier;

import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

import javax.annotation.Nullable;
@@ -99,9 +101,25 @@ final class MoveJob extends CopyJob {

    @Override
    protected String getProgressMessage() {
        switch (getState()) {
            case Job.STATE_SET_UP:
            case Job.STATE_COMPLETED:
            case Job.STATE_CANCELED:
                Map<String, Object> formatArgs = new HashMap<>();
        formatArgs.put("directory", BidiFormatter.getInstance().unicodeWrap(mDstInfo.displayName));
        return getProgressMessage(R.string.move_in_progress, formatArgs);
                formatArgs.put("count", mResolvedDocs.size());
                formatArgs.put("directory",
                        BidiFormatter.getInstance().unicodeWrap(mDstInfo.displayName));
                if (mResolvedDocs.size() == 1) {
                    formatArgs.put("filename", BidiFormatter.getInstance().unicodeWrap(
                            mResolvedDocs.get(0).displayName));
                }
                return (new MessageFormat(
                                service.getString(getRes(R.string.move_in_progress)),
                                Locale.getDefault()))
                        .format(formatArgs);
            default:
                return "";
        }
    }

    @Override
+1 −47
Original line number Diff line number Diff line
@@ -19,15 +19,11 @@ package com.android.documentsui.services;
import static android.os.SystemClock.uptimeMillis;

import static com.android.documentsui.base.SharedMinimal.DEBUG;
import static com.android.documentsui.util.FlagUtils.isVisualSignalsFlagEnabled;
import static com.android.documentsui.util.Material3Config.getRes;

import android.content.ContentResolver;
import android.content.Context;
import android.icu.text.MessageFormat;
import android.net.Uri;
import android.os.RemoteException;
import android.text.BidiFormatter;
import android.util.Log;

import com.android.documentsui.archives.ArchivesProvider;
@@ -42,10 +38,7 @@ import com.android.documentsui.services.FileOperationService.OpType;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

/**
 * Abstract job that resolves all resource URIs into mResolvedDocs. This provides
@@ -69,12 +62,6 @@ public abstract class ResolvedResourcesJob extends Job {

        // Delay the initialization of it to setUp() because it may be IO extensive.
        mResolvedDocs = new ArrayList<>(srcs.getItemCount());

        if (isVisualSignalsFlagEnabled() && srcs.getItemCount() == 1) {
            // Prebuild the document list so we can get the filename for a single file progress
            // message. With a single file only, this should not be IO intensive.
            buildDocumentList();
        }
    }

    boolean setUp() {
@@ -101,7 +88,7 @@ public abstract class ResolvedResourcesJob extends Job {
            return false;
        }

        int docsResolved = refreshDocumentList();
        int docsResolved = buildDocumentList();
        if (!isCanceled() && docsResolved < mResourceUris.getItemCount()) {
            if (docsResolved == 0) {
                Log.e(TAG, "Cannot load any documents. Aborting.");
@@ -179,37 +166,4 @@ public abstract class ResolvedResourcesJob extends Job {

        return docsLoaded;
    }

    private int refreshDocumentList() {
        // We've never built the list in the first place.
        if (mResolvedDocs.isEmpty() && failureCount == 0) {
            return buildDocumentList();
        }

        final ContentResolver resolver = appContext.getContentResolver();
        mResolvedDocs.removeIf(doc -> {
            try {
                doc.updateSelf(resolver, UserId.DEFAULT_USER);
            } catch (FileNotFoundException e) {
                onFileFailed(doc);
                return true;
            }
            return false;
        });
        return mResolvedDocs.size();
    }

    protected String getProgressMessage(int stringId, Map<String, Object> formatArgs) {
        formatArgs.put("count", mResourceUris.getItemCount());
        if (mResourceUris.getItemCount() == 1 && mResolvedDocs.size() == 1) {
            formatArgs.put("filename",
                    BidiFormatter.getInstance().unicodeWrap(mResolvedDocs.get(0).displayName));
        }
        return (new MessageFormat(service.getString(getRes(stringId)), Locale.getDefault()))
                .format(formatArgs);
    }

    protected String getProgressMessage(int stringId) {
        return getProgressMessage(stringId, new HashMap<>());
    }
}
Loading