Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/download/ChromeDownloadDelegate.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/ChromeDownloadDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/download/ChromeDownloadDelegate.java |
| index e1854b61ca34699c7519b5cce3ce78a761d6c616..83614fd0bb9e96c9c0e8a87235bb83896923b3ae 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/download/ChromeDownloadDelegate.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/ChromeDownloadDelegate.java |
| @@ -15,7 +15,6 @@ import android.os.AsyncTask; |
| import android.os.Environment; |
| import android.support.v7.app.AlertDialog; |
| import android.text.TextUtils; |
| -import android.util.Pair; |
| import android.view.View; |
| import android.webkit.MimeTypeMap; |
| import android.webkit.URLUtil; |
| @@ -85,20 +84,17 @@ public class ChromeDownloadDelegate { |
| protected Object[] doInBackground(Void... params) { |
| // Check to see if we have an SDCard. |
| String status = Environment.getExternalStorageState(); |
| - Pair<String, String> result = getDownloadDirectoryNameAndFullPath(); |
| - String dirName = result.first; |
| - String fullDirPath = result.second; |
| + File fullDirPath = getDownloadDirectoryFullPath(); |
| boolean fileExists = doesFileAlreadyExists(fullDirPath, fileName); |
|
gone
2016/11/07 19:45:55
nit: Can you rename this function? It's not gramm
qinmin
2016/11/08 00:30:49
Done. Changed to checkFileExists
|
| - return new Object[] {status, dirName, fullDirPath, fileExists}; |
| + return new Object[] {status, fullDirPath, fileExists}; |
| } |
| @Override |
| protected void onPostExecute(Object[] result) { |
| String externalStorageState = (String) result[0]; |
| - String dirName = (String) result[1]; |
| - String fullDirPath = (String) result[2]; |
| - Boolean fileExists = (Boolean) result[3]; |
| + File fullDirPath = (File) result[1]; |
| + Boolean fileExists = (Boolean) result[2]; |
| if (!checkExternalStorageAndNotify( |
| fileName, fullDirPath, externalStorageState)) { |
| return; |
| @@ -120,7 +116,7 @@ public class ChromeDownloadDelegate { |
| // Not a dangerous file, proceed. |
| if (fileExists) { |
| - launchDownloadInfoBar(newInfo, dirName, fullDirPath); |
| + launchDownloadInfoBar(newInfo, fullDirPath); |
| } else { |
| enqueueDownloadManagerRequest(newInfo); |
| } |
| @@ -196,22 +192,18 @@ public class ChromeDownloadDelegate { |
| } |
| /** |
| - * Return a pair of directory name and its full path. Note that we create the directory if |
| - * it does not already exist. |
| + * Return the full path of the download directory. |
| * |
| - * @return A pair of directory name and its full path. A pair of <null, null> will be returned |
| - * in case of an error. |
| + * @return File object containing the path to the download directory. |
| */ |
| - private static Pair<String, String> getDownloadDirectoryNameAndFullPath() { |
| + private static File getDownloadDirectoryFullPath() { |
| assert !ThreadUtils.runningOnUiThread(); |
| File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); |
| - if (!dir.mkdir() && !dir.isDirectory()) return new Pair<>(null, null); |
| - String dirName = dir.getName(); |
| - String fullDirPath = dir.getPath(); |
| - return new Pair<>(dirName, fullDirPath); |
| + if (!dir.mkdir() && !dir.isDirectory()) return null; |
| + return dir; |
| } |
| - private static boolean doesFileAlreadyExists(String dirPath, final String fileName) { |
| + private static boolean doesFileAlreadyExists(File dirPath, final String fileName) { |
| assert !ThreadUtils.runningOnUiThread(); |
| final File file = new File(dirPath, fileName); |
| return file != null && file.exists(); |
| @@ -259,10 +251,10 @@ public class ChromeDownloadDelegate { |
| return closeBlankTab(); |
| } |
| - private void launchDownloadInfoBar(DownloadInfo info, String dirName, String fullDirPath) { |
| + private void launchDownloadInfoBar(DownloadInfo info, File fullDirPath) { |
| if (mTab == null) return; |
| - nativeLaunchDownloadOverwriteInfoBar( |
| - ChromeDownloadDelegate.this, mTab, info, info.getFileName(), dirName, fullDirPath); |
| + nativeLaunchDuplicateDownloadInfoBar(ChromeDownloadDelegate.this, mTab, info, |
| + new File(fullDirPath, info.getFileName()).toString()); |
| } |
| /** |
| @@ -285,7 +277,7 @@ public class ChromeDownloadDelegate { |
| * @return Whether external storage is ok for downloading. |
| */ |
| private boolean checkExternalStorageAndNotify( |
| - String filename, String fullDirPath, String externalStorageStatus) { |
| + String filename, File fullDirPath, String externalStorageStatus) { |
| if (fullDirPath == null) { |
| Log.e(TAG, "Download failed: no SD card"); |
| alertDownloadFailure( |
| @@ -484,9 +476,8 @@ public class ChromeDownloadDelegate { |
| private native void nativeInit(WebContents webContents); |
| private static native String nativeGetDownloadWarningText(String filename); |
| private static native boolean nativeIsDownloadDangerous(String filename); |
| - private static native void nativeLaunchDownloadOverwriteInfoBar(ChromeDownloadDelegate delegate, |
| - Tab tab, DownloadInfo downloadInfo, String fileName, String dirName, |
| - String dirFullPath); |
| + private static native void nativeLaunchDuplicateDownloadInfoBar(ChromeDownloadDelegate delegate, |
| + Tab tab, DownloadInfo downloadInfo, String filePath); |
| private static native void nativeLaunchPermissionUpdateInfoBar( |
| Tab tab, String permission, long callbackId); |
| } |