fine grained blocking settings
This commit is contained in:
+5
-1
@@ -57,7 +57,9 @@ bool _customEtpSettingsChanged(
|
|||||||
previous.suspectedFingerprintersScope !=
|
previous.suspectedFingerprintersScope !=
|
||||||
current.suspectedFingerprintersScope ||
|
current.suspectedFingerprintersScope ||
|
||||||
previous.allowListBaseline != current.allowListBaseline ||
|
previous.allowListBaseline != current.allowListBaseline ||
|
||||||
previous.allowListConvenience != current.allowListConvenience;
|
previous.allowListConvenience != current.allowListConvenience ||
|
||||||
|
previous.blockAdsAnalyticsSocialTrackers !=
|
||||||
|
current.blockAdsAnalyticsSocialTrackers;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> syncUBlockFilterLists(
|
Future<void> syncUBlockFilterLists(
|
||||||
@@ -248,6 +250,8 @@ class EngineSettingsReplicationService
|
|||||||
settings.suspectedFingerprintersScope,
|
settings.suspectedFingerprintersScope,
|
||||||
allowListBaseline: settings.allowListBaseline,
|
allowListBaseline: settings.allowListBaseline,
|
||||||
allowListConvenience: settings.allowListConvenience,
|
allowListConvenience: settings.allowListConvenience,
|
||||||
|
blockAdsAnalyticsSocialTrackers:
|
||||||
|
settings.blockAdsAnalyticsSocialTrackers,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
await _service.trackingProtectionPolicy(
|
await _service.trackingProtectionPolicy(
|
||||||
|
|||||||
+1
-1
@@ -44,7 +44,7 @@ final class EngineSettingsReplicationServiceProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
String _$engineSettingsReplicationServiceHash() =>
|
String _$engineSettingsReplicationServiceHash() =>
|
||||||
r'a3d7628b7662ca8b828586e3fcf4e8925adbe062';
|
r'41c07a48bbc90a90dd6f5a0bd48d55a3e02a1b64';
|
||||||
|
|
||||||
abstract class _$EngineSettingsReplicationService extends $Notifier<void> {
|
abstract class _$EngineSettingsReplicationService extends $Notifier<void> {
|
||||||
void build();
|
void build();
|
||||||
|
|||||||
+16
-5
@@ -301,15 +301,26 @@ class _TrackersSection extends HookConsumerWidget {
|
|||||||
final blockRedirectTrackers = ref.watch(
|
final blockRedirectTrackers = ref.watch(
|
||||||
engineSettingsWithDefaultsProvider.select((s) => s.blockRedirectTrackers),
|
engineSettingsWithDefaultsProvider.select((s) => s.blockRedirectTrackers),
|
||||||
);
|
);
|
||||||
|
final blockAdsAnalyticsSocialTrackers = ref.watch(
|
||||||
|
engineSettingsWithDefaultsProvider.select(
|
||||||
|
(s) => s.blockAdsAnalyticsSocialTrackers,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
const ListTile(
|
SwitchListTile.adaptive(
|
||||||
title: Text('Always Blocked'),
|
title: const Text('Ads, Analytics, and Social Trackers'),
|
||||||
subtitle: Text(
|
subtitle: const Text(
|
||||||
'Ads, analytics, social trackers, and Mozilla social trackers are always blocked in Custom mode.',
|
'Block advertising, analytics, social, and Mozilla social tracker categories',
|
||||||
),
|
),
|
||||||
leading: Icon(MdiIcons.shieldLock),
|
secondary: const Icon(Icons.block),
|
||||||
|
value: blockAdsAnalyticsSocialTrackers,
|
||||||
|
onChanged: (value) async {
|
||||||
|
await ref
|
||||||
|
.read(saveEngineSettingsControllerProvider.notifier)
|
||||||
|
.save((s) => s.copyWith.blockAdsAnalyticsSocialTrackers(value));
|
||||||
|
},
|
||||||
),
|
),
|
||||||
SwitchListTile.adaptive(
|
SwitchListTile.adaptive(
|
||||||
title: const Text('Cryptominers'),
|
title: const Text('Cryptominers'),
|
||||||
|
|||||||
+41
-2
@@ -47,6 +47,12 @@ const List<SettingsSectionDefinition> privacySecuritySettingsSections = [
|
|||||||
keywords: ['etp', 'standard', 'strict', 'custom'],
|
keywords: ['etp', 'standard', 'strict', 'custom'],
|
||||||
child: _EnhancedTrackingProtectionSection(),
|
child: _EnhancedTrackingProtectionSection(),
|
||||||
),
|
),
|
||||||
|
SettingsEntryDefinition(
|
||||||
|
title: 'Content Blocking Database',
|
||||||
|
subtitle: 'Use GeckoView blocker lists for ETP categories',
|
||||||
|
keywords: ['ads', 'trackers', 'content blocking'],
|
||||||
|
child: _ContentBlockingDatabaseTile(),
|
||||||
|
),
|
||||||
SettingsEntryDefinition(
|
SettingsEntryDefinition(
|
||||||
title: 'Bounce Tracking Protection',
|
title: 'Bounce Tracking Protection',
|
||||||
subtitle: 'Remove tracking state left by redirect-based trackers',
|
subtitle: 'Remove tracking state left by redirect-based trackers',
|
||||||
@@ -680,14 +686,14 @@ class _EnhancedTrackingProtectionSection extends HookConsumerWidget {
|
|||||||
value: TrackingProtectionPolicy.recommended,
|
value: TrackingProtectionPolicy.recommended,
|
||||||
title: Text('Standard'),
|
title: Text('Standard'),
|
||||||
subtitle: Text(
|
subtitle: Text(
|
||||||
'Pages will load normally, but block fewer trackers.',
|
'Balances protection and compatibility by blocking fewer tracker categories.',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
RadioListTile<TrackingProtectionPolicy>.adaptive(
|
RadioListTile<TrackingProtectionPolicy>.adaptive(
|
||||||
value: TrackingProtectionPolicy.strict,
|
value: TrackingProtectionPolicy.strict,
|
||||||
title: Text('Strict'),
|
title: Text('Strict'),
|
||||||
subtitle: Text(
|
subtitle: Text(
|
||||||
'Stronger tracking protection and faster performance, but some sites may not work properly.',
|
'Blocks more tracker categories, including tracking content, but may break some sites.',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
RadioListTile<TrackingProtectionPolicy>.adaptive(
|
RadioListTile<TrackingProtectionPolicy>.adaptive(
|
||||||
@@ -706,6 +712,39 @@ class _EnhancedTrackingProtectionSection extends HookConsumerWidget {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class _ContentBlockingDatabaseTile extends HookConsumerWidget {
|
||||||
|
const _ContentBlockingDatabaseTile();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
|
final useContentBlockingDatabase = ref.watch(
|
||||||
|
engineSettingsWithDefaultsProvider.select(
|
||||||
|
(s) => s.useContentBlockingDatabase,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
return SwitchListTile.adaptive(
|
||||||
|
title: const Text('Content Blocking Database'),
|
||||||
|
subtitle: const Text(
|
||||||
|
'Use GeckoView blocker lists for ETP categories such as ads, analytics, and social trackers. Requires app restart.',
|
||||||
|
),
|
||||||
|
secondary: const Icon(Icons.storage),
|
||||||
|
value: useContentBlockingDatabase,
|
||||||
|
onChanged: (value) async {
|
||||||
|
await ref
|
||||||
|
.read(saveEngineSettingsControllerProvider.notifier)
|
||||||
|
.save(
|
||||||
|
(currentSettings) =>
|
||||||
|
currentSettings.copyWith.useContentBlockingDatabase(value),
|
||||||
|
);
|
||||||
|
if (context.mounted) {
|
||||||
|
await _showRestartDialog(context, ref);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class _BounceTrackingProtectionTile extends HookConsumerWidget {
|
class _BounceTrackingProtectionTile extends HookConsumerWidget {
|
||||||
const _BounceTrackingProtectionTile();
|
const _BounceTrackingProtectionTile();
|
||||||
|
|
||||||
|
|||||||
@@ -80,6 +80,9 @@ class EngineSettings extends GeckoEngineSettings with FastEquatable {
|
|||||||
@override
|
@override
|
||||||
List<String> get locales => super.locales!;
|
List<String> get locales => super.locales!;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool get useContentBlockingDatabase => super.useContentBlockingDatabase!;
|
||||||
|
|
||||||
// Custom Tracking Protection overrides
|
// Custom Tracking Protection overrides
|
||||||
@override
|
@override
|
||||||
bool get blockCookies => super.blockCookies!;
|
bool get blockCookies => super.blockCookies!;
|
||||||
@@ -104,6 +107,9 @@ class EngineSettings extends GeckoEngineSettings with FastEquatable {
|
|||||||
bool get allowListBaseline => super.allowListBaseline!;
|
bool get allowListBaseline => super.allowListBaseline!;
|
||||||
@override
|
@override
|
||||||
bool get allowListConvenience => super.allowListConvenience!;
|
bool get allowListConvenience => super.allowListConvenience!;
|
||||||
|
@override
|
||||||
|
bool get blockAdsAnalyticsSocialTrackers =>
|
||||||
|
super.blockAdsAnalyticsSocialTrackers!;
|
||||||
|
|
||||||
// Web Content Settings
|
// Web Content Settings
|
||||||
@override
|
@override
|
||||||
@@ -196,6 +202,7 @@ class EngineSettings extends GeckoEngineSettings with FastEquatable {
|
|||||||
required this.safeBrowsingMalwareEnabled,
|
required this.safeBrowsingMalwareEnabled,
|
||||||
required this.safeBrowsingPhishingEnabled,
|
required this.safeBrowsingPhishingEnabled,
|
||||||
required super.locales,
|
required super.locales,
|
||||||
|
required super.useContentBlockingDatabase,
|
||||||
required super.blockCookies,
|
required super.blockCookies,
|
||||||
required super.customCookiePolicy,
|
required super.customCookiePolicy,
|
||||||
required super.blockTrackingContent,
|
required super.blockTrackingContent,
|
||||||
@@ -207,6 +214,7 @@ class EngineSettings extends GeckoEngineSettings with FastEquatable {
|
|||||||
required super.suspectedFingerprintersScope,
|
required super.suspectedFingerprintersScope,
|
||||||
required super.allowListBaseline,
|
required super.allowListBaseline,
|
||||||
required super.allowListConvenience,
|
required super.allowListConvenience,
|
||||||
|
required super.blockAdsAnalyticsSocialTrackers,
|
||||||
required super.webFontsEnabled,
|
required super.webFontsEnabled,
|
||||||
required super.automaticFontSizeAdjustment,
|
required super.automaticFontSizeAdjustment,
|
||||||
required super.fontSizeFactor,
|
required super.fontSizeFactor,
|
||||||
@@ -250,6 +258,7 @@ class EngineSettings extends GeckoEngineSettings with FastEquatable {
|
|||||||
bool? safeBrowsingMalwareEnabled,
|
bool? safeBrowsingMalwareEnabled,
|
||||||
bool? safeBrowsingPhishingEnabled,
|
bool? safeBrowsingPhishingEnabled,
|
||||||
List<String>? locales,
|
List<String>? locales,
|
||||||
|
bool? useContentBlockingDatabase,
|
||||||
bool? blockCookies,
|
bool? blockCookies,
|
||||||
CustomCookiePolicy? customCookiePolicy,
|
CustomCookiePolicy? customCookiePolicy,
|
||||||
bool? blockTrackingContent,
|
bool? blockTrackingContent,
|
||||||
@@ -261,6 +270,7 @@ class EngineSettings extends GeckoEngineSettings with FastEquatable {
|
|||||||
TrackingScope? suspectedFingerprintersScope,
|
TrackingScope? suspectedFingerprintersScope,
|
||||||
bool? allowListBaseline,
|
bool? allowListBaseline,
|
||||||
bool? allowListConvenience,
|
bool? allowListConvenience,
|
||||||
|
bool? blockAdsAnalyticsSocialTrackers,
|
||||||
bool? webFontsEnabled,
|
bool? webFontsEnabled,
|
||||||
bool? automaticFontSizeAdjustment,
|
bool? automaticFontSizeAdjustment,
|
||||||
double? fontSizeFactor,
|
double? fontSizeFactor,
|
||||||
@@ -318,6 +328,7 @@ class EngineSettings extends GeckoEngineSettings with FastEquatable {
|
|||||||
WidgetsBinding.instance.platformDispatcher.locales
|
WidgetsBinding.instance.platformDispatcher.locales
|
||||||
.map((x) => x.toLanguageTag())
|
.map((x) => x.toLanguageTag())
|
||||||
.toList(),
|
.toList(),
|
||||||
|
useContentBlockingDatabase: useContentBlockingDatabase ?? true,
|
||||||
blockCookies: blockCookies ?? true,
|
blockCookies: blockCookies ?? true,
|
||||||
customCookiePolicy:
|
customCookiePolicy:
|
||||||
customCookiePolicy ?? CustomCookiePolicy.totalProtection,
|
customCookiePolicy ?? CustomCookiePolicy.totalProtection,
|
||||||
@@ -331,6 +342,8 @@ class EngineSettings extends GeckoEngineSettings with FastEquatable {
|
|||||||
suspectedFingerprintersScope ?? TrackingScope.all,
|
suspectedFingerprintersScope ?? TrackingScope.all,
|
||||||
allowListBaseline: allowListBaseline ?? true,
|
allowListBaseline: allowListBaseline ?? true,
|
||||||
allowListConvenience: allowListConvenience ?? false,
|
allowListConvenience: allowListConvenience ?? false,
|
||||||
|
blockAdsAnalyticsSocialTrackers:
|
||||||
|
blockAdsAnalyticsSocialTrackers ?? true,
|
||||||
webFontsEnabled: webFontsEnabled ?? true,
|
webFontsEnabled: webFontsEnabled ?? true,
|
||||||
automaticFontSizeAdjustment: automaticFontSizeAdjustment ?? true,
|
automaticFontSizeAdjustment: automaticFontSizeAdjustment ?? true,
|
||||||
fontSizeFactor: fontSizeFactor ?? 1.0,
|
fontSizeFactor: fontSizeFactor ?? 1.0,
|
||||||
@@ -398,6 +411,7 @@ class EngineSettings extends GeckoEngineSettings with FastEquatable {
|
|||||||
safeBrowsingMalwareEnabled,
|
safeBrowsingMalwareEnabled,
|
||||||
safeBrowsingPhishingEnabled,
|
safeBrowsingPhishingEnabled,
|
||||||
locales,
|
locales,
|
||||||
|
useContentBlockingDatabase,
|
||||||
blockCookies,
|
blockCookies,
|
||||||
customCookiePolicy,
|
customCookiePolicy,
|
||||||
blockTrackingContent,
|
blockTrackingContent,
|
||||||
@@ -409,6 +423,7 @@ class EngineSettings extends GeckoEngineSettings with FastEquatable {
|
|||||||
suspectedFingerprintersScope,
|
suspectedFingerprintersScope,
|
||||||
allowListBaseline,
|
allowListBaseline,
|
||||||
allowListConvenience,
|
allowListConvenience,
|
||||||
|
blockAdsAnalyticsSocialTrackers,
|
||||||
webFontsEnabled,
|
webFontsEnabled,
|
||||||
automaticFontSizeAdjustment,
|
automaticFontSizeAdjustment,
|
||||||
fontSizeFactor,
|
fontSizeFactor,
|
||||||
|
|||||||
@@ -77,6 +77,8 @@ abstract class _$EngineSettingsCWProxy {
|
|||||||
|
|
||||||
EngineSettings locales(List<String>? locales);
|
EngineSettings locales(List<String>? locales);
|
||||||
|
|
||||||
|
EngineSettings useContentBlockingDatabase(bool? useContentBlockingDatabase);
|
||||||
|
|
||||||
EngineSettings blockCookies(bool? blockCookies);
|
EngineSettings blockCookies(bool? blockCookies);
|
||||||
|
|
||||||
EngineSettings customCookiePolicy(CustomCookiePolicy? customCookiePolicy);
|
EngineSettings customCookiePolicy(CustomCookiePolicy? customCookiePolicy);
|
||||||
@@ -103,6 +105,10 @@ abstract class _$EngineSettingsCWProxy {
|
|||||||
|
|
||||||
EngineSettings allowListConvenience(bool? allowListConvenience);
|
EngineSettings allowListConvenience(bool? allowListConvenience);
|
||||||
|
|
||||||
|
EngineSettings blockAdsAnalyticsSocialTrackers(
|
||||||
|
bool? blockAdsAnalyticsSocialTrackers,
|
||||||
|
);
|
||||||
|
|
||||||
EngineSettings webFontsEnabled(bool? webFontsEnabled);
|
EngineSettings webFontsEnabled(bool? webFontsEnabled);
|
||||||
|
|
||||||
EngineSettings automaticFontSizeAdjustment(bool? automaticFontSizeAdjustment);
|
EngineSettings automaticFontSizeAdjustment(bool? automaticFontSizeAdjustment);
|
||||||
@@ -166,6 +172,7 @@ abstract class _$EngineSettingsCWProxy {
|
|||||||
bool safeBrowsingMalwareEnabled,
|
bool safeBrowsingMalwareEnabled,
|
||||||
bool safeBrowsingPhishingEnabled,
|
bool safeBrowsingPhishingEnabled,
|
||||||
List<String>? locales,
|
List<String>? locales,
|
||||||
|
bool? useContentBlockingDatabase,
|
||||||
bool? blockCookies,
|
bool? blockCookies,
|
||||||
CustomCookiePolicy? customCookiePolicy,
|
CustomCookiePolicy? customCookiePolicy,
|
||||||
bool? blockTrackingContent,
|
bool? blockTrackingContent,
|
||||||
@@ -177,6 +184,7 @@ abstract class _$EngineSettingsCWProxy {
|
|||||||
TrackingScope? suspectedFingerprintersScope,
|
TrackingScope? suspectedFingerprintersScope,
|
||||||
bool? allowListBaseline,
|
bool? allowListBaseline,
|
||||||
bool? allowListConvenience,
|
bool? allowListConvenience,
|
||||||
|
bool? blockAdsAnalyticsSocialTrackers,
|
||||||
bool? webFontsEnabled,
|
bool? webFontsEnabled,
|
||||||
bool? automaticFontSizeAdjustment,
|
bool? automaticFontSizeAdjustment,
|
||||||
double? fontSizeFactor,
|
double? fontSizeFactor,
|
||||||
@@ -320,6 +328,10 @@ class _$EngineSettingsCWProxyImpl implements _$EngineSettingsCWProxy {
|
|||||||
@override
|
@override
|
||||||
EngineSettings locales(List<String>? locales) => call(locales: locales);
|
EngineSettings locales(List<String>? locales) => call(locales: locales);
|
||||||
|
|
||||||
|
@override
|
||||||
|
EngineSettings useContentBlockingDatabase(bool? useContentBlockingDatabase) =>
|
||||||
|
call(useContentBlockingDatabase: useContentBlockingDatabase);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
EngineSettings blockCookies(bool? blockCookies) =>
|
EngineSettings blockCookies(bool? blockCookies) =>
|
||||||
call(blockCookies: blockCookies);
|
call(blockCookies: blockCookies);
|
||||||
@@ -366,6 +378,11 @@ class _$EngineSettingsCWProxyImpl implements _$EngineSettingsCWProxy {
|
|||||||
EngineSettings allowListConvenience(bool? allowListConvenience) =>
|
EngineSettings allowListConvenience(bool? allowListConvenience) =>
|
||||||
call(allowListConvenience: allowListConvenience);
|
call(allowListConvenience: allowListConvenience);
|
||||||
|
|
||||||
|
@override
|
||||||
|
EngineSettings blockAdsAnalyticsSocialTrackers(
|
||||||
|
bool? blockAdsAnalyticsSocialTrackers,
|
||||||
|
) => call(blockAdsAnalyticsSocialTrackers: blockAdsAnalyticsSocialTrackers);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
EngineSettings webFontsEnabled(bool? webFontsEnabled) =>
|
EngineSettings webFontsEnabled(bool? webFontsEnabled) =>
|
||||||
call(webFontsEnabled: webFontsEnabled);
|
call(webFontsEnabled: webFontsEnabled);
|
||||||
@@ -462,6 +479,7 @@ class _$EngineSettingsCWProxyImpl implements _$EngineSettingsCWProxy {
|
|||||||
Object? safeBrowsingMalwareEnabled = const $CopyWithPlaceholder(),
|
Object? safeBrowsingMalwareEnabled = const $CopyWithPlaceholder(),
|
||||||
Object? safeBrowsingPhishingEnabled = const $CopyWithPlaceholder(),
|
Object? safeBrowsingPhishingEnabled = const $CopyWithPlaceholder(),
|
||||||
Object? locales = const $CopyWithPlaceholder(),
|
Object? locales = const $CopyWithPlaceholder(),
|
||||||
|
Object? useContentBlockingDatabase = const $CopyWithPlaceholder(),
|
||||||
Object? blockCookies = const $CopyWithPlaceholder(),
|
Object? blockCookies = const $CopyWithPlaceholder(),
|
||||||
Object? customCookiePolicy = const $CopyWithPlaceholder(),
|
Object? customCookiePolicy = const $CopyWithPlaceholder(),
|
||||||
Object? blockTrackingContent = const $CopyWithPlaceholder(),
|
Object? blockTrackingContent = const $CopyWithPlaceholder(),
|
||||||
@@ -473,6 +491,7 @@ class _$EngineSettingsCWProxyImpl implements _$EngineSettingsCWProxy {
|
|||||||
Object? suspectedFingerprintersScope = const $CopyWithPlaceholder(),
|
Object? suspectedFingerprintersScope = const $CopyWithPlaceholder(),
|
||||||
Object? allowListBaseline = const $CopyWithPlaceholder(),
|
Object? allowListBaseline = const $CopyWithPlaceholder(),
|
||||||
Object? allowListConvenience = const $CopyWithPlaceholder(),
|
Object? allowListConvenience = const $CopyWithPlaceholder(),
|
||||||
|
Object? blockAdsAnalyticsSocialTrackers = const $CopyWithPlaceholder(),
|
||||||
Object? webFontsEnabled = const $CopyWithPlaceholder(),
|
Object? webFontsEnabled = const $CopyWithPlaceholder(),
|
||||||
Object? automaticFontSizeAdjustment = const $CopyWithPlaceholder(),
|
Object? automaticFontSizeAdjustment = const $CopyWithPlaceholder(),
|
||||||
Object? fontSizeFactor = const $CopyWithPlaceholder(),
|
Object? fontSizeFactor = const $CopyWithPlaceholder(),
|
||||||
@@ -621,6 +640,11 @@ class _$EngineSettingsCWProxyImpl implements _$EngineSettingsCWProxy {
|
|||||||
? _value.locales
|
? _value.locales
|
||||||
// ignore: cast_nullable_to_non_nullable
|
// ignore: cast_nullable_to_non_nullable
|
||||||
: locales as List<String>?,
|
: locales as List<String>?,
|
||||||
|
useContentBlockingDatabase:
|
||||||
|
useContentBlockingDatabase == const $CopyWithPlaceholder()
|
||||||
|
? _value.useContentBlockingDatabase
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: useContentBlockingDatabase as bool?,
|
||||||
blockCookies: blockCookies == const $CopyWithPlaceholder()
|
blockCookies: blockCookies == const $CopyWithPlaceholder()
|
||||||
? _value.blockCookies
|
? _value.blockCookies
|
||||||
// ignore: cast_nullable_to_non_nullable
|
// ignore: cast_nullable_to_non_nullable
|
||||||
@@ -668,6 +692,11 @@ class _$EngineSettingsCWProxyImpl implements _$EngineSettingsCWProxy {
|
|||||||
? _value.allowListConvenience
|
? _value.allowListConvenience
|
||||||
// ignore: cast_nullable_to_non_nullable
|
// ignore: cast_nullable_to_non_nullable
|
||||||
: allowListConvenience as bool?,
|
: allowListConvenience as bool?,
|
||||||
|
blockAdsAnalyticsSocialTrackers:
|
||||||
|
blockAdsAnalyticsSocialTrackers == const $CopyWithPlaceholder()
|
||||||
|
? _value.blockAdsAnalyticsSocialTrackers
|
||||||
|
// ignore: cast_nullable_to_non_nullable
|
||||||
|
: blockAdsAnalyticsSocialTrackers as bool?,
|
||||||
webFontsEnabled: webFontsEnabled == const $CopyWithPlaceholder()
|
webFontsEnabled: webFontsEnabled == const $CopyWithPlaceholder()
|
||||||
? _value.webFontsEnabled
|
? _value.webFontsEnabled
|
||||||
// ignore: cast_nullable_to_non_nullable
|
// ignore: cast_nullable_to_non_nullable
|
||||||
@@ -814,6 +843,7 @@ EngineSettings _$EngineSettingsFromJson(
|
|||||||
locales: (json['locales'] as List<dynamic>?)
|
locales: (json['locales'] as List<dynamic>?)
|
||||||
?.map((e) => e as String)
|
?.map((e) => e as String)
|
||||||
.toList(),
|
.toList(),
|
||||||
|
useContentBlockingDatabase: json['useContentBlockingDatabase'] as bool?,
|
||||||
blockCookies: json['blockCookies'] as bool?,
|
blockCookies: json['blockCookies'] as bool?,
|
||||||
customCookiePolicy: $enumDecodeNullable(
|
customCookiePolicy: $enumDecodeNullable(
|
||||||
_$CustomCookiePolicyEnumMap,
|
_$CustomCookiePolicyEnumMap,
|
||||||
@@ -834,6 +864,8 @@ EngineSettings _$EngineSettingsFromJson(
|
|||||||
),
|
),
|
||||||
allowListBaseline: json['allowListBaseline'] as bool?,
|
allowListBaseline: json['allowListBaseline'] as bool?,
|
||||||
allowListConvenience: json['allowListConvenience'] as bool?,
|
allowListConvenience: json['allowListConvenience'] as bool?,
|
||||||
|
blockAdsAnalyticsSocialTrackers:
|
||||||
|
json['blockAdsAnalyticsSocialTrackers'] as bool?,
|
||||||
webFontsEnabled: json['webFontsEnabled'] as bool?,
|
webFontsEnabled: json['webFontsEnabled'] as bool?,
|
||||||
automaticFontSizeAdjustment: json['automaticFontSizeAdjustment'] as bool?,
|
automaticFontSizeAdjustment: json['automaticFontSizeAdjustment'] as bool?,
|
||||||
fontSizeFactor: (json['fontSizeFactor'] as num?)?.toDouble(),
|
fontSizeFactor: (json['fontSizeFactor'] as num?)?.toDouble(),
|
||||||
@@ -882,6 +914,7 @@ Map<String, dynamic> _$EngineSettingsToJson(
|
|||||||
.webContentIsolationStrategy]!,
|
.webContentIsolationStrategy]!,
|
||||||
'enterpriseRootsEnabled': instance.enterpriseRootsEnabled,
|
'enterpriseRootsEnabled': instance.enterpriseRootsEnabled,
|
||||||
'locales': instance.locales,
|
'locales': instance.locales,
|
||||||
|
'useContentBlockingDatabase': instance.useContentBlockingDatabase,
|
||||||
'blockCookies': instance.blockCookies,
|
'blockCookies': instance.blockCookies,
|
||||||
'customCookiePolicy':
|
'customCookiePolicy':
|
||||||
_$CustomCookiePolicyEnumMap[instance.customCookiePolicy]!,
|
_$CustomCookiePolicyEnumMap[instance.customCookiePolicy]!,
|
||||||
@@ -896,6 +929,7 @@ Map<String, dynamic> _$EngineSettingsToJson(
|
|||||||
_$TrackingScopeEnumMap[instance.suspectedFingerprintersScope]!,
|
_$TrackingScopeEnumMap[instance.suspectedFingerprintersScope]!,
|
||||||
'allowListBaseline': instance.allowListBaseline,
|
'allowListBaseline': instance.allowListBaseline,
|
||||||
'allowListConvenience': instance.allowListConvenience,
|
'allowListConvenience': instance.allowListConvenience,
|
||||||
|
'blockAdsAnalyticsSocialTrackers': instance.blockAdsAnalyticsSocialTrackers,
|
||||||
'webFontsEnabled': instance.webFontsEnabled,
|
'webFontsEnabled': instance.webFontsEnabled,
|
||||||
'automaticFontSizeAdjustment': instance.automaticFontSizeAdjustment,
|
'automaticFontSizeAdjustment': instance.automaticFontSizeAdjustment,
|
||||||
'fontSizeFactor': instance.fontSizeFactor,
|
'fontSizeFactor': instance.fontSizeFactor,
|
||||||
|
|||||||
@@ -135,6 +135,8 @@ class EngineSettingsRepository extends _$EngineSettingsRepository {
|
|||||||
'locales': settings['locales']
|
'locales': settings['locales']
|
||||||
?.readAs(DriftSqlType.string, db.typeMapping)
|
?.readAs(DriftSqlType.string, db.typeMapping)
|
||||||
.mapNotNull(jsonDecode),
|
.mapNotNull(jsonDecode),
|
||||||
|
'useContentBlockingDatabase': settings['useContentBlockingDatabase']
|
||||||
|
?.readAs(DriftSqlType.bool, db.typeMapping),
|
||||||
// Custom Tracking Protection
|
// Custom Tracking Protection
|
||||||
'blockCookies': settings['blockCookies']?.readAs(
|
'blockCookies': settings['blockCookies']?.readAs(
|
||||||
DriftSqlType.bool,
|
DriftSqlType.bool,
|
||||||
@@ -176,6 +178,11 @@ class EngineSettingsRepository extends _$EngineSettingsRepository {
|
|||||||
DriftSqlType.bool,
|
DriftSqlType.bool,
|
||||||
db.typeMapping,
|
db.typeMapping,
|
||||||
),
|
),
|
||||||
|
'blockAdsAnalyticsSocialTrackers':
|
||||||
|
settings['blockAdsAnalyticsSocialTrackers']?.readAs(
|
||||||
|
DriftSqlType.bool,
|
||||||
|
db.typeMapping,
|
||||||
|
),
|
||||||
// Web Content Settings
|
// Web Content Settings
|
||||||
'webFontsEnabled': settings['webFontsEnabled']?.readAs(
|
'webFontsEnabled': settings['webFontsEnabled']?.readAs(
|
||||||
DriftSqlType.bool,
|
DriftSqlType.bool,
|
||||||
|
|||||||
+8
-9
@@ -127,17 +127,16 @@ class GeckoEngineSettingsApiImpl : GeckoEngineSettingsApi {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a custom tracking protection policy based on user settings.
|
* Creates a custom tracking protection policy based on user settings.
|
||||||
* Matches Fenix's implementation where AD, ANALYTICS, SOCIAL, and MOZILLA_SOCIAL
|
|
||||||
* are always blocked, while other categories are configurable.
|
|
||||||
*/
|
*/
|
||||||
private fun createCustomTrackingProtectionPolicy(settings: GeckoEngineSettings): TrackingProtectionPolicy {
|
private fun createCustomTrackingProtectionPolicy(settings: GeckoEngineSettings): TrackingProtectionPolicy {
|
||||||
// Always include these categories (not user-configurable, matches Fenix)
|
val categories = mutableListOf<TrackingCategory>()
|
||||||
val categories = mutableListOf(
|
|
||||||
TrackingCategory.AD,
|
if (settings.blockAdsAnalyticsSocialTrackers != false) {
|
||||||
TrackingCategory.ANALYTICS,
|
categories.add(TrackingCategory.AD)
|
||||||
TrackingCategory.SOCIAL,
|
categories.add(TrackingCategory.ANALYTICS)
|
||||||
TrackingCategory.MOZILLA_SOCIAL,
|
categories.add(TrackingCategory.SOCIAL)
|
||||||
)
|
categories.add(TrackingCategory.MOZILLA_SOCIAL)
|
||||||
|
}
|
||||||
|
|
||||||
// Add configurable categories
|
// Add configurable categories
|
||||||
if (settings.blockTrackingContent == true) {
|
if (settings.blockTrackingContent == true) {
|
||||||
|
|||||||
+2
-1
@@ -139,7 +139,8 @@ class Core(
|
|||||||
).path
|
).path
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
useContentBlockingDatabase = true
|
useContentBlockingDatabase =
|
||||||
|
GlobalComponents.startupSettings?.useContentBlockingDatabase ?: true
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+41
-28
@@ -3397,6 +3397,11 @@ data class GeckoEngineSettings (
|
|||||||
val dohSettings: DohSettings? = null,
|
val dohSettings: DohSettings? = null,
|
||||||
val fingerprintingProtectionOverrides: String? = null,
|
val fingerprintingProtectionOverrides: String? = null,
|
||||||
val locales: List<String>? = null,
|
val locales: List<String>? = null,
|
||||||
|
/**
|
||||||
|
* Use GeckoView's content-blocking database for tracking protection.
|
||||||
|
* This is applied when the engine is created and requires app restart.
|
||||||
|
*/
|
||||||
|
val useContentBlockingDatabase: Boolean? = null,
|
||||||
/** Master toggle for cookie blocking in Custom mode */
|
/** Master toggle for cookie blocking in Custom mode */
|
||||||
val blockCookies: Boolean? = null,
|
val blockCookies: Boolean? = null,
|
||||||
/** Cookie policy selection (only applies when blockCookies is true) */
|
/** Cookie policy selection (only applies when blockCookies is true) */
|
||||||
@@ -3422,6 +3427,8 @@ data class GeckoEngineSettings (
|
|||||||
val allowListBaseline: Boolean? = null,
|
val allowListBaseline: Boolean? = null,
|
||||||
/** Allow convenience tracking protection exceptions (fixes minor issues) */
|
/** Allow convenience tracking protection exceptions (fixes minor issues) */
|
||||||
val allowListConvenience: Boolean? = null,
|
val allowListConvenience: Boolean? = null,
|
||||||
|
/** Block advertising, analytics, social, and Mozilla social trackers */
|
||||||
|
val blockAdsAnalyticsSocialTrackers: Boolean? = null,
|
||||||
val webFontsEnabled: Boolean? = null,
|
val webFontsEnabled: Boolean? = null,
|
||||||
val automaticFontSizeAdjustment: Boolean? = null,
|
val automaticFontSizeAdjustment: Boolean? = null,
|
||||||
val fontSizeFactor: Double? = null,
|
val fontSizeFactor: Double? = null,
|
||||||
@@ -3457,33 +3464,35 @@ data class GeckoEngineSettings (
|
|||||||
val dohSettings = pigeonVar_list[13] as DohSettings?
|
val dohSettings = pigeonVar_list[13] as DohSettings?
|
||||||
val fingerprintingProtectionOverrides = pigeonVar_list[14] as String?
|
val fingerprintingProtectionOverrides = pigeonVar_list[14] as String?
|
||||||
val locales = pigeonVar_list[15] as List<String>?
|
val locales = pigeonVar_list[15] as List<String>?
|
||||||
val blockCookies = pigeonVar_list[16] as Boolean?
|
val useContentBlockingDatabase = pigeonVar_list[16] as Boolean?
|
||||||
val customCookiePolicy = pigeonVar_list[17] as CustomCookiePolicy?
|
val blockCookies = pigeonVar_list[17] as Boolean?
|
||||||
val blockTrackingContent = pigeonVar_list[18] as Boolean?
|
val customCookiePolicy = pigeonVar_list[18] as CustomCookiePolicy?
|
||||||
val trackingContentScope = pigeonVar_list[19] as TrackingScope?
|
val blockTrackingContent = pigeonVar_list[19] as Boolean?
|
||||||
val blockCryptominers = pigeonVar_list[20] as Boolean?
|
val trackingContentScope = pigeonVar_list[20] as TrackingScope?
|
||||||
val blockFingerprinters = pigeonVar_list[21] as Boolean?
|
val blockCryptominers = pigeonVar_list[21] as Boolean?
|
||||||
val blockRedirectTrackers = pigeonVar_list[22] as Boolean?
|
val blockFingerprinters = pigeonVar_list[22] as Boolean?
|
||||||
val blockSuspectedFingerprinters = pigeonVar_list[23] as Boolean?
|
val blockRedirectTrackers = pigeonVar_list[23] as Boolean?
|
||||||
val suspectedFingerprintersScope = pigeonVar_list[24] as TrackingScope?
|
val blockSuspectedFingerprinters = pigeonVar_list[24] as Boolean?
|
||||||
val allowListBaseline = pigeonVar_list[25] as Boolean?
|
val suspectedFingerprintersScope = pigeonVar_list[25] as TrackingScope?
|
||||||
val allowListConvenience = pigeonVar_list[26] as Boolean?
|
val allowListBaseline = pigeonVar_list[26] as Boolean?
|
||||||
val webFontsEnabled = pigeonVar_list[27] as Boolean?
|
val allowListConvenience = pigeonVar_list[27] as Boolean?
|
||||||
val automaticFontSizeAdjustment = pigeonVar_list[28] as Boolean?
|
val blockAdsAnalyticsSocialTrackers = pigeonVar_list[28] as Boolean?
|
||||||
val fontSizeFactor = pigeonVar_list[29] as Double?
|
val webFontsEnabled = pigeonVar_list[29] as Boolean?
|
||||||
val fontInflationEnabled = pigeonVar_list[30] as Boolean?
|
val automaticFontSizeAdjustment = pigeonVar_list[30] as Boolean?
|
||||||
val displayDensityOverride = pigeonVar_list[31] as Double?
|
val fontSizeFactor = pigeonVar_list[31] as Double?
|
||||||
val screenWidthOverride = pigeonVar_list[32] as Long?
|
val fontInflationEnabled = pigeonVar_list[32] as Boolean?
|
||||||
val screenHeightOverride = pigeonVar_list[33] as Long?
|
val displayDensityOverride = pigeonVar_list[33] as Double?
|
||||||
val inputAutoZoomEnabled = pigeonVar_list[34] as Boolean?
|
val screenWidthOverride = pigeonVar_list[34] as Long?
|
||||||
val fissionEnabled = pigeonVar_list[35] as Boolean?
|
val screenHeightOverride = pigeonVar_list[35] as Long?
|
||||||
val isolatedProcessEnabled = pigeonVar_list[36] as Boolean?
|
val inputAutoZoomEnabled = pigeonVar_list[36] as Boolean?
|
||||||
val appZygoteProcessEnabled = pigeonVar_list[37] as Boolean?
|
val fissionEnabled = pigeonVar_list[37] as Boolean?
|
||||||
val extensionsWebAPIEnabled = pigeonVar_list[38] as Boolean?
|
val isolatedProcessEnabled = pigeonVar_list[38] as Boolean?
|
||||||
val lnaBlocking = pigeonVar_list[39] as Boolean?
|
val appZygoteProcessEnabled = pigeonVar_list[39] as Boolean?
|
||||||
val lnaBlockTrackers = pigeonVar_list[40] as Boolean?
|
val extensionsWebAPIEnabled = pigeonVar_list[40] as Boolean?
|
||||||
val lnaEnabled = pigeonVar_list[41] as Boolean?
|
val lnaBlocking = pigeonVar_list[41] as Boolean?
|
||||||
return GeckoEngineSettings(javascriptEnabled, trackingProtectionPolicy, httpsOnlyMode, globalPrivacyControlEnabled, preferredColorScheme, cookieBannerHandlingMode, cookieBannerHandlingModePrivateBrowsing, cookieBannerHandlingGlobalRules, cookieBannerHandlingGlobalRulesSubFrames, webContentIsolationStrategy, userAgent, contentBlocking, enterpriseRootsEnabled, dohSettings, fingerprintingProtectionOverrides, locales, blockCookies, customCookiePolicy, blockTrackingContent, trackingContentScope, blockCryptominers, blockFingerprinters, blockRedirectTrackers, blockSuspectedFingerprinters, suspectedFingerprintersScope, allowListBaseline, allowListConvenience, webFontsEnabled, automaticFontSizeAdjustment, fontSizeFactor, fontInflationEnabled, displayDensityOverride, screenWidthOverride, screenHeightOverride, inputAutoZoomEnabled, fissionEnabled, isolatedProcessEnabled, appZygoteProcessEnabled, extensionsWebAPIEnabled, lnaBlocking, lnaBlockTrackers, lnaEnabled)
|
val lnaBlockTrackers = pigeonVar_list[42] as Boolean?
|
||||||
|
val lnaEnabled = pigeonVar_list[43] as Boolean?
|
||||||
|
return GeckoEngineSettings(javascriptEnabled, trackingProtectionPolicy, httpsOnlyMode, globalPrivacyControlEnabled, preferredColorScheme, cookieBannerHandlingMode, cookieBannerHandlingModePrivateBrowsing, cookieBannerHandlingGlobalRules, cookieBannerHandlingGlobalRulesSubFrames, webContentIsolationStrategy, userAgent, contentBlocking, enterpriseRootsEnabled, dohSettings, fingerprintingProtectionOverrides, locales, useContentBlockingDatabase, blockCookies, customCookiePolicy, blockTrackingContent, trackingContentScope, blockCryptominers, blockFingerprinters, blockRedirectTrackers, blockSuspectedFingerprinters, suspectedFingerprintersScope, allowListBaseline, allowListConvenience, blockAdsAnalyticsSocialTrackers, webFontsEnabled, automaticFontSizeAdjustment, fontSizeFactor, fontInflationEnabled, displayDensityOverride, screenWidthOverride, screenHeightOverride, inputAutoZoomEnabled, fissionEnabled, isolatedProcessEnabled, appZygoteProcessEnabled, extensionsWebAPIEnabled, lnaBlocking, lnaBlockTrackers, lnaEnabled)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fun toList(): List<Any?> {
|
fun toList(): List<Any?> {
|
||||||
@@ -3504,6 +3513,7 @@ data class GeckoEngineSettings (
|
|||||||
dohSettings,
|
dohSettings,
|
||||||
fingerprintingProtectionOverrides,
|
fingerprintingProtectionOverrides,
|
||||||
locales,
|
locales,
|
||||||
|
useContentBlockingDatabase,
|
||||||
blockCookies,
|
blockCookies,
|
||||||
customCookiePolicy,
|
customCookiePolicy,
|
||||||
blockTrackingContent,
|
blockTrackingContent,
|
||||||
@@ -3515,6 +3525,7 @@ data class GeckoEngineSettings (
|
|||||||
suspectedFingerprintersScope,
|
suspectedFingerprintersScope,
|
||||||
allowListBaseline,
|
allowListBaseline,
|
||||||
allowListConvenience,
|
allowListConvenience,
|
||||||
|
blockAdsAnalyticsSocialTrackers,
|
||||||
webFontsEnabled,
|
webFontsEnabled,
|
||||||
automaticFontSizeAdjustment,
|
automaticFontSizeAdjustment,
|
||||||
fontSizeFactor,
|
fontSizeFactor,
|
||||||
@@ -3540,7 +3551,7 @@ data class GeckoEngineSettings (
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
val other = other as GeckoEngineSettings
|
val other = other as GeckoEngineSettings
|
||||||
return GeckoPigeonUtils.deepEquals(this.javascriptEnabled, other.javascriptEnabled) && GeckoPigeonUtils.deepEquals(this.trackingProtectionPolicy, other.trackingProtectionPolicy) && GeckoPigeonUtils.deepEquals(this.httpsOnlyMode, other.httpsOnlyMode) && GeckoPigeonUtils.deepEquals(this.globalPrivacyControlEnabled, other.globalPrivacyControlEnabled) && GeckoPigeonUtils.deepEquals(this.preferredColorScheme, other.preferredColorScheme) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingMode, other.cookieBannerHandlingMode) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingModePrivateBrowsing, other.cookieBannerHandlingModePrivateBrowsing) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingGlobalRules, other.cookieBannerHandlingGlobalRules) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingGlobalRulesSubFrames, other.cookieBannerHandlingGlobalRulesSubFrames) && GeckoPigeonUtils.deepEquals(this.webContentIsolationStrategy, other.webContentIsolationStrategy) && GeckoPigeonUtils.deepEquals(this.userAgent, other.userAgent) && GeckoPigeonUtils.deepEquals(this.contentBlocking, other.contentBlocking) && GeckoPigeonUtils.deepEquals(this.enterpriseRootsEnabled, other.enterpriseRootsEnabled) && GeckoPigeonUtils.deepEquals(this.dohSettings, other.dohSettings) && GeckoPigeonUtils.deepEquals(this.fingerprintingProtectionOverrides, other.fingerprintingProtectionOverrides) && GeckoPigeonUtils.deepEquals(this.locales, other.locales) && GeckoPigeonUtils.deepEquals(this.blockCookies, other.blockCookies) && GeckoPigeonUtils.deepEquals(this.customCookiePolicy, other.customCookiePolicy) && GeckoPigeonUtils.deepEquals(this.blockTrackingContent, other.blockTrackingContent) && GeckoPigeonUtils.deepEquals(this.trackingContentScope, other.trackingContentScope) && GeckoPigeonUtils.deepEquals(this.blockCryptominers, other.blockCryptominers) && GeckoPigeonUtils.deepEquals(this.blockFingerprinters, other.blockFingerprinters) && GeckoPigeonUtils.deepEquals(this.blockRedirectTrackers, other.blockRedirectTrackers) && GeckoPigeonUtils.deepEquals(this.blockSuspectedFingerprinters, other.blockSuspectedFingerprinters) && GeckoPigeonUtils.deepEquals(this.suspectedFingerprintersScope, other.suspectedFingerprintersScope) && GeckoPigeonUtils.deepEquals(this.allowListBaseline, other.allowListBaseline) && GeckoPigeonUtils.deepEquals(this.allowListConvenience, other.allowListConvenience) && GeckoPigeonUtils.deepEquals(this.webFontsEnabled, other.webFontsEnabled) && GeckoPigeonUtils.deepEquals(this.automaticFontSizeAdjustment, other.automaticFontSizeAdjustment) && GeckoPigeonUtils.deepEquals(this.fontSizeFactor, other.fontSizeFactor) && GeckoPigeonUtils.deepEquals(this.fontInflationEnabled, other.fontInflationEnabled) && GeckoPigeonUtils.deepEquals(this.displayDensityOverride, other.displayDensityOverride) && GeckoPigeonUtils.deepEquals(this.screenWidthOverride, other.screenWidthOverride) && GeckoPigeonUtils.deepEquals(this.screenHeightOverride, other.screenHeightOverride) && GeckoPigeonUtils.deepEquals(this.inputAutoZoomEnabled, other.inputAutoZoomEnabled) && GeckoPigeonUtils.deepEquals(this.fissionEnabled, other.fissionEnabled) && GeckoPigeonUtils.deepEquals(this.isolatedProcessEnabled, other.isolatedProcessEnabled) && GeckoPigeonUtils.deepEquals(this.appZygoteProcessEnabled, other.appZygoteProcessEnabled) && GeckoPigeonUtils.deepEquals(this.extensionsWebAPIEnabled, other.extensionsWebAPIEnabled) && GeckoPigeonUtils.deepEquals(this.lnaBlocking, other.lnaBlocking) && GeckoPigeonUtils.deepEquals(this.lnaBlockTrackers, other.lnaBlockTrackers) && GeckoPigeonUtils.deepEquals(this.lnaEnabled, other.lnaEnabled)
|
return GeckoPigeonUtils.deepEquals(this.javascriptEnabled, other.javascriptEnabled) && GeckoPigeonUtils.deepEquals(this.trackingProtectionPolicy, other.trackingProtectionPolicy) && GeckoPigeonUtils.deepEquals(this.httpsOnlyMode, other.httpsOnlyMode) && GeckoPigeonUtils.deepEquals(this.globalPrivacyControlEnabled, other.globalPrivacyControlEnabled) && GeckoPigeonUtils.deepEquals(this.preferredColorScheme, other.preferredColorScheme) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingMode, other.cookieBannerHandlingMode) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingModePrivateBrowsing, other.cookieBannerHandlingModePrivateBrowsing) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingGlobalRules, other.cookieBannerHandlingGlobalRules) && GeckoPigeonUtils.deepEquals(this.cookieBannerHandlingGlobalRulesSubFrames, other.cookieBannerHandlingGlobalRulesSubFrames) && GeckoPigeonUtils.deepEquals(this.webContentIsolationStrategy, other.webContentIsolationStrategy) && GeckoPigeonUtils.deepEquals(this.userAgent, other.userAgent) && GeckoPigeonUtils.deepEquals(this.contentBlocking, other.contentBlocking) && GeckoPigeonUtils.deepEquals(this.enterpriseRootsEnabled, other.enterpriseRootsEnabled) && GeckoPigeonUtils.deepEquals(this.dohSettings, other.dohSettings) && GeckoPigeonUtils.deepEquals(this.fingerprintingProtectionOverrides, other.fingerprintingProtectionOverrides) && GeckoPigeonUtils.deepEquals(this.locales, other.locales) && GeckoPigeonUtils.deepEquals(this.useContentBlockingDatabase, other.useContentBlockingDatabase) && GeckoPigeonUtils.deepEquals(this.blockCookies, other.blockCookies) && GeckoPigeonUtils.deepEquals(this.customCookiePolicy, other.customCookiePolicy) && GeckoPigeonUtils.deepEquals(this.blockTrackingContent, other.blockTrackingContent) && GeckoPigeonUtils.deepEquals(this.trackingContentScope, other.trackingContentScope) && GeckoPigeonUtils.deepEquals(this.blockCryptominers, other.blockCryptominers) && GeckoPigeonUtils.deepEquals(this.blockFingerprinters, other.blockFingerprinters) && GeckoPigeonUtils.deepEquals(this.blockRedirectTrackers, other.blockRedirectTrackers) && GeckoPigeonUtils.deepEquals(this.blockSuspectedFingerprinters, other.blockSuspectedFingerprinters) && GeckoPigeonUtils.deepEquals(this.suspectedFingerprintersScope, other.suspectedFingerprintersScope) && GeckoPigeonUtils.deepEquals(this.allowListBaseline, other.allowListBaseline) && GeckoPigeonUtils.deepEquals(this.allowListConvenience, other.allowListConvenience) && GeckoPigeonUtils.deepEquals(this.blockAdsAnalyticsSocialTrackers, other.blockAdsAnalyticsSocialTrackers) && GeckoPigeonUtils.deepEquals(this.webFontsEnabled, other.webFontsEnabled) && GeckoPigeonUtils.deepEquals(this.automaticFontSizeAdjustment, other.automaticFontSizeAdjustment) && GeckoPigeonUtils.deepEquals(this.fontSizeFactor, other.fontSizeFactor) && GeckoPigeonUtils.deepEquals(this.fontInflationEnabled, other.fontInflationEnabled) && GeckoPigeonUtils.deepEquals(this.displayDensityOverride, other.displayDensityOverride) && GeckoPigeonUtils.deepEquals(this.screenWidthOverride, other.screenWidthOverride) && GeckoPigeonUtils.deepEquals(this.screenHeightOverride, other.screenHeightOverride) && GeckoPigeonUtils.deepEquals(this.inputAutoZoomEnabled, other.inputAutoZoomEnabled) && GeckoPigeonUtils.deepEquals(this.fissionEnabled, other.fissionEnabled) && GeckoPigeonUtils.deepEquals(this.isolatedProcessEnabled, other.isolatedProcessEnabled) && GeckoPigeonUtils.deepEquals(this.appZygoteProcessEnabled, other.appZygoteProcessEnabled) && GeckoPigeonUtils.deepEquals(this.extensionsWebAPIEnabled, other.extensionsWebAPIEnabled) && GeckoPigeonUtils.deepEquals(this.lnaBlocking, other.lnaBlocking) && GeckoPigeonUtils.deepEquals(this.lnaBlockTrackers, other.lnaBlockTrackers) && GeckoPigeonUtils.deepEquals(this.lnaEnabled, other.lnaEnabled)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hashCode(): Int {
|
override fun hashCode(): Int {
|
||||||
@@ -3561,6 +3572,7 @@ data class GeckoEngineSettings (
|
|||||||
result = 31 * result + GeckoPigeonUtils.deepHash(this.dohSettings)
|
result = 31 * result + GeckoPigeonUtils.deepHash(this.dohSettings)
|
||||||
result = 31 * result + GeckoPigeonUtils.deepHash(this.fingerprintingProtectionOverrides)
|
result = 31 * result + GeckoPigeonUtils.deepHash(this.fingerprintingProtectionOverrides)
|
||||||
result = 31 * result + GeckoPigeonUtils.deepHash(this.locales)
|
result = 31 * result + GeckoPigeonUtils.deepHash(this.locales)
|
||||||
|
result = 31 * result + GeckoPigeonUtils.deepHash(this.useContentBlockingDatabase)
|
||||||
result = 31 * result + GeckoPigeonUtils.deepHash(this.blockCookies)
|
result = 31 * result + GeckoPigeonUtils.deepHash(this.blockCookies)
|
||||||
result = 31 * result + GeckoPigeonUtils.deepHash(this.customCookiePolicy)
|
result = 31 * result + GeckoPigeonUtils.deepHash(this.customCookiePolicy)
|
||||||
result = 31 * result + GeckoPigeonUtils.deepHash(this.blockTrackingContent)
|
result = 31 * result + GeckoPigeonUtils.deepHash(this.blockTrackingContent)
|
||||||
@@ -3572,6 +3584,7 @@ data class GeckoEngineSettings (
|
|||||||
result = 31 * result + GeckoPigeonUtils.deepHash(this.suspectedFingerprintersScope)
|
result = 31 * result + GeckoPigeonUtils.deepHash(this.suspectedFingerprintersScope)
|
||||||
result = 31 * result + GeckoPigeonUtils.deepHash(this.allowListBaseline)
|
result = 31 * result + GeckoPigeonUtils.deepHash(this.allowListBaseline)
|
||||||
result = 31 * result + GeckoPigeonUtils.deepHash(this.allowListConvenience)
|
result = 31 * result + GeckoPigeonUtils.deepHash(this.allowListConvenience)
|
||||||
|
result = 31 * result + GeckoPigeonUtils.deepHash(this.blockAdsAnalyticsSocialTrackers)
|
||||||
result = 31 * result + GeckoPigeonUtils.deepHash(this.webFontsEnabled)
|
result = 31 * result + GeckoPigeonUtils.deepHash(this.webFontsEnabled)
|
||||||
result = 31 * result + GeckoPigeonUtils.deepHash(this.automaticFontSizeAdjustment)
|
result = 31 * result + GeckoPigeonUtils.deepHash(this.automaticFontSizeAdjustment)
|
||||||
result = 31 * result + GeckoPigeonUtils.deepHash(this.fontSizeFactor)
|
result = 31 * result + GeckoPigeonUtils.deepHash(this.fontSizeFactor)
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ class GeckoEngineSettingsService {
|
|||||||
TrackingScope? suspectedFingerprintersScope,
|
TrackingScope? suspectedFingerprintersScope,
|
||||||
bool? allowListBaseline,
|
bool? allowListBaseline,
|
||||||
bool? allowListConvenience,
|
bool? allowListConvenience,
|
||||||
|
bool? blockAdsAnalyticsSocialTrackers,
|
||||||
}) {
|
}) {
|
||||||
return _api.updateRuntimeSettings(
|
return _api.updateRuntimeSettings(
|
||||||
GeckoEngineSettings(
|
GeckoEngineSettings(
|
||||||
@@ -73,6 +74,7 @@ class GeckoEngineSettingsService {
|
|||||||
suspectedFingerprintersScope: suspectedFingerprintersScope,
|
suspectedFingerprintersScope: suspectedFingerprintersScope,
|
||||||
allowListBaseline: allowListBaseline,
|
allowListBaseline: allowListBaseline,
|
||||||
allowListConvenience: allowListConvenience,
|
allowListConvenience: allowListConvenience,
|
||||||
|
blockAdsAnalyticsSocialTrackers: blockAdsAnalyticsSocialTrackers,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3455,6 +3455,7 @@ class GeckoEngineSettings {
|
|||||||
this.dohSettings,
|
this.dohSettings,
|
||||||
this.fingerprintingProtectionOverrides,
|
this.fingerprintingProtectionOverrides,
|
||||||
this.locales,
|
this.locales,
|
||||||
|
this.useContentBlockingDatabase,
|
||||||
this.blockCookies,
|
this.blockCookies,
|
||||||
this.customCookiePolicy,
|
this.customCookiePolicy,
|
||||||
this.blockTrackingContent,
|
this.blockTrackingContent,
|
||||||
@@ -3466,6 +3467,7 @@ class GeckoEngineSettings {
|
|||||||
this.suspectedFingerprintersScope,
|
this.suspectedFingerprintersScope,
|
||||||
this.allowListBaseline,
|
this.allowListBaseline,
|
||||||
this.allowListConvenience,
|
this.allowListConvenience,
|
||||||
|
this.blockAdsAnalyticsSocialTrackers,
|
||||||
this.webFontsEnabled,
|
this.webFontsEnabled,
|
||||||
this.automaticFontSizeAdjustment,
|
this.automaticFontSizeAdjustment,
|
||||||
this.fontSizeFactor,
|
this.fontSizeFactor,
|
||||||
@@ -3515,6 +3517,10 @@ class GeckoEngineSettings {
|
|||||||
|
|
||||||
List<String>? locales;
|
List<String>? locales;
|
||||||
|
|
||||||
|
/// Use GeckoView's content-blocking database for tracking protection.
|
||||||
|
/// This is applied when the engine is created and requires app restart.
|
||||||
|
bool? useContentBlockingDatabase;
|
||||||
|
|
||||||
/// Master toggle for cookie blocking in Custom mode
|
/// Master toggle for cookie blocking in Custom mode
|
||||||
bool? blockCookies;
|
bool? blockCookies;
|
||||||
|
|
||||||
@@ -3549,6 +3555,9 @@ class GeckoEngineSettings {
|
|||||||
/// Allow convenience tracking protection exceptions (fixes minor issues)
|
/// Allow convenience tracking protection exceptions (fixes minor issues)
|
||||||
bool? allowListConvenience;
|
bool? allowListConvenience;
|
||||||
|
|
||||||
|
/// Block advertising, analytics, social, and Mozilla social trackers
|
||||||
|
bool? blockAdsAnalyticsSocialTrackers;
|
||||||
|
|
||||||
bool? webFontsEnabled;
|
bool? webFontsEnabled;
|
||||||
|
|
||||||
bool? automaticFontSizeAdjustment;
|
bool? automaticFontSizeAdjustment;
|
||||||
@@ -3597,6 +3606,7 @@ class GeckoEngineSettings {
|
|||||||
dohSettings,
|
dohSettings,
|
||||||
fingerprintingProtectionOverrides,
|
fingerprintingProtectionOverrides,
|
||||||
locales,
|
locales,
|
||||||
|
useContentBlockingDatabase,
|
||||||
blockCookies,
|
blockCookies,
|
||||||
customCookiePolicy,
|
customCookiePolicy,
|
||||||
blockTrackingContent,
|
blockTrackingContent,
|
||||||
@@ -3608,6 +3618,7 @@ class GeckoEngineSettings {
|
|||||||
suspectedFingerprintersScope,
|
suspectedFingerprintersScope,
|
||||||
allowListBaseline,
|
allowListBaseline,
|
||||||
allowListConvenience,
|
allowListConvenience,
|
||||||
|
blockAdsAnalyticsSocialTrackers,
|
||||||
webFontsEnabled,
|
webFontsEnabled,
|
||||||
automaticFontSizeAdjustment,
|
automaticFontSizeAdjustment,
|
||||||
fontSizeFactor,
|
fontSizeFactor,
|
||||||
@@ -3648,32 +3659,34 @@ class GeckoEngineSettings {
|
|||||||
dohSettings: result[13] as DohSettings?,
|
dohSettings: result[13] as DohSettings?,
|
||||||
fingerprintingProtectionOverrides: result[14] as String?,
|
fingerprintingProtectionOverrides: result[14] as String?,
|
||||||
locales: (result[15] as List<Object?>?)?.cast<String>(),
|
locales: (result[15] as List<Object?>?)?.cast<String>(),
|
||||||
blockCookies: result[16] as bool?,
|
useContentBlockingDatabase: result[16] as bool?,
|
||||||
customCookiePolicy: result[17] as CustomCookiePolicy?,
|
blockCookies: result[17] as bool?,
|
||||||
blockTrackingContent: result[18] as bool?,
|
customCookiePolicy: result[18] as CustomCookiePolicy?,
|
||||||
trackingContentScope: result[19] as TrackingScope?,
|
blockTrackingContent: result[19] as bool?,
|
||||||
blockCryptominers: result[20] as bool?,
|
trackingContentScope: result[20] as TrackingScope?,
|
||||||
blockFingerprinters: result[21] as bool?,
|
blockCryptominers: result[21] as bool?,
|
||||||
blockRedirectTrackers: result[22] as bool?,
|
blockFingerprinters: result[22] as bool?,
|
||||||
blockSuspectedFingerprinters: result[23] as bool?,
|
blockRedirectTrackers: result[23] as bool?,
|
||||||
suspectedFingerprintersScope: result[24] as TrackingScope?,
|
blockSuspectedFingerprinters: result[24] as bool?,
|
||||||
allowListBaseline: result[25] as bool?,
|
suspectedFingerprintersScope: result[25] as TrackingScope?,
|
||||||
allowListConvenience: result[26] as bool?,
|
allowListBaseline: result[26] as bool?,
|
||||||
webFontsEnabled: result[27] as bool?,
|
allowListConvenience: result[27] as bool?,
|
||||||
automaticFontSizeAdjustment: result[28] as bool?,
|
blockAdsAnalyticsSocialTrackers: result[28] as bool?,
|
||||||
fontSizeFactor: result[29] as double?,
|
webFontsEnabled: result[29] as bool?,
|
||||||
fontInflationEnabled: result[30] as bool?,
|
automaticFontSizeAdjustment: result[30] as bool?,
|
||||||
displayDensityOverride: result[31] as double?,
|
fontSizeFactor: result[31] as double?,
|
||||||
screenWidthOverride: result[32] as int?,
|
fontInflationEnabled: result[32] as bool?,
|
||||||
screenHeightOverride: result[33] as int?,
|
displayDensityOverride: result[33] as double?,
|
||||||
inputAutoZoomEnabled: result[34] as bool?,
|
screenWidthOverride: result[34] as int?,
|
||||||
fissionEnabled: result[35] as bool?,
|
screenHeightOverride: result[35] as int?,
|
||||||
isolatedProcessEnabled: result[36] as bool?,
|
inputAutoZoomEnabled: result[36] as bool?,
|
||||||
appZygoteProcessEnabled: result[37] as bool?,
|
fissionEnabled: result[37] as bool?,
|
||||||
extensionsWebAPIEnabled: result[38] as bool?,
|
isolatedProcessEnabled: result[38] as bool?,
|
||||||
lnaBlocking: result[39] as bool?,
|
appZygoteProcessEnabled: result[39] as bool?,
|
||||||
lnaBlockTrackers: result[40] as bool?,
|
extensionsWebAPIEnabled: result[40] as bool?,
|
||||||
lnaEnabled: result[41] as bool?,
|
lnaBlocking: result[41] as bool?,
|
||||||
|
lnaBlockTrackers: result[42] as bool?,
|
||||||
|
lnaEnabled: result[43] as bool?,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3686,7 +3699,7 @@ class GeckoEngineSettings {
|
|||||||
if (identical(this, other)) {
|
if (identical(this, other)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return _deepEquals(javascriptEnabled, other.javascriptEnabled) && _deepEquals(trackingProtectionPolicy, other.trackingProtectionPolicy) && _deepEquals(httpsOnlyMode, other.httpsOnlyMode) && _deepEquals(globalPrivacyControlEnabled, other.globalPrivacyControlEnabled) && _deepEquals(preferredColorScheme, other.preferredColorScheme) && _deepEquals(cookieBannerHandlingMode, other.cookieBannerHandlingMode) && _deepEquals(cookieBannerHandlingModePrivateBrowsing, other.cookieBannerHandlingModePrivateBrowsing) && _deepEquals(cookieBannerHandlingGlobalRules, other.cookieBannerHandlingGlobalRules) && _deepEquals(cookieBannerHandlingGlobalRulesSubFrames, other.cookieBannerHandlingGlobalRulesSubFrames) && _deepEquals(webContentIsolationStrategy, other.webContentIsolationStrategy) && _deepEquals(userAgent, other.userAgent) && _deepEquals(contentBlocking, other.contentBlocking) && _deepEquals(enterpriseRootsEnabled, other.enterpriseRootsEnabled) && _deepEquals(dohSettings, other.dohSettings) && _deepEquals(fingerprintingProtectionOverrides, other.fingerprintingProtectionOverrides) && _deepEquals(locales, other.locales) && _deepEquals(blockCookies, other.blockCookies) && _deepEquals(customCookiePolicy, other.customCookiePolicy) && _deepEquals(blockTrackingContent, other.blockTrackingContent) && _deepEquals(trackingContentScope, other.trackingContentScope) && _deepEquals(blockCryptominers, other.blockCryptominers) && _deepEquals(blockFingerprinters, other.blockFingerprinters) && _deepEquals(blockRedirectTrackers, other.blockRedirectTrackers) && _deepEquals(blockSuspectedFingerprinters, other.blockSuspectedFingerprinters) && _deepEquals(suspectedFingerprintersScope, other.suspectedFingerprintersScope) && _deepEquals(allowListBaseline, other.allowListBaseline) && _deepEquals(allowListConvenience, other.allowListConvenience) && _deepEquals(webFontsEnabled, other.webFontsEnabled) && _deepEquals(automaticFontSizeAdjustment, other.automaticFontSizeAdjustment) && _deepEquals(fontSizeFactor, other.fontSizeFactor) && _deepEquals(fontInflationEnabled, other.fontInflationEnabled) && _deepEquals(displayDensityOverride, other.displayDensityOverride) && _deepEquals(screenWidthOverride, other.screenWidthOverride) && _deepEquals(screenHeightOverride, other.screenHeightOverride) && _deepEquals(inputAutoZoomEnabled, other.inputAutoZoomEnabled) && _deepEquals(fissionEnabled, other.fissionEnabled) && _deepEquals(isolatedProcessEnabled, other.isolatedProcessEnabled) && _deepEquals(appZygoteProcessEnabled, other.appZygoteProcessEnabled) && _deepEquals(extensionsWebAPIEnabled, other.extensionsWebAPIEnabled) && _deepEquals(lnaBlocking, other.lnaBlocking) && _deepEquals(lnaBlockTrackers, other.lnaBlockTrackers) && _deepEquals(lnaEnabled, other.lnaEnabled);
|
return _deepEquals(javascriptEnabled, other.javascriptEnabled) && _deepEquals(trackingProtectionPolicy, other.trackingProtectionPolicy) && _deepEquals(httpsOnlyMode, other.httpsOnlyMode) && _deepEquals(globalPrivacyControlEnabled, other.globalPrivacyControlEnabled) && _deepEquals(preferredColorScheme, other.preferredColorScheme) && _deepEquals(cookieBannerHandlingMode, other.cookieBannerHandlingMode) && _deepEquals(cookieBannerHandlingModePrivateBrowsing, other.cookieBannerHandlingModePrivateBrowsing) && _deepEquals(cookieBannerHandlingGlobalRules, other.cookieBannerHandlingGlobalRules) && _deepEquals(cookieBannerHandlingGlobalRulesSubFrames, other.cookieBannerHandlingGlobalRulesSubFrames) && _deepEquals(webContentIsolationStrategy, other.webContentIsolationStrategy) && _deepEquals(userAgent, other.userAgent) && _deepEquals(contentBlocking, other.contentBlocking) && _deepEquals(enterpriseRootsEnabled, other.enterpriseRootsEnabled) && _deepEquals(dohSettings, other.dohSettings) && _deepEquals(fingerprintingProtectionOverrides, other.fingerprintingProtectionOverrides) && _deepEquals(locales, other.locales) && _deepEquals(useContentBlockingDatabase, other.useContentBlockingDatabase) && _deepEquals(blockCookies, other.blockCookies) && _deepEquals(customCookiePolicy, other.customCookiePolicy) && _deepEquals(blockTrackingContent, other.blockTrackingContent) && _deepEquals(trackingContentScope, other.trackingContentScope) && _deepEquals(blockCryptominers, other.blockCryptominers) && _deepEquals(blockFingerprinters, other.blockFingerprinters) && _deepEquals(blockRedirectTrackers, other.blockRedirectTrackers) && _deepEquals(blockSuspectedFingerprinters, other.blockSuspectedFingerprinters) && _deepEquals(suspectedFingerprintersScope, other.suspectedFingerprintersScope) && _deepEquals(allowListBaseline, other.allowListBaseline) && _deepEquals(allowListConvenience, other.allowListConvenience) && _deepEquals(blockAdsAnalyticsSocialTrackers, other.blockAdsAnalyticsSocialTrackers) && _deepEquals(webFontsEnabled, other.webFontsEnabled) && _deepEquals(automaticFontSizeAdjustment, other.automaticFontSizeAdjustment) && _deepEquals(fontSizeFactor, other.fontSizeFactor) && _deepEquals(fontInflationEnabled, other.fontInflationEnabled) && _deepEquals(displayDensityOverride, other.displayDensityOverride) && _deepEquals(screenWidthOverride, other.screenWidthOverride) && _deepEquals(screenHeightOverride, other.screenHeightOverride) && _deepEquals(inputAutoZoomEnabled, other.inputAutoZoomEnabled) && _deepEquals(fissionEnabled, other.fissionEnabled) && _deepEquals(isolatedProcessEnabled, other.isolatedProcessEnabled) && _deepEquals(appZygoteProcessEnabled, other.appZygoteProcessEnabled) && _deepEquals(extensionsWebAPIEnabled, other.extensionsWebAPIEnabled) && _deepEquals(lnaBlocking, other.lnaBlocking) && _deepEquals(lnaBlockTrackers, other.lnaBlockTrackers) && _deepEquals(lnaEnabled, other.lnaEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -1091,6 +1091,10 @@ class GeckoEngineSettings {
|
|||||||
final String? fingerprintingProtectionOverrides;
|
final String? fingerprintingProtectionOverrides;
|
||||||
final List<String>? locales;
|
final List<String>? locales;
|
||||||
|
|
||||||
|
/// Use GeckoView's content-blocking database for tracking protection.
|
||||||
|
/// This is applied when the engine is created and requires app restart.
|
||||||
|
final bool? useContentBlockingDatabase;
|
||||||
|
|
||||||
// Custom Tracking Protection Settings
|
// Custom Tracking Protection Settings
|
||||||
/// Master toggle for cookie blocking in Custom mode
|
/// Master toggle for cookie blocking in Custom mode
|
||||||
final bool? blockCookies;
|
final bool? blockCookies;
|
||||||
@@ -1126,6 +1130,9 @@ class GeckoEngineSettings {
|
|||||||
/// Allow convenience tracking protection exceptions (fixes minor issues)
|
/// Allow convenience tracking protection exceptions (fixes minor issues)
|
||||||
final bool? allowListConvenience;
|
final bool? allowListConvenience;
|
||||||
|
|
||||||
|
/// Block advertising, analytics, social, and Mozilla social trackers
|
||||||
|
final bool? blockAdsAnalyticsSocialTrackers;
|
||||||
|
|
||||||
// Web Content Settings
|
// Web Content Settings
|
||||||
final bool? webFontsEnabled;
|
final bool? webFontsEnabled;
|
||||||
final bool? automaticFontSizeAdjustment;
|
final bool? automaticFontSizeAdjustment;
|
||||||
@@ -1164,6 +1171,7 @@ class GeckoEngineSettings {
|
|||||||
this.dohSettings,
|
this.dohSettings,
|
||||||
this.fingerprintingProtectionOverrides,
|
this.fingerprintingProtectionOverrides,
|
||||||
this.locales,
|
this.locales,
|
||||||
|
this.useContentBlockingDatabase,
|
||||||
this.blockCookies,
|
this.blockCookies,
|
||||||
this.customCookiePolicy,
|
this.customCookiePolicy,
|
||||||
this.blockTrackingContent,
|
this.blockTrackingContent,
|
||||||
@@ -1175,6 +1183,7 @@ class GeckoEngineSettings {
|
|||||||
this.suspectedFingerprintersScope,
|
this.suspectedFingerprintersScope,
|
||||||
this.allowListBaseline,
|
this.allowListBaseline,
|
||||||
this.allowListConvenience,
|
this.allowListConvenience,
|
||||||
|
this.blockAdsAnalyticsSocialTrackers,
|
||||||
this.webFontsEnabled,
|
this.webFontsEnabled,
|
||||||
this.automaticFontSizeAdjustment,
|
this.automaticFontSizeAdjustment,
|
||||||
this.fontSizeFactor,
|
this.fontSizeFactor,
|
||||||
|
|||||||
Reference in New Issue
Block a user