Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4407)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerDelegate.java

Issue 2334163003: Fix an issue when parsing extension from file name with white spaces (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerDelegate.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerDelegate.java
index dac1177eeaca2dfcb091a6bea7a6a21cab6ce354..95e85851106b07085b98ec73c18c08ff74327fbd 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadManagerDelegate.java
@@ -7,12 +7,20 @@ package org.chromium.chrome.browser.download;
import android.app.DownloadManager;
import android.content.Context;
import android.database.Cursor;
+import android.net.Uri;
import android.os.AsyncTask;
+import android.os.Build;
+
+import org.chromium.base.Log;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
/**
* A wrapper for Android DownloadManager to provide utility functions.
*/
public class DownloadManagerDelegate {
+ private static final String TAG = "DownloadDelegate";
protected final Context mContext;
public DownloadManagerDelegate(Context context) {
@@ -29,6 +37,26 @@ public class DownloadManagerDelegate {
(DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE);
String newMimeType =
ChromeDownloadDelegate.remapGenericMimeType(mimeType, originalUrl, fileName);
+ if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
+ Class<?> c = manager.getClass();
+ try {
+ Class[] args = {String.class, String.class, boolean.class, String.class,
+ String.class, long.class, boolean.class, Uri.class, Uri.class};
+ Method method = c.getMethod("addCompletedDownload", args);
+ Uri originalUri = Uri.parse(originalUrl);
+ Uri refererUri = referer == null ? Uri.EMPTY : Uri.parse(referer);
+ return (Long) method.invoke(manager, fileName, description, true, newMimeType, path,
+ length, false, originalUri, refererUri);
+ } catch (SecurityException e) {
+ Log.e(TAG, "Cannot access the needed method.");
+ } catch (NoSuchMethodException e) {
+ Log.e(TAG, "Cannot find the needed method.");
+ } catch (InvocationTargetException e) {
+ Log.e(TAG, "Error calling the needed method.");
+ } catch (IllegalAccessException e) {
+ Log.e(TAG, "Error accessing the needed method.");
+ }
+ }
return manager.addCompletedDownload(fileName, description, true, newMimeType, path, length,
false);
}

Powered by Google App Engine
This is Rietveld 408576698