summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/com/android/documentsui/CreateDirectoryFragment.java2
-rw-r--r--src/com/android/documentsui/DirectoryLoader.java12
-rw-r--r--src/com/android/documentsui/DirectoryResult.java4
-rw-r--r--src/com/android/documentsui/RecentsLoader.java16
-rw-r--r--src/com/android/documentsui/RefreshTask.java2
-rw-r--r--src/com/android/documentsui/ThumbnailLoader.java2
-rw-r--r--src/com/android/documentsui/archives/ArchivesProvider.java4
-rw-r--r--src/com/android/documentsui/archives/Proxy.java6
-rw-r--r--src/com/android/documentsui/archives/ReadableArchive.java8
-rw-r--r--src/com/android/documentsui/archives/WriteableArchive.java10
-rw-r--r--src/com/android/documentsui/base/DebugFlags.java6
-rw-r--r--src/com/android/documentsui/base/DocumentInfo.java6
-rw-r--r--src/com/android/documentsui/base/Features.java6
-rw-r--r--src/com/android/documentsui/base/Shared.java16
-rw-r--r--src/com/android/documentsui/base/SharedMinimal.java5
-rw-r--r--src/com/android/documentsui/dirlist/DirectoryFragment.java4
-rw-r--r--src/com/android/documentsui/dirlist/ScaleHelper.java3
-rw-r--r--src/com/android/documentsui/files/ActionHandler.java4
-rw-r--r--src/com/android/documentsui/files/QuickViewIntentBuilder.java3
-rw-r--r--src/com/android/documentsui/picker/LastAccessedProvider.java12
-rw-r--r--src/com/android/documentsui/picker/LastAccessedStorage.java4
-rw-r--r--src/com/android/documentsui/roots/ProvidersCache.java6
-rw-r--r--src/com/android/documentsui/selection/BandSelectionHelper.java4
-rw-r--r--src/com/android/documentsui/selection/GridModel.java3
-rw-r--r--src/com/android/documentsui/services/CopyJob.java25
-rw-r--r--src/com/android/documentsui/services/Job.java2
-rw-r--r--src/com/android/documentsui/sidebar/EjectRootTask.java2
-rw-r--r--tests/common/com/android/documentsui/DocumentsProviderHelper.java11
-rw-r--r--tests/common/com/android/documentsui/StubProvider.java6
-rw-r--r--tests/unit/com/android/documentsui/archives/ResourcesProvider.java4
-rw-r--r--tests/unit/com/android/documentsui/services/FileOperationServiceTest.java63
31 files changed, 138 insertions, 123 deletions
diff --git a/src/com/android/documentsui/CreateDirectoryFragment.java b/src/com/android/documentsui/CreateDirectoryFragment.java
index 173950542..771c6461d 100644
--- a/src/com/android/documentsui/CreateDirectoryFragment.java
+++ b/src/com/android/documentsui/CreateDirectoryFragment.java
@@ -147,7 +147,7 @@ public class CreateDirectoryFragment extends DialogFragment {
Log.w(TAG, "Failed to create directory", e);
return null;
} finally {
- ContentProviderClient.releaseQuietly(client);
+ ContentProviderClient.closeQuietly(client);
}
}
diff --git a/src/com/android/documentsui/DirectoryLoader.java b/src/com/android/documentsui/DirectoryLoader.java
index 55900e69b..eb3ab32c3 100644
--- a/src/com/android/documentsui/DirectoryLoader.java
+++ b/src/com/android/documentsui/DirectoryLoader.java
@@ -46,7 +46,7 @@ import com.android.documentsui.roots.RootCursorWrapper;
import com.android.documentsui.selection.ContentLock;
import com.android.documentsui.sorting.SortModel;
-import libcore.io.IoUtils;
+import android.os.FileUtils;
public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> {
@@ -158,7 +158,7 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> {
mSignal = null;
}
// TODO: Remove this call.
- ContentProviderClient.releaseQuietly(client);
+ ContentProviderClient.closeQuietly(client);
}
return result;
@@ -178,7 +178,7 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> {
@Override
public void deliverResult(DirectoryResult result) {
if (isReset()) {
- IoUtils.closeQuietly(result);
+ FileUtils.closeQuietly(result);
return;
}
DirectoryResult oldResult = mResult;
@@ -189,7 +189,7 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> {
}
if (oldResult != null && oldResult != result) {
- IoUtils.closeQuietly(oldResult);
+ FileUtils.closeQuietly(oldResult);
}
}
@@ -210,7 +210,7 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> {
@Override
public void onCanceled(DirectoryResult result) {
- IoUtils.closeQuietly(result);
+ FileUtils.closeQuietly(result);
}
@Override
@@ -220,7 +220,7 @@ public class DirectoryLoader extends AsyncTaskLoader<DirectoryResult> {
// Ensure the loader is stopped
onStopLoading();
- IoUtils.closeQuietly(mResult);
+ FileUtils.closeQuietly(mResult);
mResult = null;
getContext().getContentResolver().unregisterContentObserver(mObserver);
diff --git a/src/com/android/documentsui/DirectoryResult.java b/src/com/android/documentsui/DirectoryResult.java
index 58746e5d3..a4068de3c 100644
--- a/src/com/android/documentsui/DirectoryResult.java
+++ b/src/com/android/documentsui/DirectoryResult.java
@@ -23,7 +23,7 @@ import android.database.Cursor;
import com.android.documentsui.archives.ArchivesProvider;
import com.android.documentsui.base.DocumentInfo;
-import libcore.io.IoUtils;
+import android.os.FileUtils;
public class DirectoryResult implements AutoCloseable {
@@ -34,7 +34,7 @@ public class DirectoryResult implements AutoCloseable {
@Override
public void close() {
- IoUtils.closeQuietly(cursor);
+ FileUtils.closeQuietly(cursor);
if (client != null && doc.isInArchive()) {
ArchivesProvider.releaseArchive(client, doc.derivedUri);
}
diff --git a/src/com/android/documentsui/RecentsLoader.java b/src/com/android/documentsui/RecentsLoader.java
index 28b5fa589..42be08294 100644
--- a/src/com/android/documentsui/RecentsLoader.java
+++ b/src/com/android/documentsui/RecentsLoader.java
@@ -45,7 +45,7 @@ import androidx.annotation.GuardedBy;
import com.google.common.util.concurrent.AbstractFuture;
-import libcore.io.IoUtils;
+import android.os.FileUtils;
import java.io.Closeable;
import java.io.IOException;
@@ -247,7 +247,7 @@ public class RecentsLoader extends AsyncTaskLoader<DirectoryResult> {
@Override
public void deliverResult(DirectoryResult result) {
if (isReset()) {
- IoUtils.closeQuietly(result);
+ FileUtils.closeQuietly(result);
return;
}
DirectoryResult oldResult = mResult;
@@ -258,7 +258,7 @@ public class RecentsLoader extends AsyncTaskLoader<DirectoryResult> {
}
if (oldResult != null && oldResult != result) {
- IoUtils.closeQuietly(oldResult);
+ FileUtils.closeQuietly(oldResult);
}
}
@@ -279,7 +279,7 @@ public class RecentsLoader extends AsyncTaskLoader<DirectoryResult> {
@Override
public void onCanceled(DirectoryResult result) {
- IoUtils.closeQuietly(result);
+ FileUtils.closeQuietly(result);
}
@Override
@@ -291,11 +291,11 @@ public class RecentsLoader extends AsyncTaskLoader<DirectoryResult> {
synchronized (mTasks) {
for (RecentsTask task : mTasks.values()) {
- IoUtils.closeQuietly(task);
+ FileUtils.closeQuietly(task);
}
}
- IoUtils.closeQuietly(mResult);
+ FileUtils.closeQuietly(mResult);
mResult = null;
}
@@ -365,7 +365,7 @@ public class RecentsLoader extends AsyncTaskLoader<DirectoryResult> {
} catch (Exception e) {
Log.w(TAG, "Failed to acquire content resolver for authority: " + authority);
} finally {
- ContentProviderClient.releaseQuietly(client);
+ ContentProviderClient.closeQuietly(client);
}
set(mCursors);
@@ -383,7 +383,7 @@ public class RecentsLoader extends AsyncTaskLoader<DirectoryResult> {
}
for (Cursor cursor : mCursors) {
- IoUtils.closeQuietly(cursor);
+ FileUtils.closeQuietly(cursor);
}
mIsClosed = true;
diff --git a/src/com/android/documentsui/RefreshTask.java b/src/com/android/documentsui/RefreshTask.java
index b7483956f..85903eaeb 100644
--- a/src/com/android/documentsui/RefreshTask.java
+++ b/src/com/android/documentsui/RefreshTask.java
@@ -97,7 +97,7 @@ public class RefreshTask extends TimeoutTask<Void, Boolean> {
} catch (Exception e) {
Log.w(TAG, "Failed to refresh", e);
} finally {
- ContentProviderClient.releaseQuietly(client);
+ ContentProviderClient.closeQuietly(client);
}
return refreshSupported;
}
diff --git a/src/com/android/documentsui/ThumbnailLoader.java b/src/com/android/documentsui/ThumbnailLoader.java
index f5a93aa63..4a50bf1e4 100644
--- a/src/com/android/documentsui/ThumbnailLoader.java
+++ b/src/com/android/documentsui/ThumbnailLoader.java
@@ -114,7 +114,7 @@ public final class ThumbnailLoader extends AsyncTask<Uri, Void, Bitmap> implemen
Log.w(TAG, "Failed to load thumbnail for " + mUri + ": " + e);
}
} finally {
- ContentProviderClient.releaseQuietly(client);
+ ContentProviderClient.closeQuietly(client);
}
return result;
}
diff --git a/src/com/android/documentsui/archives/ArchivesProvider.java b/src/com/android/documentsui/archives/ArchivesProvider.java
index de76da484..138ad543a 100644
--- a/src/com/android/documentsui/archives/ArchivesProvider.java
+++ b/src/com/android/documentsui/archives/ArchivesProvider.java
@@ -37,7 +37,7 @@ import android.util.Log;
import com.android.documentsui.R;
import androidx.annotation.GuardedBy;
-import libcore.io.IoUtils;
+import android.os.FileUtils;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -170,7 +170,7 @@ public class ArchivesProvider extends DocumentsProvider {
Log.e(TAG, "An error occurred retrieving the metadata.", e);
return null;
} finally {
- IoUtils.closeQuietly(stream);
+ FileUtils.closeQuietly(stream);
}
}
diff --git a/src/com/android/documentsui/archives/Proxy.java b/src/com/android/documentsui/archives/Proxy.java
index a2336b72b..d72d3098a 100644
--- a/src/com/android/documentsui/archives/Proxy.java
+++ b/src/com/android/documentsui/archives/Proxy.java
@@ -26,7 +26,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
-import libcore.io.IoUtils;
+import android.os.FileUtils;
/**
* Provides a backend for a seekable file descriptors for files in archives.
@@ -85,11 +85,11 @@ public class Proxy extends ProxyFileDescriptorCallback {
}
@Override public void onRelease() {
- IoUtils.closeQuietly(mInputStream);
+ FileUtils.closeQuietly(mInputStream);
}
private void recreateInputStream() throws IOException {
- IoUtils.closeQuietly(mInputStream);
+ FileUtils.closeQuietly(mInputStream);
mInputStream = mFile.getInputStream(mEntry);
mOffset = 0;
}
diff --git a/src/com/android/documentsui/archives/ReadableArchive.java b/src/com/android/documentsui/archives/ReadableArchive.java
index 77fb07e31..e38aaa5a7 100644
--- a/src/com/android/documentsui/archives/ReadableArchive.java
+++ b/src/com/android/documentsui/archives/ReadableArchive.java
@@ -34,7 +34,7 @@ import android.util.jar.StrictJarFile;
import androidx.annotation.GuardedBy;
import androidx.core.util.Preconditions;
-import libcore.io.IoUtils;
+import android.os.FileUtils;
import java.io.File;
import java.io.FileDescriptor;
@@ -214,8 +214,8 @@ public class ReadableArchive extends Archive {
} catch (Exception e) {
// Since the method takes ownership of the passed descriptor, close it
// on exception.
- IoUtils.closeQuietly(descriptor);
- IoUtils.closeQuietly(fd);
+ FileUtils.closeQuietly(descriptor);
+ FileUtils.closeQuietly(fd);
throw e;
}
}
@@ -286,7 +286,7 @@ public class ReadableArchive extends Archive {
// Ignore the exception, as reading the EXIF may legally fail.
Log.e(TAG, "Failed to obtain thumbnail from EXIF.", e);
} finally {
- IoUtils.closeQuietly(inputStream);
+ FileUtils.closeQuietly(inputStream);
}
return new AssetFileDescriptor(
diff --git a/src/com/android/documentsui/archives/WriteableArchive.java b/src/com/android/documentsui/archives/WriteableArchive.java
index 72a8249aa..0c3e44e6f 100644
--- a/src/com/android/documentsui/archives/WriteableArchive.java
+++ b/src/com/android/documentsui/archives/WriteableArchive.java
@@ -29,7 +29,7 @@ import android.util.Log;
import androidx.annotation.GuardedBy;
import androidx.annotation.VisibleForTesting;
-import libcore.io.IoUtils;
+import android.os.FileUtils;
import java.io.FileDescriptor;
import java.io.FileNotFoundException;
@@ -128,7 +128,7 @@ public class WriteableArchive extends Archive {
} catch (Exception e) {
// Since the method takes ownership of the passed descriptor, close it
// on exception.
- IoUtils.closeQuietly(descriptor);
+ FileUtils.closeQuietly(descriptor);
throw e;
}
}
@@ -270,8 +270,8 @@ public class WriteableArchive extends Archive {
}
});
} catch (RejectedExecutionException e) {
- IoUtils.closeQuietly(pipe[0]);
- IoUtils.closeQuietly(pipe[1]);
+ FileUtils.closeQuietly(pipe[0]);
+ FileUtils.closeQuietly(pipe[1]);
throw new IllegalStateException("Failed to initialize pipe.");
}
@@ -311,6 +311,6 @@ public class WriteableArchive extends Archive {
}
}
- IoUtils.closeQuietly(mOutputStream);
+ FileUtils.closeQuietly(mOutputStream);
}
};
diff --git a/src/com/android/documentsui/base/DebugFlags.java b/src/com/android/documentsui/base/DebugFlags.java
index 4c4b9bcab..7e0a70ebc 100644
--- a/src/com/android/documentsui/base/DebugFlags.java
+++ b/src/com/android/documentsui/base/DebugFlags.java
@@ -29,17 +29,17 @@ public final class DebugFlags {
private DebugFlags() {}
- private static String mQvPackage;
+ private static String sQvPackage;
private static boolean sDocumentDetailsEnabled;
private static int sForcedPageOffset = -1;
private static int sForcedPageLimit = -1;
public static void setQuickViewer(@Nullable String qvPackage) {
- mQvPackage = qvPackage;
+ sQvPackage = qvPackage;
}
public static @Nullable String getQuickViewer() {
- return mQvPackage;
+ return sQvPackage;
}
public static void setDocumentDetailsEnabled(boolean enabled) {
diff --git a/src/com/android/documentsui/base/DocumentInfo.java b/src/com/android/documentsui/base/DocumentInfo.java
index 51bdd7514..5b1388dfb 100644
--- a/src/com/android/documentsui/base/DocumentInfo.java
+++ b/src/com/android/documentsui/base/DocumentInfo.java
@@ -31,7 +31,7 @@ import com.android.documentsui.DocumentsApplication;
import com.android.documentsui.archives.ArchivesProvider;
import com.android.documentsui.roots.RootCursorWrapper;
-import libcore.io.IoUtils;
+import android.os.FileUtils;
import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -198,8 +198,8 @@ public class DocumentInfo implements Durable, Parcelable {
} catch (Throwable t) {
throw asFileNotFoundException(t);
} finally {
- IoUtils.closeQuietly(cursor);
- ContentProviderClient.releaseQuietly(client);
+ FileUtils.closeQuietly(cursor);
+ ContentProviderClient.closeQuietly(client);
}
}
diff --git a/src/com/android/documentsui/base/Features.java b/src/com/android/documentsui/base/Features.java
index aacb34d00..7a43791ac 100644
--- a/src/com/android/documentsui/base/Features.java
+++ b/src/com/android/documentsui/base/Features.java
@@ -15,7 +15,6 @@
*/
package com.android.documentsui.base;
-import androidx.annotation.BoolRes;
import android.content.Context;
import android.content.res.Resources;
import android.os.UserManager;
@@ -23,6 +22,8 @@ import android.util.SparseBooleanArray;
import com.android.documentsui.R;
+import androidx.annotation.BoolRes;
+
/**
* Provides access to feature flags configured in config.xml.
*/
@@ -61,7 +62,8 @@ public interface Features {
void forceFeature(@BoolRes int feature, boolean enabled);
public static Features create(Context context) {
- return new RuntimeFeatures(context.getResources(), UserManager.get(context));
+ return new RuntimeFeatures(context.getResources(),
+ context.getSystemService(UserManager.class));
}
final class RuntimeFeatures implements Features {
diff --git a/src/com/android/documentsui/base/Shared.java b/src/com/android/documentsui/base/Shared.java
index cf5e8df6a..67bc4b7f8 100644
--- a/src/com/android/documentsui/base/Shared.java
+++ b/src/com/android/documentsui/base/Shared.java
@@ -18,7 +18,6 @@ package com.android.documentsui.base;
import static com.android.documentsui.base.SharedMinimal.TAG;
-import androidx.annotation.PluralsRes;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentResolver;
@@ -28,7 +27,6 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Configuration;
import android.net.Uri;
-import android.os.Build;
import android.os.Looper;
import android.provider.DocumentsContract;
import android.provider.Settings;
@@ -48,6 +46,8 @@ import java.util.List;
import javax.annotation.Nullable;
+import androidx.annotation.PluralsRes;
+
/** @hide */
public final class Shared {
@@ -184,6 +184,14 @@ public final class Shared {
return sCollator.compare(lhs, rhs);
}
+ private static boolean isSystemApp(ApplicationInfo ai) {
+ return (ai.flags & ApplicationInfo.FLAG_SYSTEM) != 0;
+ }
+
+ private static boolean isUpdatedSystemApp(ApplicationInfo ai) {
+ return (ai.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0;
+ }
+
/**
* Returns the calling package, possibly overridden by EXTRA_PACKAGE_NAME.
* @param activity
@@ -195,9 +203,9 @@ public final class Shared {
try {
ApplicationInfo info =
activity.getPackageManager().getApplicationInfo(callingPackage, 0);
- if (info.isSystemApp() || info.isUpdatedSystemApp()) {
+ if (isSystemApp(info) || isUpdatedSystemApp(info)) {
final String extra = activity.getIntent().getStringExtra(
- DocumentsContract.EXTRA_PACKAGE_NAME);
+ Intent.EXTRA_PACKAGE_NAME);
if (extra != null && !TextUtils.isEmpty(extra)) {
callingPackage = extra;
}
diff --git a/src/com/android/documentsui/base/SharedMinimal.java b/src/com/android/documentsui/base/SharedMinimal.java
index 69bc333cd..00b7d03d6 100644
--- a/src/com/android/documentsui/base/SharedMinimal.java
+++ b/src/com/android/documentsui/base/SharedMinimal.java
@@ -22,7 +22,6 @@ import static com.android.documentsui.ScopedAccessMetrics.SCOPED_DIRECTORY_ACCES
import static com.android.documentsui.ScopedAccessMetrics.SCOPED_DIRECTORY_ACCESS_INVALID_DIRECTORY;
import static com.android.documentsui.ScopedAccessMetrics.logInvalidScopedAccessRequest;
-import androidx.annotation.Nullable;
import android.content.ContentProviderClient;
import android.content.Context;
import android.net.Uri;
@@ -40,6 +39,8 @@ import java.io.File;
import java.io.IOException;
import java.util.List;
+import androidx.annotation.Nullable;
+
/**
* Contains the minimum number of utilities (contants, helpers, etc...) that can be used by both the
* main package and the minimal APK that's used by Android TV (and other devices).
@@ -51,7 +52,7 @@ public final class SharedMinimal {
public static final String TAG = "Documents";
- public static final boolean DEBUG = Build.IS_DEBUGGABLE;
+ public static final boolean DEBUG = !"user".equals(Build.TYPE);
public static final boolean VERBOSE = DEBUG && Log.isLoggable(TAG, Log.VERBOSE);
/**
diff --git a/src/com/android/documentsui/dirlist/DirectoryFragment.java b/src/com/android/documentsui/dirlist/DirectoryFragment.java
index 54d8e43be..d9c7b624f 100644
--- a/src/com/android/documentsui/dirlist/DirectoryFragment.java
+++ b/src/com/android/documentsui/dirlist/DirectoryFragment.java
@@ -391,7 +391,7 @@ public class DirectoryFragment extends Fragment implements SwipeRefreshLayout.On
// on RecyclerView items.
mKeyListener = handlers.createKeyHandler();
- if (Build.IS_DEBUGGABLE) {
+ if (DEBUG) {
new ScaleHelper(this.getContext(), mInjector.features, this::scaleLayout)
.attach(mRecView);
}
@@ -565,7 +565,7 @@ public class DirectoryFragment extends Fragment implements SwipeRefreshLayout.On
* @param mode The new view mode.
*/
private void scaleLayout(float scale) {
- assert Build.IS_DEBUGGABLE;
+ assert DEBUG;
if (VERBOSE) Log.v(
TAG, "Handling scale event: " + scale + ", existing scale: " + mLiveScale);
diff --git a/src/com/android/documentsui/dirlist/ScaleHelper.java b/src/com/android/documentsui/dirlist/ScaleHelper.java
index 9e9e31efe..3f048f5a7 100644
--- a/src/com/android/documentsui/dirlist/ScaleHelper.java
+++ b/src/com/android/documentsui/dirlist/ScaleHelper.java
@@ -16,6 +16,7 @@
package com.android.documentsui.dirlist;
import static androidx.core.util.Preconditions.checkState;
+import static com.android.documentsui.base.SharedMinimal.DEBUG;
import static com.android.documentsui.base.SharedMinimal.VERBOSE;
import android.content.Context;
@@ -61,7 +62,7 @@ final class ScaleHelper {
}
void attach(RecyclerView view) {
- checkState(Build.IS_DEBUGGABLE);
+ checkState(DEBUG);
checkState(mScaleDetector == null);
mScaleDetector = new ScaleGestureDetector(
diff --git a/src/com/android/documentsui/files/ActionHandler.java b/src/com/android/documentsui/files/ActionHandler.java
index 775ec549e..21926561f 100644
--- a/src/com/android/documentsui/files/ActionHandler.java
+++ b/src/com/android/documentsui/files/ActionHandler.java
@@ -179,7 +179,7 @@ public class ActionHandler<T extends Activity & Addons> extends AbstractActionHa
Log.w(TAG, "Failed to rename file", e);
return null;
} finally {
- ContentProviderClient.releaseQuietly(client);
+ ContentProviderClient.closeQuietly(client);
}
}
@@ -695,7 +695,7 @@ public class ActionHandler<T extends Activity & Addons> extends AbstractActionHa
intent.putExtra(
Shared.EXTRA_SHOW_DEBUG,
mFeatures.isDebugSupportEnabled() &&
- (Build.IS_DEBUGGABLE || DebugFlags.getDocumentDetailsEnabled()));
+ (DEBUG || DebugFlags.getDocumentDetailsEnabled()));
// The "root document" (top level folder in a root) don't usually have a
// human friendly display name. That's because we've never shown the root
diff --git a/src/com/android/documentsui/files/QuickViewIntentBuilder.java b/src/com/android/documentsui/files/QuickViewIntentBuilder.java
index edd5afdca..7a7245d10 100644
--- a/src/com/android/documentsui/files/QuickViewIntentBuilder.java
+++ b/src/com/android/documentsui/files/QuickViewIntentBuilder.java
@@ -154,12 +154,11 @@ public final class QuickViewIntentBuilder {
// Allow users of debug devices to override default quick viewer
// for the purposes of testing.
- if (Build.IS_DEBUGGABLE) {
+ if (DEBUG) {
String quickViewer = DebugFlags.getQuickViewer();
if (quickViewer != null) {
return quickViewer;
}
- return android.os.SystemProperties.get("debug.quick_viewer", resValue);
}
return resValue;
}
diff --git a/src/com/android/documentsui/picker/LastAccessedProvider.java b/src/com/android/documentsui/picker/LastAccessedProvider.java
index 20a9d0aab..fbe1df630 100644
--- a/src/com/android/documentsui/picker/LastAccessedProvider.java
+++ b/src/com/android/documentsui/picker/LastAccessedProvider.java
@@ -31,17 +31,15 @@ import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.net.Uri;
import android.os.Bundle;
+import android.os.FileUtils;
import android.provider.DocumentsContract;
import android.util.Log;
import com.android.documentsui.base.DocumentStack;
import com.android.documentsui.base.DurableUtils;
-import libcore.io.IoUtils;
-
-import com.google.android.collect.Sets;
-
import java.io.IOException;
+import java.util.HashSet;
import java.util.Set;
import java.util.function.Predicate;
@@ -190,7 +188,7 @@ public class LastAccessedProvider extends ContentProvider {
if (METHOD_PURGE.equals(method)) {
// Purge references to unknown authorities
final Intent intent = new Intent(DocumentsContract.PROVIDER_INTERFACE);
- final Set<String> knownAuth = Sets.newHashSet();
+ final Set<String> knownAuth = new HashSet<>();
for (ResolveInfo info : getContext()
.getPackageManager().queryIntentContentProviders(intent, 0)) {
knownAuth.add(info.providerInfo.authority);
@@ -210,7 +208,7 @@ public class LastAccessedProvider extends ContentProvider {
// Purge references to authorities in given package
final Intent intent = new Intent(DocumentsContract.PROVIDER_INTERFACE);
intent.setPackage(arg);
- final Set<String> packageAuth = Sets.newHashSet();
+ final Set<String> packageAuth = new HashSet<>();
for (ResolveInfo info : getContext()
.getPackageManager().queryIntentContentProviders(intent, 0)) {
packageAuth.add(info.providerInfo.authority);
@@ -259,7 +257,7 @@ public class LastAccessedProvider extends ContentProvider {
}
}
} finally {
- IoUtils.closeQuietly(cursor);
+ FileUtils.closeQuietly(cursor);
}
}
}
diff --git a/src/com/android/documentsui/picker/LastAccessedStorage.java b/src/com/android/documentsui/picker/LastAccessedStorage.java
index ed38de094..b2b849b2e 100644
--- a/src/com/android/documentsui/picker/LastAccessedStorage.java
+++ b/src/com/android/documentsui/picker/LastAccessedStorage.java
@@ -28,7 +28,7 @@ import com.android.documentsui.base.Shared;
import com.android.documentsui.base.State;
import com.android.documentsui.roots.ProvidersAccess;
-import libcore.io.IoUtils;
+import android.os.FileUtils;
import java.io.IOException;
@@ -69,7 +69,7 @@ public interface LastAccessedStorage {
} catch (IOException e) {
Log.w(TAG, "Failed to resume: ", e);
} finally {
- IoUtils.closeQuietly(cursor);
+ FileUtils.closeQuietly(cursor);
}
return null;
diff --git a/src/com/android/documentsui/roots/ProvidersCache.java b/src/com/android/documentsui/roots/ProvidersCache.java
index 19c56e598..6fcc8d887 100644
--- a/src/com/android/documentsui/roots/ProvidersCache.java
+++ b/src/com/android/documentsui/roots/ProvidersCache.java
@@ -51,7 +51,7 @@ import androidx.annotation.GuardedBy;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
-import libcore.io.IoUtils;
+import android.os.FileUtils;
import java.util.ArrayList;
import java.util.Collection;
@@ -311,8 +311,8 @@ public class ProvidersCache implements ProvidersAccess {
// if forceRefresh is false.
return roots;
} finally {
- IoUtils.closeQuietly(cursor);
- ContentProviderClient.releaseQuietly(client);
+ FileUtils.closeQuietly(cursor);
+ ContentProviderClient.closeQuietly(client);
}
// Cache these freshly parsed roots over in the long-lived system
diff --git a/src/com/android/documentsui/selection/BandSelectionHelper.java b/src/com/android/documentsui/selection/BandSelectionHelper.java
index 86726083f..f5aa4665d 100644
--- a/src/com/android/documentsui/selection/BandSelectionHelper.java
+++ b/src/com/android/documentsui/selection/BandSelectionHelper.java
@@ -18,6 +18,7 @@ package com.android.documentsui.selection;
import static androidx.core.util.Preconditions.checkArgument;
import static androidx.core.util.Preconditions.checkState;
+import static com.android.documentsui.base.SharedMinimal.DEBUG;
import android.graphics.Point;
import android.graphics.Rect;
@@ -52,7 +53,6 @@ import java.util.Set;
*/
public class BandSelectionHelper implements OnItemTouchListener {
- static final boolean DEBUG = false;
static final String TAG = "BandController";
private final BandHost mHost;
@@ -170,7 +170,7 @@ public class BandSelectionHelper implements OnItemTouchListener {
@VisibleForTesting
boolean isActive() {
boolean active = mModel != null;
- if (Build.IS_DEBUGGABLE && active) {
+ if (DEBUG && active) {
mLock.checkLocked();
}
return active;
diff --git a/src/com/android/documentsui/selection/GridModel.java b/src/com/android/documentsui/selection/GridModel.java
index a0c80ddfe..feca271ab 100644
--- a/src/com/android/documentsui/selection/GridModel.java
+++ b/src/com/android/documentsui/selection/GridModel.java
@@ -17,6 +17,7 @@
package com.android.documentsui.selection;
import static androidx.core.util.Preconditions.checkArgument;
+import static com.android.documentsui.base.SharedMinimal.DEBUG;
import android.graphics.Point;
import android.graphics.Rect;
@@ -324,7 +325,7 @@ final class GridModel {
private void updateSelection(
int columnStartIndex, int columnEndIndex, int rowStartIndex, int rowEndIndex) {
- if (BandSelectionHelper.DEBUG) {
+ if (DEBUG) {
Log.d(BandSelectionHelper.TAG, String.format(
"updateSelection: %d, %d, %d, %d",
columnStartIndex, columnEndIndex, rowStartIndex, rowEndIndex));
diff --git a/src/com/android/documentsui/services/CopyJob.java b/src/com/android/documentsui/services/CopyJob.java
index 2953ea4c6..b05f53b6b 100644
--- a/src/com/android/documentsui/services/CopyJob.java
+++ b/src/com/android/documentsui/services/CopyJob.java
@@ -32,7 +32,6 @@ import static com.android.documentsui.services.FileOperationService.MESSAGE_FINI
import static com.android.documentsui.services.FileOperationService.MESSAGE_PROGRESS;
import static com.android.documentsui.services.FileOperationService.OPERATION_COPY;
-import androidx.annotation.StringRes;
import android.app.Notification;
import android.app.Notification.Builder;
import android.app.PendingIntent;
@@ -73,9 +72,6 @@ import com.android.documentsui.base.RootInfo;
import com.android.documentsui.clipping.UrisSupplier;
import com.android.documentsui.roots.ProvidersCache;
import com.android.documentsui.services.FileOperationService.OpType;
-import androidx.annotation.VisibleForTesting;
-
-import libcore.io.IoUtils;
import java.io.FileDescriptor;
import java.io.FileNotFoundException;
@@ -88,6 +84,9 @@ import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Function;
import java.util.function.LongSupplier;
+import androidx.annotation.StringRes;
+import androidx.annotation.VisibleForTesting;
+
class CopyJob extends ResolvedResourcesJob {
private static final String TAG = "CopyJob";
@@ -474,7 +473,7 @@ class CopyJob extends ResolvedResourcesJob {
srcDir.derivedUri.toString(), destDir.derivedUri.toString()), e);
success = false;
} finally {
- IoUtils.closeQuietly(cursor);
+ FileUtils.closeQuietly(cursor);
}
if (!success) {
@@ -565,11 +564,11 @@ class CopyJob extends ResolvedResourcesJob {
try {
final Int64Ref last = new Int64Ref(0);
- FileUtils.copy(in, out, (long progress) -> {
+ FileUtils.copy(in, out, mSignal, Runnable::run, (long progress) -> {
final long delta = progress - last.value;
last.value = progress;
makeCopyProgress(delta);
- }, mSignal);
+ });
} catch (OperationCanceledException e) {
if (DEBUG) Log.d(TAG, "Canceled copy mid-copy of: " + src.derivedUri);
return;
@@ -587,7 +586,11 @@ class CopyJob extends ResolvedResourcesJob {
}
// Need to invoke IoUtils.close explicitly to avoid from ignoring errors at flush.
- IoUtils.close(dstFile.getFileDescriptor());
+ try {
+ Os.close(dstFile.getFileDescriptor());
+ } catch (ErrnoException e) {
+ throw new IOException(e);
+ }
srcFile.checkError();
} catch (IOException e) {
Metrics.logFileOperationFailure(
@@ -624,8 +627,8 @@ class CopyJob extends ResolvedResourcesJob {
}
// This also ensures the file descriptors are closed.
- IoUtils.closeQuietly(in);
- IoUtils.closeQuietly(out);
+ FileUtils.closeQuietly(in);
+ FileUtils.closeQuietly(out);
}
}
@@ -704,7 +707,7 @@ class CopyJob extends ResolvedResourcesJob {
throw new ResourceException(
"Failed to calculate size for %s due to an exception.", uri, e);
} finally {
- IoUtils.closeQuietly(cursor);
+ FileUtils.closeQuietly(cursor);
}
return result;
diff --git a/src/com/android/documentsui/services/Job.java b/src/com/android/documentsui/services/Job.java
index c05bbbd87..e50d50b0a 100644
--- a/src/com/android/documentsui/services/Job.java
+++ b/src/com/android/documentsui/services/Job.java
@@ -209,7 +209,7 @@ abstract public class Job implements Runnable {
final void cleanup() {
for (ContentProviderClient client : mClients.values()) {
- ContentProviderClient.releaseQuietly(client);
+ ContentProviderClient.closeQuietly(client);
}
}
diff --git a/src/com/android/documentsui/sidebar/EjectRootTask.java b/src/com/android/documentsui/sidebar/EjectRootTask.java
index 2baeb4c9e..f7aecf5b5 100644
--- a/src/com/android/documentsui/sidebar/EjectRootTask.java
+++ b/src/com/android/documentsui/sidebar/EjectRootTask.java
@@ -64,7 +64,7 @@ public final class EjectRootTask extends AsyncTask<Void, Void, Boolean> {
} catch (Exception e) {
Log.w(TAG, "Binder call failed.", e);
} finally {
- ContentProviderClient.releaseQuietly(client);
+ ContentProviderClient.closeQuietly(client);
}
return false;
diff --git a/tests/common/com/android/documentsui/DocumentsProviderHelper.java b/tests/common/com/android/documentsui/DocumentsProviderHelper.java
index b4ad5eb78..123f4fb15 100644
--- a/tests/common/com/android/documentsui/DocumentsProviderHelper.java
+++ b/tests/common/com/android/documentsui/DocumentsProviderHelper.java
@@ -44,13 +44,14 @@ import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.roots.RootCursorWrapper;
-import com.google.android.collect.Lists;
-
-import libcore.io.IoUtils;
+import android.os.FileUtils;
import libcore.io.Streams;
+import com.google.common.collect.Lists;
+
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
/**
@@ -81,7 +82,7 @@ public class DocumentsProviderHelper {
} catch (Exception e) {
throw new RuntimeException("Can't load root for id=" + documentId , e);
} finally {
- IoUtils.closeQuietly(cursor);
+ FileUtils.closeQuietly(cursor);
}
}
@@ -352,7 +353,7 @@ public class DocumentsProviderHelper {
} catch (Exception e) {
throw new RuntimeException("Can't load rootInfo list", e);
} finally {
- IoUtils.closeQuietly(cursor);
+ FileUtils.closeQuietly(cursor);
}
return list;
}
diff --git a/tests/common/com/android/documentsui/StubProvider.java b/tests/common/com/android/documentsui/StubProvider.java
index 25a595f4a..4366d318a 100644
--- a/tests/common/com/android/documentsui/StubProvider.java
+++ b/tests/common/com/android/documentsui/StubProvider.java
@@ -35,7 +35,7 @@ import androidx.annotation.VisibleForTesting;
import android.text.TextUtils;
import android.util.Log;
-import libcore.io.IoUtils;
+import android.os.FileUtils;
import java.io.File;
import java.io.FileNotFoundException;
@@ -472,8 +472,8 @@ public class StubProvider extends DocumentsProvider {
Log.e(TAG, "Error on close", e);
closePipeWithErrorSilently(readPipe, e.getMessage());
} finally {
- IoUtils.closeQuietly(inputStream);
- IoUtils.closeQuietly(outputStream);
+ FileUtils.closeQuietly(inputStream);
+ FileUtils.closeQuietly(outputStream);
Log.d(TAG, "Closing write stream on file " + document.documentId);
notifyParentChanged(document.parentId);
getContext().getContentResolver().notifyChange(
diff --git a/tests/unit/com/android/documentsui/archives/ResourcesProvider.java b/tests/unit/com/android/documentsui/archives/ResourcesProvider.java
index b9ddb92b1..165532ff7 100644
--- a/tests/unit/com/android/documentsui/archives/ResourcesProvider.java
+++ b/tests/unit/com/android/documentsui/archives/ResourcesProvider.java
@@ -32,7 +32,7 @@ import android.provider.DocumentsContract.Root;
import android.provider.DocumentsProvider;
import android.webkit.MimeTypeMap;
-import libcore.io.IoUtils;
+import android.os.FileUtils;
import java.io.File;
import java.io.FileNotFoundException;
@@ -152,7 +152,7 @@ public class ResourcesProvider extends DocumentsProvider {
row.add(Document.COLUMN_SIZE, fd.getLength());
}
finally {
- IoUtils.closeQuietly(fd);
+ FileUtils.closeQuietly(fd);
}
}
}
diff --git a/tests/unit/com/android/documentsui/services/FileOperationServiceTest.java b/tests/unit/com/android/documentsui/services/FileOperationServiceTest.java
index fbaafe803..ae51dd174 100644
--- a/tests/unit/com/android/documentsui/services/FileOperationServiceTest.java
+++ b/tests/unit/com/android/documentsui/services/FileOperationServiceTest.java
@@ -20,7 +20,6 @@ import static com.android.documentsui.services.FileOperationService.OPERATION_CO
import static com.android.documentsui.services.FileOperationService.OPERATION_DELETE;
import static com.android.documentsui.services.FileOperations.createBaseIntent;
import static com.android.documentsui.services.FileOperations.createJobId;
-import static com.google.android.collect.Lists.newArrayList;
import static org.junit.Assert.fail;
import android.content.Context;
@@ -44,6 +43,7 @@ import com.android.documentsui.testing.TestHandler;
import com.android.documentsui.testing.TestScheduledExecutorService;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
@MediumTest
@@ -121,8 +121,8 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
}
public void testRunsCopyJobs() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
- startService(createCopyIntent(newArrayList(GAMMA_DOC), DELTA_DOC));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
+ startService(createCopyIntent(Arrays.asList(GAMMA_DOC), DELTA_DOC));
mExecutor.runAll();
assertAllCopyJobsStarted();
@@ -135,7 +135,7 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
} catch(IllegalArgumentException expected) {
// We're sending a naughty empty list that should result in an IllegalArgumentException.
}
- startService(createCopyIntent(newArrayList(GAMMA_DOC), DELTA_DOC));
+ startService(createCopyIntent(Arrays.asList(GAMMA_DOC), DELTA_DOC));
assertJobsCreated(1);
@@ -144,8 +144,8 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
}
public void testRunsCopyJobs_AfterFailure() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
- startService(createCopyIntent(newArrayList(GAMMA_DOC), DELTA_DOC));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
+ startService(createCopyIntent(Arrays.asList(GAMMA_DOC), DELTA_DOC));
mCopyJobs.get(0).fail(ALPHA_DOC);
@@ -154,30 +154,30 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
}
public void testRunsCopyJobs_notRunsDeleteJobs() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
- startService(createDeleteIntent(newArrayList(GAMMA_DOC)));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
+ startService(createDeleteIntent(Arrays.asList(GAMMA_DOC)));
mExecutor.runAll();
assertNoDeleteJobsStarted();
}
public void testRunsDeleteJobs() throws Exception {
- startService(createDeleteIntent(newArrayList(ALPHA_DOC)));
+ startService(createDeleteIntent(Arrays.asList(ALPHA_DOC)));
mDeletionExecutor.runAll();
assertAllDeleteJobsStarted();
}
public void testRunsDeleteJobs_NotRunsCopyJobs() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
- startService(createDeleteIntent(newArrayList(GAMMA_DOC)));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
+ startService(createDeleteIntent(Arrays.asList(GAMMA_DOC)));
mDeletionExecutor.runAll();
assertNoCopyJobsStarted();
}
public void testUpdatesNotification() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
mExecutor.runAll();
// Assert monitoring continues until job is done
@@ -187,7 +187,7 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
}
public void testStopsUpdatingNotificationAfterFinished() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
mExecutor.runAll();
mHandler.dispatchNextMessage();
@@ -200,13 +200,13 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
}
public void testHoldsWakeLockWhileWorking() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
assertTrue(mService.holdsWakeLock());
}
public void testReleasesWakeLock_AfterSuccess() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
assertTrue(mService.holdsWakeLock());
mExecutor.runAll();
@@ -214,7 +214,7 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
}
public void testReleasesWakeLock_AfterFailure() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
assertTrue(mService.holdsWakeLock());
mExecutor.runAll();
@@ -222,7 +222,7 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
}
public void testShutdownStopsExecutor_AfterSuccess() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
mExecutor.assertAlive();
mDeletionExecutor.assertAlive();
@@ -234,8 +234,8 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
}
public void testShutdownStopsExecutor_AfterMixedFailures() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
- startService(createCopyIntent(newArrayList(GAMMA_DOC), DELTA_DOC));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
+ startService(createCopyIntent(Arrays.asList(GAMMA_DOC), DELTA_DOC));
mCopyJobs.get(0).fail(ALPHA_DOC);
@@ -246,8 +246,8 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
}
public void testShutdownStopsExecutor_AfterTotalFailure() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
- startService(createCopyIntent(newArrayList(GAMMA_DOC), DELTA_DOC));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
+ startService(createCopyIntent(Arrays.asList(GAMMA_DOC), DELTA_DOC));
mCopyJobs.get(0).fail(ALPHA_DOC);
mCopyJobs.get(1).fail(GAMMA_DOC);
@@ -259,8 +259,8 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
}
public void testRunsInForeground_MultipleJobs() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
- startService(createCopyIntent(newArrayList(GAMMA_DOC), DELTA_DOC));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
+ startService(createCopyIntent(Arrays.asList(GAMMA_DOC), DELTA_DOC));
mExecutor.run(0);
mForegroundManager.assertInForeground();
@@ -270,8 +270,8 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
}
public void testFinishesInBackground_MultipleJobs() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
- startService(createCopyIntent(newArrayList(GAMMA_DOC), DELTA_DOC));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
+ startService(createCopyIntent(Arrays.asList(GAMMA_DOC), DELTA_DOC));
mExecutor.run(0);
mForegroundManager.assertInForeground();
@@ -285,8 +285,8 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
}
public void testAllNotificationsDismissedAfterShutdown() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
- startService(createCopyIntent(newArrayList(GAMMA_DOC), DELTA_DOC));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
+ startService(createCopyIntent(Arrays.asList(GAMMA_DOC), DELTA_DOC));
mExecutor.runAll();
@@ -295,8 +295,8 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
}
public void testNotificationUpdateAfterForegroundJobSwitch() throws Exception {
- startService(createCopyIntent(newArrayList(ALPHA_DOC), BETA_DOC));
- startService(createCopyIntent(newArrayList(GAMMA_DOC), DELTA_DOC));
+ startService(createCopyIntent(Arrays.asList(ALPHA_DOC), BETA_DOC));
+ startService(createCopyIntent(Arrays.asList(GAMMA_DOC), DELTA_DOC));
Job job1 = mCopyJobs.get(0);
Job job2 = mCopyJobs.get(1);
@@ -320,7 +320,7 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
mTestNotificationManager.assertNumberOfNotifications(0);
}
- private Intent createCopyIntent(ArrayList<DocumentInfo> files, DocumentInfo dest)
+ private Intent createCopyIntent(List<DocumentInfo> files, DocumentInfo dest)
throws Exception {
DocumentStack stack = new DocumentStack();
stack.push(dest);
@@ -336,7 +336,7 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
return createBaseIntent(getContext(), createJobId(), operation);
}
- private Intent createDeleteIntent(ArrayList<DocumentInfo> files) {
+ private Intent createDeleteIntent(List<DocumentInfo> files) {
DocumentStack stack = new DocumentStack();
List<Uri> uris = new ArrayList<>(files.size());
@@ -388,6 +388,7 @@ public class FileOperationServiceTest extends ServiceTestCase<FileOperationServi
void assertJobsCreated(int expected) {
assertEquals(expected, mCopyJobs.size() + mDeleteJobs.size());
}
+
private static DocumentInfo createDoc(Uri destination) {
DocumentInfo destDoc = new DocumentInfo();
destDoc.derivedUri = destination;