intermediate prefs

This commit is contained in:
Fabian Freund
2025-01-30 10:46:38 +01:00
parent 78c17a70c5
commit 36acd46318
51 changed files with 3744 additions and 1719 deletions
@@ -0,0 +1,32 @@
import 'package:flutter_mozilla_components/src/pigeons/gecko.g.dart';
final _apiInstance = GeckoPrefApi();
class GeckoPrefService {
Future<Map<String, Object>> getAllPrefs() {
return _apiInstance.getPrefs(null);
}
Future<Map<String, Object>> getPrefs(List<String> prefs) {
return _apiInstance.getPrefs(prefs);
}
Future<Map<String, Object>> applyPrefs(Map<String, Object> prefs) {
final buffer = prefs.entries.map((pref) {
final value = switch (pref.value) {
final bool x => '$x',
final int x => '$x',
final String x => '"$x"',
_ => throw Exception('Unknow pref type')
};
return 'user_pref("${pref.key}", $value);';
}).join();
return _apiInstance.applyPrefs(buffer);
}
Future<void> resetPrefs(List<String> prefs) {
return _apiInstance.resetPrefs(prefs);
}
}
@@ -1,4 +1,4 @@
// Autogenerated from Pigeon (v22.7.2), do not edit directly.
// Autogenerated from Pigeon (v22.7.4), do not edit directly.
// See also: https://pub.dev/packages/pigeon
// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import, no_leading_underscores_for_local_identifiers
@@ -94,6 +94,37 @@ enum GeckoSuggestionType {
history,
}
enum TrackingProtectionPolicy {
none,
recommended,
strict,
custom,
}
enum HttpsOnlyMode {
disabled,
privateOnly,
enabled,
}
enum ColorScheme {
system,
light,
dark,
}
enum CookieBannerHandlingMode {
disabled,
rejectAll,
rejectOrAcceptAll,
}
enum WebContentIsolationStrategy {
isolateNothing,
isolateEverything,
isolateHighValue,
}
/// Translation options that map to the Gecko Translations Options.
///
/// @property downloadModel If the necessary models should be downloaded on request. If false, then
@@ -1176,6 +1207,72 @@ class TabContent {
}
}
class GeckoEngineSettings {
GeckoEngineSettings({
this.javascriptEnabled,
this.trackingProtectionPolicy,
this.httpsOnlyMode,
this.globalPrivacyControlEnabled,
this.preferredColorScheme,
this.cookieBannerHandlingMode,
this.cookieBannerHandlingModePrivateBrowsing,
this.cookieBannerHandlingGlobalRules,
this.cookieBannerHandlingGlobalRulesSubFrames,
this.webContentIsolationStrategy,
});
bool? javascriptEnabled;
TrackingProtectionPolicy? trackingProtectionPolicy;
HttpsOnlyMode? httpsOnlyMode;
bool? globalPrivacyControlEnabled;
ColorScheme? preferredColorScheme;
CookieBannerHandlingMode? cookieBannerHandlingMode;
CookieBannerHandlingMode? cookieBannerHandlingModePrivateBrowsing;
bool? cookieBannerHandlingGlobalRules;
bool? cookieBannerHandlingGlobalRulesSubFrames;
WebContentIsolationStrategy? webContentIsolationStrategy;
Object encode() {
return <Object?>[
javascriptEnabled,
trackingProtectionPolicy,
httpsOnlyMode,
globalPrivacyControlEnabled,
preferredColorScheme,
cookieBannerHandlingMode,
cookieBannerHandlingModePrivateBrowsing,
cookieBannerHandlingGlobalRules,
cookieBannerHandlingGlobalRulesSubFrames,
webContentIsolationStrategy,
];
}
static GeckoEngineSettings decode(Object result) {
result as List<Object?>;
return GeckoEngineSettings(
javascriptEnabled: result[0] as bool?,
trackingProtectionPolicy: result[1] as TrackingProtectionPolicy?,
httpsOnlyMode: result[2] as HttpsOnlyMode?,
globalPrivacyControlEnabled: result[3] as bool?,
preferredColorScheme: result[4] as ColorScheme?,
cookieBannerHandlingMode: result[5] as CookieBannerHandlingMode?,
cookieBannerHandlingModePrivateBrowsing: result[6] as CookieBannerHandlingMode?,
cookieBannerHandlingGlobalRules: result[7] as bool?,
cookieBannerHandlingGlobalRulesSubFrames: result[8] as bool?,
webContentIsolationStrategy: result[9] as WebContentIsolationStrategy?,
);
}
}
class _PigeonCodec extends StandardMessageCodec {
const _PigeonCodec();
@@ -1208,87 +1305,105 @@ class _PigeonCodec extends StandardMessageCodec {
} else if (value is GeckoSuggestionType) {
buffer.putUint8(136);
writeValue(buffer, value.index);
} else if (value is TranslationOptions) {
} else if (value is TrackingProtectionPolicy) {
buffer.putUint8(137);
writeValue(buffer, value.encode());
} else if (value is ReaderState) {
writeValue(buffer, value.index);
} else if (value is HttpsOnlyMode) {
buffer.putUint8(138);
writeValue(buffer, value.encode());
} else if (value is LastMediaAccessState) {
writeValue(buffer, value.index);
} else if (value is ColorScheme) {
buffer.putUint8(139);
writeValue(buffer, value.encode());
} else if (value is HistoryMetadataKey) {
writeValue(buffer, value.index);
} else if (value is CookieBannerHandlingMode) {
buffer.putUint8(140);
writeValue(buffer, value.encode());
} else if (value is PackageCategoryValue) {
writeValue(buffer, value.index);
} else if (value is WebContentIsolationStrategy) {
buffer.putUint8(141);
writeValue(buffer, value.encode());
} else if (value is ExternalPackage) {
writeValue(buffer, value.index);
} else if (value is TranslationOptions) {
buffer.putUint8(142);
writeValue(buffer, value.encode());
} else if (value is LoadUrlFlagsValue) {
} else if (value is ReaderState) {
buffer.putUint8(143);
writeValue(buffer, value.encode());
} else if (value is SourceValue) {
} else if (value is LastMediaAccessState) {
buffer.putUint8(144);
writeValue(buffer, value.encode());
} else if (value is TabState) {
} else if (value is HistoryMetadataKey) {
buffer.putUint8(145);
writeValue(buffer, value.encode());
} else if (value is RecoverableTab) {
} else if (value is PackageCategoryValue) {
buffer.putUint8(146);
writeValue(buffer, value.encode());
} else if (value is RecoverableBrowserState) {
} else if (value is ExternalPackage) {
buffer.putUint8(147);
writeValue(buffer, value.encode());
} else if (value is IconRequest) {
} else if (value is LoadUrlFlagsValue) {
buffer.putUint8(148);
writeValue(buffer, value.encode());
} else if (value is ResourceSize) {
} else if (value is SourceValue) {
buffer.putUint8(149);
writeValue(buffer, value.encode());
} else if (value is Resource) {
} else if (value is TabState) {
buffer.putUint8(150);
writeValue(buffer, value.encode());
} else if (value is IconResult) {
} else if (value is RecoverableTab) {
buffer.putUint8(151);
writeValue(buffer, value.encode());
} else if (value is CookiePartitionKey) {
} else if (value is RecoverableBrowserState) {
buffer.putUint8(152);
writeValue(buffer, value.encode());
} else if (value is Cookie) {
} else if (value is IconRequest) {
buffer.putUint8(153);
writeValue(buffer, value.encode());
} else if (value is HistoryItem) {
} else if (value is ResourceSize) {
buffer.putUint8(154);
writeValue(buffer, value.encode());
} else if (value is HistoryState) {
} else if (value is Resource) {
buffer.putUint8(155);
writeValue(buffer, value.encode());
} else if (value is ReaderableState) {
} else if (value is IconResult) {
buffer.putUint8(156);
writeValue(buffer, value.encode());
} else if (value is SecurityInfoState) {
} else if (value is CookiePartitionKey) {
buffer.putUint8(157);
writeValue(buffer, value.encode());
} else if (value is TabContentState) {
} else if (value is Cookie) {
buffer.putUint8(158);
writeValue(buffer, value.encode());
} else if (value is FindResultState) {
} else if (value is HistoryItem) {
buffer.putUint8(159);
writeValue(buffer, value.encode());
} else if (value is CustomSelectionAction) {
} else if (value is HistoryState) {
buffer.putUint8(160);
writeValue(buffer, value.encode());
} else if (value is WebExtensionData) {
} else if (value is ReaderableState) {
buffer.putUint8(161);
writeValue(buffer, value.encode());
} else if (value is GeckoSuggestion) {
} else if (value is SecurityInfoState) {
buffer.putUint8(162);
writeValue(buffer, value.encode());
} else if (value is TabContent) {
} else if (value is TabContentState) {
buffer.putUint8(163);
writeValue(buffer, value.encode());
} else if (value is FindResultState) {
buffer.putUint8(164);
writeValue(buffer, value.encode());
} else if (value is CustomSelectionAction) {
buffer.putUint8(165);
writeValue(buffer, value.encode());
} else if (value is WebExtensionData) {
buffer.putUint8(166);
writeValue(buffer, value.encode());
} else if (value is GeckoSuggestion) {
buffer.putUint8(167);
writeValue(buffer, value.encode());
} else if (value is TabContent) {
buffer.putUint8(168);
writeValue(buffer, value.encode());
} else if (value is GeckoEngineSettings) {
buffer.putUint8(169);
writeValue(buffer, value.encode());
} else {
super.writeValue(buffer, value);
}
@@ -1322,59 +1437,76 @@ class _PigeonCodec extends StandardMessageCodec {
final int? value = readValue(buffer) as int?;
return value == null ? null : GeckoSuggestionType.values[value];
case 137:
return TranslationOptions.decode(readValue(buffer)!);
final int? value = readValue(buffer) as int?;
return value == null ? null : TrackingProtectionPolicy.values[value];
case 138:
return ReaderState.decode(readValue(buffer)!);
final int? value = readValue(buffer) as int?;
return value == null ? null : HttpsOnlyMode.values[value];
case 139:
return LastMediaAccessState.decode(readValue(buffer)!);
final int? value = readValue(buffer) as int?;
return value == null ? null : ColorScheme.values[value];
case 140:
return HistoryMetadataKey.decode(readValue(buffer)!);
final int? value = readValue(buffer) as int?;
return value == null ? null : CookieBannerHandlingMode.values[value];
case 141:
return PackageCategoryValue.decode(readValue(buffer)!);
final int? value = readValue(buffer) as int?;
return value == null ? null : WebContentIsolationStrategy.values[value];
case 142:
return ExternalPackage.decode(readValue(buffer)!);
return TranslationOptions.decode(readValue(buffer)!);
case 143:
return LoadUrlFlagsValue.decode(readValue(buffer)!);
return ReaderState.decode(readValue(buffer)!);
case 144:
return SourceValue.decode(readValue(buffer)!);
return LastMediaAccessState.decode(readValue(buffer)!);
case 145:
return TabState.decode(readValue(buffer)!);
return HistoryMetadataKey.decode(readValue(buffer)!);
case 146:
return RecoverableTab.decode(readValue(buffer)!);
return PackageCategoryValue.decode(readValue(buffer)!);
case 147:
return RecoverableBrowserState.decode(readValue(buffer)!);
return ExternalPackage.decode(readValue(buffer)!);
case 148:
return IconRequest.decode(readValue(buffer)!);
return LoadUrlFlagsValue.decode(readValue(buffer)!);
case 149:
return ResourceSize.decode(readValue(buffer)!);
return SourceValue.decode(readValue(buffer)!);
case 150:
return Resource.decode(readValue(buffer)!);
return TabState.decode(readValue(buffer)!);
case 151:
return IconResult.decode(readValue(buffer)!);
return RecoverableTab.decode(readValue(buffer)!);
case 152:
return CookiePartitionKey.decode(readValue(buffer)!);
return RecoverableBrowserState.decode(readValue(buffer)!);
case 153:
return Cookie.decode(readValue(buffer)!);
return IconRequest.decode(readValue(buffer)!);
case 154:
return HistoryItem.decode(readValue(buffer)!);
return ResourceSize.decode(readValue(buffer)!);
case 155:
return HistoryState.decode(readValue(buffer)!);
return Resource.decode(readValue(buffer)!);
case 156:
return ReaderableState.decode(readValue(buffer)!);
return IconResult.decode(readValue(buffer)!);
case 157:
return SecurityInfoState.decode(readValue(buffer)!);
return CookiePartitionKey.decode(readValue(buffer)!);
case 158:
return TabContentState.decode(readValue(buffer)!);
return Cookie.decode(readValue(buffer)!);
case 159:
return FindResultState.decode(readValue(buffer)!);
return HistoryItem.decode(readValue(buffer)!);
case 160:
return CustomSelectionAction.decode(readValue(buffer)!);
return HistoryState.decode(readValue(buffer)!);
case 161:
return WebExtensionData.decode(readValue(buffer)!);
return ReaderableState.decode(readValue(buffer)!);
case 162:
return GeckoSuggestion.decode(readValue(buffer)!);
return SecurityInfoState.decode(readValue(buffer)!);
case 163:
return TabContentState.decode(readValue(buffer)!);
case 164:
return FindResultState.decode(readValue(buffer)!);
case 165:
return CustomSelectionAction.decode(readValue(buffer)!);
case 166:
return WebExtensionData.decode(readValue(buffer)!);
case 167:
return GeckoSuggestion.decode(readValue(buffer)!);
case 168:
return TabContent.decode(readValue(buffer)!);
case 169:
return GeckoEngineSettings.decode(readValue(buffer)!);
default:
return super.readValueOfType(type, buffer);
}
@@ -1452,15 +1584,37 @@ class GeckoEngineSettingsApi {
final String pigeonVar_messageChannelSuffix;
Future<void> javaScriptEnabled(bool state) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoEngineSettingsApi.javaScriptEnabled$pigeonVar_messageChannelSuffix';
Future<void> setDefaultSettings(GeckoEngineSettings settings) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoEngineSettingsApi.setDefaultSettings$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(<Object?>[state]) as List<Object?>?;
await pigeonVar_channel.send(<Object?>[settings]) as List<Object?>?;
if (pigeonVar_replyList == null) {
throw _createConnectionError(pigeonVar_channelName);
} else if (pigeonVar_replyList.length > 1) {
throw PlatformException(
code: pigeonVar_replyList[0]! as String,
message: pigeonVar_replyList[1] as String?,
details: pigeonVar_replyList[2],
);
} else {
return;
}
}
Future<void> updateRuntimeSettings(GeckoEngineSettings settings) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoEngineSettingsApi.updateRuntimeSettings$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(<Object?>[settings]) as List<Object?>?;
if (pigeonVar_replyList == null) {
throw _createConnectionError(pigeonVar_channelName);
} else if (pigeonVar_replyList.length > 1) {
@@ -2378,6 +2532,96 @@ class GeckoIconsApi {
}
}
class GeckoPrefApi {
/// Constructor for [GeckoPrefApi]. The [binaryMessenger] named argument is
/// available for dependency injection. If it is left null, the default
/// BinaryMessenger will be used which routes to the host platform.
GeckoPrefApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''})
: pigeonVar_binaryMessenger = binaryMessenger,
pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : '';
final BinaryMessenger? pigeonVar_binaryMessenger;
static const MessageCodec<Object?> pigeonChannelCodec = _PigeonCodec();
final String pigeonVar_messageChannelSuffix;
Future<Map<String, Object>> getPrefs(List<String>? preferenceFilter) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoPrefApi.getPrefs$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(<Object?>[preferenceFilter]) as List<Object?>?;
if (pigeonVar_replyList == null) {
throw _createConnectionError(pigeonVar_channelName);
} else if (pigeonVar_replyList.length > 1) {
throw PlatformException(
code: pigeonVar_replyList[0]! as String,
message: pigeonVar_replyList[1] as String?,
details: pigeonVar_replyList[2],
);
} else if (pigeonVar_replyList[0] == null) {
throw PlatformException(
code: 'null-error',
message: 'Host platform returned null value for non-null return value.',
);
} else {
return (pigeonVar_replyList[0] as Map<Object?, Object?>?)!.cast<String, Object>();
}
}
Future<Map<String, Object>> applyPrefs(String prefBuffer) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoPrefApi.applyPrefs$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(<Object?>[prefBuffer]) as List<Object?>?;
if (pigeonVar_replyList == null) {
throw _createConnectionError(pigeonVar_channelName);
} else if (pigeonVar_replyList.length > 1) {
throw PlatformException(
code: pigeonVar_replyList[0]! as String,
message: pigeonVar_replyList[1] as String?,
details: pigeonVar_replyList[2],
);
} else if (pigeonVar_replyList[0] == null) {
throw PlatformException(
code: 'null-error',
message: 'Host platform returned null value for non-null return value.',
);
} else {
return (pigeonVar_replyList[0] as Map<Object?, Object?>?)!.cast<String, Object>();
}
}
Future<void> resetPrefs(List<String>? preferenceNames) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoPrefApi.resetPrefs$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(<Object?>[preferenceNames]) as List<Object?>?;
if (pigeonVar_replyList == null) {
throw _createConnectionError(pigeonVar_channelName);
} else if (pigeonVar_replyList.length > 1) {
throw PlatformException(
code: pigeonVar_replyList[0]! as String,
message: pigeonVar_replyList[1] as String?,
details: pigeonVar_replyList[2],
);
} else {
return;
}
}
}
class GeckoCookieApi {
/// Constructor for [GeckoCookieApi]. The [binaryMessenger] named argument is
/// available for dependency injection. If it is left null, the default