everything build but untested & migration not finished

This commit is contained in:
Fabian Freund
2024-10-09 13:27:42 +02:00
parent 37d2c84d7f
commit 2c71eeb670
132 changed files with 3790 additions and 2817 deletions
@@ -1,19 +1,22 @@
export 'src/geckoview_widget.dart';
//export 'src/domain/services/gecko_browser.dart';
export 'src/data/models/load_url_flags.dart';
export 'src/data/models/source.dart';
export 'src/domain/services/gecko_cookie.dart';
export 'src/domain/services/gecko_engine_settings.dart';
export 'src/domain/services/gecko_event.dart';
export 'src/domain/services/gecko_find_in_page.dart';
export 'src/domain/services/gecko_icon.dart';
export 'src/domain/services/gecko_readerable.dart';
export 'src/domain/services/gecko_session.dart';
export 'src/domain/services/gecko_tab.dart';
export 'src/domain/services/gecko_icon.dart';
export 'src/domain/services/gecko_cookie.dart';
export 'src/domain/services/gecko_event.dart';
export 'src/geckoview_widget.dart';
export 'src/pigeons/gecko.g.dart'
show
Resource,
IconType,
ResourceSize,
IconSource,
CookieSameSiteStatus,
TabContentState,
HistoryMetadataKey,
IconSource,
IconType,
Resource,
ResourceSize,
SecurityInfoState,
HistoryMetadataKey;
TabContentState;
@@ -39,8 +39,8 @@ class LoadUrlFlags {
ALLOW_JAVASCRIPT_URL.value,
);
static LoadUrlFlags select(List<LoadUrlFlags> flags) {
int combinedValue = flags.fold(0, (sum, flag) => sum | flag.value);
factory LoadUrlFlags.select(List<LoadUrlFlags> flags) {
final combinedValue = flags.fold(0, (sum, flag) => sum | flag.value);
return LoadUrlFlags._(combinedValue);
}
}
@@ -38,11 +38,15 @@ abstract class Source {
/// Initializes a [Source] of a correct type from its component properties.
/// Intended use is for restoring persisted state.
static Source restore(
int? sourceId, String? packageId, int? packageCategory) {
int? sourceId,
String? packageId,
int? packageCategory,
) {
final caller = packageId != null
? ExternalPackage(
packageId: packageId,
category: PackageCategory.fromInt(packageCategory).toValue())
category: PackageCategory.fromInt(packageCategory).toValue(),
)
: null;
switch (sourceId) {
@@ -0,0 +1,14 @@
import 'package:flutter_mozilla_components/src/pigeons/gecko.g.dart';
final _apiInstance = GeckoEngineSettingsApi();
class GeckoEngineSettingsService {
final GeckoEngineSettingsApi _api;
GeckoEngineSettingsService({GeckoEngineSettingsApi? api})
: _api = api ?? _apiInstance;
Future<void> javaScriptEnabled(bool state) {
return _api.javaScriptEnabled(state);
}
}
@@ -8,6 +8,7 @@ typedef ReaderableEvent = ({String tabId, ReaderableState readerable});
typedef SecurityInfoEvent = ({String tabId, SecurityInfoState securityInfo});
typedef IconEvent = ({String tabId, Uint8List? bytes});
typedef ThumbnailEvent = ({String tabId, Uint8List? bytes});
typedef FindResultsEvent = ({String tabId, List<FindResultState> results});
class GeckoEventService extends GeckoStateEvents {
// Stream controllers
@@ -20,6 +21,7 @@ class GeckoEventService extends GeckoStateEvents {
StreamController<SecurityInfoEvent>.broadcast();
final _iconController = StreamController<IconEvent>.broadcast();
final _thumbnailController = StreamController<ThumbnailEvent>.broadcast();
final _findResultsController = StreamController<FindResultsEvent>.broadcast();
// Event streams
Stream<List<String>> get tabListEvents => _tabListController.stream;
@@ -31,6 +33,8 @@ class GeckoEventService extends GeckoStateEvents {
_securityInfoController.stream;
Stream<IconEvent> get iconEvents => _iconController.stream;
Stream<ThumbnailEvent> get thumbnailEvents => _thumbnailController.stream;
Stream<FindResultsEvent> get findResultsEvent =>
_findResultsController.stream;
// Overridden methods
@override
@@ -73,21 +77,31 @@ class GeckoEventService extends GeckoStateEvents {
_thumbnailController.add((tabId: id, bytes: bytes));
}
@override
void onFindResults(String id, List<FindResultState?> results) {
_findResultsController.add((tabId: id, results: results.nonNulls.toList()));
}
GeckoEventService.setUp({
BinaryMessenger? binaryMessenger,
String messageChannelSuffix = '',
}) {
GeckoStateEvents.setUp(this);
GeckoStateEvents.setUp(
this,
binaryMessenger: binaryMessenger,
messageChannelSuffix: messageChannelSuffix,
);
}
void dispose() {
_tabListController.close();
_selectedTabController.close();
_tabContentController.close();
_historyController.close();
_readerableController.close();
_securityInfoController.close();
_iconController.close();
_thumbnailController.close();
unawaited(_tabListController.close());
unawaited(_selectedTabController.close());
unawaited(_tabContentController.close());
unawaited(_historyController.close());
unawaited(_readerableController.close());
unawaited(_securityInfoController.close());
unawaited(_iconController.close());
unawaited(_thumbnailController.close());
unawaited(_findResultsController.close());
}
}
@@ -0,0 +1,27 @@
import 'package:flutter_mozilla_components/src/pigeons/gecko.g.dart';
final _apiInstance = GeckoFindApi();
class GeckoFindInPageService {
final GeckoFindApi _api;
final String? tabId;
GeckoFindInPageService({required this.tabId, GeckoFindApi? api})
: _api = api ?? _apiInstance;
GeckoFindInPageService.forActiveTab({GeckoFindApi? api})
: _api = api ?? _apiInstance,
tabId = null;
Future<void> findAll(String text) {
return _api.findAll(tabId, text);
}
Future<void> findNext(bool forward) {
return _api.findNext(tabId, forward);
}
Future<void> clearMatches() {
return _api.clearMatches(tabId);
}
}
@@ -7,14 +7,18 @@ class GeckoIconService {
GeckoIconService({GeckoIconsApi? api}) : _api = api ?? _apiInstance;
Future<IconResult> loadIcon(
{required Uri url, List<Resource> resources = const []}) async {
return _api.loadIcon(IconRequest(
url: url.toString(),
size: IconSize.defaultSize,
resources: resources,
isPrivate: false,
waitOnNetworkLoad: true,
));
Future<IconResult> loadIcon({
required Uri url,
List<Resource> resources = const [],
}) async {
return _api.loadIcon(
IconRequest(
url: url.toString(),
size: IconSize.defaultSize,
resources: resources,
isPrivate: false,
waitOnNetworkLoad: true,
),
);
}
}
@@ -0,0 +1,53 @@
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter_mozilla_components/src/pigeons/gecko.g.dart';
class GeckoReaderableService extends ReaderViewController {
final ReaderViewEvents _events;
final _appearanceVisibility = StreamController<bool>.broadcast();
final _readerVisibility = StreamController<bool>.broadcast();
Stream<bool> get appearanceVisibility => _appearanceVisibility.stream;
Stream<bool> get readerVisibility => _readerVisibility.stream;
Future<void> toggleReaderView(bool enable) {
return _events.onToggleReaderView(enable);
}
Future<void> onAppearanceButtonTap() {
return _events.onAppearanceButtonTap();
}
@override
void appearanceButtonVisibility(bool visible) {
_appearanceVisibility.add(visible);
}
@override
void readerViewButtonVisibility(bool visible) {
_readerVisibility.add(visible);
}
GeckoReaderableService.setUp({
ReaderViewEvents? readerEvents,
BinaryMessenger? binaryMessenger,
String messageChannelSuffix = '',
}) : _events = readerEvents ??
ReaderViewEvents(
binaryMessenger: binaryMessenger,
messageChannelSuffix: messageChannelSuffix,
) {
ReaderViewController.setUp(
this,
binaryMessenger: binaryMessenger,
messageChannelSuffix: messageChannelSuffix,
);
}
void dispose() {
unawaited(_appearanceVisibility.close());
unawaited(_readerVisibility.close());
}
}
@@ -7,13 +7,13 @@ class GeckoSessionService {
final String? tabId;
final GeckoSessionApi _api;
GeckoSessionService({required String this.tabId, GeckoSessionApi? api})
: _api = api ?? _apiInstance;
GeckoSessionService.forActiveTab({GeckoSessionApi? api})
: _api = api ?? _apiInstance,
tabId = null;
GeckoSessionService({required String this.tabId, GeckoSessionApi? api})
: _api = api ?? _apiInstance;
Future<void> loadUrl({
required Uri url,
LoadUrlFlags flags = LoadUrlFlags.NONE,
@@ -71,7 +71,10 @@ class GeckoTabService {
RestoreLocation restoreLocation = RestoreLocation.end,
}) {
return _api.restoreTabsByList(
tabs: tabs, selectTabId: selectTabId, restoreLocation: restoreLocation);
tabs: tabs,
selectTabId: selectTabId,
restoreLocation: restoreLocation,
);
}
Future<void> restoreTabsByBrowserState({
@@ -79,7 +82,9 @@ class GeckoTabService {
RestoreLocation restoreLocation = RestoreLocation.end,
}) {
return _api.restoreTabsByBrowserState(
state: state, restoreLocation: restoreLocation);
state: state,
restoreLocation: restoreLocation,
);
}
//The calls with engin storage for restore are not supported at the moment
@@ -91,7 +96,9 @@ class GeckoTabService {
required HistoryMetadataKey historyMetadata,
}) {
return _api.selectOrAddTabByHistory(
url: url.toString(), historyMetadata: historyMetadata);
url: url.toString(),
historyMetadata: historyMetadata,
);
}
/// Selects an already existing tab displaying [url] or otherwise creates a new tab.
@@ -116,7 +123,9 @@ class GeckoTabService {
bool selectNewTab = true,
}) {
return _api.duplicateTab(
selectTabId: selectTabId, selectNewTab: selectNewTab);
selectTabId: selectTabId,
selectNewTab: selectNewTab,
);
}
Future<void> moveTabs({
@@ -125,7 +134,10 @@ class GeckoTabService {
required bool placeAfter,
}) {
return _api.moveTabs(
tabIds: tabIds, targetTabId: targetTabId, placeAfter: placeAfter);
tabIds: tabIds,
targetTabId: targetTabId,
placeAfter: placeAfter,
);
}
Future<String> migratePrivateTabUseCase({
@@ -133,6 +145,8 @@ class GeckoTabService {
Uri? alternativeUrl,
}) {
return _api.migratePrivateTabUseCase(
tabId: tabId, alternativeUrl: alternativeUrl?.toString());
tabId: tabId,
alternativeUrl: alternativeUrl?.toString(),
);
}
}
@@ -38,6 +38,7 @@ class GeckoView extends StatelessWidget {
await GeckoBrowserService().showNativeFragment();
});
})
// ignore: discarded_futures
..create();
},
);
@@ -1,4 +1,4 @@
// Autogenerated from Pigeon (v22.3.0), do not edit directly.
// Autogenerated from Pigeon (v22.4.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
@@ -955,6 +955,37 @@ class TabContentState {
}
}
class FindResultState {
FindResultState({
required this.activeMatchOrdinal,
required this.numberOfMatches,
required this.isDoneCounting,
});
int activeMatchOrdinal;
int numberOfMatches;
bool isDoneCounting;
Object encode() {
return <Object?>[
activeMatchOrdinal,
numberOfMatches,
isDoneCounting,
];
}
static FindResultState decode(Object result) {
result as List<Object?>;
return FindResultState(
activeMatchOrdinal: result[0]! as int,
numberOfMatches: result[1]! as int,
isDoneCounting: result[2]! as bool,
);
}
}
class _PigeonCodec extends StandardMessageCodec {
const _PigeonCodec();
@@ -1044,6 +1075,9 @@ class _PigeonCodec extends StandardMessageCodec {
} else if (value is TabContentState) {
buffer.putUint8(155);
writeValue(buffer, value.encode());
} else if (value is FindResultState) {
buffer.putUint8(156);
writeValue(buffer, value.encode());
} else {
super.writeValue(buffer, value);
}
@@ -1111,6 +1145,8 @@ class _PigeonCodec extends StandardMessageCodec {
return SecurityInfoState.decode(readValue(buffer)!);
case 155:
return TabContentState.decode(readValue(buffer)!);
case 156:
return FindResultState.decode(readValue(buffer)!);
default:
return super.readValueOfType(type, buffer);
}
@@ -1153,6 +1189,42 @@ class GeckoBrowserApi {
}
}
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' : '';
final BinaryMessenger? pigeonVar_binaryMessenger;
static const MessageCodec<Object?> pigeonChannelCodec = _PigeonCodec();
final String pigeonVar_messageChannelSuffix;
Future<void> javaScriptEnabled(bool state) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoEngineSettingsApi.javaScriptEnabled$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(<Object?>[state]) as List<Object?>?;
if (pigeonVar_replyList == null) {
throw _createConnectionError(pigeonVar_channelName);
} else if (pigeonVar_replyList.length > 1) {
throw PlatformException(
code: pigeonVar_replyList[0]! as String,
message: pigeonVar_replyList[1] as String?,
details: pigeonVar_replyList[2],
);
} else {
return;
}
}
}
class GeckoSessionApi {
/// Constructor for [GeckoSessionApi]. The [binaryMessenger] named argument is
/// available for dependency injection. If it is left null, the default
@@ -1166,7 +1238,7 @@ class GeckoSessionApi {
final String pigeonVar_messageChannelSuffix;
Future<void> loadUrl({required String? tabId, required String url, required LoadUrlFlagsValue flags, required Map<String?, String?>? additionalHeaders,}) async {
Future<void> loadUrl({required String? tabId, required String url, required LoadUrlFlagsValue flags, required Map<String, String>? additionalHeaders,}) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.loadUrl$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
@@ -1452,7 +1524,7 @@ class GeckoSessionApi {
}
}
Future<void> crashRecovery({required List<String?>? tabIds}) async {
Future<void> crashRecovery({required List<String>? tabIds}) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoSessionApi.crashRecovery$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
@@ -1576,7 +1648,7 @@ class GeckoTabsApi {
}
}
Future<String> 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<String?, String?>? additionalHeaders,}) async {
Future<String> 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<String, String>? additionalHeaders,}) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.addTab$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
@@ -1625,7 +1697,7 @@ class GeckoTabsApi {
}
}
Future<void> removeTabs({required List<String?> ids}) async {
Future<void> removeTabs({required List<String> ids}) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.removeTabs$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
@@ -1713,7 +1785,7 @@ class GeckoTabsApi {
}
}
Future<void> restoreTabsByList({required List<RecoverableTab?> tabs, required String? selectTabId, required RestoreLocation restoreLocation,}) async {
Future<void> restoreTabsByList({required List<RecoverableTab> tabs, required String? selectTabId, required RestoreLocation restoreLocation,}) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.restoreTabsByList$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
@@ -1841,7 +1913,7 @@ class GeckoTabsApi {
}
}
Future<void> moveTabs({required List<String?> tabIds, required String targetTabId, required bool placeAfter,}) async {
Future<void> moveTabs({required List<String> tabIds, required String targetTabId, required bool placeAfter,}) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoTabsApi.moveTabs$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
@@ -1891,6 +1963,86 @@ class GeckoTabsApi {
}
}
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' : '';
final BinaryMessenger? pigeonVar_binaryMessenger;
static const MessageCodec<Object?> pigeonChannelCodec = _PigeonCodec();
final String pigeonVar_messageChannelSuffix;
Future<void> findAll(String? tabId, String text) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoFindApi.findAll$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(<Object?>[tabId, text]) as List<Object?>?;
if (pigeonVar_replyList == null) {
throw _createConnectionError(pigeonVar_channelName);
} else if (pigeonVar_replyList.length > 1) {
throw PlatformException(
code: pigeonVar_replyList[0]! as String,
message: pigeonVar_replyList[1] as String?,
details: pigeonVar_replyList[2],
);
} else {
return;
}
}
Future<void> findNext(String? tabId, bool forward) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoFindApi.findNext$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(<Object?>[tabId, forward]) as List<Object?>?;
if (pigeonVar_replyList == null) {
throw _createConnectionError(pigeonVar_channelName);
} else if (pigeonVar_replyList.length > 1) {
throw PlatformException(
code: pigeonVar_replyList[0]! as String,
message: pigeonVar_replyList[1] as String?,
details: pigeonVar_replyList[2],
);
} else {
return;
}
}
Future<void> clearMatches(String? tabId) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.GeckoFindApi.clearMatches$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(<Object?>[tabId]) as List<Object?>?;
if (pigeonVar_replyList == null) {
throw _createConnectionError(pigeonVar_channelName);
} else if (pigeonVar_replyList.length > 1) {
throw PlatformException(
code: pigeonVar_replyList[0]! as String,
message: pigeonVar_replyList[1] as String?,
details: pigeonVar_replyList[2],
);
} else {
return;
}
}
}
class GeckoIconsApi {
/// Constructor for [GeckoIconsApi]. The [binaryMessenger] named argument is
/// available for dependency injection. If it is left null, the default
@@ -1972,7 +2124,7 @@ class GeckoCookieApi {
}
}
Future<List<Cookie?>> getAllCookies(String? domain, String? firstPartyDomain, String? name, CookiePartitionKey? partitionKey, String? storeId, String url) async {
Future<List<Cookie>> 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<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
@@ -1995,7 +2147,7 @@ class GeckoCookieApi {
message: 'Host platform returned null value for non-null return value.',
);
} else {
return (pigeonVar_replyList[0] as List<Object?>?)!.cast<Cookie?>();
return (pigeonVar_replyList[0] as List<Object?>?)!.cast<Cookie>();
}
}
@@ -2047,7 +2199,7 @@ class GeckoCookieApi {
abstract class GeckoStateEvents {
static const MessageCodec<Object?> pigeonChannelCodec = _PigeonCodec();
void onTabListChange(List<String?> tabIds);
void onTabListChange(List<String> tabIds);
void onSelectedTabChange(String? id);
@@ -2063,6 +2215,8 @@ abstract class GeckoStateEvents {
void onThumbnailChange(String id, Uint8List? bytes);
void onFindResults(String id, List<FindResultState> results);
static void setUp(GeckoStateEvents? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) {
messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : '';
{
@@ -2076,9 +2230,9 @@ abstract class GeckoStateEvents {
assert(message != null,
'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabListChange was null.');
final List<Object?> args = (message as List<Object?>?)!;
final List<String?>? arg_tabIds = (args[0] as List<Object?>?)?.cast<String?>();
final List<String>? arg_tabIds = (args[0] as List<Object?>?)?.cast<String>();
assert(arg_tabIds != null,
'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabListChange was null, expected non-null List<String?>.');
'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onTabListChange was null, expected non-null List<String>.');
try {
api.onTabListChange(arg_tabIds!);
return wrapResponse(empty: true);
@@ -2274,5 +2428,313 @@ abstract class GeckoStateEvents {
});
}
}
{
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
'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.');
final List<Object?> args = (message as List<Object?>?)!;
final String? arg_id = (args[0] as String?);
assert(arg_id != null,
'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onFindResults was null, expected non-null String.');
final List<FindResultState>? arg_results = (args[1] as List<Object?>?)?.cast<FindResultState>();
assert(arg_results != null,
'Argument for dev.flutter.pigeon.flutter_mozilla_components.GeckoStateEvents.onFindResults was null, expected non-null List<FindResultState>.');
try {
api.onFindResults(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()));
}
});
}
}
}
}
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' : '';
final BinaryMessenger? pigeonVar_binaryMessenger;
static const MessageCodec<Object?> pigeonChannelCodec = _PigeonCodec();
final String pigeonVar_messageChannelSuffix;
Future<void> onToggleReaderView(bool enable) async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.ReaderViewEvents.onToggleReaderView$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(<Object?>[enable]) as List<Object?>?;
if (pigeonVar_replyList == null) {
throw _createConnectionError(pigeonVar_channelName);
} else if (pigeonVar_replyList.length > 1) {
throw PlatformException(
code: pigeonVar_replyList[0]! as String,
message: pigeonVar_replyList[1] as String?,
details: pigeonVar_replyList[2],
);
} else {
return;
}
}
Future<void> onAppearanceButtonTap() async {
final String pigeonVar_channelName = 'dev.flutter.pigeon.flutter_mozilla_components.ReaderViewEvents.onAppearanceButtonTap$pigeonVar_messageChannelSuffix';
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
pigeonVar_channelName,
pigeonChannelCodec,
binaryMessenger: pigeonVar_binaryMessenger,
);
final List<Object?>? pigeonVar_replyList =
await pigeonVar_channel.send(null) as List<Object?>?;
if (pigeonVar_replyList == null) {
throw _createConnectionError(pigeonVar_channelName);
} else if (pigeonVar_replyList.length > 1) {
throw PlatformException(
code: pigeonVar_replyList[0]! as String,
message: pigeonVar_replyList[1] as String?,
details: pigeonVar_replyList[2],
);
} else {
return;
}
}
}
abstract class ReaderViewController {
static const MessageCodec<Object?> pigeonChannelCodec = _PigeonCodec();
void appearanceButtonVisibility(bool visible);
void readerViewButtonVisibility(bool visible);
static void setUp(ReaderViewController? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) {
messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : '';
{
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
'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.');
final List<Object?> args = (message as List<Object?>?)!;
final bool? arg_visible = (args[0] as 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_visible!);
return wrapResponse(empty: true);
} on PlatformException catch (e) {
return wrapResponse(error: e);
} catch (e) {
return wrapResponse(error: PlatformException(code: 'error', message: e.toString()));
}
});
}
}
{
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.flutter_mozilla_components.ReaderViewController.readerViewButtonVisibility$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.readerViewButtonVisibility was null.');
final List<Object?> args = (message as List<Object?>?)!;
final bool? arg_visible = (args[0] as bool?);
assert(arg_visible != null,
'Argument for dev.flutter.pigeon.flutter_mozilla_components.ReaderViewController.readerViewButtonVisibility was null, expected non-null bool.');
try {
api.readerViewButtonVisibility(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()));
}
});
}
}
}
}
abstract class SelectionAction {
static const MessageCodec<Object?> pigeonChannelCodec = _PigeonCodec();
/// Gets Strings representing all possible selection actions.
///
/// @returns String IDs for each action that could possibly be shown in the context menu. This
/// array must include all actions, available or not, and must not change over the class lifetime.
List<String> getAllActions();
/// Checks if an action can be shown on a new selection context menu.
///
/// @returns whether or not the the custom action with the id of [id] is currently available
/// which may be informed by [selectedText].
bool isActionAvailable(String id, String selectedText);
/// Gets a title to be shown in the selection context menu.
///
/// @returns the text that should be shown on the action.
String? getActionTitle(String id);
/// Should perform the action with the id of [id].
///
/// @returns [true] if the action was consumed.
bool performAction(String id, String selectedText);
/// Takes in a list of actions and sorts them.
///
/// @returns the sorted list.
List<String> sortedActions(List<String> actions);
static void setUp(SelectionAction? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) {
messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : '';
{
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.flutter_mozilla_components.SelectionAction.getAllActions$messageChannelSuffix', pigeonChannelCodec,
binaryMessenger: binaryMessenger);
if (api == null) {
pigeonVar_channel.setMessageHandler(null);
} else {
pigeonVar_channel.setMessageHandler((Object? message) async {
try {
final List<String> output = api.getAllActions();
return wrapResponse(result: output);
} on PlatformException catch (e) {
return wrapResponse(error: e);
} catch (e) {
return wrapResponse(error: PlatformException(code: 'error', message: e.toString()));
}
});
}
}
{
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.flutter_mozilla_components.SelectionAction.isActionAvailable$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.SelectionAction.isActionAvailable was null.');
final List<Object?> args = (message as List<Object?>?)!;
final String? arg_id = (args[0] as String?);
assert(arg_id != null,
'Argument for dev.flutter.pigeon.flutter_mozilla_components.SelectionAction.isActionAvailable 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.SelectionAction.isActionAvailable was null, expected non-null String.');
try {
final bool output = api.isActionAvailable(arg_id!, arg_selectedText!);
return wrapResponse(result: output);
} on PlatformException catch (e) {
return wrapResponse(error: e);
} catch (e) {
return wrapResponse(error: PlatformException(code: 'error', message: e.toString()));
}
});
}
}
{
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.flutter_mozilla_components.SelectionAction.getActionTitle$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.SelectionAction.getActionTitle was null.');
final List<Object?> args = (message as List<Object?>?)!;
final String? arg_id = (args[0] as String?);
assert(arg_id != null,
'Argument for dev.flutter.pigeon.flutter_mozilla_components.SelectionAction.getActionTitle was null, expected non-null String.');
try {
final String? output = api.getActionTitle(arg_id!);
return wrapResponse(result: output);
} on PlatformException catch (e) {
return wrapResponse(error: e);
} catch (e) {
return wrapResponse(error: PlatformException(code: 'error', message: e.toString()));
}
});
}
}
{
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.flutter_mozilla_components.SelectionAction.performAction$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.SelectionAction.performAction was null.');
final List<Object?> args = (message as List<Object?>?)!;
final String? arg_id = (args[0] as String?);
assert(arg_id != null,
'Argument for dev.flutter.pigeon.flutter_mozilla_components.SelectionAction.performAction 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.SelectionAction.performAction was null, expected non-null String.');
try {
final bool output = api.performAction(arg_id!, arg_selectedText!);
return wrapResponse(result: output);
} on PlatformException catch (e) {
return wrapResponse(error: e);
} catch (e) {
return wrapResponse(error: PlatformException(code: 'error', message: e.toString()));
}
});
}
}
{
final BasicMessageChannel<Object?> pigeonVar_channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.flutter_mozilla_components.SelectionAction.sortedActions$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.SelectionAction.sortedActions was null.');
final List<Object?> args = (message as List<Object?>?)!;
final List<String>? arg_actions = (args[0] as List<Object?>?)?.cast<String>();
assert(arg_actions != null,
'Argument for dev.flutter.pigeon.flutter_mozilla_components.SelectionAction.sortedActions was null, expected non-null List<String>.');
try {
final List<String> output = api.sortedActions(arg_actions!);
return wrapResponse(result: output);
} on PlatformException catch (e) {
return wrapResponse(error: e);
} catch (e) {
return wrapResponse(error: PlatformException(code: 'error', message: e.toString()));
}
});
}
}
}
}