add setting to control mozAddonManager API
This commit is contained in:
@@ -1106,11 +1106,6 @@
|
||||
"title": "Disable add-on metadata cache updates",
|
||||
"description": "Reduces background refreshes of extension metadata"
|
||||
},
|
||||
"privacy.resistFingerprinting.block_mozAddonManager": {
|
||||
"value": true,
|
||||
"title": "Block mozAddonManager exposure",
|
||||
"description": "Prevents websites from querying installed add-ons through this legacy API"
|
||||
},
|
||||
"extensions.postDownloadThirdPartyPrompt": {
|
||||
"value": false,
|
||||
"title": "Never bypass extension install prompts",
|
||||
|
||||
@@ -206,6 +206,7 @@ class _AdvancedSection extends StatelessWidget {
|
||||
_FissionEnabledTile(),
|
||||
_IsolatedProcessEnabledTile(),
|
||||
_AppZygoteProcessEnabledTile(),
|
||||
_ExtensionsWebAPIEnabledTile(),
|
||||
],
|
||||
);
|
||||
}
|
||||
@@ -839,6 +840,39 @@ class _AppZygoteProcessEnabledTile extends HookConsumerWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class _ExtensionsWebAPIEnabledTile extends HookConsumerWidget {
|
||||
const _ExtensionsWebAPIEnabledTile();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final extensionsWebAPIEnabled = ref.watch(
|
||||
engineSettingsWithDefaultsProvider.select(
|
||||
(s) => s.extensionsWebAPIEnabled,
|
||||
),
|
||||
);
|
||||
|
||||
return SwitchListTile.adaptive(
|
||||
title: const Text('Extensions Web API'),
|
||||
subtitle: const Text(
|
||||
'Enable mozAddonManager API exposure for web content and extension pages. Requires app restart.',
|
||||
),
|
||||
secondary: const Icon(Icons.extension),
|
||||
value: extensionsWebAPIEnabled,
|
||||
onChanged: (value) async {
|
||||
await ref
|
||||
.read(saveEngineSettingsControllerProvider.notifier)
|
||||
.save(
|
||||
(currentSettings) =>
|
||||
currentSettings.copyWith.extensionsWebAPIEnabled(value),
|
||||
);
|
||||
if (context.mounted) {
|
||||
await _showRestartDialog(context, ref);
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _showRestartDialog(BuildContext context, WidgetRef ref) async {
|
||||
final result = await showQuitBrowserDialog(context);
|
||||
if (result == true && context.mounted) {
|
||||
|
||||
@@ -123,6 +123,8 @@ class EngineSettings extends GeckoEngineSettings with FastEquatable {
|
||||
bool get isolatedProcessEnabled => super.isolatedProcessEnabled!;
|
||||
@override
|
||||
bool get appZygoteProcessEnabled => super.appZygoteProcessEnabled!;
|
||||
@override
|
||||
bool get extensionsWebAPIEnabled => super.extensionsWebAPIEnabled!;
|
||||
|
||||
final QueryParameterStripping queryParameterStripping;
|
||||
|
||||
@@ -202,6 +204,7 @@ class EngineSettings extends GeckoEngineSettings with FastEquatable {
|
||||
required super.fissionEnabled,
|
||||
required super.isolatedProcessEnabled,
|
||||
required super.appZygoteProcessEnabled,
|
||||
required super.extensionsWebAPIEnabled,
|
||||
required super.lnaBlocking,
|
||||
required super.lnaBlockTrackers,
|
||||
required super.lnaEnabled,
|
||||
@@ -252,6 +255,7 @@ class EngineSettings extends GeckoEngineSettings with FastEquatable {
|
||||
bool? fissionEnabled,
|
||||
bool? isolatedProcessEnabled,
|
||||
bool? appZygoteProcessEnabled,
|
||||
bool? extensionsWebAPIEnabled,
|
||||
bool? lnaBlocking,
|
||||
bool? lnaBlockTrackers,
|
||||
bool? lnaEnabled,
|
||||
@@ -317,6 +321,7 @@ class EngineSettings extends GeckoEngineSettings with FastEquatable {
|
||||
fissionEnabled: fissionEnabled ?? true,
|
||||
isolatedProcessEnabled: isolatedProcessEnabled ?? false,
|
||||
appZygoteProcessEnabled: appZygoteProcessEnabled ?? false,
|
||||
extensionsWebAPIEnabled: extensionsWebAPIEnabled ?? true,
|
||||
lnaBlocking: lnaBlocking,
|
||||
lnaBlockTrackers: lnaBlockTrackers,
|
||||
lnaEnabled: lnaEnabled,
|
||||
@@ -381,6 +386,7 @@ class EngineSettings extends GeckoEngineSettings with FastEquatable {
|
||||
fissionEnabled,
|
||||
isolatedProcessEnabled,
|
||||
appZygoteProcessEnabled,
|
||||
extensionsWebAPIEnabled,
|
||||
lnaBlocking,
|
||||
lnaBlockTrackers,
|
||||
lnaEnabled,
|
||||
|
||||
@@ -117,6 +117,8 @@ abstract class _$EngineSettingsCWProxy {
|
||||
|
||||
EngineSettings appZygoteProcessEnabled(bool? appZygoteProcessEnabled);
|
||||
|
||||
EngineSettings extensionsWebAPIEnabled(bool? extensionsWebAPIEnabled);
|
||||
|
||||
EngineSettings lnaBlocking(bool? lnaBlocking);
|
||||
|
||||
EngineSettings lnaBlockTrackers(bool? lnaBlockTrackers);
|
||||
@@ -175,6 +177,7 @@ abstract class _$EngineSettingsCWProxy {
|
||||
bool? fissionEnabled,
|
||||
bool? isolatedProcessEnabled,
|
||||
bool? appZygoteProcessEnabled,
|
||||
bool? extensionsWebAPIEnabled,
|
||||
bool? lnaBlocking,
|
||||
bool? lnaBlockTrackers,
|
||||
bool? lnaEnabled,
|
||||
@@ -383,6 +386,10 @@ class _$EngineSettingsCWProxyImpl implements _$EngineSettingsCWProxy {
|
||||
EngineSettings appZygoteProcessEnabled(bool? appZygoteProcessEnabled) =>
|
||||
call(appZygoteProcessEnabled: appZygoteProcessEnabled);
|
||||
|
||||
@override
|
||||
EngineSettings extensionsWebAPIEnabled(bool? extensionsWebAPIEnabled) =>
|
||||
call(extensionsWebAPIEnabled: extensionsWebAPIEnabled);
|
||||
|
||||
@override
|
||||
EngineSettings lnaBlocking(bool? lnaBlocking) =>
|
||||
call(lnaBlocking: lnaBlocking);
|
||||
@@ -449,6 +456,7 @@ class _$EngineSettingsCWProxyImpl implements _$EngineSettingsCWProxy {
|
||||
Object? fissionEnabled = const $CopyWithPlaceholder(),
|
||||
Object? isolatedProcessEnabled = const $CopyWithPlaceholder(),
|
||||
Object? appZygoteProcessEnabled = const $CopyWithPlaceholder(),
|
||||
Object? extensionsWebAPIEnabled = const $CopyWithPlaceholder(),
|
||||
Object? lnaBlocking = const $CopyWithPlaceholder(),
|
||||
Object? lnaBlockTrackers = const $CopyWithPlaceholder(),
|
||||
Object? lnaEnabled = const $CopyWithPlaceholder(),
|
||||
@@ -662,6 +670,11 @@ class _$EngineSettingsCWProxyImpl implements _$EngineSettingsCWProxy {
|
||||
? _value.appZygoteProcessEnabled
|
||||
// ignore: cast_nullable_to_non_nullable
|
||||
: appZygoteProcessEnabled as bool?,
|
||||
extensionsWebAPIEnabled:
|
||||
extensionsWebAPIEnabled == const $CopyWithPlaceholder()
|
||||
? _value.extensionsWebAPIEnabled
|
||||
// ignore: cast_nullable_to_non_nullable
|
||||
: extensionsWebAPIEnabled as bool?,
|
||||
lnaBlocking: lnaBlocking == const $CopyWithPlaceholder()
|
||||
? _value.lnaBlocking
|
||||
// ignore: cast_nullable_to_non_nullable
|
||||
@@ -781,6 +794,7 @@ EngineSettings _$EngineSettingsFromJson(
|
||||
fissionEnabled: json['fissionEnabled'] as bool?,
|
||||
isolatedProcessEnabled: json['isolatedProcessEnabled'] as bool?,
|
||||
appZygoteProcessEnabled: json['appZygoteProcessEnabled'] as bool?,
|
||||
extensionsWebAPIEnabled: json['extensionsWebAPIEnabled'] as bool?,
|
||||
lnaBlocking: json['lnaBlocking'] as bool?,
|
||||
lnaBlockTrackers: json['lnaBlockTrackers'] as bool?,
|
||||
lnaEnabled: json['lnaEnabled'] as bool?,
|
||||
@@ -839,6 +853,7 @@ Map<String, dynamic> _$EngineSettingsToJson(
|
||||
'fissionEnabled': instance.fissionEnabled,
|
||||
'isolatedProcessEnabled': instance.isolatedProcessEnabled,
|
||||
'appZygoteProcessEnabled': instance.appZygoteProcessEnabled,
|
||||
'extensionsWebAPIEnabled': instance.extensionsWebAPIEnabled,
|
||||
'queryParameterStripping':
|
||||
_$QueryParameterStrippingEnumMap[instance.queryParameterStripping]!,
|
||||
'bounceTrackingProtectionMode':
|
||||
|
||||
@@ -212,6 +212,10 @@ class EngineSettingsRepository extends _$EngineSettingsRepository {
|
||||
DriftSqlType.bool,
|
||||
db.typeMapping,
|
||||
),
|
||||
'extensionsWebAPIEnabled': settings['extensionsWebAPIEnabled']?.readAs(
|
||||
DriftSqlType.bool,
|
||||
db.typeMapping,
|
||||
),
|
||||
// LNA Settings
|
||||
'lnaBlocking': settings['lnaBlocking']?.readAs(
|
||||
DriftSqlType.bool,
|
||||
|
||||
@@ -34,7 +34,7 @@ final class EngineSettingsRepositoryProvider
|
||||
}
|
||||
|
||||
String _$engineSettingsRepositoryHash() =>
|
||||
r'3d062d316bfcb86f3216846ed2cf5edd148460eb';
|
||||
r'4abe41cfeba8e39484683033f11c54be644fa2b2';
|
||||
|
||||
abstract class _$EngineSettingsRepository
|
||||
extends $StreamNotifier<EngineSettings> {
|
||||
|
||||
+2
-1
@@ -85,7 +85,7 @@ object EngineProvider {
|
||||
// About config it's no longer enabled by default
|
||||
builder.aboutConfigEnabled(true)
|
||||
builder.extensionsProcessEnabled(true)
|
||||
builder.extensionsWebAPIEnabled(false)
|
||||
builder.extensionsWebAPIEnabled(true)
|
||||
//builder.debugLogging(components.logLevel == Log.Priority.DEBUG)
|
||||
builder.consoleOutput(components.logLevel == Log.Priority.DEBUG)
|
||||
builder.contentBlocking(contentBlocking.build())
|
||||
@@ -96,6 +96,7 @@ object EngineProvider {
|
||||
settings.fissionEnabled?.let { builder.fissionEnabled(it) }
|
||||
settings.isolatedProcessEnabled?.let { builder.isolatedProcessEnabled(it) }
|
||||
settings.appZygoteProcessEnabled?.let { builder.appZygoteProcessEnabled(it) }
|
||||
settings.extensionsWebAPIEnabled?.let { builder.extensionsWebAPIEnabled(it) }
|
||||
settings.displayDensityOverride?.let { builder.displayDensityOverride(it.toFloat()) }
|
||||
val screenWidth = settings.screenWidthOverride
|
||||
val screenHeight = settings.screenHeightOverride
|
||||
|
||||
+7
-4
@@ -2303,6 +2303,7 @@ data class GeckoEngineSettings (
|
||||
val fissionEnabled: Boolean? = null,
|
||||
val isolatedProcessEnabled: Boolean? = null,
|
||||
val appZygoteProcessEnabled: Boolean? = null,
|
||||
val extensionsWebAPIEnabled: Boolean? = null,
|
||||
val lnaBlocking: Boolean? = null,
|
||||
val lnaBlockTrackers: Boolean? = null,
|
||||
val lnaEnabled: Boolean? = null
|
||||
@@ -2348,10 +2349,11 @@ data class GeckoEngineSettings (
|
||||
val fissionEnabled = pigeonVar_list[35] as Boolean?
|
||||
val isolatedProcessEnabled = pigeonVar_list[36] as Boolean?
|
||||
val appZygoteProcessEnabled = pigeonVar_list[37] as Boolean?
|
||||
val lnaBlocking = pigeonVar_list[38] as Boolean?
|
||||
val lnaBlockTrackers = pigeonVar_list[39] as Boolean?
|
||||
val lnaEnabled = pigeonVar_list[40] 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, lnaBlocking, lnaBlockTrackers, lnaEnabled)
|
||||
val extensionsWebAPIEnabled = pigeonVar_list[38] as Boolean?
|
||||
val lnaBlocking = pigeonVar_list[39] as Boolean?
|
||||
val lnaBlockTrackers = pigeonVar_list[40] as Boolean?
|
||||
val lnaEnabled = 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)
|
||||
}
|
||||
}
|
||||
fun toList(): List<Any?> {
|
||||
@@ -2394,6 +2396,7 @@ data class GeckoEngineSettings (
|
||||
fissionEnabled,
|
||||
isolatedProcessEnabled,
|
||||
appZygoteProcessEnabled,
|
||||
extensionsWebAPIEnabled,
|
||||
lnaBlocking,
|
||||
lnaBlockTrackers,
|
||||
lnaEnabled,
|
||||
|
||||
@@ -2721,6 +2721,7 @@ class GeckoEngineSettings {
|
||||
this.fissionEnabled,
|
||||
this.isolatedProcessEnabled,
|
||||
this.appZygoteProcessEnabled,
|
||||
this.extensionsWebAPIEnabled,
|
||||
this.lnaBlocking,
|
||||
this.lnaBlockTrackers,
|
||||
this.lnaEnabled,
|
||||
@@ -2814,6 +2815,8 @@ class GeckoEngineSettings {
|
||||
|
||||
bool? appZygoteProcessEnabled;
|
||||
|
||||
bool? extensionsWebAPIEnabled;
|
||||
|
||||
bool? lnaBlocking;
|
||||
|
||||
bool? lnaBlockTrackers;
|
||||
@@ -2860,6 +2863,7 @@ class GeckoEngineSettings {
|
||||
fissionEnabled,
|
||||
isolatedProcessEnabled,
|
||||
appZygoteProcessEnabled,
|
||||
extensionsWebAPIEnabled,
|
||||
lnaBlocking,
|
||||
lnaBlockTrackers,
|
||||
lnaEnabled,
|
||||
@@ -2910,9 +2914,10 @@ class GeckoEngineSettings {
|
||||
fissionEnabled: result[35] as bool?,
|
||||
isolatedProcessEnabled: result[36] as bool?,
|
||||
appZygoteProcessEnabled: result[37] as bool?,
|
||||
lnaBlocking: result[38] as bool?,
|
||||
lnaBlockTrackers: result[39] as bool?,
|
||||
lnaEnabled: result[40] as bool?,
|
||||
extensionsWebAPIEnabled: result[38] as bool?,
|
||||
lnaBlocking: result[39] as bool?,
|
||||
lnaBlockTrackers: result[40] as bool?,
|
||||
lnaEnabled: result[41] as bool?,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -892,6 +892,7 @@ class GeckoEngineSettings {
|
||||
final bool? fissionEnabled;
|
||||
final bool? isolatedProcessEnabled;
|
||||
final bool? appZygoteProcessEnabled;
|
||||
final bool? extensionsWebAPIEnabled;
|
||||
|
||||
// Local Network Access (LNA) Settings
|
||||
final bool? lnaBlocking;
|
||||
@@ -937,6 +938,7 @@ class GeckoEngineSettings {
|
||||
this.fissionEnabled,
|
||||
this.isolatedProcessEnabled,
|
||||
this.appZygoteProcessEnabled,
|
||||
this.extensionsWebAPIEnabled,
|
||||
this.lnaBlocking,
|
||||
this.lnaBlockTrackers,
|
||||
this.lnaEnabled,
|
||||
|
||||
Reference in New Issue
Block a user