From 4f682744daf9596a61758d8adde042e54abc3f93 Mon Sep 17 00:00:00 2001 From: Fabian Freund Date: Mon, 23 Jun 2025 19:43:36 +0200 Subject: [PATCH] tab trees --- app/lib/core/routing/routes.browser.dart | 15 + app/lib/core/routing/routes.dart | 1 + app/lib/core/routing/routes.g.dart | 31 + .../geckoview/domain/entities/states/tab.dart | 5 + .../domain/entities/states/tab.g.dart | 11 + .../geckoview/domain/providers/tab_state.dart | 1 + .../geckoview/domain/repositories/tab.dart | 59 +- .../geckoview/domain/repositories/tab.g.dart | 2 +- .../features/browser/domain/providers.dart | 56 +- .../features/browser/domain/providers.g.dart | 145 +- .../presentation/controllers/tree_view.dart | 15 + .../presentation/controllers/tree_view.g.dart | 27 + .../presentation/dialogs/tab_tree.dart | 129 + .../browser/presentation/screens/browser.dart | 24 +- .../widgets/sheets/view_tabs.dart | 389 +- .../presentation/widgets/tab_preview.dart | 310 +- .../features/tabs/data/database/daos/tab.dart | 9 + .../tabs/data/database/database.drift | 73 +- .../tabs/data/database/database.g.dart | 117 + .../tabs/data/entities/tab_entity.dart | 33 + .../features/tabs/domain/providers.dart | 17 + .../features/tabs/domain/providers.g.dart | 139 + app/pubspec.yaml | 2 + .../api/GeckoTabsApiImpl.kt | 1 + .../components/Events.kt | 1 + .../pigeons/Gecko.g.kt | 21 +- .../lib/src/pigeons/gecko.g.dart | 3308 +++++++---------- .../pigeons/gecko.dart | 2 + 28 files changed, 2687 insertions(+), 2256 deletions(-) create mode 100644 app/lib/features/geckoview/features/browser/presentation/controllers/tree_view.dart create mode 100644 app/lib/features/geckoview/features/browser/presentation/controllers/tree_view.g.dart create mode 100644 app/lib/features/geckoview/features/browser/presentation/dialogs/tab_tree.dart create mode 100644 app/lib/features/geckoview/features/tabs/data/entities/tab_entity.dart diff --git a/app/lib/core/routing/routes.browser.dart b/app/lib/core/routing/routes.browser.dart index acdb54b8..e60505f6 100644 --- a/app/lib/core/routing/routes.browser.dart +++ b/app/lib/core/routing/routes.browser.dart @@ -28,6 +28,10 @@ part of 'routes.dart'; ), ], ), + TypedGoRoute( + name: 'TabTreeRoute', + path: 'tab_tree/:rootTabId', + ), ], ) class BrowserRoute extends GoRouteData with _$BrowserRoute { @@ -128,3 +132,14 @@ class ContextMenuRoute extends GoRouteData with _$ContextMenuRoute { ); } } + +class TabTreeRoute extends GoRouteData with _$TabTreeRoute { + final String rootTabId; + + const TabTreeRoute(this.rootTabId); + + @override + Page buildPage(BuildContext context, GoRouterState state) { + return DialogPage(builder: (_) => TabTreeDialog(rootTabId)); + } +} diff --git a/app/lib/core/routing/routes.dart b/app/lib/core/routing/routes.dart index 5d93de80..1cb5f9c4 100644 --- a/app/lib/core/routing/routes.dart +++ b/app/lib/core/routing/routes.dart @@ -8,6 +8,7 @@ import 'package:weblibre/features/about/presentation/screens/about.dart'; import 'package:weblibre/features/bangs/presentation/screens/categories.dart'; import 'package:weblibre/features/bangs/presentation/screens/list.dart'; import 'package:weblibre/features/bangs/presentation/screens/search.dart'; +import 'package:weblibre/features/geckoview/features/browser/presentation/dialogs/tab_tree.dart'; import 'package:weblibre/features/geckoview/features/browser/presentation/dialogs/web_page_dialog.dart'; import 'package:weblibre/features/geckoview/features/browser/presentation/screens/browser.dart'; import 'package:weblibre/features/geckoview/features/contextmenu/extensions/hit_result.dart'; diff --git a/app/lib/core/routing/routes.g.dart b/app/lib/core/routing/routes.g.dart index e2889eb8..8662e44e 100644 --- a/app/lib/core/routing/routes.g.dart +++ b/app/lib/core/routing/routes.g.dart @@ -300,6 +300,12 @@ RouteBase get $browserRoute => GoRouteData.$route( ), ], ), + GoRouteData.$route( + path: 'tab_tree/:rootTabId', + name: 'TabTreeRoute', + + factory: _$TabTreeRoute._fromState, + ), ], ); @@ -500,6 +506,31 @@ mixin _$ContainerEditRoute on GoRouteData { context.replace(location, extra: _self.$extra); } +mixin _$TabTreeRoute on GoRouteData { + static TabTreeRoute _fromState(GoRouterState state) => + TabTreeRoute(state.pathParameters['rootTabId']!); + + TabTreeRoute get _self => this as TabTreeRoute; + + @override + String get location => GoRouteData.$location( + '/tab_tree/${Uri.encodeComponent(_self.rootTabId)}', + ); + + @override + void go(BuildContext context) => context.go(location); + + @override + Future push(BuildContext context) => context.push(location); + + @override + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + @override + void replace(BuildContext context) => context.replace(location); +} + extension on Map { T? _$fromName(String? value) => entries.where((element) => element.value == value).firstOrNull?.key; diff --git a/app/lib/features/geckoview/domain/entities/states/tab.dart b/app/lib/features/geckoview/domain/entities/states/tab.dart index abbceae9..69735519 100644 --- a/app/lib/features/geckoview/domain/entities/states/tab.dart +++ b/app/lib/features/geckoview/domain/entities/states/tab.dart @@ -16,6 +16,8 @@ class TabState extends WebPageInfo { @CopyWithField(immutable: true) final String id; + final String? parentId; + final String? contextId; @override @@ -47,6 +49,7 @@ class TabState extends WebPageInfo { TabState({ required this.id, + required this.parentId, required this.contextId, required super.url, required String title, @@ -64,6 +67,7 @@ class TabState extends WebPageInfo { factory TabState.$default(String tabId) => TabState( id: tabId, + parentId: null, contextId: null, url: Uri.parse('about:blank'), title: "", @@ -83,6 +87,7 @@ class TabState extends WebPageInfo { List get hashParameters => [ ...super.hashParameters, id, + parentId, contextId, icon, thumbnail, diff --git a/app/lib/features/geckoview/domain/entities/states/tab.g.dart b/app/lib/features/geckoview/domain/entities/states/tab.g.dart index 1dc25302..817bab07 100644 --- a/app/lib/features/geckoview/domain/entities/states/tab.g.dart +++ b/app/lib/features/geckoview/domain/entities/states/tab.g.dart @@ -7,6 +7,8 @@ part of 'tab.dart'; // ************************************************************************** abstract class _$TabStateCWProxy { + TabState parentId(String? parentId); + TabState contextId(String? contextId); TabState url(Uri url); @@ -40,6 +42,7 @@ abstract class _$TabStateCWProxy { /// TabState(...).copyWith(id: 12, name: "My name") /// ```` TabState call({ + String? parentId, String? contextId, Uri url, String title, @@ -62,6 +65,9 @@ class _$TabStateCWProxyImpl implements _$TabStateCWProxy { final TabState _value; + @override + TabState parentId(String? parentId) => this(parentId: parentId); + @override TabState contextId(String? contextId) => this(contextId: contextId); @@ -113,6 +119,7 @@ class _$TabStateCWProxyImpl implements _$TabStateCWProxy { /// TabState(...).copyWith(id: 12, name: "My name") /// ```` TabState call({ + Object? parentId = const $CopyWithPlaceholder(), Object? contextId = const $CopyWithPlaceholder(), Object? url = const $CopyWithPlaceholder(), Object? title = const $CopyWithPlaceholder(), @@ -129,6 +136,10 @@ class _$TabStateCWProxyImpl implements _$TabStateCWProxy { }) { return TabState( id: _value.id, + parentId: parentId == const $CopyWithPlaceholder() + ? _value.parentId + // ignore: cast_nullable_to_non_nullable + : parentId as String?, contextId: contextId == const $CopyWithPlaceholder() ? _value.contextId // ignore: cast_nullable_to_non_nullable diff --git a/app/lib/features/geckoview/domain/providers/tab_state.dart b/app/lib/features/geckoview/domain/providers/tab_state.dart index c1586df2..5097b984 100644 --- a/app/lib/features/geckoview/domain/providers/tab_state.dart +++ b/app/lib/features/geckoview/domain/providers/tab_state.dart @@ -24,6 +24,7 @@ class TabStates extends _$TabStates { state[contentState.id] ?? TabState.$default(contentState.id); state = {...state} ..[contentState.id] = current.copyWith( + parentId: contentState.parentId, contextId: contentState.contextId, url: Uri.parse(contentState.url), title: (contentState.title.isNotEmpty) diff --git a/app/lib/features/geckoview/domain/repositories/tab.dart b/app/lib/features/geckoview/domain/repositories/tab.dart index 4d6104ca..4a2732b8 100644 --- a/app/lib/features/geckoview/domain/repositories/tab.dart +++ b/app/lib/features/geckoview/domain/repositories/tab.dart @@ -53,23 +53,27 @@ class TabRepository extends _$TabRepository { .read(selectedContainerProvider.notifier) .fetchData(); - return ref.read(tabDatabaseProvider).tabDao.upsertContainerTabTransactional( - () { - return _tabsService.addTab( - url: url, - selectTab: selectTab, - startLoading: startLoading, - parentId: parentId, - flags: flags, - contextId: selectedContainer?.metadata.contextualIdentity, - source: source, - private: private, - historyMetadata: historyMetadata, - additionalHeaders: additionalHeaders, + return ref + .read(tabDatabaseProvider) + .tabDao + .upsertContainerTabTransactional( + () { + return _tabsService.addTab( + url: url, + selectTab: selectTab, + startLoading: startLoading, + parentId: parentId, + flags: flags, + contextId: selectedContainer?.metadata.contextualIdentity, + source: source, + private: private, + historyMetadata: historyMetadata, + additionalHeaders: additionalHeaders, + ); + }, + parentId: Value(parentId), + containerId: Value(selectedContainer?.id), ); - }, - containerId: Value(selectedContainer?.id), - ); } Future duplicateTab({ @@ -83,16 +87,20 @@ class TabRepository extends _$TabRepository { .getContainerData(containerId), ); - return ref.read(tabDatabaseProvider).tabDao.upsertContainerTabTransactional( - () { - return _tabsService.duplicateTab( - selectTabId: selectTabId, - newContextId: containerData?.metadata.contextualIdentity, - selectNewTab: selectTab, + return ref + .read(tabDatabaseProvider) + .tabDao + .upsertContainerTabTransactional( + () { + return _tabsService.duplicateTab( + selectTabId: selectTabId, + newContextId: containerData?.metadata.contextualIdentity, + selectNewTab: selectTab, + ); + }, + parentId: const Value.absent(), + containerId: Value(containerData?.id), ); - }, - containerId: Value(containerData?.id), - ); } Future selectPreviousTab() async { @@ -227,6 +235,7 @@ class TabRepository extends _$TabRepository { final containerId = ref.read(selectedContainerProvider); await db.tabDao.upsertUnassignedTab( tabId, + parentId: const Value.absent(), containerId: Value(containerId), ); }); diff --git a/app/lib/features/geckoview/domain/repositories/tab.g.dart b/app/lib/features/geckoview/domain/repositories/tab.g.dart index 6cbcd7de..d94565e1 100644 --- a/app/lib/features/geckoview/domain/repositories/tab.g.dart +++ b/app/lib/features/geckoview/domain/repositories/tab.g.dart @@ -6,7 +6,7 @@ part of 'tab.dart'; // RiverpodGenerator // ************************************************************************** -String _$tabRepositoryHash() => r'9b7ef03bec41f149b3cb456b73d7ee0e1b2804df'; +String _$tabRepositoryHash() => r'db220096fef5d125a698063e9a88272db92e75c5'; /// See also [TabRepository]. @ProviderFor(TabRepository) diff --git a/app/lib/features/geckoview/features/browser/domain/providers.dart b/app/lib/features/geckoview/features/browser/domain/providers.dart index 7866c14f..a7297c90 100644 --- a/app/lib/features/geckoview/features/browser/domain/providers.dart +++ b/app/lib/features/geckoview/features/browser/domain/providers.dart @@ -8,6 +8,7 @@ import 'package:weblibre/features/geckoview/domain/providers/tab_list.dart'; import 'package:weblibre/features/geckoview/domain/providers/tab_state.dart'; import 'package:weblibre/features/geckoview/features/search/domain/entities/tab_preview.dart'; import 'package:weblibre/features/geckoview/features/tabs/data/entities/container_filter.dart'; +import 'package:weblibre/features/geckoview/features/tabs/data/entities/tab_entity.dart'; import 'package:weblibre/features/geckoview/features/tabs/domain/providers.dart'; import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/tab_search.dart'; @@ -87,23 +88,62 @@ EquatableValue> availableTabStates( } @Riverpod() -EquatableValue> seamlessFilteredTabIds( - Ref ref, - TabSearchPartition searchPartition, - ContainerFilter containerFilter, -) { +EquatableValue> seamlessFilteredTabEntities( + Ref ref, { + required TabSearchPartition searchPartition, + required ContainerFilter containerFilter, + required bool groupTrees, +}) { final tabSearchResults = ref .watch( tabSearchRepositoryProvider(searchPartition).select( - (value) => - EquatableValue(value.valueOrNull?.map((tab) => tab.id).toList()), + (value) => EquatableValue( + value.valueOrNull + ?.map((tab) => SingleTabEntity(tabId: tab.id)) + .toList(), + ), ), ) .value; - final availableTabs = ref.watch(availableTabIdsProvider(containerFilter)); + final availableTabs = ref.watch( + availableTabIdsProvider(containerFilter).select( + (value) => EquatableValue( + value.value.map((tab) => SingleTabEntity(tabId: tab)).toList(), + ), + ), + ); if (tabSearchResults == null) { + if (groupTrees) { + final trees = ref.watch( + tabTreesProvider.select( + (value) => EquatableValue( + value.valueOrNull + ?.map( + (tree) => TabTreeEntity( + tabId: tree.latestTabId, + rootId: tree.rootTabId, + totalTabs: tree.totalTabs, + ), + ) + .toList() ?? + [], + ), + ), + ); + + return EquatableValue( + trees.value + .where( + (tree) => availableTabs.value.any( + (available) => available.tabId == tree.tabId, + ), + ) + .toList(), + ); + } + return availableTabs; } diff --git a/app/lib/features/geckoview/features/browser/domain/providers.g.dart b/app/lib/features/geckoview/features/browser/domain/providers.g.dart index f95c6b6e..29b1ae79 100644 --- a/app/lib/features/geckoview/features/browser/domain/providers.g.dart +++ b/app/lib/features/geckoview/features/browser/domain/providers.g.dart @@ -282,32 +282,41 @@ class _AvailableTabStatesProviderElement (origin as AvailableTabStatesProvider).containerFilter; } -String _$seamlessFilteredTabIdsHash() => - r'171e0b942735066e25894dc2c1d99c367bf0d01a'; +String _$seamlessFilteredTabEntitiesHash() => + r'0ef5c14f3fa018e3417e097759817bc871be3e0d'; -/// See also [seamlessFilteredTabIds]. -@ProviderFor(seamlessFilteredTabIds) -const seamlessFilteredTabIdsProvider = SeamlessFilteredTabIdsFamily(); +/// See also [seamlessFilteredTabEntities]. +@ProviderFor(seamlessFilteredTabEntities) +const seamlessFilteredTabEntitiesProvider = SeamlessFilteredTabEntitiesFamily(); -/// See also [seamlessFilteredTabIds]. -class SeamlessFilteredTabIdsFamily - extends Family>> { - /// See also [seamlessFilteredTabIds]. - const SeamlessFilteredTabIdsFamily(); +/// See also [seamlessFilteredTabEntities]. +class SeamlessFilteredTabEntitiesFamily + extends Family>> { + /// See also [seamlessFilteredTabEntities]. + const SeamlessFilteredTabEntitiesFamily(); - /// See also [seamlessFilteredTabIds]. - SeamlessFilteredTabIdsProvider call( - TabSearchPartition searchPartition, - ContainerFilter containerFilter, - ) { - return SeamlessFilteredTabIdsProvider(searchPartition, containerFilter); + /// See also [seamlessFilteredTabEntities]. + SeamlessFilteredTabEntitiesProvider call({ + required TabSearchPartition searchPartition, + required ContainerFilter containerFilter, + required bool groupTrees, + }) { + return SeamlessFilteredTabEntitiesProvider( + searchPartition: searchPartition, + containerFilter: containerFilter, + groupTrees: groupTrees, + ); } @override - SeamlessFilteredTabIdsProvider getProviderOverride( - covariant SeamlessFilteredTabIdsProvider provider, + SeamlessFilteredTabEntitiesProvider getProviderOverride( + covariant SeamlessFilteredTabEntitiesProvider provider, ) { - return call(provider.searchPartition, provider.containerFilter); + return call( + searchPartition: provider.searchPartition, + containerFilter: provider.containerFilter, + groupTrees: provider.groupTrees, + ); } static const Iterable? _dependencies = null; @@ -322,35 +331,38 @@ class SeamlessFilteredTabIdsFamily _allTransitiveDependencies; @override - String? get name => r'seamlessFilteredTabIdsProvider'; + String? get name => r'seamlessFilteredTabEntitiesProvider'; } -/// See also [seamlessFilteredTabIds]. -class SeamlessFilteredTabIdsProvider - extends AutoDisposeProvider>> { - /// See also [seamlessFilteredTabIds]. - SeamlessFilteredTabIdsProvider( - TabSearchPartition searchPartition, - ContainerFilter containerFilter, - ) : this._internal( - (ref) => seamlessFilteredTabIds( - ref as SeamlessFilteredTabIdsRef, - searchPartition, - containerFilter, - ), - from: seamlessFilteredTabIdsProvider, - name: r'seamlessFilteredTabIdsProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$seamlessFilteredTabIdsHash, - dependencies: SeamlessFilteredTabIdsFamily._dependencies, - allTransitiveDependencies: - SeamlessFilteredTabIdsFamily._allTransitiveDependencies, - searchPartition: searchPartition, - containerFilter: containerFilter, - ); +/// See also [seamlessFilteredTabEntities]. +class SeamlessFilteredTabEntitiesProvider + extends AutoDisposeProvider>> { + /// See also [seamlessFilteredTabEntities]. + SeamlessFilteredTabEntitiesProvider({ + required TabSearchPartition searchPartition, + required ContainerFilter containerFilter, + required bool groupTrees, + }) : this._internal( + (ref) => seamlessFilteredTabEntities( + ref as SeamlessFilteredTabEntitiesRef, + searchPartition: searchPartition, + containerFilter: containerFilter, + groupTrees: groupTrees, + ), + from: seamlessFilteredTabEntitiesProvider, + name: r'seamlessFilteredTabEntitiesProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$seamlessFilteredTabEntitiesHash, + dependencies: SeamlessFilteredTabEntitiesFamily._dependencies, + allTransitiveDependencies: + SeamlessFilteredTabEntitiesFamily._allTransitiveDependencies, + searchPartition: searchPartition, + containerFilter: containerFilter, + groupTrees: groupTrees, + ); - SeamlessFilteredTabIdsProvider._internal( + SeamlessFilteredTabEntitiesProvider._internal( super._createNotifier, { required super.name, required super.dependencies, @@ -359,20 +371,24 @@ class SeamlessFilteredTabIdsProvider required super.from, required this.searchPartition, required this.containerFilter, + required this.groupTrees, }) : super.internal(); final TabSearchPartition searchPartition; final ContainerFilter containerFilter; + final bool groupTrees; @override Override overrideWith( - EquatableValue> Function(SeamlessFilteredTabIdsRef provider) + EquatableValue> Function( + SeamlessFilteredTabEntitiesRef provider, + ) create, ) { return ProviderOverride( origin: this, - override: SeamlessFilteredTabIdsProvider._internal( - (ref) => create(ref as SeamlessFilteredTabIdsRef), + override: SeamlessFilteredTabEntitiesProvider._internal( + (ref) => create(ref as SeamlessFilteredTabEntitiesRef), from: from, name: null, dependencies: null, @@ -380,20 +396,22 @@ class SeamlessFilteredTabIdsProvider debugGetCreateSourceHash: null, searchPartition: searchPartition, containerFilter: containerFilter, + groupTrees: groupTrees, ), ); } @override - AutoDisposeProviderElement>> createElement() { - return _SeamlessFilteredTabIdsProviderElement(this); + AutoDisposeProviderElement>> createElement() { + return _SeamlessFilteredTabEntitiesProviderElement(this); } @override bool operator ==(Object other) { - return other is SeamlessFilteredTabIdsProvider && + return other is SeamlessFilteredTabEntitiesProvider && other.searchPartition == searchPartition && - other.containerFilter == containerFilter; + other.containerFilter == containerFilter && + other.groupTrees == groupTrees; } @override @@ -401,6 +419,7 @@ class SeamlessFilteredTabIdsProvider var hash = _SystemHash.combine(0, runtimeType.hashCode); hash = _SystemHash.combine(hash, searchPartition.hashCode); hash = _SystemHash.combine(hash, containerFilter.hashCode); + hash = _SystemHash.combine(hash, groupTrees.hashCode); return _SystemHash.finish(hash); } @@ -408,26 +427,32 @@ class SeamlessFilteredTabIdsProvider @Deprecated('Will be removed in 3.0. Use Ref instead') // ignore: unused_element -mixin SeamlessFilteredTabIdsRef - on AutoDisposeProviderRef>> { +mixin SeamlessFilteredTabEntitiesRef + on AutoDisposeProviderRef>> { /// The parameter `searchPartition` of this provider. TabSearchPartition get searchPartition; /// The parameter `containerFilter` of this provider. ContainerFilter get containerFilter; + + /// The parameter `groupTrees` of this provider. + bool get groupTrees; } -class _SeamlessFilteredTabIdsProviderElement - extends AutoDisposeProviderElement>> - with SeamlessFilteredTabIdsRef { - _SeamlessFilteredTabIdsProviderElement(super.provider); +class _SeamlessFilteredTabEntitiesProviderElement + extends AutoDisposeProviderElement>> + with SeamlessFilteredTabEntitiesRef { + _SeamlessFilteredTabEntitiesProviderElement(super.provider); @override TabSearchPartition get searchPartition => - (origin as SeamlessFilteredTabIdsProvider).searchPartition; + (origin as SeamlessFilteredTabEntitiesProvider).searchPartition; @override ContainerFilter get containerFilter => - (origin as SeamlessFilteredTabIdsProvider).containerFilter; + (origin as SeamlessFilteredTabEntitiesProvider).containerFilter; + @override + bool get groupTrees => + (origin as SeamlessFilteredTabEntitiesProvider).groupTrees; } String _$seamlessFilteredTabPreviewsHash() => diff --git a/app/lib/features/geckoview/features/browser/presentation/controllers/tree_view.dart b/app/lib/features/geckoview/features/browser/presentation/controllers/tree_view.dart new file mode 100644 index 00000000..cc1ed6ea --- /dev/null +++ b/app/lib/features/geckoview/features/browser/presentation/controllers/tree_view.dart @@ -0,0 +1,15 @@ +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +part 'tree_view.g.dart'; + +@Riverpod(keepAlive: true) +class TreeViewController extends _$TreeViewController { + void toggle() { + state = !state; + } + + @override + bool build() { + return false; + } +} diff --git a/app/lib/features/geckoview/features/browser/presentation/controllers/tree_view.g.dart b/app/lib/features/geckoview/features/browser/presentation/controllers/tree_view.g.dart new file mode 100644 index 00000000..b5de5332 --- /dev/null +++ b/app/lib/features/geckoview/features/browser/presentation/controllers/tree_view.g.dart @@ -0,0 +1,27 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'tree_view.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$treeViewControllerHash() => + r'53da9cc3cc89eab2fee4a3aaf4feccc5ecbfeb20'; + +/// See also [TreeViewController]. +@ProviderFor(TreeViewController) +final treeViewControllerProvider = + NotifierProvider.internal( + TreeViewController.new, + name: r'treeViewControllerProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$treeViewControllerHash, + dependencies: null, + allTransitiveDependencies: null, + ); + +typedef _$TreeViewController = Notifier; +// ignore_for_file: type=lint +// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/app/lib/features/geckoview/features/browser/presentation/dialogs/tab_tree.dart b/app/lib/features/geckoview/features/browser/presentation/dialogs/tab_tree.dart new file mode 100644 index 00000000..ba5d70f1 --- /dev/null +++ b/app/lib/features/geckoview/features/browser/presentation/dialogs/tab_tree.dart @@ -0,0 +1,129 @@ +import 'package:fast_equatable/fast_equatable.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:flutter_material_design_icons/flutter_material_design_icons.dart'; +import 'package:go_router/go_router.dart'; +import 'package:graphview/GraphView.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:skeletonizer/skeletonizer.dart'; +import 'package:vector_math/vector_math_64.dart' show Vector3; +import 'package:weblibre/features/geckoview/domain/controllers/bottom_sheet.dart'; +import 'package:weblibre/features/geckoview/domain/providers/selected_tab.dart'; +import 'package:weblibre/features/geckoview/features/browser/presentation/widgets/tab_preview.dart'; +import 'package:weblibre/features/geckoview/features/tabs/domain/providers.dart'; + +class TabTreeDialog extends HookConsumerWidget { + final String tabId; + final Size childSize; + + const TabTreeDialog( + this.tabId, { + super.key, + this.childSize = const Size(200, 300), + }); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final transforamtionController = useTransformationController(); + + final builder = useMemoized(() { + final config = BuchheimWalkerConfiguration() + ..siblingSeparation = 100 + ..levelSeparation = 150 + ..subtreeSeparation = 150 + ..orientation = BuchheimWalkerConfiguration.ORIENTATION_TOP_BOTTOM; + + return BuchheimWalkerAlgorithm(config, TreeEdgeRenderer(config)); + }); + + final selectedTabId = ref.watch(selectedTabProvider); + final tabs = ref.watch(tabDescendantsProvider(tabId)); + + final graph = useMemoized(() { + final graph = Graph(); + graph.isTree = true; + + if (tabs.hasValue) { + for (final MapEntry(:key, :value) in tabs.valueOrNull!.entries) { + if (value != null) { + final current = Node.Id(key); + final parent = Node.Id(value); + + graph.addEdge(parent, current); + } + } + } + + return graph; + }, [EquatableValue(tabs.valueOrNull)]); + + return Dialog.fullscreen( + child: Scaffold( + appBar: AppBar( + backgroundColor: const Color(0x44000000), + elevation: 0, + leading: IconButton( + onPressed: () { + context.pop(); + }, + icon: const Icon(Icons.close), + ), + ), + floatingActionButton: FloatingActionButton( + child: const Icon(MdiIcons.target), + onPressed: () { + final node = graph.getNodeUsingId(selectedTabId); + final scale = transforamtionController.value.getMaxScaleOnAxis(); + final newPosition = + (node.position - + Offset(childSize.width / 2, childSize.height / 2)) * + scale; + + transforamtionController.value = + transforamtionController.value.clone()..setTranslation( + Vector3(-newPosition.dx, -newPosition.dy, 0), + ); + }, + ), + extendBodyBehindAppBar: true, + body: InteractiveViewer( + transformationController: transforamtionController, + constrained: false, + boundaryMargin: const EdgeInsets.all(250), + minScale: 0.1, + maxScale: 5.0, + child: Skeletonizer( + enabled: !tabs.hasValue || tabs.valueOrNull?.isEmpty == true, + child: Skeleton.replace( + replacement: const Bone.square(), + child: GraphView( + graph: graph, + algorithm: builder, + paint: Paint() + ..color = Theme.of(context).colorScheme.outline + ..strokeWidth = 1 + ..style = PaintingStyle.stroke, + builder: (Node node) { + final id = node.key!.value as String; + return SizedBox.fromSize( + size: childSize, + child: SingleTabPreview( + tabId: id, + activeTabId: selectedTabId, + onClose: () { + context.pop(); + ref + .read(bottomSheetControllerProvider.notifier) + .dismiss(); + }, + ), + ); + }, + ), + ), + ), + ), + ), + ); + } +} diff --git a/app/lib/features/geckoview/features/browser/presentation/screens/browser.dart b/app/lib/features/geckoview/features/browser/presentation/screens/browser.dart index 90276923..3c1dce89 100644 --- a/app/lib/features/geckoview/features/browser/presentation/screens/browser.dart +++ b/app/lib/features/geckoview/features/browser/presentation/screens/browser.dart @@ -17,6 +17,7 @@ import 'package:weblibre/features/geckoview/domain/providers/tab_session.dart'; import 'package:weblibre/features/geckoview/domain/providers/tab_state.dart'; import 'package:weblibre/features/geckoview/domain/repositories/tab.dart'; import 'package:weblibre/features/geckoview/features/browser/domain/entities/sheet.dart'; +import 'package:weblibre/features/geckoview/features/browser/presentation/controllers/tree_view.dart'; import 'package:weblibre/features/geckoview/features/browser/presentation/widgets/browser_modules/bottom_app_bar.dart'; import 'package:weblibre/features/geckoview/features/browser/presentation/widgets/browser_modules/browser_view.dart'; import 'package:weblibre/features/geckoview/features/browser/presentation/widgets/draggable_scrollable_header.dart'; @@ -385,6 +386,8 @@ class _ViewTabsSheet extends HookConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { final draggableScrollableController = useDraggableScrollableController(); + final treeModeEnabled = ref.watch(treeViewControllerProvider); + return DraggableScrollableSheet( controller: draggableScrollableController, expand: false, @@ -396,13 +399,20 @@ class _ViewTabsSheet extends HookConsumerWidget { topLeft: Radius.circular(28), topRight: Radius.circular(28), ), - child: ViewTabsSheetWidget( - sheetScrollController: scrollController, - draggableScrollableController: draggableScrollableController, - onClose: () { - ref.read(bottomSheetControllerProvider.notifier).dismiss(); - }, - ), + child: treeModeEnabled + ? ViewTabTreesSheetWidget( + sheetScrollController: scrollController, + onClose: () { + ref.read(bottomSheetControllerProvider.notifier).dismiss(); + }, + ) + : ViewTabsSheetWidget( + sheetScrollController: scrollController, + draggableScrollableController: draggableScrollableController, + onClose: () { + ref.read(bottomSheetControllerProvider.notifier).dismiss(); + }, + ), ); }, ); diff --git a/app/lib/features/geckoview/features/browser/presentation/widgets/sheets/view_tabs.dart b/app/lib/features/geckoview/features/browser/presentation/widgets/sheets/view_tabs.dart index 9adf630f..f7a92ec6 100644 --- a/app/lib/features/geckoview/features/browser/presentation/widgets/sheets/view_tabs.dart +++ b/app/lib/features/geckoview/features/browser/presentation/widgets/sheets/view_tabs.dart @@ -13,9 +13,11 @@ import 'package:weblibre/data/models/drag_data.dart'; import 'package:weblibre/features/geckoview/domain/providers/selected_tab.dart'; import 'package:weblibre/features/geckoview/domain/providers/tab_state.dart'; import 'package:weblibre/features/geckoview/features/browser/domain/providers.dart'; +import 'package:weblibre/features/geckoview/features/browser/presentation/controllers/tree_view.dart'; import 'package:weblibre/features/geckoview/features/browser/presentation/widgets/draggable_scrollable_header.dart'; import 'package:weblibre/features/geckoview/features/browser/presentation/widgets/tab_preview.dart'; import 'package:weblibre/features/geckoview/features/tabs/data/entities/container_filter.dart'; +import 'package:weblibre/features/geckoview/features/tabs/data/entities/tab_entity.dart'; import 'package:weblibre/features/geckoview/features/tabs/domain/providers/selected_container.dart'; import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/container.dart'; import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/tab.dart'; @@ -28,9 +30,10 @@ import 'package:weblibre/presentation/widgets/speech_to_text_button.dart'; class _TabSheetHeader extends HookConsumerWidget { static const headerSize = 124.0; + final bool treeViewEnabled; final VoidCallback onClose; - const _TabSheetHeader({required this.onClose}); + const _TabSheetHeader({required this.onClose, required this.treeViewEnabled}); @override Widget build(BuildContext context, WidgetRef ref) { @@ -63,13 +66,31 @@ class _TabSheetHeader extends HookConsumerWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - TextButton.icon( - icon: const Icon(MdiIcons.tabSearch), - label: const Text('Search'), - onPressed: () { - searchMode.value = true; - searchTextFocus.requestFocus(); - }, + Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: const Icon(MdiIcons.tabSearch), + iconSize: 18, + padding: EdgeInsets.zero, + onPressed: () { + searchMode.value = true; + searchTextFocus.requestFocus(); + }, + ), + IconButton( + icon: const Icon(MdiIcons.graph), + selectedIcon: const Icon(MdiIcons.table), + isSelected: treeViewEnabled, + iconSize: 18, + padding: EdgeInsets.zero, + onPressed: () { + ref + .read(treeViewControllerProvider.notifier) + .toggle(); + }, + ), + ], ), TextButton.icon( onPressed: () async { @@ -116,39 +137,40 @@ class _TabSheetHeader extends HookConsumerWidget { ), ), ), - Padding( - padding: const EdgeInsets.only(left: 8.0, top: 12), - child: Consumer( - builder: (context, ref, child) { - final selectedContainer = ref.watch( - selectedContainerDataProvider.select( - (value) => value.valueOrNull, - ), - ); + if (!treeViewEnabled) + Padding( + padding: const EdgeInsets.only(left: 8.0, top: 12), + child: Consumer( + builder: (context, ref, child) { + final selectedContainer = ref.watch( + selectedContainerDataProvider.select( + (value) => value.valueOrNull, + ), + ); - return ContainerChips( - selectedContainer: selectedContainer, - onSelected: (container) async { - final result = await ref - .read(selectedContainerProvider.notifier) - .setContainerId(container.id); + return ContainerChips( + selectedContainer: selectedContainer, + onSelected: (container) async { + final result = await ref + .read(selectedContainerProvider.notifier) + .setContainerId(container.id); - if (context.mounted && - result == SetContainerResult.successHasProxy) { - await ref - .read(startProxyControllerProvider.notifier) - .maybeStartProxy(context); - } - }, - onDeleted: (container) { - ref - .read(selectedContainerProvider.notifier) - .clearContainer(); - }, - ); - }, + if (context.mounted && + result == SetContainerResult.successHasProxy) { + await ref + .read(startProxyControllerProvider.notifier) + .maybeStartProxy(context); + } + }, + onDeleted: (container) { + ref + .read(selectedContainerProvider.notifier) + .clearContainer(); + }, + ); + }, + ), ), - ), const SizedBox(height: 8), ], ), @@ -212,7 +234,7 @@ class ViewTabsSheetWidget extends HookConsumerWidget { children: [ DraggableScrollableHeader( controller: draggableScrollableController, - child: _TabSheetHeader(onClose: onClose), + child: _TabSheetHeader(onClose: onClose, treeViewEnabled: false), ), Expanded( child: HookConsumer( @@ -220,11 +242,14 @@ class ViewTabsSheetWidget extends HookConsumerWidget { final container = ref.watch(selectedContainerProvider); final filteredTabIds = ref.watch( - seamlessFilteredTabIdsProvider( - TabSearchPartition.preview, + seamlessFilteredTabEntitiesProvider( + searchPartition: TabSearchPartition.preview, // ignore: document_ignores using fast equatable // ignore: provider_parameters - ContainerFilterById(containerId: container), + containerFilter: ContainerFilterById( + containerId: container, + ), + groupTrees: false, ), ); @@ -263,7 +288,7 @@ class ViewTabsSheetWidget extends HookConsumerWidget { useEffect(() { final index = filteredTabIds.value.indexWhere( - (webView) => webView == activeTab, + (entity) => entity.tabId == activeTab, ); if (index > -1) { @@ -285,53 +310,58 @@ class ViewTabsSheetWidget extends HookConsumerWidget { final tabs = useMemoized(() { return filteredTabIds.value - .mapIndexed( - (index, tabId) => CustomDraggable( - key: Key(tabId), - data: TabDragData(tabId), - child: Consumer( - child: TabPreviewDraggable( - tabId: tabId, - activeTabId: activeTab, - onClose: onClose, - ), - builder: (context, ref, child) { - final dragData = ref.watch( - willAcceptDropProvider.select((value) { - final dragTabId = switch (value) { - ContainerDropData() => value.tabId, - DeleteDropData() => value.tabId, - null => null, - }; - - return (dragTabId == tabId) ? value : null; - }), - ); - - return switch (dragData) { - ContainerDropData() => Opacity( - opacity: 0.3, - child: Transform.scale( - scale: 0.9, - child: child, - ), - ), - DeleteDropData() => Opacity( - opacity: 0.3, - child: ColorFiltered( - colorFilter: const ColorFilter.mode( - Colors.red, - BlendMode.modulate, - ), - child: child, - ), - ), - null => child!, - }; - }, + .whereType() + .mapIndexed((index, entity) { + final child = Consumer( + child: SingleTabPreview( + tabId: entity.tabId, + activeTabId: activeTab, + onClose: onClose, ), - ), - ) + builder: (context, ref, child) { + final dragData = ref.watch( + willAcceptDropProvider.select((value) { + final dragTabId = switch (value) { + ContainerDropData() => value.tabId, + DeleteDropData() => value.tabId, + null => null, + }; + + return (dragTabId == entity.tabId) + ? value + : null; + }), + ); + + return switch (dragData) { + ContainerDropData() => Opacity( + opacity: 0.3, + child: Transform.scale( + scale: 0.9, + child: child, + ), + ), + DeleteDropData() => Opacity( + opacity: 0.3, + child: ColorFiltered( + colorFilter: const ColorFilter.mode( + Colors.red, + BlendMode.modulate, + ), + child: child, + ), + ), + null => child!, + }; + }, + ); + + return CustomDraggable( + key: Key(entity.tabId), + data: TabDragData(entity.tabId), + child: child, + ); + }) .toList(); }, [filteredTabIds, activeTab]); @@ -341,7 +371,6 @@ class ViewTabsSheetWidget extends HookConsumerWidget { //Rebuild when cross axis count changes key: ValueKey(crossAxisCount), scrollController: sheetScrollController, - children: tabs, onDragStarted: (index) { ref.read(willAcceptDropProvider.notifier).clear(); }, @@ -358,7 +387,7 @@ class ViewTabsSheetWidget extends HookConsumerWidget { containerRepositoryProvider.notifier, ); - final tabId = filteredTabIds.value[oldIndex]; + final tabId = filteredTabIds.value[oldIndex].tabId; final containerId = await ref .read(tabDataRepositoryProvider.notifier) .containerTabId(tabId); @@ -376,7 +405,7 @@ class ViewTabsSheetWidget extends HookConsumerWidget { } else { final orderAfterIndex = newIndex; key = await containerRepository.getOrderKeyAfterTab( - filteredTabIds.value[orderAfterIndex], + filteredTabIds.value[orderAfterIndex].tabId, containerId, ); } @@ -399,6 +428,182 @@ class ViewTabsSheetWidget extends HookConsumerWidget { itemBuilder: (context, index) => children[index], ); }, + children: tabs, + ), + ); + }, + ), + ), + ], + ), + Padding( + padding: const EdgeInsets.only( + top: _TabSheetHeader.headerSize + 4, + right: 4, + ), + child: FloatingActionButton.small( + onPressed: () async { + final isCurrentPrivate = + ref.read(selectedTabStateProvider)?.isPrivate ?? false; + await SearchRoute( + tabType: isCurrentPrivate ? TabType.private : TabType.regular, + ).push(context); + + onClose(); + }, + child: const Icon(Icons.add), + ), + ), + ], + ); + } +} + +class ViewTabTreesSheetWidget extends HookConsumerWidget { + final ScrollController sheetScrollController; + final VoidCallback onClose; + + const ViewTabTreesSheetWidget({ + required this.onClose, + required this.sheetScrollController, + super.key, + }); + + int _calculateCrossAxisItemCount({ + required double screenWidth, + required double horizontalPadding, + required double crossAxisSpacing, + }) { + final totalHorizontalPadding = horizontalPadding * 2; + final availableWidth = + screenWidth - totalHorizontalPadding - crossAxisSpacing; + + final crossAxisCount = availableWidth ~/ 180.0; + + return crossAxisCount; + } + + Size _calculateItemSize({ + required double screenWidth, + required double childAspectRatio, + required double horizontalPadding, + required double crossAxisSpacing, + required int crossAxisCount, + }) { + final totalHorizontalPadding = horizontalPadding * 2; + final totalCrossAxisSpacing = crossAxisSpacing * (crossAxisCount - 1); + final availableWidth = + screenWidth - totalHorizontalPadding - totalCrossAxisSpacing; + final itemWidth = availableWidth / crossAxisCount; + final itemHeight = itemWidth / childAspectRatio; + + return Size(itemWidth, itemHeight); + } + + @override + Widget build(BuildContext context, WidgetRef ref) { + return Stack( + alignment: Alignment.bottomRight, + children: [ + Column( + children: [ + _TabSheetHeader(onClose: onClose, treeViewEnabled: true), + Expanded( + child: HookConsumer( + builder: (context, ref, child) { + final filteredTabIds = ref.watch( + seamlessFilteredTabEntitiesProvider( + searchPartition: TabSearchPartition.preview, + // ignore: document_ignores using fast equatable + // ignore: provider_parameters + containerFilter: ContainerFilterDisabled(), + groupTrees: true, + ), + ); + + final activeTab = ref.watch(selectedTabProvider); + + final crossAxisCount = useMemoized( + () { + final calculatedCount = _calculateCrossAxisItemCount( + screenWidth: MediaQuery.of(context).size.width, + horizontalPadding: 4.0, + crossAxisSpacing: 8.0, + ); + + return math.max( + math.min(calculatedCount, filteredTabIds.value.length), + 2, + ); + }, + [ + MediaQuery.of(context).size.width, + filteredTabIds.value.length, + ], + ); + + final itemSize = useMemoized( + () => + _calculateItemSize( + screenWidth: MediaQuery.of(context).size.width, + childAspectRatio: 0.75, + horizontalPadding: 4.0, + crossAxisSpacing: 8.0, + crossAxisCount: crossAxisCount, + ) + + //mainAxisSpacing + const Offset(0, 8.0), + [MediaQuery.of(context).size.width, crossAxisCount], + ); + + useEffect(() { + final index = filteredTabIds.value.indexWhere( + (entity) => entity.tabId == activeTab, + ); + + if (index > -1) { + final offset = (index ~/ 2) * itemSize.height; + + if (offset != sheetScrollController.offset) { + unawaited( + sheetScrollController.animateTo( + offset, + duration: const Duration(milliseconds: 200), + curve: Curves.easeInOut, + ), + ); + } + } + + return null; + }, [filteredTabIds, activeTab]); + + final tabs = useMemoized(() { + return filteredTabIds.value.whereType().map(( + entity, + ) { + return TabTreePreview( + entity: entity, + activeTabId: activeTab, + onClose: onClose, + stackPadding: const Offset(8, 8), + ); + }).toList(); + }, [filteredTabIds, activeTab]); + + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 4.0), + child: GridView.builder( + controller: sheetScrollController, + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + //Sync values for itemHeight calculation _calculateItemHeight + childAspectRatio: 0.75, + mainAxisSpacing: 8.0, + crossAxisSpacing: 8.0, + crossAxisCount: crossAxisCount, + ), + itemCount: tabs.length, + itemBuilder: (context, index) => tabs[index], ), ); }, diff --git a/app/lib/features/geckoview/features/browser/presentation/widgets/tab_preview.dart b/app/lib/features/geckoview/features/browser/presentation/widgets/tab_preview.dart index a8d062b7..f05e91f2 100644 --- a/app/lib/features/geckoview/features/browser/presentation/widgets/tab_preview.dart +++ b/app/lib/features/geckoview/features/browser/presentation/widgets/tab_preview.dart @@ -1,39 +1,30 @@ +import 'dart:math' as math; + import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_material_design_icons/flutter_material_design_icons.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:nullability/nullability.dart'; +import 'package:weblibre/core/routing/routes.dart'; import 'package:weblibre/features/geckoview/domain/entities/states/tab.dart'; import 'package:weblibre/features/geckoview/domain/providers/tab_state.dart'; import 'package:weblibre/features/geckoview/domain/repositories/tab.dart'; import 'package:weblibre/features/geckoview/features/browser/presentation/widgets/tab_icon.dart'; +import 'package:weblibre/features/geckoview/features/tabs/data/entities/tab_entity.dart'; import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/tab.dart'; import 'package:weblibre/presentation/hooks/menu_controller.dart'; -class TabPreview extends HookWidget { - final TabState tab; +class _TabBox extends StatelessWidget { final bool isActive; + final bool isPrivate; + final Widget? child; - final VoidCallback? onTap; - final VoidCallback? onDoubleTap; - final VoidCallback? onDelete; - final void Function(String host)? onDeleteAll; + const _TabBox({required this.isActive, required this.isPrivate, this.child}); - const TabPreview({ - required this.tab, - required this.isActive, - this.onTap, - this.onDoubleTap, - this.onDelete, - this.onDeleteAll, - super.key, - }); @override Widget build(BuildContext context) { final colorScheme = Theme.of(context).colorScheme; - final extendedDeleteMenuController = useMenuController(); - return Container( decoration: BoxDecoration( border: Border.all( @@ -43,31 +34,66 @@ class TabPreview extends HookWidget { borderRadius: const BorderRadius.all(Radius.circular(16.0)), ), child: Material( - color: tab.isPrivate + color: isPrivate ? const Color(0xFF25003E) : colorScheme.surfaceContainerHighest, borderRadius: const BorderRadius.all(Radius.circular(14.0)), - child: InkWell( - borderRadius: const BorderRadius.all(Radius.circular(14.0)), - onTap: onTap, - onDoubleTap: onDoubleTap, - child: Column( - children: [ - Row( - children: [ - Expanded( - child: Padding( - padding: const EdgeInsets.only(left: 6.0, top: 2.0), - child: Text( - overflow: TextOverflow.ellipsis, - tab.title, - maxLines: 2, - style: tab.isPrivate - ? const TextStyle(color: Colors.white) - : null, - ), + child: child, + ), + ); + } +} + +class TabPreview extends HookWidget { + final TabState tab; + final bool isActive; + + final VoidCallback? onTap; + final VoidCallback? onDoubleTap; + final VoidCallback? onLongPress; + final VoidCallback? onDelete; + final void Function(String host)? onDeleteAll; + + const TabPreview({ + required this.tab, + required this.isActive, + this.onTap, + this.onDoubleTap, + this.onLongPress, + this.onDelete, + this.onDeleteAll, + super.key, + }); + @override + Widget build(BuildContext context) { + final extendedDeleteMenuController = useMenuController(); + + return _TabBox( + isActive: isActive, + isPrivate: tab.isPrivate, + child: InkWell( + borderRadius: const BorderRadius.all(Radius.circular(14.0)), + onTap: onTap, + onDoubleTap: onDoubleTap, + onLongPress: onLongPress, + child: Column( + children: [ + Row( + children: [ + Expanded( + child: Padding( + padding: const EdgeInsets.only(left: 6.0, top: 2.0), + child: Text( + overflow: TextOverflow.ellipsis, + tab.title, + maxLines: 2, + style: tab.isPrivate + ? const TextStyle(color: Colors.white) + : null, ), ), + ), + if (onDelete != null || onDeleteAll != null) MenuAnchor( controller: extendedDeleteMenuController, builder: (context, controller, child) { @@ -100,77 +126,76 @@ class TabPreview extends HookWidget { icon: const Icon(Icons.close), ), ), - ], - ), - Row( - children: [ - const SizedBox(width: 6.0), - TabIcon(state: tab), - const SizedBox(width: 6.0), - Expanded( - child: Text( - tab.url.authority, - style: Theme.of(context).textTheme.bodySmall?.copyWith( - color: tab.isPrivate ? Colors.white : null, - ), + ], + ), + Row( + children: [ + const SizedBox(width: 6.0), + TabIcon(state: tab), + const SizedBox(width: 6.0), + Expanded( + child: Text( + tab.url.authority, + style: Theme.of(context).textTheme.bodySmall?.copyWith( + color: tab.isPrivate ? Colors.white : null, ), ), - if (tab.isPrivate) ...[ - const SizedBox(width: 6.0), - const SizedBox( - height: 16, - width: 24, - child: Stack( - fit: StackFit.expand, - children: [ - Positioned( - top: -4, - child: Icon( - MdiIcons.dominoMask, - color: Color(0xFF8000D7), - ), + ), + if (tab.isPrivate) ...[ + const SizedBox(width: 6.0), + const SizedBox( + height: 16, + width: 24, + child: Stack( + fit: StackFit.expand, + children: [ + Positioned( + top: -4, + child: Icon( + MdiIcons.dominoMask, + color: Color(0xFF8000D7), ), - ], - ), - ), - ], - const SizedBox(width: 8.0), - ], - ), - const SizedBox(height: 6), - if (tab.thumbnail != null) - Expanded( - child: ClipRRect( - borderRadius: const BorderRadius.only( - bottomLeft: Radius.circular(14.0), - bottomRight: Radius.circular(14.0), - ), - child: SizedBox( - width: double.infinity, - child: RepaintBoundary( - child: RawImage( - image: tab.thumbnail!.value, - fit: BoxFit.fitWidth, ), + ], + ), + ), + ], + const SizedBox(width: 8.0), + ], + ), + const SizedBox(height: 6), + if (tab.thumbnail != null) + Expanded( + child: ClipRRect( + borderRadius: const BorderRadius.only( + bottomLeft: Radius.circular(14.0), + bottomRight: Radius.circular(14.0), + ), + child: SizedBox( + width: double.infinity, + child: RepaintBoundary( + child: RawImage( + image: tab.thumbnail!.value, + fit: BoxFit.fitWidth, ), ), ), ), - ], - ), + ), + ], ), ), ); } } -class TabPreviewDraggable extends HookConsumerWidget { +class SingleTabPreview extends HookConsumerWidget { final String tabId; final String? activeTabId; final void Function() onClose; - TabPreviewDraggable({ + SingleTabPreview({ required this.tabId, required this.activeTabId, required this.onClose, @@ -220,3 +245,110 @@ class TabPreviewDraggable extends HookConsumerWidget { ); } } + +class TabTreePreview extends HookConsumerWidget { + final TabTreeEntity entity; + final String? activeTabId; + + final Offset stackPadding; + + final void Function() onClose; + + TabTreePreview({ + required this.entity, + required this.activeTabId, + required this.onClose, + required this.stackPadding, + }) : super(key: ValueKey(entity)); + + Widget _addPadding(int stackCount, int totalCount, Widget child) { + final topPadding = stackPadding * stackCount.toDouble(); + final bottomPadding = stackPadding * (totalCount - stackCount).toDouble(); + + return Positioned( + top: topPadding.dy, + left: topPadding.dx, + right: bottomPadding.dx, + bottom: bottomPadding.dy, + child: child, + ); + } + + @override + Widget build(BuildContext context, WidgetRef ref) { + final tab = ref.watch(tabStateProvider(entity.tabId)); + + if (tab == null) { + return const SizedBox.shrink(); + } + + final stackCount = math.min(entity.totalTabs, 3) - 1; + + return Stack( + children: [ + for (var index = 0; index < stackCount; index++) + _addPadding( + index, + stackCount, + _TabBox( + isActive: entity.tabId == activeTabId, + isPrivate: tab.isPrivate, + ), + ), + _addPadding( + stackCount, + stackCount, + Badge.count( + isLabelVisible: entity.totalTabs > 1, + count: entity.totalTabs, + alignment: AlignmentDirectional.bottomEnd, + offset: const Offset(-8, -24), + backgroundColor: Theme.of(context).colorScheme.primaryContainer, + textColor: Theme.of(context).colorScheme.onPrimaryContainer, + child: TabPreview( + tab: tab, + isActive: entity.tabId == activeTabId, + onLongPress: () async { + if (entity.tabId != activeTabId) { + //Close first to avoid rebuilds + onClose(); + await ref + .read(tabRepositoryProvider.notifier) + .selectTab(tab.id); + } else { + onClose(); + } + }, + onTap: () async { + if (entity.totalTabs > 1) { + await TabTreeRoute(entity.rootId).push(context); + } + }, + // onDeleteAll: (host) async { + // final containerId = await ref + // .read(tabDataRepositoryProvider.notifier) + // .containerTabId(tab.id); + + // await ref + // .read(tabDataRepositoryProvider.notifier) + // .closeAllTabsByHost(containerId, host); + // }, + // onDoubleTap: () { + // ref.read(overlayDialogControllerProvider.notifier).show( + // TabActionDialog( + // initialTab: tab, + // onDismiss: + // ref.read(overlayDialogControllerProvider.notifier).dismiss, + // ), + // ); + // }, + // onDelete: () async { + // await ref.read(tabRepositoryProvider.notifier).closeTab(tab.id); + // }, + ), + ), + ), + ], + ); + } +} diff --git a/app/lib/features/geckoview/features/tabs/data/database/daos/tab.dart b/app/lib/features/geckoview/features/tabs/data/database/daos/tab.dart index 7f7850c5..1ff63de0 100644 --- a/app/lib/features/geckoview/features/tabs/data/database/daos/tab.dart +++ b/app/lib/features/geckoview/features/tabs/data/database/daos/tab.dart @@ -38,6 +38,7 @@ class TabDao extends DatabaseAccessor with _$TabDaoMixin { Future upsertContainerTabTransactional( Future Function() createTab, { + required Value parentId, Value containerId = const Value.absent(), Value orderKey = const Value.absent(), }) { @@ -53,12 +54,14 @@ class TabDao extends DatabaseAccessor with _$TabDaoMixin { await db.tab.insertOne( TabCompanion.insert( id: tabId, + parentId: parentId, timestamp: DateTime.now(), containerId: containerId, orderKey: currentOrderKey, ), onConflict: DoUpdate( (old) => TabCompanion( + parentId: parentId, containerId: containerId, orderKey: Value.absentIfNull(orderKey.value), ), @@ -72,6 +75,7 @@ class TabDao extends DatabaseAccessor with _$TabDaoMixin { //Upsert an tab only if there is no container assigned yet Future upsertUnassignedTab( String tabId, { + required Value parentId, Value containerId = const Value.absent(), Value orderKey = const Value.absent(), }) { @@ -85,12 +89,14 @@ class TabDao extends DatabaseAccessor with _$TabDaoMixin { await db.tab.insertOne( TabCompanion.insert( id: tabId, + parentId: parentId, timestamp: DateTime.now(), containerId: containerId, orderKey: currentOrderKey, ), onConflict: DoUpdate( (old) => TabCompanion( + parentId: parentId, containerId: containerId, orderKey: Value.absentIfNull(orderKey.value), ), @@ -152,6 +158,9 @@ class TabDao extends DatabaseAccessor with _$TabDaoMixin { batch.update( db.tab, TabCompanion( + parentId: (previousState?.parentId != state.parentId) + ? Value(state.parentId) + : const Value.absent(), url: (previousState?.url != state.url) ? Value(state.url) : const Value.absent(), diff --git a/app/lib/features/geckoview/features/tabs/data/database/database.drift b/app/lib/features/geckoview/features/tabs/data/database/database.drift index 04e53900..b7ebccd2 100644 --- a/app/lib/features/geckoview/features/tabs/data/database/database.drift +++ b/app/lib/features/geckoview/features/tabs/data/database/database.drift @@ -11,8 +11,9 @@ CREATE TABLE container ( metadata TEXT MAPPED BY `const ContainerMetadataConverter()` ) WITH ContainerData; -CREATE TABLE tab ( +CREATE TABLE tab( id TEXT PRIMARY KEY NOT NULL, + parent_id TEXT REFERENCES tab (id) ON DELETE SET NULL, container_id TEXT REFERENCES container (id) ON DELETE CASCADE, order_key TEXT NOT NULL, url TEXT MAPPED BY `const UriConverter()`, @@ -35,6 +36,14 @@ CREATE VIRTUAL TABLE tab_fts tokenize="trigram" ); +-- Create trigger to handle parent deletion +CREATE TRIGGER tab_maintain_parent_chain_on_delete BEFORE DELETE ON tab BEGIN + -- Update all children of the deleted row to point to its parent + UPDATE tab + SET parent_id = OLD.parent_id + WHERE parent_id = OLD.id; +END; + -- Triggers to keep the FTS index up to date. CREATE TRIGGER tab_after_insert AFTER INSERT ON tab BEGIN INSERT INTO @@ -159,4 +168,64 @@ queryTabsFullContent WITH TabQueryResult: CROSS JOIN weights ORDER BY weighted_rank ASC, - t.timestamp DESC; \ No newline at end of file + t.timestamp DESC; + +tabTrees: + WITH RECURSIVE descendants AS ( + -- Base case: all root tabs (no parent) + SELECT + id, + parent_id, + timestamp, + id AS root_id + FROM tab + WHERE parent_id IS NULL + + UNION ALL + + -- Recursive case: find all descendants + SELECT + t.id, + t.parent_id, + t.timestamp, + d.root_id + FROM tab t + JOIN descendants d ON t.parent_id = d.id +), +root_stats AS ( + -- Calculate stats for each root + SELECT + root_id, + MAX(timestamp) AS max_timestamp, + COUNT(*) AS total_children + FROM descendants + GROUP BY root_id +) +-- Get the actual tab records with latest timestamp per root +SELECT + d.root_id AS root_tab_id, + d.id AS latest_tab_id, + d.timestamp AS latest_timestamp, + rs.total_children AS total_tabs +FROM descendants d +JOIN root_stats rs +ON + d.root_id = rs.root_id AND + d.timestamp = rs.max_timestamp +ORDER BY d.timestamp DESC; + +unorderedTabDescendants: + WITH RECURSIVE descendants AS ( + SELECT id, parent_id + FROM tab + WHERE id = :tab_id + + UNION ALL + + -- Recursive case: find all descendants + SELECT t.id, t.parent_id + FROM tab t + JOIN descendants d ON t.parent_id = d.id + ) + SELECT id, parent_id + FROM descendants; \ No newline at end of file diff --git a/app/lib/features/geckoview/features/tabs/data/database/database.g.dart b/app/lib/features/geckoview/features/tabs/data/database/database.g.dart index 276b4957..2db24787 100644 --- a/app/lib/features/geckoview/features/tabs/data/database/database.g.dart +++ b/app/lib/features/geckoview/features/tabs/data/database/database.g.dart @@ -196,6 +196,14 @@ class Tab extends Table with TableInfo { requiredDuringInsert: true, $customConstraints: 'PRIMARY KEY NOT NULL', ); + late final GeneratedColumn parentId = GeneratedColumn( + 'parent_id', + aliasedName, + true, + type: DriftSqlType.string, + requiredDuringInsert: false, + $customConstraints: 'REFERENCES tab(id)ON DELETE SET NULL', + ); late final GeneratedColumn containerId = GeneratedColumn( 'container_id', aliasedName, @@ -283,6 +291,7 @@ class Tab extends Table with TableInfo { @override List get $columns => [ id, + parentId, containerId, orderKey, url, @@ -309,6 +318,10 @@ class Tab extends Table with TableInfo { DriftSqlType.string, data['${effectivePrefix}id'], )!, + parentId: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}parent_id'], + ), containerId: attachedDatabase.typeMapping.read( DriftSqlType.string, data['${effectivePrefix}container_id'], @@ -368,6 +381,7 @@ class Tab extends Table with TableInfo { class TabData extends DataClass implements Insertable { final String id; + final String? parentId; final String? containerId; final String orderKey; final Uri? url; @@ -380,6 +394,7 @@ class TabData extends DataClass implements Insertable { final DateTime timestamp; const TabData({ required this.id, + this.parentId, this.containerId, required this.orderKey, this.url, @@ -395,6 +410,9 @@ class TabData extends DataClass implements Insertable { Map toColumns(bool nullToAbsent) { final map = {}; map['id'] = Variable(id); + if (!nullToAbsent || parentId != null) { + map['parent_id'] = Variable(parentId); + } if (!nullToAbsent || containerId != null) { map['container_id'] = Variable(containerId); } @@ -433,6 +451,7 @@ class TabData extends DataClass implements Insertable { serializer ??= driftRuntimeOptions.defaultSerializer; return TabData( id: serializer.fromJson(json['id']), + parentId: serializer.fromJson(json['parent_id']), containerId: serializer.fromJson(json['container_id']), orderKey: serializer.fromJson(json['order_key']), url: serializer.fromJson(json['url']), @@ -460,6 +479,7 @@ class TabData extends DataClass implements Insertable { serializer ??= driftRuntimeOptions.defaultSerializer; return { 'id': serializer.toJson(id), + 'parent_id': serializer.toJson(parentId), 'container_id': serializer.toJson(containerId), 'order_key': serializer.toJson(orderKey), 'url': serializer.toJson(url), @@ -479,6 +499,7 @@ class TabData extends DataClass implements Insertable { TabData copyWith({ String? id, + Value parentId = const Value.absent(), Value containerId = const Value.absent(), String? orderKey, Value url = const Value.absent(), @@ -491,6 +512,7 @@ class TabData extends DataClass implements Insertable { DateTime? timestamp, }) => TabData( id: id ?? this.id, + parentId: parentId.present ? parentId.value : this.parentId, containerId: containerId.present ? containerId.value : this.containerId, orderKey: orderKey ?? this.orderKey, url: url.present ? url.value : this.url, @@ -515,6 +537,7 @@ class TabData extends DataClass implements Insertable { TabData copyWithCompanion(TabCompanion data) { return TabData( id: data.id.present ? data.id.value : this.id, + parentId: data.parentId.present ? data.parentId.value : this.parentId, containerId: data.containerId.present ? data.containerId.value : this.containerId, @@ -544,6 +567,7 @@ class TabData extends DataClass implements Insertable { String toString() { return (StringBuffer('TabData(') ..write('id: $id, ') + ..write('parentId: $parentId, ') ..write('containerId: $containerId, ') ..write('orderKey: $orderKey, ') ..write('url: $url, ') @@ -561,6 +585,7 @@ class TabData extends DataClass implements Insertable { @override int get hashCode => Object.hash( id, + parentId, containerId, orderKey, url, @@ -577,6 +602,7 @@ class TabData extends DataClass implements Insertable { identical(this, other) || (other is TabData && other.id == this.id && + other.parentId == this.parentId && other.containerId == this.containerId && other.orderKey == this.orderKey && other.url == this.url && @@ -591,6 +617,7 @@ class TabData extends DataClass implements Insertable { class TabCompanion extends UpdateCompanion { final Value id; + final Value parentId; final Value containerId; final Value orderKey; final Value url; @@ -604,6 +631,7 @@ class TabCompanion extends UpdateCompanion { final Value rowid; const TabCompanion({ this.id = const Value.absent(), + this.parentId = const Value.absent(), this.containerId = const Value.absent(), this.orderKey = const Value.absent(), this.url = const Value.absent(), @@ -618,6 +646,7 @@ class TabCompanion extends UpdateCompanion { }); TabCompanion.insert({ required String id, + this.parentId = const Value.absent(), this.containerId = const Value.absent(), required String orderKey, this.url = const Value.absent(), @@ -634,6 +663,7 @@ class TabCompanion extends UpdateCompanion { timestamp = Value(timestamp); static Insertable custom({ Expression? id, + Expression? parentId, Expression? containerId, Expression? orderKey, Expression? url, @@ -648,6 +678,7 @@ class TabCompanion extends UpdateCompanion { }) { return RawValuesInsertable({ if (id != null) 'id': id, + if (parentId != null) 'parent_id': parentId, if (containerId != null) 'container_id': containerId, if (orderKey != null) 'order_key': orderKey, if (url != null) 'url': url, @@ -668,6 +699,7 @@ class TabCompanion extends UpdateCompanion { TabCompanion copyWith({ Value? id, + Value? parentId, Value? containerId, Value? orderKey, Value? url, @@ -682,6 +714,7 @@ class TabCompanion extends UpdateCompanion { }) { return TabCompanion( id: id ?? this.id, + parentId: parentId ?? this.parentId, containerId: containerId ?? this.containerId, orderKey: orderKey ?? this.orderKey, url: url ?? this.url, @@ -704,6 +737,9 @@ class TabCompanion extends UpdateCompanion { if (id.present) { map['id'] = Variable(id.value); } + if (parentId.present) { + map['parent_id'] = Variable(parentId.value); + } if (containerId.present) { map['container_id'] = Variable(containerId.value); } @@ -752,6 +788,7 @@ class TabCompanion extends UpdateCompanion { String toString() { return (StringBuffer('TabCompanion(') ..write('id: $id, ') + ..write('parentId: $parentId, ') ..write('containerId: $containerId, ') ..write('orderKey: $orderKey, ') ..write('url: $url, ') @@ -1051,6 +1088,10 @@ abstract class _$TabDatabase extends GeneratedDatabase { late final Container container = Container(this); late final Tab tab = Tab(this); late final TabFts tabFts = TabFts(this); + late final Trigger tabMaintainParentChainOnDelete = Trigger( + 'CREATE TRIGGER tab_maintain_parent_chain_on_delete BEFORE DELETE ON tab BEGIN UPDATE tab SET parent_id = OLD.parent_id WHERE parent_id = OLD.id;END', + 'tab_maintain_parent_chain_on_delete', + ); late final Trigger tabAfterInsert = Trigger( 'CREATE TRIGGER tab_after_insert AFTER INSERT ON tab BEGIN INSERT INTO tab_fts ("rowid", title, url, extracted_content_plain, full_content_plain) VALUES (new."rowid", new.title, new.url, new.extracted_content_plain, new.full_content_plain);END', 'tab_after_insert', @@ -1177,6 +1218,36 @@ abstract class _$TabDatabase extends GeneratedDatabase { ); } + Selectable tabTrees() { + return customSelect( + 'WITH RECURSIVE descendants AS (SELECT id, parent_id, timestamp, id AS root_id FROM tab WHERE parent_id IS NULL UNION ALL SELECT t.id, t.parent_id, t.timestamp, d.root_id FROM tab AS t JOIN descendants AS d ON t.parent_id = d.id), root_stats AS (SELECT root_id, MAX(timestamp) AS max_timestamp, COUNT(*) AS total_children FROM descendants GROUP BY root_id) SELECT d.root_id AS root_tab_id, d.id AS latest_tab_id, d.timestamp AS latest_timestamp, rs.total_children AS total_tabs FROM descendants AS d JOIN root_stats AS rs ON d.root_id = rs.root_id AND d.timestamp = rs.max_timestamp ORDER BY d.timestamp DESC', + variables: [], + readsFrom: {tab}, + ).map( + (QueryRow row) => TabTreesResult( + rootTabId: row.read('root_tab_id'), + latestTabId: row.read('latest_tab_id'), + latestTimestamp: row.read('latest_timestamp'), + totalTabs: row.read('total_tabs'), + ), + ); + } + + Selectable unorderedTabDescendants({ + required String tabId, + }) { + return customSelect( + 'WITH RECURSIVE descendants AS (SELECT id, parent_id FROM tab WHERE id = ?1 UNION ALL SELECT t.id, t.parent_id FROM tab AS t JOIN descendants AS d ON t.parent_id = d.id) SELECT id, parent_id FROM descendants', + variables: [Variable(tabId)], + readsFrom: {tab}, + ).map( + (QueryRow row) => UnorderedTabDescendantsResult( + id: row.read('id'), + parentId: row.readNullable('parent_id'), + ), + ); + } + @override Iterable> get allTables => allSchemaEntities.whereType>(); @@ -1185,6 +1256,7 @@ abstract class _$TabDatabase extends GeneratedDatabase { container, tab, tabFts, + tabMaintainParentChainOnDelete, tabAfterInsert, tabAfterDelete, tabAfterUpdate, @@ -1198,6 +1270,13 @@ abstract class _$TabDatabase extends GeneratedDatabase { ), result: [TableUpdate('tab', kind: UpdateKind.delete)], ), + WritePropagation( + on: TableUpdateQuery.onTableName( + 'tab', + limitUpdateKind: UpdateKind.delete, + ), + result: [TableUpdate('tab', kind: UpdateKind.update)], + ), WritePropagation( on: TableUpdateQuery.onTableName( 'tab', @@ -1499,6 +1578,7 @@ typedef $ContainerProcessedTableManager = typedef $TabCreateCompanionBuilder = TabCompanion Function({ required String id, + Value parentId, Value containerId, required String orderKey, Value url, @@ -1514,6 +1594,7 @@ typedef $TabCreateCompanionBuilder = typedef $TabUpdateCompanionBuilder = TabCompanion Function({ Value id, + Value parentId, Value containerId, Value orderKey, Value url, @@ -1561,6 +1642,11 @@ class $TabFilterComposer extends Composer<_$TabDatabase, Tab> { builder: (column) => ColumnFilters(column), ); + ColumnFilters get parentId => $composableBuilder( + column: $table.parentId, + builder: (column) => ColumnFilters(column), + ); + ColumnFilters get orderKey => $composableBuilder( column: $table.orderKey, builder: (column) => ColumnFilters(column), @@ -1644,6 +1730,11 @@ class $TabOrderingComposer extends Composer<_$TabDatabase, Tab> { builder: (column) => ColumnOrderings(column), ); + ColumnOrderings get parentId => $composableBuilder( + column: $table.parentId, + builder: (column) => ColumnOrderings(column), + ); + ColumnOrderings get orderKey => $composableBuilder( column: $table.orderKey, builder: (column) => ColumnOrderings(column), @@ -1724,6 +1815,9 @@ class $TabAnnotationComposer extends Composer<_$TabDatabase, Tab> { GeneratedColumn get id => $composableBuilder(column: $table.id, builder: (column) => column); + GeneratedColumn get parentId => + $composableBuilder(column: $table.parentId, builder: (column) => column); + GeneratedColumn get orderKey => $composableBuilder(column: $table.orderKey, builder: (column) => column); @@ -1814,6 +1908,7 @@ class $TabTableManager updateCompanionCallback: ({ Value id = const Value.absent(), + Value parentId = const Value.absent(), Value containerId = const Value.absent(), Value orderKey = const Value.absent(), Value url = const Value.absent(), @@ -1827,6 +1922,7 @@ class $TabTableManager Value rowid = const Value.absent(), }) => TabCompanion( id: id, + parentId: parentId, containerId: containerId, orderKey: orderKey, url: url, @@ -1842,6 +1938,7 @@ class $TabTableManager createCompanionCallback: ({ required String id, + Value parentId = const Value.absent(), Value containerId = const Value.absent(), required String orderKey, Value url = const Value.absent(), @@ -1855,6 +1952,7 @@ class $TabTableManager Value rowid = const Value.absent(), }) => TabCompanion.insert( id: id, + parentId: parentId, containerId: containerId, orderKey: orderKey, url: url, @@ -2114,3 +2212,22 @@ class $TabDatabaseManager { $TabTableManager get tab => $TabTableManager(_db, _db.tab); $TabFtsTableManager get tabFts => $TabFtsTableManager(_db, _db.tabFts); } + +class TabTreesResult { + final String rootTabId; + final String latestTabId; + final DateTime latestTimestamp; + final int totalTabs; + TabTreesResult({ + required this.rootTabId, + required this.latestTabId, + required this.latestTimestamp, + required this.totalTabs, + }); +} + +class UnorderedTabDescendantsResult { + final String id; + final String? parentId; + UnorderedTabDescendantsResult({required this.id, this.parentId}); +} diff --git a/app/lib/features/geckoview/features/tabs/data/entities/tab_entity.dart b/app/lib/features/geckoview/features/tabs/data/entities/tab_entity.dart new file mode 100644 index 00000000..94da0c43 --- /dev/null +++ b/app/lib/features/geckoview/features/tabs/data/entities/tab_entity.dart @@ -0,0 +1,33 @@ +import 'package:fast_equatable/fast_equatable.dart'; + +sealed class TabEntity with FastEquatable { + String get tabId; +} + +class SingleTabEntity extends TabEntity { + @override + final String tabId; + + SingleTabEntity({required this.tabId}); + + @override + List get hashParameters => [tabId]; +} + +class TabTreeEntity extends TabEntity { + @override + final String tabId; + + final String rootId; + + final int totalTabs; + + TabTreeEntity({ + required this.tabId, + required this.rootId, + required this.totalTabs, + }); + + @override + List get hashParameters => [tabId, rootId, totalTabs]; +} diff --git a/app/lib/features/geckoview/features/tabs/domain/providers.dart b/app/lib/features/geckoview/features/tabs/domain/providers.dart index 877f5ed5..795acfa9 100644 --- a/app/lib/features/geckoview/features/tabs/domain/providers.dart +++ b/app/lib/features/geckoview/features/tabs/domain/providers.dart @@ -1,6 +1,7 @@ import 'package:nullability/nullability.dart'; import 'package:riverpod/riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; +import 'package:weblibre/features/geckoview/features/tabs/data/database/database.dart'; import 'package:weblibre/features/geckoview/features/tabs/data/entities/container_filter.dart'; import 'package:weblibre/features/geckoview/features/tabs/data/models/container_data.dart'; import 'package:weblibre/features/geckoview/features/tabs/data/providers.dart'; @@ -47,3 +48,19 @@ Stream> containerTabIds(Ref ref, ContainerFilter containerFilter) { return db.tabDao.getAllTabIds().watch(); } } + +@Riverpod() +Stream> tabTrees(Ref ref) { + final db = ref.watch(tabDatabaseProvider); + return db.tabTrees().watch(); +} + +@Riverpod() +Stream> tabDescendants(Ref ref, String tabId) { + final db = ref.watch(tabDatabaseProvider); + return db.unorderedTabDescendants(tabId: tabId).watch().map((results) { + return Map.fromEntries( + results.map((pair) => MapEntry(pair.id, pair.parentId)), + ); + }); +} diff --git a/app/lib/features/geckoview/features/tabs/domain/providers.g.dart b/app/lib/features/geckoview/features/tabs/domain/providers.g.dart index 96b34ddf..d303244d 100644 --- a/app/lib/features/geckoview/features/tabs/domain/providers.g.dart +++ b/app/lib/features/geckoview/features/tabs/domain/providers.g.dart @@ -303,5 +303,144 @@ class _ContainerTabIdsProviderElement (origin as ContainerTabIdsProvider).containerFilter; } +String _$tabTreesHash() => r'b7b7f7136827207dd01a7894a915be3d17b1ae63'; + +/// See also [tabTrees]. +@ProviderFor(tabTrees) +final tabTreesProvider = + AutoDisposeStreamProvider>.internal( + tabTrees, + name: r'tabTreesProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$tabTreesHash, + dependencies: null, + allTransitiveDependencies: null, + ); + +@Deprecated('Will be removed in 3.0. Use Ref instead') +// ignore: unused_element +typedef TabTreesRef = AutoDisposeStreamProviderRef>; +String _$tabDescendantsHash() => r'93e19df9896e4876dc911370c02bf10f1ee9a9e6'; + +/// See also [tabDescendants]. +@ProviderFor(tabDescendants) +const tabDescendantsProvider = TabDescendantsFamily(); + +/// See also [tabDescendants]. +class TabDescendantsFamily extends Family>> { + /// See also [tabDescendants]. + const TabDescendantsFamily(); + + /// See also [tabDescendants]. + TabDescendantsProvider call(String tabId) { + return TabDescendantsProvider(tabId); + } + + @override + TabDescendantsProvider getProviderOverride( + covariant TabDescendantsProvider provider, + ) { + return call(provider.tabId); + } + + static const Iterable? _dependencies = null; + + @override + Iterable? get dependencies => _dependencies; + + static const Iterable? _allTransitiveDependencies = null; + + @override + Iterable? get allTransitiveDependencies => + _allTransitiveDependencies; + + @override + String? get name => r'tabDescendantsProvider'; +} + +/// See also [tabDescendants]. +class TabDescendantsProvider + extends AutoDisposeStreamProvider> { + /// See also [tabDescendants]. + TabDescendantsProvider(String tabId) + : this._internal( + (ref) => tabDescendants(ref as TabDescendantsRef, tabId), + from: tabDescendantsProvider, + name: r'tabDescendantsProvider', + debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') + ? null + : _$tabDescendantsHash, + dependencies: TabDescendantsFamily._dependencies, + allTransitiveDependencies: + TabDescendantsFamily._allTransitiveDependencies, + tabId: tabId, + ); + + TabDescendantsProvider._internal( + super._createNotifier, { + required super.name, + required super.dependencies, + required super.allTransitiveDependencies, + required super.debugGetCreateSourceHash, + required super.from, + required this.tabId, + }) : super.internal(); + + final String tabId; + + @override + Override overrideWith( + Stream> Function(TabDescendantsRef provider) create, + ) { + return ProviderOverride( + origin: this, + override: TabDescendantsProvider._internal( + (ref) => create(ref as TabDescendantsRef), + from: from, + name: null, + dependencies: null, + allTransitiveDependencies: null, + debugGetCreateSourceHash: null, + tabId: tabId, + ), + ); + } + + @override + AutoDisposeStreamProviderElement> createElement() { + return _TabDescendantsProviderElement(this); + } + + @override + bool operator ==(Object other) { + return other is TabDescendantsProvider && other.tabId == tabId; + } + + @override + int get hashCode { + var hash = _SystemHash.combine(0, runtimeType.hashCode); + hash = _SystemHash.combine(hash, tabId.hashCode); + + return _SystemHash.finish(hash); + } +} + +@Deprecated('Will be removed in 3.0. Use Ref instead') +// ignore: unused_element +mixin TabDescendantsRef on AutoDisposeStreamProviderRef> { + /// The parameter `tabId` of this provider. + String get tabId; +} + +class _TabDescendantsProviderElement + extends AutoDisposeStreamProviderElement> + with TabDescendantsRef { + _TabDescendantsProviderElement(super.provider); + + @override + String get tabId => (origin as TabDescendantsProvider).tabId; +} + // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/app/pubspec.yaml b/app/pubspec.yaml index 3a02c921..eb661040 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -30,6 +30,7 @@ dependencies: flutter_svg: ^2.1.0 go_router: ^15.2.0 google_fonts: ^6.2.1 + graphview: ^1.2.0 home_widget: ^0.8.0 hooks_riverpod: ^2.6.1 html: ^0.15.6 @@ -75,6 +76,7 @@ dependencies: url: https://github.com/FaFre/uri-to-file.git url_launcher: ^6.3.1 uuid: ^4.5.1 + vector_math: ^2.1.4 dev_dependencies: analyzer_plugin: ^0.13.1 diff --git a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/api/GeckoTabsApiImpl.kt b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/api/GeckoTabsApiImpl.kt index c8484753..543c6a60 100644 --- a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/api/GeckoTabsApiImpl.kt +++ b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/api/GeckoTabsApiImpl.kt @@ -185,6 +185,7 @@ class GeckoTabsApiImpl : GeckoTabsApi { System.currentTimeMillis(), TabContentState( id = tab.id, + parentId = tab.parentId, contextId = tab.contextId, url = tab.content.url, title = tab.content.title, diff --git a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/components/Events.kt b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/components/Events.kt index 4c3fb94e..38a53efc 100644 --- a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/components/Events.kt +++ b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/components/Events.kt @@ -158,6 +158,7 @@ class Events( System.currentTimeMillis(), TabContentState( id = tab.id, + parentId = tab.parentId, contextId = tab.contextId, url = tab.content.url, title = tab.content.title, diff --git a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/pigeons/Gecko.g.kt b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/pigeons/Gecko.g.kt index bc97b4c2..56be813d 100644 --- a/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/pigeons/Gecko.g.kt +++ b/packages/flutter_mozilla_components/android/src/main/kotlin/eu/weblibre/flutter_mozilla_components/pigeons/Gecko.g.kt @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v25.3.1), do not edit directly. +// Autogenerated from Pigeon (v25.3.2), do not edit directly. // See also: https://pub.dev/packages/pigeon @file:Suppress("UNCHECKED_CAST", "ArrayInDataClass") @@ -1194,6 +1194,7 @@ data class SecurityInfoState ( /** Generated class from Pigeon that represents data sent in messages. */ data class TabContentState ( val id: String, + val parentId: String? = null, val contextId: String? = null, val url: String, val title: String, @@ -1206,19 +1207,21 @@ data class TabContentState ( companion object { fun fromList(pigeonVar_list: List): TabContentState { val id = pigeonVar_list[0] as String - val contextId = pigeonVar_list[1] as String? - val url = pigeonVar_list[2] as String - val title = pigeonVar_list[3] as String - val progress = pigeonVar_list[4] as Long - val isPrivate = pigeonVar_list[5] as Boolean - val isFullScreen = pigeonVar_list[6] as Boolean - val isLoading = pigeonVar_list[7] as Boolean - return TabContentState(id, contextId, url, title, progress, isPrivate, isFullScreen, isLoading) + val parentId = pigeonVar_list[1] as String? + val contextId = pigeonVar_list[2] as String? + val url = pigeonVar_list[3] as String + val title = pigeonVar_list[4] as String + val progress = pigeonVar_list[5] as Long + val isPrivate = pigeonVar_list[6] as Boolean + val isFullScreen = pigeonVar_list[7] as Boolean + val isLoading = pigeonVar_list[8] as Boolean + return TabContentState(id, parentId, contextId, url, title, progress, isPrivate, isFullScreen, isLoading) } } fun toList(): List { return listOf( id, + parentId, contextId, url, title, diff --git a/packages/flutter_mozilla_components/lib/src/pigeons/gecko.g.dart b/packages/flutter_mozilla_components/lib/src/pigeons/gecko.g.dart index 63084863..6bfd2a82 100644 --- a/packages/flutter_mozilla_components/lib/src/pigeons/gecko.g.dart +++ b/packages/flutter_mozilla_components/lib/src/pigeons/gecko.g.dart @@ -1,4 +1,4 @@ -// Autogenerated from Pigeon (v25.3.1), do not edit directly. +// Autogenerated from Pigeon (v25.3.2), 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 @@ -15,11 +15,7 @@ PlatformException _createConnectionError(String channelName) { ); } -List wrapResponse({ - Object? result, - PlatformException? error, - bool empty = false, -}) { +List wrapResponse({Object? result, PlatformException? error, bool empty = false}) { if (empty) { return []; } @@ -28,33 +24,27 @@ List wrapResponse({ } return [error.code, error.message, error.details]; } - bool _deepEquals(Object? a, Object? b) { if (a is List && b is List) { return a.length == b.length && - a.indexed.every( - ((int, dynamic) item) => _deepEquals(item.$2, b[item.$1]), - ); + a.indexed + .every(((int, dynamic) item) => _deepEquals(item.$2, b[item.$1])); } if (a is Map && b is Map) { - return a.length == b.length && - a.entries.every( - (MapEntry entry) => - (b as Map).containsKey(entry.key) && - _deepEquals(entry.value, b[entry.key]), - ); + return a.length == b.length && a.entries.every((MapEntry entry) => + (b as Map).containsKey(entry.key) && + _deepEquals(entry.value, b[entry.key])); } return a == b; } + /// Indicates what location the tabs should be restored at enum RestoreLocation { /// Restore tabs at the beginning of the tab list beginning, - /// Restore tabs at the end of the tab list end, - /// Restore tabs at a specific index in the tab list atIndex, } @@ -75,41 +65,73 @@ enum IconType { /// Supported sizes. /// /// We are trying to limit the supported sizes in order to optimize our caching strategy. -enum IconSize { defaultSize, launcher, launcherAdaptive } +enum IconSize { + defaultSize, + launcher, + launcherAdaptive, +} /// The source of an [Icon]. enum IconSource { /// This icon was generated. generator, - /// This icon was downloaded. download, - /// This icon was inlined in the document. inline, - /// This icon was loaded from an in-memory cache. memory, - /// This icon was loaded from a disk cache. disk, } -enum CookieSameSiteStatus { noRestriction, lax, strict, unspecified } +enum CookieSameSiteStatus { + noRestriction, + lax, + strict, + unspecified, +} -enum SelectionPattern { phone, email } +enum SelectionPattern { + phone, + email, +} -enum WebExtensionActionType { browser, page } +enum WebExtensionActionType { + browser, + page, +} -enum GeckoSuggestionType { session, clipboard, history } +enum GeckoSuggestionType { + session, + clipboard, + history, +} -enum TrackingProtectionPolicy { none, recommended, strict, custom } +enum TrackingProtectionPolicy { + none, + recommended, + strict, + custom, +} -enum HttpsOnlyMode { disabled, privateOnly, enabled } +enum HttpsOnlyMode { + disabled, + privateOnly, + enabled, +} -enum ColorScheme { system, light, dark } +enum ColorScheme { + system, + light, + dark, +} -enum CookieBannerHandlingMode { disabled, rejectAll, rejectOrAcceptAll } +enum CookieBannerHandlingMode { + disabled, + rejectAll, + rejectOrAcceptAll, +} enum WebContentIsolationStrategy { isolateNothing, @@ -121,20 +143,15 @@ enum WebContentIsolationStrategy { enum DownloadStatus { /// Indicates that the download is in the first state after creation but not yet [DOWNLOADING]. initiated, - /// Indicates that an [INITIATED] download is now actively being downloaded. downloading, - /// Indicates that the download that has been [DOWNLOADING] has been paused. paused, - /// Indicates that the download that has been [DOWNLOADING] has been cancelled. cancelled, - /// Indicates that the download that has been [DOWNLOADING] has moved to failed because /// something unexpected has happened. failed, - /// Indicates that the [DOWNLOADING] download has been completed. completed, } @@ -144,21 +161,26 @@ enum DownloadStatus { /// @property downloadModel If the necessary models should be downloaded on request. If false, then /// the translation will not complete and throw an exception if the models are not already available. class TranslationOptions { - TranslationOptions({required this.downloadModel}); + TranslationOptions({ + required this.downloadModel, + }); bool downloadModel; List _toList() { - return [downloadModel]; + return [ + downloadModel, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static TranslationOptions decode(Object result) { result as List; - return TranslationOptions(downloadModel: result[0]! as bool); + return TranslationOptions( + downloadModel: result[0]! as bool, + ); } @override @@ -175,7 +197,8 @@ class TranslationOptions { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// Value type that represents the state of reader mode/view. @@ -228,8 +251,7 @@ class ReaderState { } Object encode() { - return _toList(); - } + return _toList(); } static ReaderState decode(Object result) { result as List; @@ -258,7 +280,8 @@ class ReaderState { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// Details about the last playing media in this tab. @@ -288,12 +311,15 @@ class LastMediaAccessState { bool mediaSessionActive; List _toList() { - return [lastMediaUrl, lastMediaAccess, mediaSessionActive]; + return [ + lastMediaUrl, + lastMediaAccess, + mediaSessionActive, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static LastMediaAccessState decode(Object result) { result as List; @@ -318,7 +344,8 @@ class LastMediaAccessState { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// Represents a set of history metadata values that uniquely identify a record. Note that @@ -326,7 +353,11 @@ class LastMediaAccessState { /// created, depending on the de-bouncing logic of the underlying storage i.e. recording history /// metadata observations with the exact same values may be combined into a single record. class HistoryMetadataKey { - HistoryMetadataKey({required this.url, this.searchTerm, this.referrerUrl}); + HistoryMetadataKey({ + required this.url, + this.searchTerm, + this.referrerUrl, + }); /// A url of the page. String url; @@ -341,12 +372,15 @@ class HistoryMetadataKey { String? referrerUrl; List _toList() { - return [url, searchTerm, referrerUrl]; + return [ + url, + searchTerm, + referrerUrl, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static HistoryMetadataKey decode(Object result) { result as List; @@ -371,25 +405,31 @@ class HistoryMetadataKey { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class PackageCategoryValue { - PackageCategoryValue({required this.value}); + PackageCategoryValue({ + required this.value, + }); int value; List _toList() { - return [value]; + return [ + value, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static PackageCategoryValue decode(Object result) { result as List; - return PackageCategoryValue(value: result[0]! as int); + return PackageCategoryValue( + value: result[0]! as int, + ); } @override @@ -406,12 +446,16 @@ class PackageCategoryValue { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// Describes an external package. class ExternalPackage { - ExternalPackage({required this.packageId, required this.category}); + ExternalPackage({ + required this.packageId, + required this.category, + }); /// An Android package id. String packageId; @@ -420,12 +464,14 @@ class ExternalPackage { PackageCategoryValue category; List _toList() { - return [packageId, category]; + return [ + packageId, + category, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static ExternalPackage decode(Object result) { result as List; @@ -449,25 +495,31 @@ class ExternalPackage { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class LoadUrlFlagsValue { - LoadUrlFlagsValue({required this.value}); + LoadUrlFlagsValue({ + required this.value, + }); int value; List _toList() { - return [value]; + return [ + value, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static LoadUrlFlagsValue decode(Object result) { result as List; - return LoadUrlFlagsValue(value: result[0]! as int); + return LoadUrlFlagsValue( + value: result[0]! as int, + ); } @override @@ -484,23 +536,29 @@ class LoadUrlFlagsValue { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class SourceValue { - SourceValue({required this.id, this.caller}); + SourceValue({ + required this.id, + this.caller, + }); int id; ExternalPackage? caller; List _toList() { - return [id, caller]; + return [ + id, + caller, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static SourceValue decode(Object result) { result as List; @@ -524,7 +582,8 @@ class SourceValue { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// A tab that is no longer open and in the list of tabs, but that can be restored (recovered) at @@ -619,8 +678,7 @@ class TabState { } Object encode() { - return _toList(); - } + return _toList(); } static TabState decode(Object result) { result as List; @@ -657,12 +715,16 @@ class TabState { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// A recoverable version of [TabState]. class RecoverableTab { - RecoverableTab({this.engineSessionStateJson, required this.state}); + RecoverableTab({ + this.engineSessionStateJson, + required this.state, + }); /// The [EngineSessionState] needed for restoring the previous state of this tab. String? engineSessionStateJson; @@ -671,12 +733,14 @@ class RecoverableTab { TabState state; List _toList() { - return [engineSessionStateJson, state]; + return [ + engineSessionStateJson, + state, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static RecoverableTab decode(Object result) { result as List; @@ -700,12 +764,16 @@ class RecoverableTab { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// A restored browser state, read from disk. class RecoverableBrowserState { - RecoverableBrowserState({required this.tabs, this.selectedTabId}); + RecoverableBrowserState({ + required this.tabs, + this.selectedTabId, + }); /// The list of restored tabs. List tabs; @@ -714,12 +782,14 @@ class RecoverableBrowserState { String? selectedTabId; List _toList() { - return [tabs, selectedTabId]; + return [ + tabs, + selectedTabId, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static RecoverableBrowserState decode(Object result) { result as List; @@ -743,7 +813,8 @@ class RecoverableBrowserState { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// A request to load an [Icon]. @@ -770,12 +841,18 @@ class IconRequest { bool waitOnNetworkLoad; List _toList() { - return [url, size, resources, color, isPrivate, waitOnNetworkLoad]; + return [ + url, + size, + resources, + color, + isPrivate, + waitOnNetworkLoad, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static IconRequest decode(Object result) { result as List; @@ -803,27 +880,36 @@ class IconRequest { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class ResourceSize { - ResourceSize({required this.height, required this.width}); + ResourceSize({ + required this.height, + required this.width, + }); int height; int width; List _toList() { - return [height, width]; + return [ + height, + width, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static ResourceSize decode(Object result) { result as List; - return ResourceSize(height: result[0]! as int, width: result[1]! as int); + return ResourceSize( + height: result[0]! as int, + width: result[1]! as int, + ); } @override @@ -840,7 +926,8 @@ class ResourceSize { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// An icon resource that can be loaded. @@ -864,12 +951,17 @@ class Resource { bool maskable; List _toList() { - return [url, type, sizes, mimeType, maskable]; + return [ + url, + type, + sizes, + mimeType, + maskable, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static Resource decode(Object result) { result as List; @@ -896,7 +988,8 @@ class Resource { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// An [Icon] returned by [BrowserIcons] after processing an [IconRequest] @@ -921,12 +1014,16 @@ class IconResult { bool maskable; List _toList() { - return [image, color, source, maskable]; + return [ + image, + color, + source, + maskable, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static IconResult decode(Object result) { result as List; @@ -952,25 +1049,31 @@ class IconResult { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class CookiePartitionKey { - CookiePartitionKey({required this.topLevelSite}); + CookiePartitionKey({ + required this.topLevelSite, + }); String topLevelSite; List _toList() { - return [topLevelSite]; + return [ + topLevelSite, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static CookiePartitionKey decode(Object result) { result as List; - return CookiePartitionKey(topLevelSite: result[0]! as String); + return CookiePartitionKey( + topLevelSite: result[0]! as String, + ); } @override @@ -987,7 +1090,8 @@ class CookiePartitionKey { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class Cookie { @@ -1052,8 +1156,7 @@ class Cookie { } Object encode() { - return _toList(); - } + return _toList(); } static Cookie decode(Object result) { result as List; @@ -1088,27 +1191,36 @@ class Cookie { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class HistoryItem { - HistoryItem({required this.url, required this.title}); + HistoryItem({ + required this.url, + required this.title, + }); String url; String title; List _toList() { - return [url, title]; + return [ + url, + title, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static HistoryItem decode(Object result) { result as List; - return HistoryItem(url: result[0]! as String, title: result[1]! as String); + return HistoryItem( + url: result[0]! as String, + title: result[1]! as String, + ); } @override @@ -1125,7 +1237,8 @@ class HistoryItem { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class HistoryState { @@ -1145,12 +1258,16 @@ class HistoryState { bool canGoForward; List _toList() { - return [items, currentIndex, canGoBack, canGoForward]; + return [ + items, + currentIndex, + canGoBack, + canGoForward, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static HistoryState decode(Object result) { result as List; @@ -1176,11 +1293,15 @@ class HistoryState { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class ReaderableState { - ReaderableState({required this.readerable, required this.active}); + ReaderableState({ + required this.readerable, + required this.active, + }); /// Whether or not the current page can be transformed to /// be displayed in a reader view. @@ -1190,12 +1311,14 @@ class ReaderableState { bool active; List _toList() { - return [readerable, active]; + return [ + readerable, + active, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static ReaderableState decode(Object result) { result as List; @@ -1219,7 +1342,8 @@ class ReaderableState { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class SecurityInfoState { @@ -1236,12 +1360,15 @@ class SecurityInfoState { String issuer; List _toList() { - return [secure, host, issuer]; + return [ + secure, + host, + issuer, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static SecurityInfoState decode(Object result) { result as List; @@ -1266,12 +1393,14 @@ class SecurityInfoState { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class TabContentState { TabContentState({ required this.id, + this.parentId, this.contextId, required this.url, required this.title, @@ -1283,6 +1412,8 @@ class TabContentState { String id; + String? parentId; + String? contextId; String url; @@ -1300,6 +1431,7 @@ class TabContentState { List _toList() { return [ id, + parentId, contextId, url, title, @@ -1311,20 +1443,20 @@ class TabContentState { } Object encode() { - return _toList(); - } + return _toList(); } static TabContentState decode(Object result) { result as List; return TabContentState( id: result[0]! as String, - contextId: result[1] as String?, - url: result[2]! as String, - title: result[3]! as String, - progress: result[4]! as int, - isPrivate: result[5]! as bool, - isFullScreen: result[6]! as bool, - isLoading: result[7]! as bool, + parentId: result[1] as String?, + contextId: result[2] as String?, + url: result[3]! as String, + title: result[4]! as String, + progress: result[5]! as int, + isPrivate: result[6]! as bool, + isFullScreen: result[7]! as bool, + isLoading: result[8]! as bool, ); } @@ -1342,7 +1474,8 @@ class TabContentState { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class FindResultState { @@ -1359,12 +1492,15 @@ class FindResultState { bool isDoneCounting; List _toList() { - return [activeMatchOrdinal, numberOfMatches, isDoneCounting]; + return [ + activeMatchOrdinal, + numberOfMatches, + isDoneCounting, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static FindResultState decode(Object result) { result as List; @@ -1389,11 +1525,16 @@ class FindResultState { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class CustomSelectionAction { - CustomSelectionAction({required this.id, required this.title, this.pattern}); + CustomSelectionAction({ + required this.id, + required this.title, + this.pattern, + }); String id; @@ -1402,12 +1543,15 @@ class CustomSelectionAction { SelectionPattern? pattern; List _toList() { - return [id, title, pattern]; + return [ + id, + title, + pattern, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static CustomSelectionAction decode(Object result) { result as List; @@ -1432,7 +1576,8 @@ class CustomSelectionAction { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class WebExtensionData { @@ -1469,8 +1614,7 @@ class WebExtensionData { } Object encode() { - return _toList(); - } + return _toList(); } static WebExtensionData decode(Object result) { result as List; @@ -1498,7 +1642,8 @@ class WebExtensionData { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class GeckoSuggestion { @@ -1527,12 +1672,19 @@ class GeckoSuggestion { Uint8List? icon; List _toList() { - return [id, type, score, title, description, editSuggestion, icon]; + return [ + id, + type, + score, + title, + description, + editSuggestion, + icon, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static GeckoSuggestion decode(Object result) { result as List; @@ -1561,7 +1713,8 @@ class GeckoSuggestion { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class TabContent { @@ -1598,8 +1751,7 @@ class TabContent { } Object encode() { - return _toList(); - } + return _toList(); } static TabContent decode(Object result) { result as List; @@ -1627,7 +1779,8 @@ class TabContent { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class GeckoEngineSettings { @@ -1684,8 +1837,7 @@ class GeckoEngineSettings { } Object encode() { - return _toList(); - } + return _toList(); } static GeckoEngineSettings decode(Object result) { result as List; @@ -1696,8 +1848,7 @@ class GeckoEngineSettings { globalPrivacyControlEnabled: result[3] as bool?, preferredColorScheme: result[4] as ColorScheme?, cookieBannerHandlingMode: result[5] as CookieBannerHandlingMode?, - cookieBannerHandlingModePrivateBrowsing: - result[6] as CookieBannerHandlingMode?, + cookieBannerHandlingModePrivateBrowsing: result[6] as CookieBannerHandlingMode?, cookieBannerHandlingGlobalRules: result[7] as bool?, cookieBannerHandlingGlobalRulesSubFrames: result[8] as bool?, webContentIsolationStrategy: result[9] as WebContentIsolationStrategy?, @@ -1719,7 +1870,8 @@ class GeckoEngineSettings { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class AutocompleteResult { @@ -1742,12 +1894,17 @@ class AutocompleteResult { int totalItems; List _toList() { - return [input, text, url, source, totalItems]; + return [ + input, + text, + url, + source, + totalItems, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static AutocompleteResult decode(Object result) { result as List; @@ -1774,30 +1931,37 @@ class AutocompleteResult { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// Represents all the different supported types of data that can be found from long clicking /// an element. -sealed class HitResult {} +sealed class HitResult { +} /// Default type if we're unable to match the type to anything. It may or may not have a src. class UnknownHitResult extends HitResult { - UnknownHitResult({required this.src}); + UnknownHitResult({ + required this.src, + }); String src; List _toList() { - return [src]; + return [ + src, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static UnknownHitResult decode(Object result) { result as List; - return UnknownHitResult(src: result[0]! as String); + return UnknownHitResult( + src: result[0]! as String, + ); } @override @@ -1814,24 +1978,30 @@ class UnknownHitResult extends HitResult { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// If the HTML element was of type 'HTMLImageElement'. class ImageHitResult extends HitResult { - ImageHitResult({required this.src, this.title}); + ImageHitResult({ + required this.src, + this.title, + }); String src; String? title; List _toList() { - return [src, title]; + return [ + src, + title, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static ImageHitResult decode(Object result) { result as List; @@ -1855,24 +2025,30 @@ class ImageHitResult extends HitResult { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// If the HTML element was of type 'HTMLVideoElement'. class VideoHitResult extends HitResult { - VideoHitResult({required this.src, this.title}); + VideoHitResult({ + required this.src, + this.title, + }); String src; String? title; List _toList() { - return [src, title]; + return [ + src, + title, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static VideoHitResult decode(Object result) { result as List; @@ -1896,24 +2072,30 @@ class VideoHitResult extends HitResult { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// If the HTML element was of type 'HTMLAudioElement'. class AudioHitResult extends HitResult { - AudioHitResult({required this.src, this.title}); + AudioHitResult({ + required this.src, + this.title, + }); String src; String? title; List _toList() { - return [src, title]; + return [ + src, + title, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static AudioHitResult decode(Object result) { result as List; @@ -1937,24 +2119,30 @@ class AudioHitResult extends HitResult { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// If the HTML element was of type 'HTMLImageElement' and contained a URI. class ImageSrcHitResult extends HitResult { - ImageSrcHitResult({required this.src, required this.uri}); + ImageSrcHitResult({ + required this.src, + required this.uri, + }); String src; String uri; List _toList() { - return [src, uri]; + return [ + src, + uri, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static ImageSrcHitResult decode(Object result) { result as List; @@ -1978,26 +2166,32 @@ class ImageSrcHitResult extends HitResult { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// The type used if the URI is prepended with 'tel:'. class PhoneHitResult extends HitResult { - PhoneHitResult({required this.src}); + PhoneHitResult({ + required this.src, + }); String src; List _toList() { - return [src]; + return [ + src, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static PhoneHitResult decode(Object result) { result as List; - return PhoneHitResult(src: result[0]! as String); + return PhoneHitResult( + src: result[0]! as String, + ); } @override @@ -2014,26 +2208,32 @@ class PhoneHitResult extends HitResult { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// The type used if the URI is prepended with 'mailto:'. class EmailHitResult extends HitResult { - EmailHitResult({required this.src}); + EmailHitResult({ + required this.src, + }); String src; List _toList() { - return [src]; + return [ + src, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static EmailHitResult decode(Object result) { result as List; - return EmailHitResult(src: result[0]! as String); + return EmailHitResult( + src: result[0]! as String, + ); } @override @@ -2050,26 +2250,32 @@ class EmailHitResult extends HitResult { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } /// The type used if the URI is prepended with 'geo:'. class GeoHitResult extends HitResult { - GeoHitResult({required this.src}); + GeoHitResult({ + required this.src, + }); String src; List _toList() { - return [src]; + return [ + src, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static GeoHitResult decode(Object result) { result as List; - return GeoHitResult(src: result[0]! as String); + return GeoHitResult( + src: result[0]! as String, + ); } @override @@ -2086,7 +2292,8 @@ class GeoHitResult extends HitResult { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class DownloadState { @@ -2167,8 +2374,7 @@ class DownloadState { } Object encode() { - return _toList(); - } + return _toList(); } static DownloadState decode(Object result) { result as List; @@ -2207,7 +2413,8 @@ class DownloadState { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } class ShareInternetResourceState { @@ -2227,12 +2434,16 @@ class ShareInternetResourceState { String? referrerUrl; List _toList() { - return [url, contentType, private, referrerUrl]; + return [ + url, + contentType, + private, + referrerUrl, + ]; } Object encode() { - return _toList(); - } + return _toList(); } static ShareInternetResourceState decode(Object result) { result as List; @@ -2247,8 +2458,7 @@ class ShareInternetResourceState { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes bool operator ==(Object other) { - if (other is! ShareInternetResourceState || - other.runtimeType != runtimeType) { + if (other is! ShareInternetResourceState || other.runtimeType != runtimeType) { return false; } if (identical(this, other)) { @@ -2259,9 +2469,11 @@ class ShareInternetResourceState { @override // ignore: avoid_equals_and_hash_code_on_mutable_classes - int get hashCode => Object.hashAll(_toList()); + int get hashCode => Object.hashAll(_toList()) +; } + class _PigeonCodec extends StandardMessageCodec { const _PigeonCodec(); @override @@ -2269,163 +2481,163 @@ class _PigeonCodec extends StandardMessageCodec { if (value is int) { buffer.putUint8(4); buffer.putInt64(value); - } else if (value is RestoreLocation) { + } else if (value is RestoreLocation) { buffer.putUint8(129); writeValue(buffer, value.index); - } else if (value is IconType) { + } else if (value is IconType) { buffer.putUint8(130); writeValue(buffer, value.index); - } else if (value is IconSize) { + } else if (value is IconSize) { buffer.putUint8(131); writeValue(buffer, value.index); - } else if (value is IconSource) { + } else if (value is IconSource) { buffer.putUint8(132); writeValue(buffer, value.index); - } else if (value is CookieSameSiteStatus) { + } else if (value is CookieSameSiteStatus) { buffer.putUint8(133); writeValue(buffer, value.index); - } else if (value is SelectionPattern) { + } else if (value is SelectionPattern) { buffer.putUint8(134); writeValue(buffer, value.index); - } else if (value is WebExtensionActionType) { + } else if (value is WebExtensionActionType) { buffer.putUint8(135); writeValue(buffer, value.index); - } else if (value is GeckoSuggestionType) { + } else if (value is GeckoSuggestionType) { buffer.putUint8(136); writeValue(buffer, value.index); - } else if (value is TrackingProtectionPolicy) { + } else if (value is TrackingProtectionPolicy) { buffer.putUint8(137); writeValue(buffer, value.index); - } else if (value is HttpsOnlyMode) { + } else if (value is HttpsOnlyMode) { buffer.putUint8(138); writeValue(buffer, value.index); - } else if (value is ColorScheme) { + } else if (value is ColorScheme) { buffer.putUint8(139); writeValue(buffer, value.index); - } else if (value is CookieBannerHandlingMode) { + } else if (value is CookieBannerHandlingMode) { buffer.putUint8(140); writeValue(buffer, value.index); - } else if (value is WebContentIsolationStrategy) { + } else if (value is WebContentIsolationStrategy) { buffer.putUint8(141); writeValue(buffer, value.index); - } else if (value is DownloadStatus) { + } else if (value is DownloadStatus) { buffer.putUint8(142); writeValue(buffer, value.index); - } else if (value is TranslationOptions) { + } else if (value is TranslationOptions) { buffer.putUint8(143); writeValue(buffer, value.encode()); - } else if (value is ReaderState) { + } else if (value is ReaderState) { buffer.putUint8(144); writeValue(buffer, value.encode()); - } else if (value is LastMediaAccessState) { + } else if (value is LastMediaAccessState) { buffer.putUint8(145); writeValue(buffer, value.encode()); - } else if (value is HistoryMetadataKey) { + } else if (value is HistoryMetadataKey) { buffer.putUint8(146); writeValue(buffer, value.encode()); - } else if (value is PackageCategoryValue) { + } else if (value is PackageCategoryValue) { buffer.putUint8(147); writeValue(buffer, value.encode()); - } else if (value is ExternalPackage) { + } else if (value is ExternalPackage) { buffer.putUint8(148); writeValue(buffer, value.encode()); - } else if (value is LoadUrlFlagsValue) { + } else if (value is LoadUrlFlagsValue) { buffer.putUint8(149); writeValue(buffer, value.encode()); - } else if (value is SourceValue) { + } else if (value is SourceValue) { buffer.putUint8(150); writeValue(buffer, value.encode()); - } else if (value is TabState) { + } else if (value is TabState) { buffer.putUint8(151); writeValue(buffer, value.encode()); - } else if (value is RecoverableTab) { + } else if (value is RecoverableTab) { buffer.putUint8(152); writeValue(buffer, value.encode()); - } else if (value is RecoverableBrowserState) { + } else if (value is RecoverableBrowserState) { buffer.putUint8(153); writeValue(buffer, value.encode()); - } else if (value is IconRequest) { + } else if (value is IconRequest) { buffer.putUint8(154); writeValue(buffer, value.encode()); - } else if (value is ResourceSize) { + } else if (value is ResourceSize) { buffer.putUint8(155); writeValue(buffer, value.encode()); - } else if (value is Resource) { + } else if (value is Resource) { buffer.putUint8(156); writeValue(buffer, value.encode()); - } else if (value is IconResult) { + } else if (value is IconResult) { buffer.putUint8(157); writeValue(buffer, value.encode()); - } else if (value is CookiePartitionKey) { + } else if (value is CookiePartitionKey) { buffer.putUint8(158); writeValue(buffer, value.encode()); - } else if (value is Cookie) { + } else if (value is Cookie) { buffer.putUint8(159); writeValue(buffer, value.encode()); - } else if (value is HistoryItem) { + } else if (value is HistoryItem) { buffer.putUint8(160); writeValue(buffer, value.encode()); - } else if (value is HistoryState) { + } else if (value is HistoryState) { buffer.putUint8(161); writeValue(buffer, value.encode()); - } else if (value is ReaderableState) { + } else if (value is ReaderableState) { buffer.putUint8(162); writeValue(buffer, value.encode()); - } else if (value is SecurityInfoState) { + } else if (value is SecurityInfoState) { buffer.putUint8(163); writeValue(buffer, value.encode()); - } else if (value is TabContentState) { + } else if (value is TabContentState) { buffer.putUint8(164); writeValue(buffer, value.encode()); - } else if (value is FindResultState) { + } else if (value is FindResultState) { buffer.putUint8(165); writeValue(buffer, value.encode()); - } else if (value is CustomSelectionAction) { + } else if (value is CustomSelectionAction) { buffer.putUint8(166); writeValue(buffer, value.encode()); - } else if (value is WebExtensionData) { + } else if (value is WebExtensionData) { buffer.putUint8(167); writeValue(buffer, value.encode()); - } else if (value is GeckoSuggestion) { + } else if (value is GeckoSuggestion) { buffer.putUint8(168); writeValue(buffer, value.encode()); - } else if (value is TabContent) { + } else if (value is TabContent) { buffer.putUint8(169); writeValue(buffer, value.encode()); - } else if (value is GeckoEngineSettings) { + } else if (value is GeckoEngineSettings) { buffer.putUint8(170); writeValue(buffer, value.encode()); - } else if (value is AutocompleteResult) { + } else if (value is AutocompleteResult) { buffer.putUint8(171); writeValue(buffer, value.encode()); - } else if (value is UnknownHitResult) { + } else if (value is UnknownHitResult) { buffer.putUint8(172); writeValue(buffer, value.encode()); - } else if (value is ImageHitResult) { + } else if (value is ImageHitResult) { buffer.putUint8(173); writeValue(buffer, value.encode()); - } else if (value is VideoHitResult) { + } else if (value is VideoHitResult) { buffer.putUint8(174); writeValue(buffer, value.encode()); - } else if (value is AudioHitResult) { + } else if (value is AudioHitResult) { buffer.putUint8(175); writeValue(buffer, value.encode()); - } else if (value is ImageSrcHitResult) { + } else if (value is ImageSrcHitResult) { buffer.putUint8(176); writeValue(buffer, value.encode()); - } else if (value is PhoneHitResult) { + } else if (value is PhoneHitResult) { buffer.putUint8(177); writeValue(buffer, value.encode()); - } else if (value is EmailHitResult) { + } else if (value is EmailHitResult) { buffer.putUint8(178); writeValue(buffer, value.encode()); - } else if (value is GeoHitResult) { + } else if (value is GeoHitResult) { buffer.putUint8(179); writeValue(buffer, value.encode()); - } else if (value is DownloadState) { + } else if (value is DownloadState) { buffer.putUint8(180); writeValue(buffer, value.encode()); - } else if (value is ShareInternetResourceState) { + } else if (value is ShareInternetResourceState) { buffer.putUint8(181); writeValue(buffer, value.encode()); } else { @@ -2436,125 +2648,125 @@ class _PigeonCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 129: + case 129: final int? value = readValue(buffer) as int?; return value == null ? null : RestoreLocation.values[value]; - case 130: + case 130: final int? value = readValue(buffer) as int?; return value == null ? null : IconType.values[value]; - case 131: + case 131: final int? value = readValue(buffer) as int?; return value == null ? null : IconSize.values[value]; - case 132: + case 132: final int? value = readValue(buffer) as int?; return value == null ? null : IconSource.values[value]; - case 133: + case 133: final int? value = readValue(buffer) as int?; return value == null ? null : CookieSameSiteStatus.values[value]; - case 134: + case 134: final int? value = readValue(buffer) as int?; return value == null ? null : SelectionPattern.values[value]; - case 135: + case 135: final int? value = readValue(buffer) as int?; return value == null ? null : WebExtensionActionType.values[value]; - case 136: + case 136: final int? value = readValue(buffer) as int?; return value == null ? null : GeckoSuggestionType.values[value]; - case 137: + case 137: final int? value = readValue(buffer) as int?; return value == null ? null : TrackingProtectionPolicy.values[value]; - case 138: + case 138: final int? value = readValue(buffer) as int?; return value == null ? null : HttpsOnlyMode.values[value]; - case 139: + case 139: final int? value = readValue(buffer) as int?; return value == null ? null : ColorScheme.values[value]; - case 140: + case 140: final int? value = readValue(buffer) as int?; return value == null ? null : CookieBannerHandlingMode.values[value]; - case 141: + case 141: final int? value = readValue(buffer) as int?; return value == null ? null : WebContentIsolationStrategy.values[value]; - case 142: + case 142: final int? value = readValue(buffer) as int?; return value == null ? null : DownloadStatus.values[value]; - case 143: + case 143: return TranslationOptions.decode(readValue(buffer)!); - case 144: + case 144: return ReaderState.decode(readValue(buffer)!); - case 145: + case 145: return LastMediaAccessState.decode(readValue(buffer)!); - case 146: + case 146: return HistoryMetadataKey.decode(readValue(buffer)!); - case 147: + case 147: return PackageCategoryValue.decode(readValue(buffer)!); - case 148: + case 148: return ExternalPackage.decode(readValue(buffer)!); - case 149: + case 149: return LoadUrlFlagsValue.decode(readValue(buffer)!); - case 150: + case 150: return SourceValue.decode(readValue(buffer)!); - case 151: + case 151: return TabState.decode(readValue(buffer)!); - case 152: + case 152: return RecoverableTab.decode(readValue(buffer)!); - case 153: + case 153: return RecoverableBrowserState.decode(readValue(buffer)!); - case 154: + case 154: return IconRequest.decode(readValue(buffer)!); - case 155: + case 155: return ResourceSize.decode(readValue(buffer)!); - case 156: + case 156: return Resource.decode(readValue(buffer)!); - case 157: + case 157: return IconResult.decode(readValue(buffer)!); - case 158: + case 158: return CookiePartitionKey.decode(readValue(buffer)!); - case 159: + case 159: return Cookie.decode(readValue(buffer)!); - case 160: + case 160: return HistoryItem.decode(readValue(buffer)!); - case 161: + case 161: return HistoryState.decode(readValue(buffer)!); - case 162: + case 162: return ReaderableState.decode(readValue(buffer)!); - case 163: + case 163: return SecurityInfoState.decode(readValue(buffer)!); - case 164: + case 164: return TabContentState.decode(readValue(buffer)!); - case 165: + case 165: return FindResultState.decode(readValue(buffer)!); - case 166: + case 166: return CustomSelectionAction.decode(readValue(buffer)!); - case 167: + case 167: return WebExtensionData.decode(readValue(buffer)!); - case 168: + case 168: return GeckoSuggestion.decode(readValue(buffer)!); - case 169: + case 169: return TabContent.decode(readValue(buffer)!); - case 170: + case 170: return GeckoEngineSettings.decode(readValue(buffer)!); - case 171: + case 171: return AutocompleteResult.decode(readValue(buffer)!); - case 172: + case 172: return UnknownHitResult.decode(readValue(buffer)!); - case 173: + case 173: return ImageHitResult.decode(readValue(buffer)!); - case 174: + case 174: return VideoHitResult.decode(readValue(buffer)!); - case 175: + case 175: return AudioHitResult.decode(readValue(buffer)!); - case 176: + case 176: return ImageSrcHitResult.decode(readValue(buffer)!); - case 177: + case 177: return PhoneHitResult.decode(readValue(buffer)!); - case 178: + case 178: return EmailHitResult.decode(readValue(buffer)!); - case 179: + case 179: return GeoHitResult.decode(readValue(buffer)!); - case 180: + case 180: return DownloadState.decode(readValue(buffer)!); - case 181: + case 181: return ShareInternetResourceState.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -2566,13 +2778,9 @@ class GeckoBrowserApi { /// Constructor for [GeckoBrowserApi]. 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. - GeckoBrowserApi({ - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + GeckoBrowserApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -2580,14 +2788,12 @@ class GeckoBrowserApi { final String pigeonVar_messageChannelSuffix; Future initialize() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoBrowserApi.initialize$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoBrowserApi.initialize$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; @@ -2605,14 +2811,12 @@ class GeckoBrowserApi { } Future showNativeFragment() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoBrowserApi.showNativeFragment$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoBrowserApi.showNativeFragment$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; @@ -2635,17 +2839,13 @@ class GeckoBrowserApi { } Future onTrimMemory(int level) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoBrowserApi.onTrimMemory$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [level], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoBrowserApi.onTrimMemory$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([level]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2666,13 +2866,9 @@ class GeckoEngineSettingsApi { /// Constructor for [GeckoEngineSettingsApi]. 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. - GeckoEngineSettingsApi({ - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + GeckoEngineSettingsApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -2680,17 +2876,13 @@ class GeckoEngineSettingsApi { final String pigeonVar_messageChannelSuffix; Future setDefaultSettings(GeckoEngineSettings settings) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoEngineSettingsApi.setDefaultSettings$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [settings], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoEngineSettingsApi.setDefaultSettings$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([settings]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2707,17 +2899,13 @@ class GeckoEngineSettingsApi { } Future updateRuntimeSettings(GeckoEngineSettings settings) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoEngineSettingsApi.updateRuntimeSettings$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [settings], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoEngineSettingsApi.updateRuntimeSettings$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([settings]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2738,36 +2926,23 @@ class GeckoSessionApi { /// Constructor for [GeckoSessionApi]. 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. - GeckoSessionApi({ - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + GeckoSessionApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); final String pigeonVar_messageChannelSuffix; - Future loadUrl({ - required String? tabId, - required String url, - required LoadUrlFlagsValue flags, - required Map? additionalHeaders, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.loadUrl$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId, url, flags, additionalHeaders], + Future loadUrl({required String? tabId, required String url, required LoadUrlFlagsValue flags, required Map? additionalHeaders, }) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.loadUrl$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId, url, flags, additionalHeaders]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2783,23 +2958,14 @@ class GeckoSessionApi { } } - Future loadData({ - required String? tabId, - required String data, - required String mimeType, - required String encoding, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.loadData$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId, data, mimeType, encoding], + Future loadData({required String? tabId, required String data, required String mimeType, required String encoding, }) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.loadData$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId, data, mimeType, encoding]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2815,21 +2981,14 @@ class GeckoSessionApi { } } - Future reload({ - required String? tabId, - required LoadUrlFlagsValue flags, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.reload$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId, flags], + Future reload({required String? tabId, required LoadUrlFlagsValue flags}) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.reload$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId, flags]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2846,17 +3005,13 @@ class GeckoSessionApi { } Future stopLoading({required String? tabId}) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.stopLoading$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.stopLoading$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2872,21 +3027,14 @@ class GeckoSessionApi { } } - Future goBack({ - required String? tabId, - required bool userInteraction, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.goBack$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId, userInteraction], + Future goBack({required String? tabId, required bool userInteraction}) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.goBack$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId, userInteraction]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2902,21 +3050,14 @@ class GeckoSessionApi { } } - Future goForward({ - required String? tabId, - required bool userInteraction, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.goForward$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId, userInteraction], + Future goForward({required String? tabId, required bool userInteraction}) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.goForward$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId, userInteraction]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2932,21 +3073,14 @@ class GeckoSessionApi { } } - Future goToHistoryIndex({ - required int index, - required String? tabId, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.goToHistoryIndex$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [index, tabId], + Future goToHistoryIndex({required int index, required String? tabId}) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.goToHistoryIndex$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([index, tabId]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2962,21 +3096,14 @@ class GeckoSessionApi { } } - Future requestDesktopSite({ - required String? tabId, - required bool enable, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.requestDesktopSite$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId, enable], + Future requestDesktopSite({required String? tabId, required bool enable}) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.requestDesktopSite$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId, enable]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2993,17 +3120,13 @@ class GeckoSessionApi { } Future exitFullscreen({required String? tabId}) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.exitFullscreen$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.exitFullscreen$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3020,17 +3143,13 @@ class GeckoSessionApi { } Future saveToPdf({required String? tabId}) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.saveToPdf$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.saveToPdf$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3047,17 +3166,13 @@ class GeckoSessionApi { } Future printContent({required String? tabId}) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.printContent$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.printContent$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3073,23 +3188,14 @@ class GeckoSessionApi { } } - Future translate({ - required String? tabId, - required String fromLanguage, - required String toLanguage, - required TranslationOptions? options, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.translate$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId, fromLanguage, toLanguage, options], + Future translate({required String? tabId, required String fromLanguage, required String toLanguage, required TranslationOptions? options, }) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.translate$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId, fromLanguage, toLanguage, options]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3106,17 +3212,13 @@ class GeckoSessionApi { } Future translateRestore({required String? tabId}) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.translateRestore$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.translateRestore$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3133,17 +3235,13 @@ class GeckoSessionApi { } Future crashRecovery({required List? tabIds}) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.crashRecovery$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabIds], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.crashRecovery$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabIds]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3160,14 +3258,12 @@ class GeckoSessionApi { } Future purgeHistory() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.purgeHistory$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.purgeHistory$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; @@ -3184,21 +3280,14 @@ class GeckoSessionApi { } } - Future updateLastAccess({ - required String? tabId, - required int? lastAccess, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.updateLastAccess$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId, lastAccess], + Future updateLastAccess({required String? tabId, required int? lastAccess}) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.updateLastAccess$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId, lastAccess]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3215,17 +3304,13 @@ class GeckoSessionApi { } Future requestScreenshot(bool sendBack) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.requestScreenshot$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [sendBack], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.requestScreenshot$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([sendBack]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3246,50 +3331,23 @@ class GeckoTabsApi { /// Constructor for [GeckoTabsApi]. 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. - GeckoTabsApi({ - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + GeckoTabsApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); final String pigeonVar_messageChannelSuffix; - Future syncEvents({ - required bool onSelectedTabChange, - required bool onTabListChange, - required bool onTabContentStateChange, - required bool onIconChange, - required bool onSecurityInfoStateChange, - required bool onReaderableStateChange, - required bool onHistoryStateChange, - required bool onFindResults, - required bool onThumbnailChange, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.syncEvents$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel - .send([ - onSelectedTabChange, - onTabListChange, - onTabContentStateChange, - onIconChange, - onSecurityInfoStateChange, - onReaderableStateChange, - onHistoryStateChange, - onFindResults, - onThumbnailChange, - ]); + Future syncEvents({required bool onSelectedTabChange, required bool onTabListChange, required bool onTabContentStateChange, required bool onIconChange, required bool onSecurityInfoStateChange, required bool onReaderableStateChange, required bool onHistoryStateChange, required bool onFindResults, required bool onThumbnailChange, }) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.syncEvents$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([onSelectedTabChange, onTabListChange, onTabContentStateChange, onIconChange, onSecurityInfoStateChange, onReaderableStateChange, onHistoryStateChange, onFindResults, onThumbnailChange]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3306,17 +3364,13 @@ class GeckoTabsApi { } Future selectTab({required String tabId}) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.selectTab$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.selectTab$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3333,17 +3387,13 @@ class GeckoTabsApi { } Future removeTab({required String tabId}) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.removeTab$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.removeTab$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3359,39 +3409,14 @@ class GeckoTabsApi { } } - Future addTab({ - required String url, - required bool selectTab, - required bool startLoading, - required String? parentId, - required LoadUrlFlagsValue flags, - required String? contextId, - required SourceValue source, - required bool private, - required HistoryMetadataKey? historyMetadata, - required Map? additionalHeaders, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.addTab$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel - .send([ - url, - selectTab, - startLoading, - parentId, - flags, - contextId, - source, - private, - historyMetadata, - additionalHeaders, - ]); + Future addTab({required String url, required bool selectTab, required bool startLoading, required String? parentId, required LoadUrlFlagsValue flags, required String? contextId, required SourceValue source, required bool private, required HistoryMetadataKey? historyMetadata, required Map? additionalHeaders, }) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.addTab$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([url, selectTab, startLoading, parentId, flags, contextId, source, private, historyMetadata, additionalHeaders]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3413,17 +3438,13 @@ class GeckoTabsApi { } Future removeAllTabs({required bool recoverable}) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.removeAllTabs$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [recoverable], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.removeAllTabs$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([recoverable]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3440,17 +3461,13 @@ class GeckoTabsApi { } Future removeTabs({required List ids}) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.removeTabs$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [ids], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.removeTabs$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([ids]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3467,14 +3484,12 @@ class GeckoTabsApi { } Future removeNormalTabs() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.removeNormalTabs$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.removeNormalTabs$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; @@ -3492,14 +3507,12 @@ class GeckoTabsApi { } Future removePrivateTabs() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.removePrivateTabs$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.removePrivateTabs$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; @@ -3517,14 +3530,12 @@ class GeckoTabsApi { } Future undo() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.undo$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.undo$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; @@ -3541,22 +3552,14 @@ class GeckoTabsApi { } } - Future restoreTabsByList({ - required List tabs, - required String? selectTabId, - required RestoreLocation restoreLocation, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.restoreTabsByList$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabs, selectTabId, restoreLocation], + Future restoreTabsByList({required List tabs, required String? selectTabId, required RestoreLocation restoreLocation, }) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.restoreTabsByList$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabs, selectTabId, restoreLocation]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3572,21 +3575,14 @@ class GeckoTabsApi { } } - Future restoreTabsByBrowserState({ - required RecoverableBrowserState state, - required RestoreLocation restoreLocation, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.restoreTabsByBrowserState$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [state, restoreLocation], + Future restoreTabsByBrowserState({required RecoverableBrowserState state, required RestoreLocation restoreLocation}) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.restoreTabsByBrowserState$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([state, restoreLocation]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3604,21 +3600,14 @@ class GeckoTabsApi { /// Selects an already existing tab with the matching [HistoryMetadataKey] or otherwise /// creates a new tab with the given [url]. - Future selectOrAddTabByHistory({ - required String url, - required HistoryMetadataKey historyMetadata, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.selectOrAddTabByHistory$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [url, historyMetadata], + Future selectOrAddTabByHistory({required String url, required HistoryMetadataKey historyMetadata}) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.selectOrAddTabByHistory$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([url, historyMetadata]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3640,24 +3629,14 @@ class GeckoTabsApi { } /// Selects an already existing tab displaying [url] or otherwise creates a new tab. - Future selectOrAddTabByUrl({ - required String url, - required bool private, - required SourceValue source, - required LoadUrlFlagsValue flags, - required bool ignoreFragment, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.selectOrAddTabByUrl$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [url, private, source, flags, ignoreFragment], + Future selectOrAddTabByUrl({required String url, required bool private, required SourceValue source, required LoadUrlFlagsValue flags, required bool ignoreFragment, }) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.selectOrAddTabByUrl$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([url, private, source, flags, ignoreFragment]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3678,22 +3657,14 @@ class GeckoTabsApi { } } - Future 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 pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [selectTabId, selectNewTab, newContextId], + Future 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 pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([selectTabId, selectNewTab, newContextId]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3714,22 +3685,14 @@ class GeckoTabsApi { } } - Future moveTabs({ - required List tabIds, - required String targetTabId, - required bool placeAfter, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.moveTabs$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabIds, targetTabId, placeAfter], + Future moveTabs({required List tabIds, required String targetTabId, required bool placeAfter, }) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.moveTabs$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabIds, targetTabId, placeAfter]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3745,21 +3708,14 @@ class GeckoTabsApi { } } - Future migratePrivateTabUseCase({ - required String tabId, - required String? alternativeUrl, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.migratePrivateTabUseCase$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId, alternativeUrl], + Future migratePrivateTabUseCase({required String tabId, required String? alternativeUrl}) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.migratePrivateTabUseCase$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId, alternativeUrl]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3785,13 +3741,9 @@ class GeckoFindApi { /// Constructor for [GeckoFindApi]. 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. - GeckoFindApi({ - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + GeckoFindApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -3799,17 +3751,13 @@ class GeckoFindApi { final String pigeonVar_messageChannelSuffix; Future findAll(String? tabId, String text) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoFindApi.findAll$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId, text], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoFindApi.findAll$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId, text]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3826,17 +3774,13 @@ class GeckoFindApi { } Future findNext(String? tabId, bool forward) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoFindApi.findNext$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId, forward], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoFindApi.findNext$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId, forward]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3853,17 +3797,13 @@ class GeckoFindApi { } Future clearMatches(String? tabId) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoFindApi.clearMatches$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoFindApi.clearMatches$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3884,13 +3824,9 @@ class GeckoIconsApi { /// Constructor for [GeckoIconsApi]. 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. - GeckoIconsApi({ - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + GeckoIconsApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -3898,17 +3834,13 @@ class GeckoIconsApi { final String pigeonVar_messageChannelSuffix; Future loadIcon(IconRequest request) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoIconsApi.loadIcon$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [request], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoIconsApi.loadIcon$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([request]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3934,13 +3866,9 @@ 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' - : ''; + GeckoPrefApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -3948,17 +3876,13 @@ class GeckoPrefApi { final String pigeonVar_messageChannelSuffix; Future> getPrefs(List? preferenceFilter) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoPrefApi.getPrefs$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [preferenceFilter], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoPrefApi.getPrefs$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([preferenceFilter]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -3975,23 +3899,18 @@ class GeckoPrefApi { message: 'Host platform returned null value for non-null return value.', ); } else { - return (pigeonVar_replyList[0] as Map?)! - .cast(); + return (pigeonVar_replyList[0] as Map?)!.cast(); } } Future> applyPrefs(String prefBuffer) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoPrefApi.applyPrefs$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [prefBuffer], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoPrefApi.applyPrefs$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([prefBuffer]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -4008,23 +3927,18 @@ class GeckoPrefApi { message: 'Host platform returned null value for non-null return value.', ); } else { - return (pigeonVar_replyList[0] as Map?)! - .cast(); + return (pigeonVar_replyList[0] as Map?)!.cast(); } } Future resetPrefs(List? preferenceNames) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoPrefApi.resetPrefs$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [preferenceNames], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoPrefApi.resetPrefs$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([preferenceNames]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -4045,13 +3959,9 @@ class GeckoBrowserExtensionApi { /// Constructor for [GeckoBrowserExtensionApi]. 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. - GeckoBrowserExtensionApi({ - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + GeckoBrowserExtensionApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -4059,17 +3969,13 @@ class GeckoBrowserExtensionApi { final String pigeonVar_messageChannelSuffix; Future> getMarkdown(List htmlList) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoBrowserExtensionApi.getMarkdown$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [htmlList], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoBrowserExtensionApi.getMarkdown$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([htmlList]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -4095,13 +4001,9 @@ class GeckoContainerProxyApi { /// Constructor for [GeckoContainerProxyApi]. 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. - GeckoContainerProxyApi({ - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + GeckoContainerProxyApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -4109,17 +4011,13 @@ class GeckoContainerProxyApi { final String pigeonVar_messageChannelSuffix; Future setProxyPort(int port) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoContainerProxyApi.setProxyPort$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [port], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoContainerProxyApi.setProxyPort$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([port]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -4136,17 +4034,13 @@ class GeckoContainerProxyApi { } Future addContainerProxy(String contextId) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoContainerProxyApi.addContainerProxy$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [contextId], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoContainerProxyApi.addContainerProxy$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([contextId]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -4163,17 +4057,13 @@ class GeckoContainerProxyApi { } Future removeContainerProxy(String contextId) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoContainerProxyApi.removeContainerProxy$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [contextId], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoContainerProxyApi.removeContainerProxy$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([contextId]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -4190,14 +4080,12 @@ class GeckoContainerProxyApi { } Future healthcheck() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoContainerProxyApi.healthcheck$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoContainerProxyApi.healthcheck$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; @@ -4224,37 +4112,23 @@ class GeckoCookieApi { /// Constructor for [GeckoCookieApi]. 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. - GeckoCookieApi({ - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + GeckoCookieApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); final String pigeonVar_messageChannelSuffix; - Future getCookie( - String? firstPartyDomain, - String name, - CookiePartitionKey? partitionKey, - String? storeId, - String url, - ) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoCookieApi.getCookie$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [firstPartyDomain, name, partitionKey, storeId, url], + Future getCookie(String? firstPartyDomain, String name, CookiePartitionKey? partitionKey, String? storeId, String url) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoCookieApi.getCookie$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([firstPartyDomain, name, partitionKey, storeId, url]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -4275,25 +4149,14 @@ class GeckoCookieApi { } } - Future> getAllCookies( - String? domain, - String? firstPartyDomain, - String? name, - CookiePartitionKey? partitionKey, - String? storeId, - String url, - ) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoCookieApi.getAllCookies$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [domain, firstPartyDomain, name, partitionKey, storeId, url], + Future> getAllCookies(String? domain, String? firstPartyDomain, String? name, CookiePartitionKey? partitionKey, String? storeId, String url) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoCookieApi.getAllCookies$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([domain, firstPartyDomain, name, partitionKey, storeId, url]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -4314,43 +4177,14 @@ class GeckoCookieApi { } } - Future setCookie( - String? domain, - int? expirationDate, - String? firstPartyDomain, - bool? httpOnly, - String? name, - CookiePartitionKey? partitionKey, - String? path, - CookieSameSiteStatus? sameSite, - bool? secure, - String? storeId, - String url, - String? value, - ) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoCookieApi.setCookie$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel - .send([ - domain, - expirationDate, - firstPartyDomain, - httpOnly, - name, - partitionKey, - path, - sameSite, - secure, - storeId, - url, - value, - ]); + Future setCookie(String? domain, int? expirationDate, String? firstPartyDomain, bool? httpOnly, String? name, CookiePartitionKey? partitionKey, String? path, CookieSameSiteStatus? sameSite, bool? secure, String? storeId, String url, String? value) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoCookieApi.setCookie$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([domain, expirationDate, firstPartyDomain, httpOnly, name, partitionKey, path, sameSite, secure, storeId, url, value]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -4366,24 +4200,14 @@ class GeckoCookieApi { } } - Future removeCookie( - String? firstPartyDomain, - String name, - CookiePartitionKey? partitionKey, - String? storeId, - String url, - ) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoCookieApi.removeCookie$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [firstPartyDomain, name, partitionKey, storeId, url], + Future removeCookie(String? firstPartyDomain, String name, CookiePartitionKey? partitionKey, String? storeId, String url) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoCookieApi.removeCookie$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([firstPartyDomain, name, partitionKey, storeId, url]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -4421,11 +4245,7 @@ abstract class GeckoStateEvents { void onReaderableStateChange(int timestamp, String id, ReaderableState state); - void onSecurityInfoStateChange( - int timestamp, - String id, - SecurityInfoState state, - ); + void onSecurityInfoStateChange(int timestamp, String id, SecurityInfoState state); void onIconChange(int timestamp, String id, Uint8List? bytes); @@ -4435,586 +4255,414 @@ abstract class GeckoStateEvents { void onLongPress(int timestamp, String id, HitResult hitResult); - static void setUp( - GeckoStateEvents? api, { - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) { - messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + static void setUp(GeckoStateEvents? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { + messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onViewReadyStateChange$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onViewReadyStateChange$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onViewReadyStateChange was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onViewReadyStateChange was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onViewReadyStateChange was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onViewReadyStateChange was null, expected non-null int.'); final bool? arg_state = (args[1] as bool?); - assert( - arg_state != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onViewReadyStateChange was null, expected non-null bool.', - ); + assert(arg_state != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onViewReadyStateChange was null, expected non-null bool.'); try { api.onViewReadyStateChange(arg_timestamp!, arg_state!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onEngineReadyStateChange$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onEngineReadyStateChange$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onEngineReadyStateChange was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onEngineReadyStateChange was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onEngineReadyStateChange was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onEngineReadyStateChange was null, expected non-null int.'); final bool? arg_state = (args[1] as bool?); - assert( - arg_state != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onEngineReadyStateChange was null, expected non-null bool.', - ); + assert(arg_state != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onEngineReadyStateChange was null, expected non-null bool.'); try { api.onEngineReadyStateChange(arg_timestamp!, arg_state!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconUpdate$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconUpdate$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconUpdate was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconUpdate was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconUpdate was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconUpdate was null, expected non-null int.'); final String? arg_url = (args[1] as String?); - assert( - arg_url != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconUpdate was null, expected non-null String.', - ); + assert(arg_url != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconUpdate was null, expected non-null String.'); final Uint8List? arg_bytes = (args[2] as Uint8List?); - assert( - arg_bytes != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconUpdate was null, expected non-null Uint8List.', - ); + assert(arg_bytes != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconUpdate was null, expected non-null Uint8List.'); try { api.onIconUpdate(arg_timestamp!, arg_url!, arg_bytes!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabAdded$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabAdded$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabAdded was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabAdded was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabAdded was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabAdded was null, expected non-null int.'); final String? arg_tabId = (args[1] as String?); - assert( - arg_tabId != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabAdded was null, expected non-null String.', - ); + assert(arg_tabId != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabAdded was null, expected non-null String.'); try { api.onTabAdded(arg_timestamp!, arg_tabId!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabListChange$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabListChange$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabListChange was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabListChange was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabListChange was null, expected non-null int.', - ); - final List? arg_tabIds = (args[1] as List?) - ?.cast(); - assert( - arg_tabIds != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabListChange was null, expected non-null List.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabListChange was null, expected non-null int.'); + final List? arg_tabIds = (args[1] as List?)?.cast(); + assert(arg_tabIds != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabListChange was null, expected non-null List.'); try { api.onTabListChange(arg_timestamp!, arg_tabIds!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSelectedTabChange$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSelectedTabChange$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSelectedTabChange was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSelectedTabChange was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSelectedTabChange was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSelectedTabChange was null, expected non-null int.'); final String? arg_id = (args[1] as String?); try { api.onSelectedTabChange(arg_timestamp!, arg_id); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabContentStateChange$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabContentStateChange$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabContentStateChange was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabContentStateChange was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabContentStateChange was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabContentStateChange was null, expected non-null int.'); final TabContentState? arg_state = (args[1] as TabContentState?); - assert( - arg_state != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabContentStateChange was null, expected non-null TabContentState.', - ); + assert(arg_state != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabContentStateChange was null, expected non-null TabContentState.'); try { api.onTabContentStateChange(arg_timestamp!, arg_state!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onHistoryStateChange$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onHistoryStateChange$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onHistoryStateChange was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onHistoryStateChange was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onHistoryStateChange was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onHistoryStateChange was null, expected non-null int.'); final String? arg_id = (args[1] as String?); - assert( - arg_id != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onHistoryStateChange was null, expected non-null String.', - ); + assert(arg_id != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onHistoryStateChange was null, expected non-null String.'); final HistoryState? arg_state = (args[2] as HistoryState?); - assert( - arg_state != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onHistoryStateChange was null, expected non-null HistoryState.', - ); + assert(arg_state != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onHistoryStateChange was null, expected non-null HistoryState.'); try { api.onHistoryStateChange(arg_timestamp!, arg_id!, arg_state!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onReaderableStateChange$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onReaderableStateChange$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onReaderableStateChange was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onReaderableStateChange was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onReaderableStateChange was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onReaderableStateChange was null, expected non-null int.'); final String? arg_id = (args[1] as String?); - assert( - arg_id != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onReaderableStateChange was null, expected non-null String.', - ); + assert(arg_id != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onReaderableStateChange was null, expected non-null String.'); final ReaderableState? arg_state = (args[2] as ReaderableState?); - assert( - arg_state != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onReaderableStateChange was null, expected non-null ReaderableState.', - ); + assert(arg_state != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onReaderableStateChange was null, expected non-null ReaderableState.'); try { api.onReaderableStateChange(arg_timestamp!, arg_id!, arg_state!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSecurityInfoStateChange$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSecurityInfoStateChange$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSecurityInfoStateChange was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSecurityInfoStateChange was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSecurityInfoStateChange was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSecurityInfoStateChange was null, expected non-null int.'); final String? arg_id = (args[1] as String?); - assert( - arg_id != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSecurityInfoStateChange was null, expected non-null String.', - ); + assert(arg_id != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSecurityInfoStateChange was null, expected non-null String.'); final SecurityInfoState? arg_state = (args[2] as SecurityInfoState?); - assert( - arg_state != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSecurityInfoStateChange was null, expected non-null SecurityInfoState.', - ); + assert(arg_state != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onSecurityInfoStateChange was null, expected non-null SecurityInfoState.'); try { api.onSecurityInfoStateChange(arg_timestamp!, arg_id!, arg_state!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconChange$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconChange$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconChange was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconChange was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconChange was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconChange was null, expected non-null int.'); final String? arg_id = (args[1] as String?); - assert( - arg_id != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconChange was null, expected non-null String.', - ); + assert(arg_id != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onIconChange was null, expected non-null String.'); final Uint8List? arg_bytes = (args[2] as Uint8List?); try { api.onIconChange(arg_timestamp!, arg_id!, arg_bytes); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onThumbnailChange$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onThumbnailChange$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onThumbnailChange was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onThumbnailChange was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onThumbnailChange was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onThumbnailChange was null, expected non-null int.'); final String? arg_id = (args[1] as String?); - assert( - arg_id != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onThumbnailChange was null, expected non-null String.', - ); + assert(arg_id != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onThumbnailChange was null, expected non-null String.'); final Uint8List? arg_bytes = (args[2] as Uint8List?); try { api.onThumbnailChange(arg_timestamp!, arg_id!, arg_bytes); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onFindResults$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onFindResults$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onFindResults was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onFindResults was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onFindResults was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onFindResults was null, expected non-null int.'); final String? arg_id = (args[1] as String?); - assert( - arg_id != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onFindResults was null, expected non-null String.', - ); - final List? arg_results = (args[2] as List?) - ?.cast(); - assert( - arg_results != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onFindResults was null, expected non-null List.', - ); + assert(arg_id != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onFindResults was null, expected non-null String.'); + final List? arg_results = (args[2] as List?)?.cast(); + assert(arg_results != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onFindResults was null, expected non-null List.'); try { api.onFindResults(arg_timestamp!, arg_id!, arg_results!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onLongPress$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onLongPress$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onLongPress was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onLongPress was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onLongPress was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onLongPress was null, expected non-null int.'); final String? arg_id = (args[1] as String?); - assert( - arg_id != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onLongPress was null, expected non-null String.', - ); + assert(arg_id != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onLongPress was null, expected non-null String.'); final HitResult? arg_hitResult = (args[2] as HitResult?); - assert( - arg_hitResult != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onLongPress was null, expected non-null HitResult.', - ); + assert(arg_hitResult != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onLongPress was null, expected non-null HitResult.'); try { api.onLongPress(arg_timestamp!, arg_id!, arg_hitResult!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } @@ -5026,13 +4674,9 @@ class ReaderViewEvents { /// Constructor for [ReaderViewEvents]. 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. - ReaderViewEvents({ - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + ReaderViewEvents({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -5040,17 +4684,13 @@ class ReaderViewEvents { final String pigeonVar_messageChannelSuffix; Future onToggleReaderView(bool enable) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.ReaderViewEvents.onToggleReaderView$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [enable], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.ReaderViewEvents.onToggleReaderView$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([enable]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -5067,14 +4707,12 @@ class ReaderViewEvents { } Future onAppearanceButtonTap() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.ReaderViewEvents.onAppearanceButtonTap$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.ReaderViewEvents.onAppearanceButtonTap$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; @@ -5097,49 +4735,32 @@ abstract class ReaderViewController { void appearanceButtonVisibility(int timestamp, bool visible); - static void setUp( - ReaderViewController? api, { - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) { - messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + static void setUp(ReaderViewController? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { + messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.ReaderViewController.appearanceButtonVisibility$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.ReaderViewController.appearanceButtonVisibility$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.ReaderViewController.appearanceButtonVisibility was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.ReaderViewController.appearanceButtonVisibility was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.ReaderViewController.appearanceButtonVisibility was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.ReaderViewController.appearanceButtonVisibility was null, expected non-null int.'); final bool? arg_visible = (args[1] as bool?); - assert( - arg_visible != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.ReaderViewController.appearanceButtonVisibility was null, expected non-null bool.', - ); + assert(arg_visible != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.ReaderViewController.appearanceButtonVisibility was null, expected non-null bool.'); try { api.appearanceButtonVisibility(arg_timestamp!, arg_visible!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } @@ -5151,13 +4772,9 @@ class GeckoSelectionActionController { /// Constructor for [GeckoSelectionActionController]. 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. - GeckoSelectionActionController({ - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + GeckoSelectionActionController({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -5165,17 +4782,13 @@ class GeckoSelectionActionController { final String pigeonVar_messageChannelSuffix; Future setActions(List actions) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSelectionActionController.setActions$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [actions], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSelectionActionController.setActions$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([actions]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -5197,49 +4810,32 @@ abstract class GeckoSelectionActionEvents { void performSelectionAction(String id, String selectedText); - static void setUp( - GeckoSelectionActionEvents? api, { - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) { - messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + static void setUp(GeckoSelectionActionEvents? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { + messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSelectionActionEvents.performSelectionAction$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSelectionActionEvents.performSelectionAction$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoSelectionActionEvents.performSelectionAction was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoSelectionActionEvents.performSelectionAction was null.'); final List args = (message as List?)!; final String? arg_id = (args[0] as String?); - assert( - arg_id != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoSelectionActionEvents.performSelectionAction was null, expected non-null String.', - ); + assert(arg_id != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoSelectionActionEvents.performSelectionAction was null, expected non-null String.'); final String? arg_selectedText = (args[1] as String?); - assert( - arg_selectedText != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoSelectionActionEvents.performSelectionAction was null, expected non-null String.', - ); + assert(arg_selectedText != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoSelectionActionEvents.performSelectionAction was null, expected non-null String.'); try { api.performSelectionAction(arg_id!, arg_selectedText!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } @@ -5251,13 +4847,9 @@ class GeckoAddonsApi { /// Constructor for [GeckoAddonsApi]. 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. - GeckoAddonsApi({ - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + GeckoAddonsApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -5265,14 +4857,12 @@ class GeckoAddonsApi { final String pigeonVar_messageChannelSuffix; Future startAddonManagerActivity() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonsApi.startAddonManagerActivity$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonsApi.startAddonManagerActivity$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; @@ -5289,21 +4879,14 @@ class GeckoAddonsApi { } } - Future invokeAddonAction( - String extensionId, - WebExtensionActionType actionType, - ) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonsApi.invokeAddonAction$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [extensionId, actionType], + Future invokeAddonAction(String extensionId, WebExtensionActionType actionType) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonsApi.invokeAddonAction$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([extensionId, actionType]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -5320,17 +4903,13 @@ class GeckoAddonsApi { } Future installAddon(String url) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonsApi.installAddon$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [url], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonsApi.installAddon$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([url]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -5350,190 +4929,109 @@ class GeckoAddonsApi { abstract class GeckoAddonEvents { static const MessageCodec pigeonChannelCodec = _PigeonCodec(); - void onUpsertWebExtensionAction( - int timestamp, - String extensionId, - WebExtensionActionType actionType, - WebExtensionData extensionData, - ); + void onUpsertWebExtensionAction(int timestamp, String extensionId, WebExtensionActionType actionType, WebExtensionData extensionData); - void onRemoveWebExtensionAction( - int timestamp, - String extensionId, - WebExtensionActionType actionType, - ); + void onRemoveWebExtensionAction(int timestamp, String extensionId, WebExtensionActionType actionType); - void onUpdateWebExtensionIcon( - int timestamp, - String extensionId, - WebExtensionActionType actionType, - Uint8List icon, - ); + void onUpdateWebExtensionIcon(int timestamp, String extensionId, WebExtensionActionType actionType, Uint8List icon); - static void setUp( - GeckoAddonEvents? api, { - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) { - messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + static void setUp(GeckoAddonEvents? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { + messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpsertWebExtensionAction$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpsertWebExtensionAction$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpsertWebExtensionAction was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpsertWebExtensionAction was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpsertWebExtensionAction was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpsertWebExtensionAction was null, expected non-null int.'); final String? arg_extensionId = (args[1] as String?); - assert( - arg_extensionId != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpsertWebExtensionAction was null, expected non-null String.', - ); - final WebExtensionActionType? arg_actionType = - (args[2] as WebExtensionActionType?); - assert( - arg_actionType != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpsertWebExtensionAction was null, expected non-null WebExtensionActionType.', - ); - final WebExtensionData? arg_extensionData = - (args[3] as WebExtensionData?); - assert( - arg_extensionData != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpsertWebExtensionAction was null, expected non-null WebExtensionData.', - ); + assert(arg_extensionId != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpsertWebExtensionAction was null, expected non-null String.'); + final WebExtensionActionType? arg_actionType = (args[2] as WebExtensionActionType?); + assert(arg_actionType != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpsertWebExtensionAction was null, expected non-null WebExtensionActionType.'); + final WebExtensionData? arg_extensionData = (args[3] as WebExtensionData?); + assert(arg_extensionData != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpsertWebExtensionAction was null, expected non-null WebExtensionData.'); try { - api.onUpsertWebExtensionAction( - arg_timestamp!, - arg_extensionId!, - arg_actionType!, - arg_extensionData!, - ); + api.onUpsertWebExtensionAction(arg_timestamp!, arg_extensionId!, arg_actionType!, arg_extensionData!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onRemoveWebExtensionAction$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onRemoveWebExtensionAction$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onRemoveWebExtensionAction was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onRemoveWebExtensionAction was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onRemoveWebExtensionAction was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onRemoveWebExtensionAction was null, expected non-null int.'); final String? arg_extensionId = (args[1] as String?); - assert( - arg_extensionId != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onRemoveWebExtensionAction was null, expected non-null String.', - ); - final WebExtensionActionType? arg_actionType = - (args[2] as WebExtensionActionType?); - assert( - arg_actionType != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onRemoveWebExtensionAction was null, expected non-null WebExtensionActionType.', - ); + assert(arg_extensionId != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onRemoveWebExtensionAction was null, expected non-null String.'); + final WebExtensionActionType? arg_actionType = (args[2] as WebExtensionActionType?); + assert(arg_actionType != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onRemoveWebExtensionAction was null, expected non-null WebExtensionActionType.'); try { - api.onRemoveWebExtensionAction( - arg_timestamp!, - arg_extensionId!, - arg_actionType!, - ); + api.onRemoveWebExtensionAction(arg_timestamp!, arg_extensionId!, arg_actionType!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpdateWebExtensionIcon$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpdateWebExtensionIcon$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpdateWebExtensionIcon was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpdateWebExtensionIcon was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpdateWebExtensionIcon was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpdateWebExtensionIcon was null, expected non-null int.'); final String? arg_extensionId = (args[1] as String?); - assert( - arg_extensionId != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpdateWebExtensionIcon was null, expected non-null String.', - ); - final WebExtensionActionType? arg_actionType = - (args[2] as WebExtensionActionType?); - assert( - arg_actionType != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpdateWebExtensionIcon was null, expected non-null WebExtensionActionType.', - ); + assert(arg_extensionId != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpdateWebExtensionIcon was null, expected non-null String.'); + final WebExtensionActionType? arg_actionType = (args[2] as WebExtensionActionType?); + assert(arg_actionType != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpdateWebExtensionIcon was null, expected non-null WebExtensionActionType.'); final Uint8List? arg_icon = (args[3] as Uint8List?); - assert( - arg_icon != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpdateWebExtensionIcon was null, expected non-null Uint8List.', - ); + assert(arg_icon != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoAddonEvents.onUpdateWebExtensionIcon was null, expected non-null Uint8List.'); try { - api.onUpdateWebExtensionIcon( - arg_timestamp!, - arg_extensionId!, - arg_actionType!, - arg_icon!, - ); + api.onUpdateWebExtensionIcon(arg_timestamp!, arg_extensionId!, arg_actionType!, arg_icon!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } @@ -5545,13 +5043,9 @@ class GeckoSuggestionApi { /// Constructor for [GeckoSuggestionApi]. 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. - GeckoSuggestionApi({ - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + GeckoSuggestionApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -5559,17 +5053,13 @@ class GeckoSuggestionApi { final String pigeonVar_messageChannelSuffix; Future getAutocompleteSuggestion(String query) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSuggestionApi.getAutocompleteSuggestion$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [query], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSuggestionApi.getAutocompleteSuggestion$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([query]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -5585,21 +5075,14 @@ class GeckoSuggestionApi { } } - Future querySuggestions( - String text, - List providers, - ) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSuggestionApi.querySuggestions$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [text, providers], + Future querySuggestions(String text, List providers) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSuggestionApi.querySuggestions$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([text, providers]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -5619,66 +5102,37 @@ class GeckoSuggestionApi { abstract class GeckoSuggestionEvents { static const MessageCodec pigeonChannelCodec = _PigeonCodec(); - void onSuggestionResult( - int timestamp, - GeckoSuggestionType suggestionType, - List suggestions, - ); + void onSuggestionResult(int timestamp, GeckoSuggestionType suggestionType, List suggestions); - static void setUp( - GeckoSuggestionEvents? api, { - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) { - messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + static void setUp(GeckoSuggestionEvents? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { + messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSuggestionEvents.onSuggestionResult$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSuggestionEvents.onSuggestionResult$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoSuggestionEvents.onSuggestionResult was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoSuggestionEvents.onSuggestionResult was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoSuggestionEvents.onSuggestionResult was null, expected non-null int.', - ); - final GeckoSuggestionType? arg_suggestionType = - (args[1] as GeckoSuggestionType?); - assert( - arg_suggestionType != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoSuggestionEvents.onSuggestionResult was null, expected non-null GeckoSuggestionType.', - ); - final List? arg_suggestions = - (args[2] as List?)?.cast(); - assert( - arg_suggestions != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoSuggestionEvents.onSuggestionResult was null, expected non-null List.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoSuggestionEvents.onSuggestionResult was null, expected non-null int.'); + final GeckoSuggestionType? arg_suggestionType = (args[1] as GeckoSuggestionType?); + assert(arg_suggestionType != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoSuggestionEvents.onSuggestionResult was null, expected non-null GeckoSuggestionType.'); + final List? arg_suggestions = (args[2] as List?)?.cast(); + assert(arg_suggestions != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoSuggestionEvents.onSuggestionResult was null, expected non-null List.'); try { - api.onSuggestionResult( - arg_timestamp!, - arg_suggestionType!, - arg_suggestions!, - ); + api.onSuggestionResult(arg_timestamp!, arg_suggestionType!, arg_suggestions!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } @@ -5691,49 +5145,32 @@ abstract class GeckoTabContentEvents { void onContentUpdate(int timestamp, TabContent content); - static void setUp( - GeckoTabContentEvents? api, { - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) { - messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + static void setUp(GeckoTabContentEvents? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { + messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabContentEvents.onContentUpdate$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabContentEvents.onContentUpdate$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoTabContentEvents.onContentUpdate was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoTabContentEvents.onContentUpdate was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoTabContentEvents.onContentUpdate was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoTabContentEvents.onContentUpdate was null, expected non-null int.'); final TabContent? arg_content = (args[1] as TabContent?); - assert( - arg_content != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoTabContentEvents.onContentUpdate was null, expected non-null TabContent.', - ); + assert(arg_content != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoTabContentEvents.onContentUpdate was null, expected non-null TabContent.'); try { api.onContentUpdate(arg_timestamp!, arg_content!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } @@ -5745,13 +5182,9 @@ 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' - : ''; + GeckoDeleteBrowsingDataController({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -5759,14 +5192,12 @@ class GeckoDeleteBrowsingDataController { final String pigeonVar_messageChannelSuffix; Future deleteTabs() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteTabs$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteTabs$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; @@ -5784,14 +5215,12 @@ class GeckoDeleteBrowsingDataController { } Future deleteBrowsingHistory() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteBrowsingHistory$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteBrowsingHistory$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; @@ -5809,14 +5238,12 @@ class GeckoDeleteBrowsingDataController { } Future deleteCookiesAndSiteData() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteCookiesAndSiteData$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteCookiesAndSiteData$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; @@ -5834,14 +5261,12 @@ class GeckoDeleteBrowsingDataController { } Future deleteCachedFiles() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteCachedFiles$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteCachedFiles$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; @@ -5859,14 +5284,12 @@ class GeckoDeleteBrowsingDataController { } Future deleteSitePermissions() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteSitePermissions$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteSitePermissions$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; @@ -5884,14 +5307,12 @@ class GeckoDeleteBrowsingDataController { } Future deleteDownloads() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteDownloads$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDeleteBrowsingDataController.deleteDownloads$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); final Future pigeonVar_sendFuture = pigeonVar_channel.send(null); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; @@ -5913,13 +5334,9 @@ class GeckoDownloadsApi { /// Constructor for [GeckoDownloadsApi]. 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. - GeckoDownloadsApi({ - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + GeckoDownloadsApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + : pigeonVar_binaryMessenger = binaryMessenger, + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -5927,17 +5344,13 @@ class GeckoDownloadsApi { final String pigeonVar_messageChannelSuffix; Future requestDownload(String tabId, DownloadState state) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDownloadsApi.requestDownload$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId, state], + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDownloadsApi.requestDownload$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId, state]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -5953,21 +5366,14 @@ class GeckoDownloadsApi { } } - Future copyInternetResource( - String tabId, - ShareInternetResourceState state, - ) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDownloadsApi.copyInternetResource$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId, state], + Future copyInternetResource(String tabId, ShareInternetResourceState state) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDownloadsApi.copyInternetResource$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId, state]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -5983,21 +5389,14 @@ class GeckoDownloadsApi { } } - Future shareInternetResource( - String tabId, - ShareInternetResourceState state, - ) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDownloadsApi.shareInternetResource$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( - pigeonVar_channelName, - pigeonChannelCodec, - binaryMessenger: pigeonVar_binaryMessenger, - ); - final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [tabId, state], + Future shareInternetResource(String tabId, ShareInternetResourceState state) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoDownloadsApi.shareInternetResource$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([tabId, state]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -6019,49 +5418,32 @@ abstract class BrowserExtensionEvents { void onFeedRequested(int timestamp, String url); - static void setUp( - BrowserExtensionEvents? api, { - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) { - messageChannelSuffix = messageChannelSuffix.isNotEmpty - ? '.$messageChannelSuffix' - : ''; + static void setUp(BrowserExtensionEvents? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { + messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel - pigeonVar_channel = BasicMessageChannel( - 'dev.flutter.pigeon.flutter_mozilla_components.BrowserExtensionEvents.onFeedRequested$messageChannelSuffix', - pigeonChannelCodec, - binaryMessenger: binaryMessenger, - ); + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.flutter_mozilla_components.BrowserExtensionEvents.onFeedRequested$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.BrowserExtensionEvents.onFeedRequested was null.', - ); + assert(message != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.BrowserExtensionEvents.onFeedRequested was null.'); final List args = (message as List?)!; final int? arg_timestamp = (args[0] as int?); - assert( - arg_timestamp != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.BrowserExtensionEvents.onFeedRequested was null, expected non-null int.', - ); + assert(arg_timestamp != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.BrowserExtensionEvents.onFeedRequested was null, expected non-null int.'); final String? arg_url = (args[1] as String?); - assert( - arg_url != null, - 'Argument for dev.flutter.pigeon.flutter_mozilla_components.BrowserExtensionEvents.onFeedRequested was null, expected non-null String.', - ); + assert(arg_url != null, + 'Argument for dev.flutter.pigeon.flutter_mozilla_components.BrowserExtensionEvents.onFeedRequested was null, expected non-null String.'); try { api.onFeedRequested(arg_timestamp!, arg_url!); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString()), - ); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } diff --git a/packages/flutter_mozilla_components/pigeons/gecko.dart b/packages/flutter_mozilla_components/pigeons/gecko.dart index cd4cdd79..bac88e4f 100644 --- a/packages/flutter_mozilla_components/pigeons/gecko.dart +++ b/packages/flutter_mozilla_components/pigeons/gecko.dart @@ -419,6 +419,7 @@ class SecurityInfoState { class TabContentState { final String id; + final String? parentId; final String? contextId; final String url; @@ -432,6 +433,7 @@ class TabContentState { TabContentState( this.id, + this.parentId, this.contextId, this.url, this.title,