Loading AndroidManifest.xml +1 −0 Original line number Original line Diff line number Diff line Loading @@ -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" Loading src/com/android/documentsui/CopyService.java +11 −1 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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); Loading @@ -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); Loading Loading @@ -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); } } /** /** Loading src/com/android/documentsui/RecentLoader.java +12 −2 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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. Loading Loading @@ -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; Loading Loading
AndroidManifest.xml +1 −0 Original line number Original line Diff line number Diff line Loading @@ -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" Loading
src/com/android/documentsui/CopyService.java +11 −1 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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); Loading @@ -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); Loading Loading @@ -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); } } /** /** Loading
src/com/android/documentsui/RecentLoader.java +12 −2 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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. Loading Loading @@ -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; Loading