Merge pull request #8557 from brave/write-permission-share-stats

Write permission share stats
This commit is contained in:
alexsafe
2021-04-20 16:22:03 -04:00
committed by GitHub
5 changed files with 119 additions and 61 deletions
@@ -24,6 +24,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
@@ -811,6 +812,17 @@ public abstract class BraveActivity<C extends ChromeActivityComponent>
super.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onRequestPermissionsResult(
int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == BraveStatsUtil.SHARE_STATS_WRITE_EXTERNAL_STORAGE_PERM
&& grantResults.length != 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
BraveStatsUtil.shareStats(R.layout.brave_stats_share_layout);
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
/**
* Disable background ads on Android. Issue #8641.
*/
@@ -5,12 +5,16 @@
package org.chromium.chrome.browser.brave_stats;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import android.util.Pair;
import android.view.LayoutInflater;
@@ -18,6 +22,7 @@ import android.view.View;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
@@ -42,6 +47,7 @@ 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;
/*
* Gets string view of specific time in seconds for Brave stats
*/
@@ -200,6 +206,24 @@ public class BraveStatsUtil {
return canvasBitmap;
}
public static boolean hasWritePermission(Activity activity) {
if (ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
return true;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
activity.requestPermissions(new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
SHARE_STATS_WRITE_EXTERNAL_STORAGE_PERM);
}
return false;
}
public static void shareStats(int layout) {
View shareStatsLayout = getLayout(layout);
updateBraveShareStatsLayoutAndShare(shareStatsLayout);
}
private static List<Pair<String, String>> getStatsPairs() {
List<Pair<String, String>> statsPair = new ArrayList<>();
Profile mProfile = Profile.getLastUsedRegularProfile();
@@ -5,6 +5,7 @@
package org.chromium.chrome.browser.shields;
import android.Manifest;
import android.animation.Animator;
import android.animation.Animator.AnimatorListener;
import android.animation.AnimatorListenerAdapter;
@@ -12,6 +13,7 @@ import android.animation.AnimatorSet;
import android.app.Activity;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
@@ -55,6 +57,8 @@ import android.widget.RadioGroup;
import android.widget.Switch;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.widget.TextViewCompat;
import org.chromium.base.Log;
@@ -63,6 +67,7 @@ import org.chromium.base.task.AsyncTask;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.BraveRewardsHelper;
import org.chromium.chrome.browser.BraveRewardsNativeWorker;
import org.chromium.chrome.browser.app.BraveActivity;
import org.chromium.chrome.browser.brave_stats.BraveStatsUtil;
import org.chromium.chrome.browser.night_mode.GlobalNightModeStateProviderHolder;
import org.chromium.chrome.browser.onboarding.OnboardingPrefManager;
@@ -421,8 +426,9 @@ public class BraveShieldsHandler implements BraveRewardsHelper.LargeIconReadyCal
@Override
public void onClick(View v) {
mMainLayout.setVisibility(View.GONE);
View shareStatsLayout = BraveStatsUtil.getLayout(R.layout.brave_stats_share_layout);
BraveStatsUtil.updateBraveShareStatsLayoutAndShare(shareStatsLayout);
if (BraveStatsUtil.hasWritePermission(BraveActivity.getBraveActivity())) {
BraveStatsUtil.shareStats(R.layout.brave_stats_share_layout);
}
}
});
@@ -458,6 +464,11 @@ public class BraveShieldsHandler implements BraveRewardsHelper.LargeIconReadyCal
setupMainSwitchClick(mShieldMainSwitch);
}
private void shareStats() {
View shareStatsLayout = BraveStatsUtil.getLayout(R.layout.brave_stats_share_layout);
BraveStatsUtil.updateBraveShareStatsLayoutAndShare(shareStatsLayout);
}
private void setToggleView(boolean shouldShow) {
if (shouldShow) {
mSecondaryLayout.setVisibility(View.VISIBLE);
@@ -69,6 +69,8 @@ public class BraveShieldsUtils {
public static final int BRAVE_BLOCKED_TIER8 = 500000;
public static final int BRAVE_BLOCKED_TIER9 = 1000000;
public static final int BRAVE_BLOCKED_SHOW_DIFF = 20;
public static boolean isTooltipShown;
public interface BraveShieldsCallback {
@@ -466,62 +466,71 @@ public abstract class BraveToolbarLayout extends ToolbarLayout
return;
}
int totalBlocked = Integer.parseInt(BraveStatsUtil.getAdsTrackersBlocked().first);
// show after 20 blockers in the current session
if (trackersPlusAdsBlocked > 20) {
if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER1)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER1
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER2)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER1_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER1);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER2)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER2
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER3)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER2_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER2);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER3)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER3
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER4)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER3_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER3);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER4)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER4
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER5)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER4_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER4);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER5)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER5
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER6)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER5_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER5);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER6)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER6
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER7)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER6_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER6);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER7)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER7
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER8)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER7_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER7);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER8)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER8
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER9)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER8_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER8);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER9)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER9)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER9_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER9);
}
// show after BraveShieldsUtils.BRAVE_BLOCKED_SHOW_DIFF (20) blocked stuff above the TIER
// threshold
if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER1)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER1
+ BraveShieldsUtils.BRAVE_BLOCKED_SHOW_DIFF
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER2)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER1_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER1);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER2)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER2
+ BraveShieldsUtils.BRAVE_BLOCKED_SHOW_DIFF
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER3)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER2_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER2);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER3)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER3
+ BraveShieldsUtils.BRAVE_BLOCKED_SHOW_DIFF
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER4)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER3_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER3);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER4)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER4
+ BraveShieldsUtils.BRAVE_BLOCKED_SHOW_DIFF
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER5)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER4_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER4);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER5)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER5
+ BraveShieldsUtils.BRAVE_BLOCKED_SHOW_DIFF
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER6)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER5_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER5);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER6)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER6
+ BraveShieldsUtils.BRAVE_BLOCKED_SHOW_DIFF
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER7)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER6_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER6);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER7)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER7
+ BraveShieldsUtils.BRAVE_BLOCKED_SHOW_DIFF
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER8)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER7_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER7);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER8)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER8
+ BraveShieldsUtils.BRAVE_BLOCKED_SHOW_DIFF
&& totalBlocked < BraveShieldsUtils.BRAVE_BLOCKED_TIER9)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER8_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER8);
} else if (!BraveShieldsUtils.hasShieldsTooltipShown(
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER9)
&& (totalBlocked >= BraveShieldsUtils.BRAVE_BLOCKED_TIER9
+ BraveShieldsUtils.BRAVE_BLOCKED_SHOW_DIFF)) {
showTooltip(ShieldsTooltipEnum.BRAVE_SHARE_STATS_TIER9_TOOLTIP,
BraveShieldsUtils.PREF_SHARE_SHIELDS_TOOLTIP_TIER9);
}
}
@@ -603,9 +612,9 @@ public abstract class BraveToolbarLayout extends ToolbarLayout
@Override
public void onClick(View view) {
dismissShieldsTooltip();
View shareStatsLayout =
BraveStatsUtil.getLayout(R.layout.brave_stats_share_layout);
BraveStatsUtil.updateBraveShareStatsLayoutAndShare(shareStatsLayout);
if (BraveStatsUtil.hasWritePermission(BraveActivity.getBraveActivity())) {
BraveStatsUtil.shareStats(R.layout.brave_stats_share_layout);
}
}
});
}