| Index: ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
| diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
| index 368d9e78be7a159091fd58445b930a961ec88612..2b10d1a5fb5b124fc8f1bba0882dd57ace0ea98a 100644
|
| --- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
| +++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java
|
| @@ -54,6 +54,16 @@ public class SelectFileDialog
|
| private static final String ALL_AUDIO_TYPES = AUDIO_TYPE + "*";
|
| private static final String ANY_TYPES = "*/*";
|
|
|
| + // A list of some of the more popular image extensions. Not meant to be
|
| + // exhaustive, but should cover the vast majority of image types.
|
| + private static final String[] POPULAR_IMAGE_EXTENSIONS = new String[] {".apng", ".bmp", ".gif",
|
| + ".jpeg", ".jpg", ".pdf", ".png", ".tif", ".tiff", ".xcf", ".webp"};
|
| +
|
| + // A list of some of the more popular video extensions. Not meant to be
|
| + // exhaustive, but should cover the vast majority of video types.
|
| + private static final String[] POPULAR_VIDEO_EXTENSIONS = new String[] {".asf", ".avhcd", ".avi",
|
| + ".divx", ".flv", ".mov", ".mp4", ".mpeg", ".mpg", ".swf", ".wmv", ".webm", ".mkv"};
|
| +
|
| /**
|
| * The SELECT_FILE_DIALOG_SCOPE_* enumerations are used to measure the sort of content that
|
| * developers are requesting to be shown in the select file dialog. Values must be kept in sync
|
| @@ -388,8 +398,33 @@ public class SelectFileDialog
|
| int determineSelectFileDialogScope() {
|
| if (mFileTypes.size() == 0) return SELECT_FILE_DIALOG_SCOPE_GENERIC;
|
|
|
| + // Capture the MIME types:
|
| int acceptsImages = countAcceptTypesFor(IMAGE_TYPE);
|
| int acceptsVideos = countAcceptTypesFor(VIDEO_TYPE);
|
| +
|
| + // Capture the most common image and video extensions:
|
| + if (mFileTypes.size() > acceptsImages + acceptsVideos) {
|
| + for (String left : mFileTypes) {
|
| + boolean found = false;
|
| + for (String right : POPULAR_IMAGE_EXTENSIONS) {
|
| + if (left.equalsIgnoreCase(right)) {
|
| + found = true;
|
| + acceptsImages++;
|
| + break;
|
| + }
|
| + }
|
| +
|
| + if (found) continue;
|
| +
|
| + for (String right : POPULAR_VIDEO_EXTENSIONS) {
|
| + if (left.equalsIgnoreCase(right)) {
|
| + acceptsVideos++;
|
| + break;
|
| + }
|
| + }
|
| + }
|
| + }
|
| +
|
| int acceptsOthers = mFileTypes.size() - acceptsImages - acceptsVideos;
|
|
|
| if (acceptsOthers > 0) return SELECT_FILE_DIALOG_SCOPE_GENERIC;
|
|
|