Move internal DownloadProvider code off libcore.os.
Elliott Hughes [Mon, 28 Apr 2014 23:49:06 +0000 (16:49 -0700)]
(As much as possible. There are no plans to make the mocking API public.)

Change-Id: I348877b850d6d34572d5a19e67952254bc4f12ef

src/com/android/providers/downloads/DownloadThread.java
src/com/android/providers/downloads/StorageUtils.java
tests/src/com/android/providers/downloads/StorageTest.java

index 6c7cdc6..aeb28c6 100644 (file)
@@ -54,15 +54,15 @@ import android.os.Process;
 import android.os.SystemClock;
 import android.os.WorkSource;
 import android.provider.Downloads;
+import android.system.ErrnoException;
+import android.system.Os;
+import android.system.OsConstants;
 import android.util.Log;
 import android.util.Pair;
 
 import com.android.providers.downloads.DownloadInfo.NetworkState;
 
-import libcore.io.ErrnoException;
 import libcore.io.IoUtils;
-import libcore.io.Libcore;
-import libcore.io.OsConstants;
 
 import java.io.File;
 import java.io.FileDescriptor;
@@ -459,18 +459,18 @@ public class DownloadThread implements Runnable {
 
                 // Pre-flight disk space requirements, when known
                 if (mInfoDelta.mTotalBytes > 0) {
-                    final long curSize = Libcore.os.fstat(outFd).st_size;
+                    final long curSize = Os.fstat(outFd).st_size;
                     final long newBytes = mInfoDelta.mTotalBytes - curSize;
 
                     StorageUtils.ensureAvailableSpace(mContext, outFd, newBytes);
 
                     try {
                         // We found enough space, so claim it for ourselves
-                        Libcore.os.posix_fallocate(outFd, 0, mInfoDelta.mTotalBytes);
+                        Os.posix_fallocate(outFd, 0, mInfoDelta.mTotalBytes);
                     } catch (ErrnoException e) {
                         if (e.errno == OsConstants.ENOTSUP) {
                             Log.w(TAG, "fallocate() said ENOTSUP; falling back to ftruncate()");
-                            Libcore.os.ftruncate(outFd, mInfoDelta.mTotalBytes);
+                            Os.ftruncate(outFd, mInfoDelta.mTotalBytes);
                         } else {
                             throw e;
                         }
@@ -478,7 +478,7 @@ public class DownloadThread implements Runnable {
                 }
 
                 // Move into place to begin writing
-                Libcore.os.lseek(outFd, mInfoDelta.mCurrentBytes, SEEK_SET);
+                Os.lseek(outFd, mInfoDelta.mCurrentBytes, SEEK_SET);
 
             } catch (ErrnoException e) {
                 throw new StopRequestException(STATUS_FILE_ERROR, e);
@@ -540,7 +540,7 @@ public class DownloadThread implements Runnable {
             try {
                 // When streaming, ensure space before each write
                 if (mInfoDelta.mTotalBytes == -1) {
-                    final long curSize = Libcore.os.fstat(outFd).st_size;
+                    final long curSize = Os.fstat(outFd).st_size;
                     final long newBytes = (mInfoDelta.mCurrentBytes + len) - curSize;
 
                     StorageUtils.ensureAvailableSpace(mContext, outFd, newBytes);
@@ -577,7 +577,7 @@ public class DownloadThread implements Runnable {
                 final ParcelFileDescriptor target = mContext.getContentResolver()
                         .openFileDescriptor(mInfo.getAllDownloadsUri(), "rw");
                 try {
-                    Libcore.os.ftruncate(target.getFileDescriptor(), 0);
+                    Os.ftruncate(target.getFileDescriptor(), 0);
                 } catch (ErrnoException ignored) {
                 } finally {
                     IoUtils.closeQuietly(target);
@@ -596,7 +596,7 @@ public class DownloadThread implements Runnable {
             if (mInfoDelta.mFileName != null) {
                 try {
                     // TODO: remove this once PackageInstaller works with content://
-                    Libcore.os.chmod(mInfoDelta.mFileName, 0644);
+                    Os.chmod(mInfoDelta.mFileName, 0644);
                 } catch (ErrnoException ignored) {
                 }
 
index ad08c5d..1817c75 100644 (file)
@@ -30,6 +30,10 @@ import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.os.Environment;
 import android.provider.Downloads;
+import android.system.ErrnoException;
+import android.system.Os;
+import android.system.StructStat;
+import android.system.StructStatVfs;
 import android.text.TextUtils;
 import android.util.Slog;
 
@@ -37,11 +41,7 @@ import com.android.internal.annotations.VisibleForTesting;
 import com.google.android.collect.Lists;
 import com.google.android.collect.Sets;
 
-import libcore.io.ErrnoException;
 import libcore.io.IoUtils;
-import libcore.io.Libcore;
-import libcore.io.StructStat;
-import libcore.io.StructStatVfs;
 
 import java.io.File;
 import java.io.FileDescriptor;
@@ -100,7 +100,7 @@ public class StorageUtils {
         // the backing partition.
         final long dev;
         try {
-            dev = Libcore.os.fstat(fd).st_dev;
+            dev = Os.fstat(fd).st_dev;
         } catch (ErrnoException e) {
             throw e.rethrowAsIOException();
         }
@@ -178,7 +178,7 @@ public class StorageUtils {
      */
     private static long getAvailableBytes(FileDescriptor fd) throws IOException {
         try {
-            final StructStatVfs stat = Libcore.os.fstatvfs(fd);
+            final StructStatVfs stat = Os.fstatvfs(fd);
             return (stat.f_bavail * stat.f_bsize) - RESERVED_BYTES;
         } catch (ErrnoException e) {
             throw e.rethrowAsIOException();
@@ -187,7 +187,7 @@ public class StorageUtils {
 
     private static long getDeviceId(File file) {
         try {
-            return Libcore.os.stat(file.getAbsolutePath()).st_dev;
+            return Os.stat(file.getAbsolutePath()).st_dev;
         } catch (ErrnoException e) {
             // Safe since dev_t is uint
             return -1;
@@ -239,7 +239,7 @@ public class StorageUtils {
 
         public ConcreteFile(File file) throws ErrnoException {
             this.file = file;
-            this.stat = Libcore.os.lstat(file.getAbsolutePath());
+            this.stat = Os.lstat(file.getAbsolutePath());
         }
 
         @Override
index 6a65beb..8ba3cbc 100644 (file)
@@ -29,6 +29,7 @@ import android.os.Environment;
 import android.os.StatFs;
 import android.provider.Downloads.Impl;
 import android.system.ErrnoException;
+import android.system.Os;
 import android.system.StructStatVfs;
 import android.test.MoreAsserts;
 import android.util.Log;
@@ -39,8 +40,6 @@ import com.google.mockwebserver.SocketPolicy;
 
 import libcore.io.ForwardingOs;
 import libcore.io.IoUtils;
-import libcore.io.Libcore;
-import libcore.io.Os;
 
 import java.io.File;
 import java.io.FileDescriptor;
@@ -61,7 +60,7 @@ public class StorageTest extends AbstractPublicApiTest {
         }
     }
 
-    private Os mOriginal;
+    private libcore.io.Os mOriginal;
     private long mStealBytes;
 
     public StorageTest() {
@@ -75,8 +74,8 @@ public class StorageTest extends AbstractPublicApiTest {
         StorageUtils.sForceFullEviction = true;
         mStealBytes = 0;
 
-        mOriginal = Libcore.os;
-        Libcore.os = new ForwardingOs(mOriginal) {
+        mOriginal = libcore.io.Libcore.os;
+        libcore.io.Libcore.os = new ForwardingOs(mOriginal) {
             @Override
             public StructStatVfs statvfs(String path) throws ErrnoException {
                 return stealBytes(os.statvfs(path));
@@ -104,7 +103,7 @@ public class StorageTest extends AbstractPublicApiTest {
         mStealBytes = 0;
 
         if (mOriginal != null) {
-            Libcore.os = mOriginal;
+            libcore.io.Libcore.os = mOriginal;
         }
     }
 
@@ -196,7 +195,7 @@ public class StorageTest extends AbstractPublicApiTest {
             assertTrue(dirtyFile.createNewFile());
             final FileOutputStream os = new FileOutputStream(dirtyFile);
             final int dirtySize = (DOWNLOAD_SIZE * 3) / 2;
-            Libcore.os.posix_fallocate(os.getFD(), 0, dirtySize);
+            Os.posix_fallocate(os.getFD(), 0, dirtySize);
             IoUtils.closeQuietly(os);
 
             dirtyFile.setLastModified(