-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[image_picker_android] Adjust file extension in FileUtils when it does not match its mime type #3409
[image_picker_android] Adjust file extension in FileUtils when it does not match its mime type #3409
Conversation
…s not match its mime type.
…hed_extension' into image_picker_android_fix_mismatched_extension
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the follow up PR!
- I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.
- I updated CHANGELOG.md to add a description of the change, following repository CHANGELOG style.
These changes aren't in the PR that was uploaded.
@@ -121,4 +128,8 @@ private static void copy(InputStream in, OutputStream out) throws IOException { | |||
} | |||
out.flush(); | |||
} | |||
|
|||
private static String getBaseName(String fileName) { | |||
return fileName.split("\\.")[0]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The basename is everything before the last .
, not the first, so this will return the wrong name in some cases.
shadowContentResolver.registerInputStream( | ||
uri, new ByteArrayInputStream("imageStream".getBytes(UTF_8))); | ||
String path = fileUtils.getPathFromUri(context, uri); | ||
assertTrue(path.endsWith("png.png")); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please do not make the filename and the extension the same; this would mask bugs that used the wrong components when constructing the output name.
String path = fileUtils.getPathFromUri(context, uri); | ||
assertTrue(path.endsWith("png.png")); | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please add another test for the case where a file's basename contains .
s.
String path = fileUtils.getPathFromUri(context, uri); | ||
assertTrue(path.endsWith("png.png")); | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You created a new codepath in this PR for the case where the filename is non-null but the extension is null; that case needs a test as well.
…d_fix_mismatched_extension # Conflicts: # packages/image_picker/image_picker_android/CHANGELOG.md # packages/image_picker/image_picker_android/pubspec.yaml
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM as well!
auto label is removed for flutter/packages, pr: 3409, due to - This commit is not mergeable and has conflicts. Please rebase your PR and fix all the conflicts. |
@stuartmorgan Fixed conflicts, auto-submit can be re-added. |
Thanks! |
Thank you all! |
…n it does not match its mime type (flutter/packages#3409)
* 7636eb7 [go_router_builder] Support default value for `Set`, `List` and `Iterable` route parameters (flutter/packages#3391) * 26c95da [image_picker] Move HashSet construction within if-statement (flutter/packages#3448) * f5687b2 [image_picker] fix typos in comments (flutter/packages#3413) * 84afba7 [image_picker] Migrate Android to Pigeon (flutter/packages#3476) * 42927fc [image_picker]: Bump androidx.exifinterface:exifinterface from 1.3.3 to 1.3.6 in /packages/image_picker/image_picker_android/android (flutter/packages#3238) * 9a44bdf Require Dart SDK 2.14, because of using APIs. (flutter/packages#3468) * 12609a2 [ci] Clean up iOS simulators (flutter/packages#3458) * 9b136a9 [ci/tool] Add external dependency validation (flutter/packages#3466) * 11aab47 Manual roll Flutter from fb7e828 to 67e5f66 (8 revisions) (flutter/packages#3482) * 784291b Update goldens (flutter/packages#3442) * 43a42d1 [webview_flutter_android] Updates Dart and Java InstanceManagers (flutter/packages#3282) * d0de136 [camera] Reland android flip/change camera while recording (flutter/packages#3460) * 74fd094 [image_picker_android] Adjust file extension in FileUtils when it does not match its mime type (flutter/packages#3409) * d2f1d2d [flutter_adaptive_scaffold] : 🐛 [FIX] : Issue: 121135. (flutter/packages#3253) * 3d078b5 Roll Flutter from 67e5f66 to 53dfd23 (39 revisions) (flutter/packages#3484) * 3b3a09d [url_launcher] Convert iOS to Pigeon (flutter/packages#3481) * 80cd50a Roll Flutter from 53dfd23 to 6bd2b3c (17 revisions) (flutter/packages#3486) * 998bb29 [webview_flutter] Updates the README with the migration of `WebView.initialCookies` and Hybrid Composition on (flutter/packages#3470) * bbf86a7 Roll Flutter from 6bd2b3c to 3e4e092 (7 revisions) (flutter/packages#3490)
…s not match its mime type (flutter#3409) [image_picker_android] Adjust file extension in FileUtils when it does not match its mime type
Sometimes a file name returned by the
ContentResolver
can have an extension that doesn't match its real type (e.g. if the file was re-encoded).Previously file extension was selected only based on the mime type. flutter/plugins#6096 changed it, so that the name returned by
ContentResolver
was used if available, with mime-based extension used only as fallback.This PR fixes the regression by changing extension of the name returned from
ContentResolver
so that it matches its mime type (if known).Fixes flutter/flutter#121878.
Pre-launch Checklist
dart format
.)[shared_preferences]
pubspec.yaml
with an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.CHANGELOG.md
to add a description of the change, following repository CHANGELOG style.///
).If you need help, consider asking for advice on the #hackers-new channel on Discord.