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

Commit 0c2fcd65 authored by Bill Yi's avatar Bill Yi
Browse files

Merge commit 'bce5116b8d10c91436445cd0a0830bb51702bfd4' into HEAD

parents 30f22fb0 caf03702
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -3,6 +3,7 @@


    <uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
    <uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
    <uses-permission android:name="android.permission.REMOVE_TASKS" />
    <uses-permission android:name="android.permission.REMOVE_TASKS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />


    <application
    <application
        android:name=".DocumentsApplication"
        android:name=".DocumentsApplication"
+11 −1
Original line number Original line Diff line number Diff line
@@ -32,6 +32,7 @@ import android.net.Uri;
import android.os.CancellationSignal;
import android.os.CancellationSignal;
import android.os.ParcelFileDescriptor;
import android.os.ParcelFileDescriptor;
import android.os.Parcelable;
import android.os.Parcelable;
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.SystemClock;
import android.provider.DocumentsContract;
import android.provider.DocumentsContract;
@@ -65,6 +66,8 @@ public class CopyService extends IntentService {
    // TODO: Move it to a shared file when more operations are implemented.
    // TODO: Move it to a shared file when more operations are implemented.
    public static final int FAILURE_COPY = 1;
    public static final int FAILURE_COPY = 1;


    private PowerManager mPowerManager;

    private NotificationManager mNotificationManager;
    private NotificationManager mNotificationManager;
    private Notification.Builder mProgressBuilder;
    private Notification.Builder mProgressBuilder;


@@ -129,10 +132,14 @@ public class CopyService extends IntentService {
            return;
            return;
        }
        }


        final PowerManager.WakeLock wakeLock = mPowerManager
                .newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
        final ArrayList<DocumentInfo> srcs = intent.getParcelableArrayListExtra(EXTRA_SRC_LIST);
        final ArrayList<DocumentInfo> srcs = intent.getParcelableArrayListExtra(EXTRA_SRC_LIST);
        final DocumentStack stack = intent.getParcelableExtra(EXTRA_STACK);
        final DocumentStack stack = intent.getParcelableExtra(EXTRA_STACK);


        try {
        try {
            wakeLock.acquire();

            // Acquire content providers.
            // Acquire content providers.
            mSrcClient = DocumentsApplication.acquireUnstableProviderOrThrow(getContentResolver(),
            mSrcClient = DocumentsApplication.acquireUnstableProviderOrThrow(getContentResolver(),
                    srcs.get(0).authority);
                    srcs.get(0).authority);
@@ -151,6 +158,8 @@ public class CopyService extends IntentService {
            ContentProviderClient.releaseQuietly(mSrcClient);
            ContentProviderClient.releaseQuietly(mSrcClient);
            ContentProviderClient.releaseQuietly(mDstClient);
            ContentProviderClient.releaseQuietly(mDstClient);


            wakeLock.release();

            // Dismiss the ongoing copy notification when the copy is done.
            // Dismiss the ongoing copy notification when the copy is done.
            mNotificationManager.cancel(mJobId, 0);
            mNotificationManager.cancel(mJobId, 0);


@@ -179,7 +188,8 @@ public class CopyService extends IntentService {
    @Override
    @Override
    public void onCreate() {
    public void onCreate() {
        super.onCreate();
        super.onCreate();
        mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        mPowerManager = getSystemService(PowerManager.class);
        mNotificationManager = getSystemService(NotificationManager.class);
    }
    }


    /**
    /**
+12 −2
Original line number Original line Diff line number Diff line
@@ -36,6 +36,7 @@ import android.util.Log;


import com.android.documentsui.BaseActivity.State;
import com.android.documentsui.BaseActivity.State;
import com.android.documentsui.model.RootInfo;
import com.android.documentsui.model.RootInfo;
import com.android.internal.annotations.GuardedBy;
import com.google.android.collect.Maps;
import com.google.android.collect.Maps;
import com.google.common.collect.Lists;
import com.google.common.collect.Lists;
import com.google.common.util.concurrent.AbstractFuture;
import com.google.common.util.concurrent.AbstractFuture;
@@ -81,6 +82,7 @@ public class RecentLoader extends AsyncTaskLoader<DirectoryResult> {
    private final RootsCache mRoots;
    private final RootsCache mRoots;
    private final State mState;
    private final State mState;


    @GuardedBy("mTasks")
    private final HashMap<RootInfo, RecentTask> mTasks = Maps.newHashMap();
    private final HashMap<RootInfo, RecentTask> mTasks = Maps.newHashMap();


    private final int mSortOrder = State.SORT_ORDER_LAST_MODIFIED;
    private final int mSortOrder = State.SORT_ORDER_LAST_MODIFIED;
@@ -167,6 +169,12 @@ public class RecentLoader extends AsyncTaskLoader<DirectoryResult> {


    @Override
    @Override
    public DirectoryResult loadInBackground() {
    public DirectoryResult loadInBackground() {
        synchronized (mTasks) {
            return loadInBackgroundLocked();
        }
    }

    private DirectoryResult loadInBackgroundLocked() {
        if (mFirstPassLatch == null) {
        if (mFirstPassLatch == null) {
            // First time through we kick off all the recent tasks, and wait
            // First time through we kick off all the recent tasks, and wait
            // around to see if everyone finishes quickly.
            // around to see if everyone finishes quickly.
@@ -304,9 +312,11 @@ public class RecentLoader extends AsyncTaskLoader<DirectoryResult> {
        // Ensure the loader is stopped
        // Ensure the loader is stopped
        onStopLoading();
        onStopLoading();


        synchronized (mTasks) {
            for (RecentTask task : mTasks.values()) {
            for (RecentTask task : mTasks.values()) {
                IoUtils.closeQuietly(task);
                IoUtils.closeQuietly(task);
            }
            }
        }


        IoUtils.closeQuietly(mResult);
        IoUtils.closeQuietly(mResult);
        mResult = null;
        mResult = null;