diff --git a/android/java/org/chromium/base/BraveReflectionUtil.java b/android/java/org/chromium/base/BraveReflectionUtil.java index 3dd813da17b..4aa98fe721f 100644 --- a/android/java/org/chromium/base/BraveReflectionUtil.java +++ b/android/java/org/chromium/base/BraveReflectionUtil.java @@ -43,7 +43,7 @@ public class BraveReflectionUtil { Log.e(TAG, "Illegal access for method: " + e); assert (false); } catch (InvocationTargetException e) { - Log.e(TAG, "Method invocation error: " + e); + Log.e(TAG, "Method invocation error e: " + e); assert (false); } } catch (NoSuchMethodException e) { diff --git a/android/java/org/chromium/chrome/browser/app/BraveActivity.java b/android/java/org/chromium/chrome/browser/app/BraveActivity.java index b91b030b2d7..c8739195282 100644 --- a/android/java/org/chromium/chrome/browser/app/BraveActivity.java +++ b/android/java/org/chromium/chrome/browser/app/BraveActivity.java @@ -731,6 +731,9 @@ public abstract class BraveActivity if (! TextUtils.isEmpty(open_url)) { openNewOrSelectExistingTab(open_url); } + } else if (resultCode == RESULT_OK + && requestCode == BraveStatsUtil.SHARE_STATS_REQUEST_CODE) { + BraveStatsUtil.removeShareStatsFile(); } super.onActivityResult(requestCode, resultCode, data); } diff --git a/android/java/org/chromium/chrome/browser/brave_stats/BraveStatsUtil.java b/android/java/org/chromium/chrome/browser/brave_stats/BraveStatsUtil.java index 52c62ad54c4..5e757bdc3a9 100644 --- a/android/java/org/chromium/chrome/browser/brave_stats/BraveStatsUtil.java +++ b/android/java/org/chromium/chrome/browser/brave_stats/BraveStatsUtil.java @@ -7,6 +7,7 @@ package org.chromium.chrome.browser.brave_stats; import android.Manifest; import android.app.Activity; +import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; @@ -53,7 +54,9 @@ import java.util.Locale; public class BraveStatsUtil { public static final short MILLISECONDS_PER_ITEM = 50; public static final int SHARE_STATS_WRITE_EXTERNAL_STORAGE_PERM = 3867; + public static final int SHARE_STATS_REQUEST_CODE = 4367; public static final String TAG = "BraveStatsUtil"; + private static String shareStatsFile = ""; /* * Gets string view of specific time in seconds for Brave stats */ @@ -172,16 +175,16 @@ public class BraveStatsUtil { try { Context context = ContextUtils.getApplicationContext(); Bitmap bmp = convertToBitmap(view); - String path = ""; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - path = MediaStore.Images.Media.insertImage( + shareStatsFile = MediaStore.Images.Media.insertImage( context.getContentResolver(), bmp, "tempimage", null); } else { storeImage(bmp); - path = getOutputMediaFile().getAbsolutePath(); + shareStatsFile = getOutputMediaFile().getAbsolutePath(); } - Uri uri = Uri.parse(path); + Uri uri = Uri.parse(shareStatsFile); Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); @@ -193,9 +196,26 @@ public class BraveStatsUtil { Intent shareIntent = Intent.createChooser(sendIntent, " "); shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(shareIntent); + + if (BraveActivity.getBraveActivity() != null) { + BraveActivity.getBraveActivity().startActivityForResult( + shareIntent, SHARE_STATS_REQUEST_CODE); + } } catch (Exception e) { - Log.e(TAG, "exception :" + e); + e.printStackTrace(); + } + } + + public static void removeShareStatsFile() { + Context context = ContextUtils.getApplicationContext(); + if (shareStatsFile.startsWith("content://")) { + ContentResolver contentResolver = context.getContentResolver(); + contentResolver.delete(Uri.parse(shareStatsFile), null, null); + } else { + File file = new File(shareStatsFile); + if (file.exists()) { + file.delete(); + } } } diff --git a/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayout.java b/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayout.java index a30307c49f2..a414cf212b9 100644 --- a/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayout.java +++ b/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayout.java @@ -129,10 +129,8 @@ public abstract class BraveToolbarLayout extends ToolbarLayout BraveRewardsNativeWorker.PublisherObserver { public static final String PREF_HIDE_BRAVE_REWARDS_ICON = "hide_brave_rewards_icon"; private static final String JAPAN_COUNTRY_CODE = "JP"; - private static final long MB_10 = 10000000; private static final long MINUTES_10 = 10 * 60 * 1000; - private static final int URL_FOCUS_TOOLBAR_BUTTONS_TRANSLATION_X_DP = 10; private DatabaseHelper mDatabaseHelper = DatabaseHelper.getInstance(); @@ -459,12 +457,22 @@ public abstract class BraveToolbarLayout extends ToolbarLayout private void chooseStatsShareTier(Tab tab, int trackersPlusAdsBlocked) { String countryCode = Locale.getDefault().getCountry(); + // the tooltip for stats sharing is shown only for Japan if (!countryCode.equals(JAPAN_COUNTRY_CODE)) { return; } - int totalBlocked = Integer.parseInt(BraveStatsUtil.getAdsTrackersBlocked().first); + // double check if the shields button is shown to prevent situations like showing the + // tooltip on new tabs + if ((mBraveShieldsButton == null && !mBraveShieldsButton.isShown()) + || UrlUtilities.isNTPUrl( + BraveActivity.getBraveActivity().getActivityTab().getUrlString())) { + return; + } + + int totalBlocked = + Math.round(Float.parseFloat(BraveStatsUtil.getAdsTrackersBlocked().first.trim())); // show after BraveShieldsUtils.BRAVE_BLOCKED_SHOW_DIFF (20) blocked stuff above the TIER // threshold if (!BraveShieldsUtils.hasShieldsTooltipShown( diff --git a/browser/brave_ads/android/java/org/chromium/chrome/browser/dialogs/BraveAdsNotificationDialog.java b/browser/brave_ads/android/java/org/chromium/chrome/browser/dialogs/BraveAdsNotificationDialog.java index 02cf0944ab1..a57430772b6 100644 --- a/browser/brave_ads/android/java/org/chromium/chrome/browser/dialogs/BraveAdsNotificationDialog.java +++ b/browser/brave_ads/android/java/org/chromium/chrome/browser/dialogs/BraveAdsNotificationDialog.java @@ -150,19 +150,18 @@ public class BraveAdsNotificationDialog { } @CalledByNative - public static void showAdNotification(final String notificationId, - final String origin, final String title, final String body) { + public static void showAdNotification(final String notificationId, final String origin, + final String title, final String body) { Activity activity = ApplicationStatus.getLastTrackedFocusedActivity(); assert activity != null; // We want to show ads only when activity is in started or resumed // state int state = ApplicationStatus.getStateForActivity(activity); - if (activity == null || (state != ActivityState.STARTED && - state != ActivityState.RESUMED)) + if (activity == null || (state != ActivityState.STARTED && state != ActivityState.RESUMED)) return; - BraveAdsNotificationDialog.showAdNotification(activity, notificationId, - origin, title, body); + BraveAdsNotificationDialog.showAdNotification( + activity, notificationId, origin, title, body); } @CalledByNative diff --git a/components/brave_referrals/browser/BUILD.gn b/components/brave_referrals/browser/BUILD.gn index c303f683c80..da72c66cd59 100644 --- a/components/brave_referrals/browser/BUILD.gn +++ b/components/brave_referrals/browser/BUILD.gn @@ -6,9 +6,7 @@ if (is_android) { source_set("browser") { # Remove when https://github.com/brave/brave-browser/issues/10646 is resolved check_includes = false - public_deps = [ - "//brave/components/brave_referrals/buildflags", - ] + public_deps = [ "//brave/components/brave_referrals/buildflags" ] if (enable_brave_referrals) { sources = [ @@ -45,8 +43,6 @@ source_set("browser") { if (is_android) { generate_jni("jni_headers") { - sources = [ - "//brave/android/java/org/chromium/chrome/browser/util/BraveReferrer.java", - ] + sources = [ "//brave/android/java/org/chromium/chrome/browser/util/BraveReferrer.java" ] } }