everything build but untested & migration not finished
This commit is contained in:
+14
@@ -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(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user