| Index: ui/android/java/src/org/chromium/ui/SelectFileDialog.java | 
| diff --git a/ui/android/java/src/org/chromium/ui/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/SelectFileDialog.java | 
| index 91533b52cf0f1a9a8a3b4bac233cd60cbbf86966..c42c4c7a08d998ca9bce7611117ca4e188569893 100644 | 
| --- a/ui/android/java/src/org/chromium/ui/SelectFileDialog.java | 
| +++ b/ui/android/java/src/org/chromium/ui/SelectFileDialog.java | 
| @@ -144,43 +144,50 @@ class SelectFileDialog implements WindowAndroid.IntentCallback{ | 
| onFileNotSelected(); | 
| return; | 
| } | 
| -        boolean success = false; | 
| + | 
| if (results == null) { | 
| // If we have a successful return but no data, then assume this is the camera returning | 
| // the photo that we requested. | 
| nativeOnFileSelected(mNativeSelectFileDialog, mCameraOutputUri.getPath()); | 
| -            success = true; | 
|  | 
| // Broadcast to the media scanner that there's a new photo on the device so it will | 
| // show up right away in the gallery (rather than waiting until the next time the media | 
| // scanner runs). | 
| window.sendBroadcast(new Intent( | 
| Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, mCameraOutputUri)); | 
| -        } else { | 
| +            return; | 
| +        } | 
| + | 
| +        if ("file".equals(results.getData().getScheme())) { | 
| +            nativeOnFileSelected(mNativeSelectFileDialog, | 
| +                    results.getData().getSchemeSpecificPart()); | 
| +            return; | 
| +        } | 
| + | 
| +        Cursor cursor = null; | 
| +        try { | 
| // We get back a content:// URI from the system if the user picked a file from the | 
| // gallery. The ContentView has functionality that will convert that content:// URI to | 
| // a file path on disk that Chromium understands. | 
| -            Cursor c = contentResolver.query(results.getData(), | 
| +            cursor = contentResolver.query(results.getData(), | 
| new String[] { MediaStore.MediaColumns.DATA }, null, null, null); | 
| -            if (c != null) { | 
| -                if (c.getCount() == 1) { | 
| -                    c.moveToFirst(); | 
| -                    String path = c.getString(0); | 
| +            if (cursor != null) { | 
| +                if (cursor.getCount() == 1) { | 
| +                    cursor.moveToFirst(); | 
| +                    String path = cursor.getString(0); | 
| if (path != null) { | 
| // Not all providers support the MediaStore.DATA column. For example, | 
| // Gallery3D (com.android.gallery3d.provider) does not support it for | 
| // Picasa Web Album images. | 
| nativeOnFileSelected(mNativeSelectFileDialog, path); | 
| -                        success = true; | 
| +                        return; | 
| } | 
| } | 
| -                c.close(); | 
| } | 
| -        } | 
| -        if (!success) { | 
| -            onFileNotSelected(); | 
| -            window.showError(R.string.opening_file_error); | 
| -        } | 
| +        } finally { if (cursor != null) { cursor.close(); } } | 
| + | 
| +        onFileNotSelected(); | 
| +        window.showError(R.string.opening_file_error); | 
| } | 
|  | 
| private void onFileNotSelected() { | 
|  |