Added VPN usage P3A
This commit is contained in:
@@ -255,6 +255,8 @@ public abstract class BraveActivity<C extends ChromeActivityComponent> extends C
|
||||
if (BraveVpnUtils.isBraveVpnFeatureEnable()) {
|
||||
InAppPurchaseWrapper.getInstance().startBillingServiceConnection(BraveActivity.this);
|
||||
BraveVpnNativeWorker.getInstance().addObserver(this);
|
||||
|
||||
BraveVpnUtils.reportBackgroundUsageP3A();
|
||||
}
|
||||
Tab tab = getActivityTab();
|
||||
if (tab != null) {
|
||||
|
||||
@@ -172,6 +172,15 @@ public class BraveVpnNativeWorker {
|
||||
mNativeBraveVpnNativeWorker, purchaseToken, productId, productType, packageName);
|
||||
}
|
||||
|
||||
public void reportBackgroundP3A(long sessionStartTimeMs, long sessionEndTimeMs) {
|
||||
BraveVpnNativeWorkerJni.get().reportBackgroundP3A(
|
||||
mNativeBraveVpnNativeWorker, sessionStartTimeMs, sessionEndTimeMs);
|
||||
}
|
||||
|
||||
public void reportForegroundP3A() {
|
||||
BraveVpnNativeWorkerJni.get().reportForegroundP3A(mNativeBraveVpnNativeWorker);
|
||||
}
|
||||
|
||||
@NativeMethods
|
||||
interface Natives {
|
||||
void init(BraveVpnNativeWorker caller);
|
||||
@@ -190,5 +199,8 @@ public class BraveVpnNativeWorker {
|
||||
String packageName);
|
||||
void verifyPurchaseToken(long nativeBraveVpnNativeWorker, String purchaseToken,
|
||||
String productId, String productType, String packageName);
|
||||
void reportBackgroundP3A(
|
||||
long nativeBraveVpnNativeWorker, long sessionStartTimeMs, long sessionEndTimeMs);
|
||||
void reportForegroundP3A(long nativeBraveVpnNativeWorker);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,8 @@ public class BraveVpnPrefUtils {
|
||||
public static final String PREF_BRAVE_VPN_SERVER_PUBLIC_KEY = "brave_vpn_server_public_key";
|
||||
public static final String PREF_BRAVE_VPN_IP_ADDRESS = "brave_vpn_ip_address";
|
||||
public static final String PREF_BRAVE_VPN_CLIENT_PRIVATE_KEY = "brave_vpn_client_private_key";
|
||||
public static final String PREF_SESSION_START_TIME = "brave_vpn_session_start_time";
|
||||
public static final String PREF_SESSION_END_TIME = "brave_vpn_session_end_time";
|
||||
|
||||
private static final SharedPreferences mSharedPreferences =
|
||||
ContextUtils.getAppSharedPreferences();
|
||||
@@ -268,4 +270,24 @@ public class BraveVpnPrefUtils {
|
||||
sharedPreferencesEditor.putStringSet(PREF_EXCLUDED_PACKAGES, packages);
|
||||
sharedPreferencesEditor.apply();
|
||||
}
|
||||
|
||||
public static void setSessionEndTimeMs(long timeMs) {
|
||||
SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
|
||||
sharedPreferencesEditor.putLong(PREF_SESSION_END_TIME, timeMs);
|
||||
sharedPreferencesEditor.apply();
|
||||
}
|
||||
|
||||
public static long getSessionEndTimeMs() {
|
||||
return mSharedPreferences.getLong(PREF_SESSION_END_TIME, -1);
|
||||
}
|
||||
|
||||
public static void setSessionStartTimeMs(long timeMs) {
|
||||
SharedPreferences.Editor sharedPreferencesEditor = mSharedPreferences.edit();
|
||||
sharedPreferencesEditor.putLong(PREF_SESSION_START_TIME, timeMs);
|
||||
sharedPreferencesEditor.apply();
|
||||
}
|
||||
|
||||
public static long getSessionStartTimeMs() {
|
||||
return mSharedPreferences.getLong(PREF_SESSION_START_TIME, -1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ import android.os.Build;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.vpn.BraveVpnNativeWorker;
|
||||
import org.chromium.chrome.browser.vpn.wireguard.WireguardService;
|
||||
import org.chromium.chrome.browser.vpn.wireguard.WireguardUtils;
|
||||
import org.chromium.ui.widget.Toast;
|
||||
@@ -62,6 +63,7 @@ public class BraveVpnProfileUtils {
|
||||
}
|
||||
|
||||
public void startVpn(Context context) {
|
||||
BraveVpnNativeWorker.getInstance().reportForegroundP3A();
|
||||
ContextCompat.startForegroundService(context, new Intent(context, WireguardService.class));
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.chromium.base.ContextUtils;
|
||||
import org.chromium.base.Log;
|
||||
import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.util.BraveConstants;
|
||||
import org.chromium.chrome.browser.vpn.BraveVpnNativeWorker;
|
||||
import org.chromium.chrome.browser.vpn.activities.BraveVpnPlansActivity;
|
||||
import org.chromium.chrome.browser.vpn.activities.BraveVpnProfileActivity;
|
||||
import org.chromium.chrome.browser.vpn.activities.BraveVpnSupportActivity;
|
||||
@@ -241,4 +242,13 @@ public class BraveVpnUtils {
|
||||
((FragmentActivity) activity).getSupportFragmentManager(),
|
||||
"BraveVpnConfirmDialogFragment");
|
||||
}
|
||||
|
||||
public static void reportBackgroundUsageP3A() {
|
||||
// Will report previous/current session timestamps...
|
||||
BraveVpnNativeWorker.getInstance().reportBackgroundP3A(
|
||||
BraveVpnPrefUtils.getSessionStartTimeMs(), BraveVpnPrefUtils.getSessionEndTimeMs());
|
||||
// ...and then reset the timestamps so we don't report the same session again.
|
||||
BraveVpnPrefUtils.setSessionStartTimeMs(-1);
|
||||
BraveVpnPrefUtils.setSessionEndTimeMs(-1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ import org.chromium.chrome.browser.vpn.DisconnectVpnBroadcastReceiver;
|
||||
import org.chromium.chrome.browser.vpn.utils.BraveVpnPrefUtils;
|
||||
import org.chromium.chrome.browser.vpn.utils.BraveVpnUtils;
|
||||
|
||||
import java.util.Calendar;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
@@ -43,6 +44,7 @@ public class WireguardServiceImpl
|
||||
private TunnelModel mTunnelModel;
|
||||
private final IBinder mBinder = new LocalBinder();
|
||||
private Timer mVpnStatisticsTimer;
|
||||
private Timer mRecordDaysUsedTimer;
|
||||
private static final int BRAVE_VPN_NOTIFICATION_ID = 801;
|
||||
private Context mContext = ContextUtils.getApplicationContext();
|
||||
|
||||
@@ -89,6 +91,8 @@ public class WireguardServiceImpl
|
||||
mTunnelModel = TunnelModel.createTunnel(config, this);
|
||||
mBackend.setState(mTunnelModel, Tunnel.State.UP, config);
|
||||
updateVpnStatisticsTimer();
|
||||
recordSessionTimes();
|
||||
updateRecordSessionTimesTimer();
|
||||
}
|
||||
|
||||
private Notification getBraveVpnNotification(String notificationText) {
|
||||
@@ -124,6 +128,39 @@ public class WireguardServiceImpl
|
||||
mNotificationManager.notify(BRAVE_VPN_NOTIFICATION_ID, notification);
|
||||
}
|
||||
|
||||
private void recordSessionTimes() {
|
||||
long sessionStartTimeMs = BraveVpnPrefUtils.getSessionStartTimeMs();
|
||||
long sessionEndTimeMs = BraveVpnPrefUtils.getSessionEndTimeMs();
|
||||
|
||||
Calendar sessionEndTimeCal = Calendar.getInstance();
|
||||
sessionEndTimeCal.setTimeInMillis(sessionEndTimeMs);
|
||||
Calendar currDate = Calendar.getInstance();
|
||||
|
||||
long currTimeMs = System.currentTimeMillis();
|
||||
if (sessionStartTimeMs < 0) {
|
||||
BraveVpnPrefUtils.setSessionStartTimeMs(currTimeMs);
|
||||
}
|
||||
|
||||
if (currDate.get(Calendar.YEAR) != sessionEndTimeCal.get(Calendar.YEAR)
|
||||
|| currDate.get(Calendar.MONTH) != sessionEndTimeCal.get(Calendar.MONTH)
|
||||
|| currDate.get(Calendar.DAY_OF_MONTH)
|
||||
!= sessionEndTimeCal.get(Calendar.DAY_OF_MONTH)) {
|
||||
BraveVpnPrefUtils.setSessionEndTimeMs(currTimeMs);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateRecordSessionTimesTimer() {
|
||||
// This timer will be active for the duration of the connection.
|
||||
// It will become inactive when the connection is terminated/service destroyed.
|
||||
mVpnStatisticsTimer = new Timer();
|
||||
mVpnStatisticsTimer.schedule(new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
recordSessionTimes();
|
||||
}
|
||||
}, 0, 60000);
|
||||
}
|
||||
|
||||
private void updateVpnStatisticsTimer() {
|
||||
mVpnStatisticsTimer = new Timer();
|
||||
mVpnStatisticsTimer.schedule(new TimerTask() {
|
||||
|
||||
Reference in New Issue
Block a user