Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit 97b2c5e

Browse files
authored
Fixes #2424 Enhanced Tracking Protection (#3037)
* Enhanced Tracking Protection * Updated naming to Enhanced Tracking protection and Standard
1 parent 2544753 commit 97b2c5e

44 files changed

Lines changed: 1142 additions & 297 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/src/common/shared/org/mozilla/vrbrowser/VRBrowserActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ protected void onCreate(Bundle savedInstanceState) {
279279
mAudioUpdateRunnable = () -> mAudioEngine.update();
280280

281281
mSettings = SettingsStore.getInstance(this);
282+
mSettings.initModel(this);
282283

283284
queueRunnable(() -> {
284285
createOffscreenDisplay();
@@ -486,7 +487,6 @@ protected void onDestroy() {
486487

487488
SessionStore.get().onDestroy();
488489

489-
490490
super.onDestroy();
491491
mLifeCycle.setCurrentState(Lifecycle.State.DESTROYED);
492492
mViewModelStore.clear();

app/src/common/shared/org/mozilla/vrbrowser/VRBrowserApplication.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ public void onCreate() {
3434
mAppExecutors = new AppExecutors();
3535
mBitmapCache = new BitmapCache(this, mAppExecutors.diskIO(), mAppExecutors.mainThread());
3636

37-
3837
TelemetryWrapper.init(this);
3938
GleanMetricsService.init(this);
4039
}

app/src/common/shared/org/mozilla/vrbrowser/browser/PermissionDelegate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ public void setPermissionAllowed(String uri, @SitePermission.Category int catego
287287
mSitePermissionModel.deleteSite(site);
288288
} else {
289289
if (site == null) {
290-
site = new SitePermission(uri, false, category);
290+
site = new SitePermission(uri, uri, false, category);
291291
mSitePermissions.add(site);
292292
}
293293
site.allowed = false;

app/src/common/shared/org/mozilla/vrbrowser/browser/PromptDelegate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ private void showPopUp(int sessionId, @NonNull Pair<String, LinkedList<PopUpRequ
357357
boolean allowed = index != PopUpBlockDialogWidget.NEGATIVE;
358358
boolean askAgain = mPopUpPrompt.askAgain();
359359
if (allowed && !askAgain) {
360-
SitePermission permission = new SitePermission(uri, allowed, SitePermission.SITE_PERMISSION_POPUP);
360+
SitePermission permission = new SitePermission(uri, uri, allowed, SitePermission.SITE_PERMISSION_POPUP);
361361
mAllowedPopUpSites.add(permission);
362362
mViewModel.insertSite(permission);
363363
}

app/src/common/shared/org/mozilla/vrbrowser/browser/SettingsStore.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,19 @@
88
import android.util.Log;
99

1010
import androidx.annotation.NonNull;
11+
import androidx.lifecycle.ViewModelProvider;
1112

1213
import org.json.JSONArray;
1314
import org.json.JSONObject;
15+
import org.mozilla.geckoview.ContentBlocking;
1416
import org.mozilla.geckoview.GeckoSessionSettings;
1517
import org.mozilla.telemetry.TelemetryHolder;
1618
import org.mozilla.vrbrowser.R;
19+
import org.mozilla.vrbrowser.VRBrowserActivity;
20+
import org.mozilla.vrbrowser.VRBrowserApplication;
1721
import org.mozilla.vrbrowser.telemetry.GleanMetricsService;
1822
import org.mozilla.vrbrowser.telemetry.TelemetryWrapper;
23+
import org.mozilla.vrbrowser.ui.viewmodel.SettingsViewModel;
1924
import org.mozilla.vrbrowser.utils.DeviceType;
2025
import org.mozilla.vrbrowser.utils.StringUtils;
2126
import org.mozilla.vrbrowser.utils.SystemUtils;
@@ -44,6 +49,7 @@ SettingsStore getInstance(final @NonNull Context aContext) {
4449

4550
private Context mContext;
4651
private SharedPreferences mPrefs;
52+
private SettingsViewModel mSettingsViewModel;
4753

4854
// Developer options default values
4955
public final static boolean REMOTE_DEBUGGING_DEFAULT = false;
@@ -53,7 +59,7 @@ SettingsStore getInstance(final @NonNull Context aContext) {
5359
public final static boolean UI_HARDWARE_ACCELERATION_DEFAULT_WAVEVR = false;
5460
public final static boolean PERFORMANCE_MONITOR_DEFAULT = true;
5561
public final static boolean DRM_PLAYBACK_DEFAULT = false;
56-
public final static boolean TRACKING_DEFAULT = true;
62+
public final static int TRACKING_DEFAULT = ContentBlocking.EtpLevel.DEFAULT;
5763
public final static boolean NOTIFICATIONS_DEFAULT = true;
5864
public final static boolean SPEECH_DATA_COLLECTION_DEFAULT = false;
5965
public final static boolean SPEECH_DATA_COLLECTION_REVIEWED_DEFAULT = false;
@@ -97,6 +103,14 @@ public SettingsStore(Context aContext) {
97103
mPrefs = PreferenceManager.getDefaultSharedPreferences(aContext);
98104
}
99105

106+
public void initModel(@NonNull Context context) {
107+
mSettingsViewModel = new ViewModelProvider(
108+
(VRBrowserActivity)context,
109+
ViewModelProvider.AndroidViewModelFactory.getInstance(((VRBrowserActivity) context).getApplication()))
110+
.get(SettingsViewModel.class);
111+
mSettingsViewModel.refresh();
112+
}
113+
100114
public boolean isCrashReportingEnabled() {
101115
return mPrefs.getBoolean(mContext.getString(R.string.settings_key_crash), CRASH_REPORTING_DEFAULT);
102116
}
@@ -206,15 +220,17 @@ public void setDrmContentPlaybackEnabled(boolean isEnabled) {
206220
editor.commit();
207221
}
208222

209-
public boolean isTrackingProtectionEnabled() {
210-
return mPrefs.getBoolean(
211-
mContext.getString(R.string.settings_key_tracking_protection), TRACKING_DEFAULT);
223+
public int getTrackingProtectionLevel() {
224+
return mPrefs.getInt(
225+
mContext.getString(R.string.settings_key_tracking_protection_level), TRACKING_DEFAULT);
212226
}
213227

214-
public void setTrackingProtectionEnabled(boolean isEnabled) {
228+
public void setTrackingProtectionLevel(int level) {
215229
SharedPreferences.Editor editor = mPrefs.edit();
216-
editor.putBoolean(mContext.getString(R.string.settings_key_tracking_protection), isEnabled);
230+
editor.putInt(mContext.getString(R.string.settings_key_tracking_protection_level), level);
217231
editor.commit();
232+
233+
mSettingsViewModel.setIsTrackingProtectionEnabled(level != ContentBlocking.EtpLevel.NONE);
218234
}
219235

220236
public boolean isEnvironmentOverrideEnabled() {
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package org.mozilla.vrbrowser.browser.content;
2+
3+
import org.mozilla.geckoview.ContentBlocking;
4+
import org.mozilla.geckoview.ContentBlocking.AntiTracking;
5+
6+
public class TrackingProtectionPolicy {
7+
8+
private static final int RECOMMENDED =
9+
AntiTracking.AD |
10+
AntiTracking.ANALYTIC |
11+
AntiTracking.SOCIAL |
12+
AntiTracking.TEST |
13+
AntiTracking.STP |
14+
AntiTracking.CRYPTOMINING;
15+
private static final int STRICT =
16+
RECOMMENDED | AntiTracking.FINGERPRINTING;
17+
18+
private int trackingPolicy;
19+
private int cookiePolicy;
20+
21+
private TrackingProtectionPolicy() {
22+
trackingPolicy = AntiTracking.NONE;
23+
}
24+
25+
/**
26+
* Strict policy.
27+
* Combining the [TrackingCategory.STRICT] plus a cookiePolicy of [ACCEPT_NON_TRACKERS]
28+
* This is the strictest setting and may cause issues on some web sites.
29+
*/
30+
static TrackingProtectionPolicy strict() {
31+
TrackingProtectionPolicy policy = new TrackingProtectionPolicy();
32+
policy.trackingPolicy = STRICT;
33+
policy.cookiePolicy = ContentBlocking.CookieBehavior.ACCEPT_NON_TRACKERS;
34+
return policy;
35+
}
36+
37+
/**
38+
* Recommended policy.
39+
* Combining the [TrackingCategory.RECOMMENDED] plus a [CookiePolicy] of [ACCEPT_NON_TRACKERS].
40+
* This is the recommended setting.
41+
*/
42+
static TrackingProtectionPolicy recommended() {
43+
TrackingProtectionPolicy policy = new TrackingProtectionPolicy();
44+
policy.trackingPolicy = RECOMMENDED;
45+
policy.cookiePolicy = ContentBlocking.CookieBehavior.ACCEPT_NON_TRACKERS;
46+
return policy;
47+
}
48+
49+
static TrackingProtectionPolicy none() {
50+
TrackingProtectionPolicy policy = new TrackingProtectionPolicy();
51+
policy.trackingPolicy = AntiTracking.NONE;
52+
policy.cookiePolicy = ContentBlocking.CookieBehavior.ACCEPT_ALL;
53+
return policy;
54+
}
55+
56+
public boolean shouldBlockContent() {
57+
return trackingPolicy == STRICT;
58+
}
59+
60+
public int getCookiePolicy() {
61+
return cookiePolicy;
62+
}
63+
64+
public int getAntiTrackingPolicy() {
65+
return trackingPolicy;
66+
}
67+
68+
}

0 commit comments

Comments
 (0)