Add Notifications for retention

This commit is contained in:
Deep
2020-07-30 07:54:54 -04:00
parent 6f421a5beb
commit 4eae4a1b87
11 changed files with 229 additions and 64 deletions
@@ -73,6 +73,7 @@ import org.chromium.chrome.browser.CrossPromotionalModalDialogFragment;
import org.chromium.chrome.browser.onboarding.v2.HighlightDialogFragment;
import org.chromium.chrome.browser.notifications.retention.RetentionNotificationUtil;
import org.chromium.chrome.browser.brave_stats.BraveStatsUtil;
import org.chromium.chrome.browser.ntp.NewTabPage;
import java.util.Calendar;
import java.util.Date;
@@ -274,7 +275,15 @@ public abstract class BraveActivity<C extends ChromeActivityComponent> extends C
}
}
RetentionNotificationUtil.scheduleNotification(this, RetentionNotificationUtil.HOUR_3);
if (!OnboardingPrefManager.getInstance().isOneTimeNotificationStarted()) {
RetentionNotificationUtil.scheduleNotification(this, RetentionNotificationUtil.HOUR_3);
RetentionNotificationUtil.scheduleNotification(this, RetentionNotificationUtil.HOUR_24);
RetentionNotificationUtil.scheduleNotification(this, RetentionNotificationUtil.DAY_6);
RetentionNotificationUtil.scheduleNotification(this, RetentionNotificationUtil.DAY_10);
RetentionNotificationUtil.scheduleNotification(this, RetentionNotificationUtil.DAY_30);
RetentionNotificationUtil.scheduleNotification(this, RetentionNotificationUtil.DAY_35);
OnboardingPrefManager.getInstance().setOneTimeNotificationStarted(true);
}
}
private void checkForNotificationData() {
@@ -284,20 +293,37 @@ public abstract class BraveActivity<C extends ChromeActivityComponent> extends C
String notificationType = notifIntent.getStringExtra(RetentionNotificationUtil.NOTIFICATION_TYPE);
switch (notificationType) {
case RetentionNotificationUtil.HOUR_3:
case RetentionNotificationUtil.HOUR_24:
case RetentionNotificationUtil.EVERY_SUNDAY:
checkForBraveStats();
break;
case RetentionNotificationUtil.HOUR_24:
checkForBraveStats();
case RetentionNotificationUtil.DAY_6:
case RetentionNotificationUtil.BRAVE_STATS_ADS_TRACKERS:
case RetentionNotificationUtil.BRAVE_STATS_DATA:
case RetentionNotificationUtil.BRAVE_STATS_TIME:
if (!NewTabPage.isNTPUrl(getActivityTab().getUrlString())) {
getTabCreator(false).launchUrl(UrlConstants.NTP_URL, TabLaunchType.FROM_CHROME_UI);
}
break;
case RetentionNotificationUtil.DAY_10:
case RetentionNotificationUtil.DAY_30:
case RetentionNotificationUtil.DAY_35:
openRewardsPanel();
break;
}
}
}
private void checkForBraveStats() {
public void checkForBraveStats() {
if (OnboardingPrefManager.getInstance().isBraveStatsEnabled()) {
BraveStatsUtil.showBraveStats();
} else {
showOnboarding();
if (!NewTabPage.isNTPUrl(getActivityTab().getUrlString())) {
OnboardingPrefManager.getInstance().setFromNotification(true);
getTabCreator(false).launchUrl(UrlConstants.NTP_URL, TabLaunchType.FROM_CHROME_UI);
} else {
showOnboarding();
}
}
}
@@ -40,6 +40,7 @@ import org.chromium.chrome.browser.local_database.DatabaseHelper;
import org.chromium.chrome.browser.local_database.BraveStatsTable;
import org.chromium.chrome.browser.local_database.SavedBandwidthTable;
import org.chromium.chrome.browser.brave_stats.BraveStatsUtil;
import org.chromium.chrome.browser.ntp.BraveNewTabPageLayout;
import java.util.List;
import java.util.Arrays;
@@ -49,7 +50,6 @@ import java.util.Date;
import static org.chromium.ui.base.ViewUtils.dpToPx;
public class BraveStatsBottomSheetDialogFragment extends BottomSheetDialogFragment {
private static final short MILLISECONDS_PER_ITEM = 50;
private DatabaseHelper mDatabaseHelper = DatabaseHelper.getInstance();
private static final int WEBSITES = 0;
@@ -155,7 +155,7 @@ public class BraveStatsBottomSheetDialogFragment extends BottomSheetDialogFragme
long totalSavedBandwidth = mDatabaseHelper.getTotalSavedBandwidthWithDate(BraveStatsUtil.getCalculatedDate("yyyy-MM-dd", selectedDuration), BraveStatsUtil.getCalculatedDate("yyyy-MM-dd", 0));
long adsTrackersCount = mDatabaseHelper.getAllStatsWithDate(BraveStatsUtil.getCalculatedDate("yyyy-MM-dd", selectedDuration), BraveStatsUtil.getCalculatedDate("yyyy-MM-dd", 0)).size();
long timeSavedCount = adsTrackersCount * MILLISECONDS_PER_ITEM;
long timeSavedCount = adsTrackersCount * BraveNewTabPageLayout.MILLISECONDS_PER_ITEM;
Pair<String, String> adsTrackersPair = BraveStatsUtil.getBraveStatsStringFormNumberPair(adsTrackersCount, false);
adsTrackersCountText.setText(String.format(getResources().getString(R.string.ntp_stat_text), adsTrackersPair.first, adsTrackersPair.second));
@@ -291,34 +291,6 @@ public class DatabaseHelper extends SQLiteOpenHelper {
return db.insert(SavedBandwidthTable.TABLE_NAME, null, values);
}
public List<SavedBandwidthTable> getAllSavedBandwidthWithDate(String thresholdTime, String currentTime) {
List<SavedBandwidthTable> savedBandwidths = new ArrayList<>();
// Select All Query
String selectQuery = "SELECT * FROM "
+ SavedBandwidthTable.TABLE_NAME
+ " WHERE " + BraveStatsTable.COLUMN_TIMESTAMP
+ " BETWEEN date('" + thresholdTime + "') AND date('" + currentTime + "')";
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
SavedBandwidthTable savedBandwidthTable = new SavedBandwidthTable(
cursor.getLong(cursor.getColumnIndex(SavedBandwidthTable.COLUMN_SAVED_BANDWIDTH)),
cursor.getString(cursor.getColumnIndex(SavedBandwidthTable.COLUMN_TIMESTAMP)));
savedBandwidths.add(savedBandwidthTable);
} while (cursor.moveToNext());
}
cursor.close();
return savedBandwidths;
}
public long getTotalSavedBandwidthWithDate(String thresholdTime, String currentTime) {
int sum = 0;
String selectQuery = "SELECT SUM(" + SavedBandwidthTable.COLUMN_SAVED_BANDWIDTH + ") as total FROM "
@@ -335,4 +307,19 @@ public class DatabaseHelper extends SQLiteOpenHelper {
cursor.close();
return sum;
}
public long getTotalSavedBandwidth() {
int sum = 0;
String selectQuery = "SELECT SUM(" + SavedBandwidthTable.COLUMN_SAVED_BANDWIDTH + ") as total FROM "
+ SavedBandwidthTable.TABLE_NAME;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst())
sum = cursor.getInt(cursor.getColumnIndex("total"));
cursor.close();
return sum;
}
}
@@ -22,6 +22,7 @@ public class BraveChannelDefinitions {
public static final String BRAVE_ADS_BACKGROUND = "com.brave.browser.ads.background";
public static final String BRAVE_STATS = "com.brave.browser.stats";
public static final String BRAVE_REWARDS = "com.brave.browser.rewards";
public static final String BRAVE_BROWSER = "com.brave.browser";
}
public class ChannelGroupId {
@@ -15,7 +15,12 @@ import android.net.Uri;
import org.chromium.base.Log;
import org.chromium.base.ApplicationStatus;
import org.chromium.chrome.browser.tab.TabLaunchType;
import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.components.embedder_support.util.UrlConstants;
import org.chromium.chrome.browser.BraveActivity;
import org.chromium.chrome.browser.brave_stats.BraveStatsUtil;
import org.chromium.chrome.browser.onboarding.OnboardingPrefManager;
public class RetentionNotificationPublisher extends BroadcastReceiver {
private static final String NOTIFICATION_CHANNEL_NAME = "brave";
@@ -23,14 +28,35 @@ public class RetentionNotificationPublisher extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
String notificationType = intent.getStringExtra(RetentionNotificationUtil.NOTIFICATION_TYPE);
if (action != null && action.equals(RETENTION_NOTIFICATION_ACTION)) {
BraveActivity braveActivity = BraveActivity.getBraveActivity();
if (braveActivity != null) {
braveActivity.showOnboarding();
switch (notificationType) {
case RetentionNotificationUtil.HOUR_3:
case RetentionNotificationUtil.HOUR_24:
case RetentionNotificationUtil.EVERY_SUNDAY:
braveActivity.checkForBraveStats();
break;
case RetentionNotificationUtil.DAY_6:
case RetentionNotificationUtil.BRAVE_STATS_ADS_TRACKERS:
case RetentionNotificationUtil.BRAVE_STATS_DATA:
case RetentionNotificationUtil.BRAVE_STATS_TIME:
if (!NewTabPage.isNTPUrl(braveActivity.getActivityTab().getUrlString())) {
braveActivity.getTabCreator(false).launchUrl(UrlConstants.NTP_URL, TabLaunchType.FROM_CHROME_UI);
}
break;
case RetentionNotificationUtil.DAY_10:
case RetentionNotificationUtil.DAY_30:
case RetentionNotificationUtil.DAY_35:
braveActivity.openRewardsPanel();
break;
}
} else {
backgroundNotificationAction(context, intent);
}
} else {
// Can't check for rewards code in background
createNotification(context, intent);
}
}
@@ -48,12 +74,11 @@ public class RetentionNotificationPublisher extends BroadcastReceiver {
notificationManager.createNotificationChannel(notificationChannel);
}
assert notificationManager != null;
notificationManager.notify(retentionNotification.getNotificationId(), notification) ;
notificationManager.notify(retentionNotification.getNotificationId(), notification);
}
private void backgroundNotificationAction(Context context, Intent intent) {
String notificationType = intent.getStringExtra(RetentionNotificationUtil.NOTIFICATION_TYPE);
RetentionNotification retentionNotification = RetentionNotificationUtil.getNotificationObject(notificationType);
if (ApplicationStatus.hasVisibleActivities()) {
return;
}
@@ -10,14 +10,19 @@ import android.app.Notification;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.util.Pair;
import androidx.core.app.NotificationCompat;
import org.chromium.chrome.R;
import org.chromium.base.Log;
import org.chromium.base.ContextUtils;
import org.chromium.chrome.browser.onboarding.OnboardingPrefManager;
import org.chromium.chrome.browser.local_database.DatabaseHelper;
import org.chromium.chrome.browser.notifications.channels.BraveChannelDefinitions;
import org.chromium.chrome.browser.brave_stats.BraveStatsUtil;
import org.chromium.chrome.browser.ntp.BraveNewTabPageLayout;
import java.util.Calendar;
import java.util.Date;
@@ -30,14 +35,28 @@ public class RetentionNotificationUtil {
public static final String HOUR_3 = "hour_3";
public static final String HOUR_24 = "hour_24";
public static final String HOUR_48 = "hour_48";
public static final String DAY_6 = "day_6";
public static final String EVERY_SUNDAY = "every_sunday";
public static final String DAY_10 = "day_10";
public static final String DAY_30 = "day_30";
public static final String DAY_35 = "day_35";
public static final String BRAVE_STATS_ADS_TRACKERS = "brave_stats_ads_trackers";
public static final String BRAVE_STATS_DATA = "brave_stats_data";
public static final String BRAVE_STATS_TIME = "brave_stats_time";
private static Map<String, RetentionNotification> mNotificationMap = new HashMap<String, RetentionNotification>() {
{
put(HOUR_3, new RetentionNotification(3, 1, "Brave Stats", "Brave Stats"));
put(HOUR_24, new RetentionNotification(24, 24 * 60, "Brave Stats", "Brave Stats"));
put(HOUR_48, new RetentionNotification(48, 48 * 60, "Brave Stats", "Brave Stats"));
put(EVERY_SUNDAY, new RetentionNotification(7, -1, "Brave Stats", "Brave Stats"));
put(HOUR_3, new RetentionNotification(3, 3 * 60, BraveChannelDefinitions.ChannelId.BRAVE_STATS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
put(HOUR_24, new RetentionNotification(24, 24 * 60, BraveChannelDefinitions.ChannelId.BRAVE_STATS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
put(HOUR_48, new RetentionNotification(48, 48 * 60, BraveChannelDefinitions.ChannelId.BRAVE_BROWSER, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
put(DAY_6, new RetentionNotification(6, 6 * 24 * 60, BraveChannelDefinitions.ChannelId.BRAVE_BROWSER, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
put(EVERY_SUNDAY, new RetentionNotification(7, -1, BraveChannelDefinitions.ChannelId.BRAVE_STATS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
put(DAY_10, new RetentionNotification(10, 10 * 24 * 60, BraveChannelDefinitions.ChannelId.BRAVE_REWARDS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_ui_brave_rewards)));
put(DAY_30, new RetentionNotification(30, 30 * 24 * 60, BraveChannelDefinitions.ChannelId.BRAVE_REWARDS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_ui_brave_rewards)));
put(DAY_35, new RetentionNotification(35, 35 * 24 * 60, BraveChannelDefinitions.ChannelId.BRAVE_REWARDS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_ui_brave_rewards)));
put(BRAVE_STATS_ADS_TRACKERS, new RetentionNotification(14, 60, BraveChannelDefinitions.ChannelId.BRAVE_STATS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
put(BRAVE_STATS_DATA, new RetentionNotification(15, 60, BraveChannelDefinitions.ChannelId.BRAVE_STATS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
put(BRAVE_STATS_TIME, new RetentionNotification(16, 60, BraveChannelDefinitions.ChannelId.BRAVE_STATS, ContextUtils.getApplicationContext().getResources().getString(R.string.brave_stats)));
}
};
@@ -47,7 +66,7 @@ public class RetentionNotificationUtil {
public static Notification getNotification(Context context, String notificationType) {
RetentionNotification retentionNotification = getNotificationObject(notificationType);
String notificationText = getNotificationText(notificationType);
String notificationText = getNotificationText(context, notificationType);
Log.e("NTP", notificationText);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, retentionNotification.getChannelId());
builder.setContentTitle(retentionNotification.getNotificationTitle());
@@ -59,26 +78,47 @@ public class RetentionNotificationUtil {
return builder.build();
}
private static String getNotificationText(String notificationType) {
private static String getNotificationText(Context context, String notificationType) {
DatabaseHelper mDatabaseHelper = DatabaseHelper.getInstance();
long totalSavedBandwidth = mDatabaseHelper.getTotalSavedBandwidth();
long adsTrackersCount = mDatabaseHelper.getAllStats().size();
long timeSavedCount = adsTrackersCount * BraveNewTabPageLayout.MILLISECONDS_PER_ITEM;
long adsTrackersCountWeekly = mDatabaseHelper.getAllStatsWithDate(BraveStatsUtil.getCalculatedDate("yyyy-MM-dd", 7), BraveStatsUtil.getCalculatedDate("yyyy-MM-dd", 0)).size();
Pair<String, String> adsTrackersPair = BraveStatsUtil.getBraveStatsStringFormNumberPair(adsTrackersCount, false);
Pair<String, String> dataSavedPair = BraveStatsUtil.getBraveStatsStringFormNumberPair(totalSavedBandwidth, true);
switch (notificationType) {
case HOUR_3:
if (OnboardingPrefManager.getInstance().isBraveStatsEnabled()) {
long trackerAdsCount = mDatabaseHelper.getAllStats().size();
if (trackerAdsCount >= 5) {
return "You blocked " + trackerAdsCount + "trackers & ads with Brave browser in the past 3 hours.";
if (adsTrackersCount >= 5) {
return String.format(context.getResources().getString(R.string.notification_hour_3_text_1), adsTrackersCount);
} else {
return "Browse up to 6x faster on major news sites in Brave by blocking trackers & ads.";
return context.getResources().getString(R.string.notification_hour_3_text_2);
}
} else {
return "Turn on Brave Stats to see how many trackers & ads have been blocked in the past 3 hours.";
return context.getResources().getString(R.string.notification_hour_3_text_3);
}
case HOUR_24:
if (OnboardingPrefManager.getInstance().isBraveStatsEnabled()) {
return "You saved Xkb data with Brave browser.";
return String.format(context.getResources().getString(R.string.notification_hour_24_text_1), totalSavedBandwidth);
} else {
return "Turn on Brave Stats to see how much data you've saved";
return context.getResources().getString(R.string.notification_hour_24_text_2);
}
case EVERY_SUNDAY:
return String.format(context.getResources().getString(R.string.notification_weekly_stats), adsTrackersCountWeekly);
case DAY_6:
return context.getResources().getString(R.string.notification_marketing);
case DAY_10:
case DAY_30:
case DAY_35:
return context.getResources().getString(R.string.notification_rewards);
case BRAVE_STATS_ADS_TRACKERS:
return context.getResources().getString(R.string.notification_brave_stats_trackers);
case BRAVE_STATS_DATA:
return context.getResources().getString(R.string.notification_brave_stats_data);
case BRAVE_STATS_TIME:
return context.getResources().getString(R.string.notification_brave_stats_time);
}
return "";
}
@@ -90,7 +90,7 @@ public class BraveNewTabPageLayout extends NewTabPageLayout {
private static final String PREF_TRACKERS_BLOCKED_COUNT = "trackers_blocked_count";
private static final String PREF_ADS_BLOCKED_COUNT = "ads_blocked_count";
private static final String PREF_HTTPS_UPGRADES_COUNT = "https_upgrades_count";
private static final short MILLISECONDS_PER_ITEM = 50;
public static final short MILLISECONDS_PER_ITEM = 50;
private ViewGroup mBraveStatsView;
@@ -153,11 +153,7 @@ public class BraveNewTabPageLayout extends NewTabPageLayout {
mBadgeImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (OnboardingPrefManager.getInstance().isBraveStatsEnabled()) {
BraveStatsUtil.showBraveStats();
} else {
((BraveActivity)mActivity).showOnboarding();
}
((BraveActivity)mActivity).checkForBraveStats();
}
});
@@ -213,6 +209,10 @@ public class BraveNewTabPageLayout extends NewTabPageLayout {
&& !OnboardingPrefManager.getInstance().isNewOnboardingShown()) {
((BraveActivity)mActivity).showOnboarding();
}
if (OnboardingPrefManager.getInstance().isFromNotification() ) {
((BraveActivity)mActivity).showOnboarding();
OnboardingPrefManager.getInstance().setFromNotification(false);
}
}
@Override
@@ -40,7 +40,11 @@ public class OnboardingPrefManager {
private static final String PREF_SHIELDS_TOOLTIP = "shields_tooltip";
private static final String PREF_BRAVE_STATS = "brave_stats";
public static final String ONBOARDING_TYPE = "onboarding_type";
public static final String FROM_SETTINGS = "from_settings";
public static final String FROM_NOTIFICATION = "from_notification";
public static final String ONE_TIME_NOTIFICATION = "one_time_notification";
public static final String ADS_TRACKERS_NOTIFICATION = "ads_trackers_notification";
public static final String DATA_SAVED_NOTIFICATION = "data_saved_notification";
public static final String TIME_SAVED_NOTIFICATION = "time_saved_notification";
private static OnboardingPrefManager sInstance;
@@ -233,4 +237,54 @@ public class OnboardingPrefManager {
put(STARTPAGE, SearchEngineEnum.STARTPAGE);
}
};
public boolean isFromNotification() {
return mSharedPreferences.getBoolean(FROM_NOTIFICATION, false);
}
public void setFromNotification(boolean isFromNotification) {
SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
sharedPreferencesEditor.putBoolean(FROM_NOTIFICATION, isFromNotification);
sharedPreferencesEditor.apply();
}
public boolean isOneTimeNotificationStarted() {
return mSharedPreferences.getBoolean(ONE_TIME_NOTIFICATION, false);
}
public void setOneTimeNotificationStarted(boolean isOneTimeNotificationStarted) {
SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
sharedPreferencesEditor.putBoolean(ONE_TIME_NOTIFICATION, isOneTimeNotificationStarted);
sharedPreferencesEditor.apply();
}
public boolean isAdsTrackersNotificationStarted() {
return mSharedPreferences.getBoolean(ADS_TRACKERS_NOTIFICATION, false);
}
public void setAdsTrackersNotificationStarted(boolean isAdsTrackersNotificationStarted) {
SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
sharedPreferencesEditor.putBoolean(ADS_TRACKERS_NOTIFICATION, isAdsTrackersNotificationStarted);
sharedPreferencesEditor.apply();
}
public boolean isDataSavedNotificationStarted() {
return mSharedPreferences.getBoolean(DATA_SAVED_NOTIFICATION, false);
}
public void setDataSavedNotificationStarted(boolean isDataSavedNotificationStarted) {
SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
sharedPreferencesEditor.putBoolean(DATA_SAVED_NOTIFICATION, isDataSavedNotificationStarted);
sharedPreferencesEditor.apply();
}
public boolean isTimeSavedNotificationStarted() {
return mSharedPreferences.getBoolean(TIME_SAVED_NOTIFICATION, false);
}
public void setTimeSavedNotificationStarted(boolean isTimeSavedNotificationStarted) {
SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
sharedPreferencesEditor.putBoolean(TIME_SAVED_NOTIFICATION, isTimeSavedNotificationStarted);
sharedPreferencesEditor.apply();
}
}
@@ -28,6 +28,7 @@ import org.chromium.base.Log;
import org.chromium.chrome.browser.onboarding.v2.OnboardingV2PagerAdapter;
import org.chromium.chrome.browser.onboarding.OnboardingPrefManager;
import org.chromium.chrome.browser.brave_stats.BraveStatsUtil;
import org.chromium.chrome.browser.notifications.retention.RetentionNotificationUtil;
import java.util.Arrays;
import java.util.List;
@@ -155,6 +156,7 @@ public class HighlightDialogFragment extends DialogFragment {
if (viewpager != null) {
if (!OnboardingPrefManager.getInstance().isBraveStatsEnabled()) {
OnboardingPrefManager.getInstance().setBraveStatsEnabled(true);
RetentionNotificationUtil.scheduleNotificationForEverySunday(getActivity(), RetentionNotificationUtil.EVERY_SUNDAY);
if (onboardingV2PagerAdapter != null) {
onboardingV2PagerAdapter.notifyDataSetChanged();
}
@@ -75,6 +75,8 @@ import org.chromium.chrome.browser.local_database.DatabaseHelper;
import org.chromium.chrome.browser.local_database.BraveStatsTable;
import org.chromium.chrome.browser.local_database.SavedBandwidthTable;
import org.chromium.chrome.browser.brave_stats.BraveStatsUtil;
import org.chromium.chrome.browser.notifications.retention.RetentionNotificationUtil;
import org.chromium.chrome.browser.ntp.BraveNewTabPageLayout;
import java.net.URL;
import java.util.List;
@@ -87,6 +89,9 @@ public abstract class BraveToolbarLayout extends ToolbarLayout implements OnClic
BraveRewardsNativeWorker.PublisherObserver {
public static final String PREF_HIDE_BRAVE_REWARDS_ICON = "hide_brave_rewards_icon";
private static final long MB_10 = 10000000;
private static final long MINUTES_10 = 10 * 60 * 1000;
private DatabaseHelper mDatabaseHelper = DatabaseHelper.getInstance();
private ImageButton mBraveShieldsButton;
@@ -269,6 +274,31 @@ public abstract class BraveToolbarLayout extends ToolbarLayout implements OnClic
if (getToolbarDataProvider().getTab() == tab) {
mBraveShieldsHandler.updateHost(url);
updateBraveShieldsButtonState(tab);
Profile mProfile = Profile.getLastUsedProfile();
long trackersBlockedCount = BravePrefServiceBridge.getInstance().getTrackersBlockedCount(mProfile);
long adsBlockedCount = BravePrefServiceBridge.getInstance().getAdsBlockedCount(mProfile);
long dataSaved = BravePrefServiceBridge.getInstance().getDataSaved(mProfile);
long estimatedMillisecondsSaved = (trackersBlockedCount + adsBlockedCount) * BraveNewTabPageLayout.MILLISECONDS_PER_ITEM;
if (!OnboardingPrefManager.getInstance().isAdsTrackersNotificationStarted()
&& (trackersBlockedCount + adsBlockedCount) > 250) {
RetentionNotificationUtil.scheduleNotification(getContext(), RetentionNotificationUtil.BRAVE_STATS_ADS_TRACKERS);
OnboardingPrefManager.getInstance().setAdsTrackersNotificationStarted(true);
}
if (!OnboardingPrefManager.getInstance().isDataSavedNotificationStarted()
&& dataSaved > MB_10) {
RetentionNotificationUtil.scheduleNotification(getContext(), RetentionNotificationUtil.BRAVE_STATS_DATA);
OnboardingPrefManager.getInstance().setDataSavedNotificationStarted(true);
}
if (!OnboardingPrefManager.getInstance().isTimeSavedNotificationStarted()
&& estimatedMillisecondsSaved > MINUTES_10) {
RetentionNotificationUtil.scheduleNotification(getContext(), RetentionNotificationUtil.BRAVE_STATS_TIME);
OnboardingPrefManager.getInstance().setTimeSavedNotificationStarted(true);
}
if (!NewTabPage.isNTPUrl(tab.getUrlString())
&& !OnboardingPrefManager.getInstance().hasShieldsTooltipShown()
&& PackageUtils.isFirstInstall(getContext())