[tbb-commits] [tor-browser/tor-browser-60.4.0esr-8.5-1] Bug 1450449 - Part 3: Starting from Nougat, share images via content:// URIs. r=jchen
gk at torproject.org
gk at torproject.org
Thu Jan 24 20:03:43 UTC 2019
commit d00611cec519373705b83ed2ac89e1db58532fa2
Author: Jan Henning <jh+bugzilla at buttercookie.de>
Date: Sat May 12 23:17:38 2018 +0200
Bug 1450449 - Part 3: Starting from Nougat, share images via content:// URIs. r=jchen
For sharing images we download the image to a temporary file in our internal
storage area. This is a perfect use case for granting temporary access to the
file only via a content:// URI instead of directly exposing the real file system
path.
Since support for content:// URIs by arbitrary other apps might be patchy on
older Android versions, though, we only start doing this from Nougat onwards.
MozReview-Commit-ID: E2I1t8dZzKj
--HG--
extra : rebase_source : 84449c39aed622a995e7e009b8e33d21ff02db23
---
.../org/mozilla/gecko/widget/GeckoActionProvider.java | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/mobile/android/base/java/org/mozilla/gecko/widget/GeckoActionProvider.java b/mobile/android/base/java/org/mozilla/gecko/widget/GeckoActionProvider.java
index 056a799f1caa..79854e2931bc 100644
--- a/mobile/android/base/java/org/mozilla/gecko/widget/GeckoActionProvider.java
+++ b/mobile/android/base/java/org/mozilla/gecko/widget/GeckoActionProvider.java
@@ -8,9 +8,11 @@ package org.mozilla.gecko.widget;
import android.app.Activity;
import android.net.Uri;
import android.support.design.widget.Snackbar;
+import android.support.v4.content.FileProvider;
import android.util.Base64;
import android.view.Menu;
+import org.mozilla.gecko.AppConstants;
import org.mozilla.gecko.GeckoApp;
import org.mozilla.gecko.R;
import org.mozilla.gecko.SnackbarBuilder;
@@ -328,7 +330,7 @@ public class GeckoActionProvider {
os.write(buf);
// Only alter the intent when we're sure everything has worked
- intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(imageFile));
+ addFileExtra(intent, imageFile);
} else {
InputStream is = null;
try {
@@ -346,7 +348,7 @@ public class GeckoActionProvider {
}
// Only alter the intent when we're sure everything has worked
- intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(imageFile));
+ addFileExtra(intent, imageFile);
} finally {
IOUtils.safeStreamClose(is);
}
@@ -357,4 +359,15 @@ public class GeckoActionProvider {
IOUtils.safeStreamClose(os);
}
}
+
+ private void addFileExtra(final Intent intent, final File file) {
+ if (AppConstants.Versions.preN) {
+ intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
+ } else {
+ Uri contentUri = FileProvider.getUriForFile(mContext,
+ AppConstants.MOZ_FILE_PROVIDER_AUTHORITY, file);
+ intent.putExtra(Intent.EXTRA_STREAM, contentUri);
+ intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ }
+ }
}
More information about the tbb-commits
mailing list