| Index: components/cronet/android/test/src/org/chromium/net/TestFilesInstaller.java
|
| diff --git a/components/cronet/android/test/src/org/chromium/net/TestFilesInstaller.java b/components/cronet/android/test/src/org/chromium/net/TestFilesInstaller.java
|
| index 5303e6ec9ae18f96f8aa5c9f02e62b3fff4f625b..b6ff4f5ec37a4b4eaefd51a0a9bbe96c3c15a09f 100644
|
| --- a/components/cronet/android/test/src/org/chromium/net/TestFilesInstaller.java
|
| +++ b/components/cronet/android/test/src/org/chromium/net/TestFilesInstaller.java
|
| @@ -12,6 +12,7 @@ import org.chromium.base.PathUtils;
|
|
|
| import java.io.File;
|
| import java.io.FileOutputStream;
|
| +import java.io.IOException;
|
| import java.io.InputStream;
|
| import java.io.OutputStream;
|
|
|
| @@ -30,14 +31,19 @@ public final class TestFilesInstaller {
|
| if (areFilesInstalled(context)) {
|
| return;
|
| }
|
| - install(context);
|
| + try {
|
| + install(context, TEST_FILE_ASSET_PATH);
|
| + } catch (IOException e) {
|
| + // Make the test app crash and fail early.
|
| + throw new RuntimeException(e);
|
| + }
|
| }
|
|
|
| /**
|
| * Returns the installed path of the test files.
|
| */
|
| public static String getInstalledPath(Context context) {
|
| - return PathUtils.getDataDirectory(context) + "/test";
|
| + return PathUtils.getDataDirectory(context) + "/" + TEST_FILE_ASSET_PATH;
|
| }
|
|
|
| /**
|
| @@ -51,34 +57,30 @@ public final class TestFilesInstaller {
|
| }
|
|
|
| /**
|
| - * Installs test files that are included in assets.
|
| + * Installs test files that are included in {@code path}.
|
| * @params context Application context
|
| + * @params path
|
| */
|
| - private static void install(Context context) {
|
| + private static void install(Context context, String path) throws IOException {
|
| AssetManager assetManager = context.getAssets();
|
| - try {
|
| - String[] files = assetManager.list(TEST_FILE_ASSET_PATH);
|
| - String destDir = getInstalledPath(context);
|
| - File destDirFile = new File(destDir);
|
| - if (!destDirFile.mkdir()) {
|
| - throw new IllegalStateException(
|
| - "directory exists or it cannot be created.");
|
| + String files[] = null;
|
| + Log.i(TAG, "Loading " + path + " ...");
|
| + String root = PathUtils.getDataDirectory(context);
|
| + files = assetManager.list(path);
|
| + if (files.length == 0) {
|
| + copyTestFile(assetManager, path, root + "/" + path);
|
| + } else {
|
| + String fullPath = root + "/" + path;
|
| + File dir = new File(fullPath);
|
| + if (!dir.exists()) {
|
| + Log.i(TAG, "Creating directory " + fullPath + " ...");
|
| + dir.mkdir();
|
| }
|
| - Log.i(TAG, "Begin loading " + files.length + " test files.");
|
| - for (String fileName : files) {
|
| - Log.i(TAG, "Loading " + fileName);
|
| - String destFilePath = destDir + "/" + fileName;
|
| - if (!copyTestFile(assetManager,
|
| - TEST_FILE_ASSET_PATH + "/" + fileName,
|
| - destFilePath)) {
|
| - Log.e(TAG, "Loading " + fileName + " failed.");
|
| - }
|
| + for (int i = 0; i < files.length; i++) {
|
| + install(context, path + "/" + files[i]);
|
| }
|
| - } catch (Exception e) {
|
| - e.printStackTrace();
|
| }
|
| }
|
| -
|
| /**
|
| * Copies a file from assets to the device's file system.
|
| * @param assetManager AssetManager of the application.
|
| @@ -86,41 +88,24 @@ public final class TestFilesInstaller {
|
| * @param destFilePath the destination file path.
|
| * @throws IllegalStateException if the destination file already exists.
|
| */
|
| - private static boolean copyTestFile(AssetManager assetManager,
|
| - String srcFilePath,
|
| - String destFilePath) {
|
| + private static void copyTestFile(AssetManager assetManager,
|
| + String srcFilePath,
|
| + String destFilePath) throws IOException {
|
| OutputStream out;
|
| - try {
|
| - File destFile = new File(destFilePath);
|
| - if (destFile.exists()) {
|
| - throw new IllegalStateException(srcFilePath
|
| - + " already exists");
|
| - }
|
| - out = new FileOutputStream(destFilePath);
|
| - } catch (Exception e) {
|
| - e.printStackTrace();
|
| - return false;
|
| + File destFile = new File(destFilePath);
|
| + if (destFile.exists()) {
|
| + throw new IllegalStateException(srcFilePath + " already exists");
|
| }
|
| - try {
|
| - InputStream in = assetManager.open(srcFilePath);
|
| + out = new FileOutputStream(destFilePath);
|
| + InputStream in = assetManager.open(srcFilePath);
|
|
|
| - byte[] buffer = new byte[1024];
|
| - int read;
|
| - while ((read = in.read(buffer)) != -1) {
|
| - out.write(buffer, 0, read);
|
| - }
|
| - in.close();
|
| - out.flush();
|
| - out.close();
|
| - return true;
|
| - } catch (Exception e) {
|
| - try {
|
| - out.close();
|
| - } catch (Exception closeException) {
|
| - closeException.printStackTrace();
|
| - }
|
| - e.printStackTrace();
|
| - return false;
|
| + byte[] buffer = new byte[1024];
|
| + int read;
|
| + while ((read = in.read(buffer)) != -1) {
|
| + out.write(buffer, 0, read);
|
| }
|
| + in.close();
|
| + out.flush();
|
| + out.close();
|
| }
|
| }
|
|
|