This commit is contained in:
Fabian Freund
2025-02-03 15:09:04 +01:00
parent 36acd46318
commit 025ecaf2e3
132 changed files with 4431 additions and 1644 deletions
@@ -4,6 +4,7 @@ export 'src/data/models/source.dart';
export 'src/domain/entities/default_selection_actions.dart';
export 'src/domain/services/gecko_addon.dart';
export 'src/domain/services/gecko_cookie.dart';
export 'src/domain/services/gecko_delete_browser_data.dart';
export 'src/domain/services/gecko_engine_settings.dart';
export 'src/domain/services/gecko_event.dart';
export 'src/domain/services/gecko_find_in_page.dart';
@@ -0,0 +1,34 @@
import 'package:flutter_mozilla_components/src/pigeons/gecko.g.dart';
final _apiInstance = GeckoDeleteBrowsingDataController();
class GeckoDeleteBrowserDataService {
final GeckoDeleteBrowsingDataController _api;
GeckoDeleteBrowserDataService({GeckoDeleteBrowsingDataController? api})
: _api = api ?? _apiInstance;
Future<void> deleteTabs() {
return _api.deleteTabs();
}
Future<void> deleteBrowsingHistory() {
return _api.deleteBrowsingHistory();
}
Future<void> deleteCookiesAndSiteData() {
return _api.deleteCookiesAndSiteData();
}
Future<void> deleteCachedFiles() {
return _api.deleteCachedFiles();
}
Future<void> deleteSitePermissions() {
return _api.deleteSitePermissions();
}
Future<void> deleteDownloads() {
return _api.deleteDownloads();
}
}
@@ -8,7 +8,71 @@ class GeckoEngineSettingsService {
GeckoEngineSettingsService({GeckoEngineSettingsApi? api})
: _api = api ?? _apiInstance;
Future<void> javaScriptEnabled(bool state) {
return _api.javaScriptEnabled(state);
Future<void> setDefaultSettings(GeckoEngineSettings settings,
{bool updateRuntime = true}) {
return updateRuntime
? _api.updateRuntimeSettings(settings)
: _api.setDefaultSettings(settings);
}
Future<void> javascriptEnabled(bool state) {
return _api.updateRuntimeSettings(
GeckoEngineSettings(javascriptEnabled: state),
);
}
Future<void> trackingProtectionPolicy(TrackingProtectionPolicy state) {
return _api.updateRuntimeSettings(
GeckoEngineSettings(trackingProtectionPolicy: state),
);
}
Future<void> httpsOnlyMode(HttpsOnlyMode state) {
return _api
.updateRuntimeSettings(GeckoEngineSettings(httpsOnlyMode: state));
}
Future<void> globalPrivacyControlEnabled(bool state) {
return _api.updateRuntimeSettings(
GeckoEngineSettings(globalPrivacyControlEnabled: state),
);
}
Future<void> preferredColorScheme(ColorScheme state) {
return _api.updateRuntimeSettings(
GeckoEngineSettings(preferredColorScheme: state),
);
}
Future<void> cookieBannerHandlingMode(CookieBannerHandlingMode state) {
return _api.updateRuntimeSettings(
GeckoEngineSettings(cookieBannerHandlingMode: state),
);
}
Future<void> cookieBannerHandlingModePrivateBrowsing(
CookieBannerHandlingMode state,
) {
return _api.updateRuntimeSettings(
GeckoEngineSettings(cookieBannerHandlingModePrivateBrowsing: state),
);
}
Future<void> cookieBannerHandlingGlobalRules(bool state) {
return _api.updateRuntimeSettings(
GeckoEngineSettings(cookieBannerHandlingGlobalRules: state),
);
}
Future<void> cookieBannerHandlingGlobalRulesSubFrames(bool state) {
return _api.updateRuntimeSettings(
GeckoEngineSettings(cookieBannerHandlingGlobalRulesSubFrames: state),
);
}
Future<void> webContentIsolationStrategy(WebContentIsolationStrategy state) {
return _api.updateRuntimeSettings(
GeckoEngineSettings(webContentIsolationStrategy: state),
);
}
}
@@ -142,12 +142,14 @@ class GeckoTabService {
}
Future<String> duplicateTab({
String? selectTabId,
required String? selectTabId,
required String? newContextId,
bool selectNewTab = true,
}) {
return _api.duplicateTab(
selectTabId: selectTabId,
selectNewTab: selectNewTab,
newContextId: newContextId,
);
}
@@ -10,8 +10,13 @@ import 'package:flutter_mozilla_components/src/domain/services/gecko_browser.dar
class GeckoView extends StatefulWidget {
final FutureOr<void> Function()? preInitializationStep;
final FutureOr<void> Function()? postInitializationStep;
const GeckoView({super.key, this.preInitializationStep});
const GeckoView({
super.key,
this.preInitializationStep,
this.postInitializationStep,
});
@override
State<GeckoView> createState() => _GeckoViewState();
@@ -70,6 +75,7 @@ class _GeckoViewState extends State<GeckoView> {
Duration(milliseconds: ((1000 / 60) * 2).toInt()),
).whenComplete(() async {
await browserService.showNativeFragment();
await widget.postInitializationStep?.call();
});
});
})
@@ -2334,7 +2334,7 @@ class GeckoTabsApi {
}
}
Future<String> duplicateTab({required String? selectTabId, required bool selectNewTab}) async {
Future<String> duplicateTab({required String? selectTabId, required bool selectNewTab, required String? newContextId, }) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.duplicateTab$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
@@ -2342,7 +2342,7 @@ class GeckoTabsApi {
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(<Object?>[selectTabId, selectNewTab]) as List<Object?>?;
await pigeonVar_channel.send(<Object?>[selectTabId, selectNewTab, newContextId]) as List<Object?>?;
if (pigeonVar_replyList == null) {
throw _createConnectionError(pigeonVar_channelName);
} else if (pigeonVar_replyList.length > 1) {
@@ -3602,3 +3602,149 @@ abstract class GeckoTabContentEvents {
}
}
}
class GeckoDeleteBrowsingDataController {
/// Constructor for [GeckoDeleteBrowsingDataController]. 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.
GeckoDeleteBrowsingDataController({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<void> deleteTabs() async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteTabs$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(null) 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> deleteBrowsingHistory() async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteBrowsingHistory$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(null) 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> deleteCookiesAndSiteData() async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteCookiesAndSiteData$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(null) 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> deleteCachedFiles() async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteCachedFiles$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(null) 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> deleteSitePermissions() async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteSitePermissions$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(null) 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> deleteDownloads() async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteDownloads$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(null) 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;
}
}
}