Add proxy routing and sing-box support

This commit is contained in:
Fabian Freund
2026-05-22 18:16:31 +02:00
parent 51289f1266
commit a5974617aa
262 changed files with 32003 additions and 3962 deletions
@@ -69,6 +69,7 @@ export 'src/pigeons/gecko.g.dart'
GeckoDeleteBrowsingDataController,
GeckoEngineSettings,
GeckoFetchResponse,
GeckoProxySettings,
GeckoPref,
GeckoPublicSuffixListApi,
GeckoPwaApi,
@@ -93,6 +94,7 @@ export 'src/pigeons/gecko.g.dart'
MlProgressStatus,
MlProgressType,
PhoneHitResult,
ProxyLoadError,
PwaIcon,
PwaManifest,
QueryParameterStripping,
@@ -24,6 +24,26 @@ class GeckoContainerProxyService {
return _apiInstance.removeContainerProxy(contextId);
}
Future<void> upsertProxy(GeckoProxySettings proxy) {
return _apiInstance.upsertProxy(proxy);
}
Future<void> removeProxy(String proxyId) {
return _apiInstance.removeProxy(proxyId);
}
Future<void> setContainerProxy(String contextId, String proxyId) {
return _apiInstance.setContainerProxy(contextId, proxyId);
}
Future<void> clearContainerProxy(String contextId) {
return _apiInstance.clearContainerProxy(contextId);
}
Future<void> removeContainerProxyRelation(String contextId, String proxyId) {
return _apiInstance.removeContainerProxyRelation(contextId, proxyId);
}
Future<void> setSiteAssignments(Map<String, String> assignments) {
return _apiInstance.setSiteAssignments(assignments);
}
@@ -44,6 +44,7 @@ class GeckoEventService extends GeckoStateEvents {
// final _scrollEventSubject = PublishSubject<ScrollEvent>();
final _prefUpdateSubject = PublishSubject<GeckoPref>();
final _siteAssignementSubject = PublishSubject<ContainerSiteAssignment>();
final _proxyLoadErrorSubject = PublishSubject<ProxyLoadError>();
final _tabAddedSubject = PublishSubject<String>();
final _mlProgressSubject = PublishSubject<MlProgressData>();
@@ -71,6 +72,8 @@ class GeckoEventService extends GeckoStateEvents {
Stream<GeckoPref> get prefUpdateEvent => _prefUpdateSubject.stream;
Stream<ContainerSiteAssignment> get siteAssignementEvent =>
_siteAssignementSubject.stream;
Stream<ProxyLoadError> get proxyLoadErrorEvents =>
_proxyLoadErrorSubject.stream;
Stream<String> get tabAddedStream => _tabAddedSubject.stream;
Stream<MlProgressData> get mlProgressEvents => _mlProgressSubject.stream;
@@ -205,6 +208,11 @@ class GeckoEventService extends GeckoStateEvents {
);
}
@override
void onProxyLoadError(int sequence, ProxyLoadError details) {
_proxyLoadErrorSubject.addWhenMoreRecent(sequence, details.tabId, details);
}
@override
void onMlProgress(int sequence, MlProgressData progress) {
_mlProgressSubject.addWhenMoreRecent(sequence, null, progress);
@@ -266,6 +274,7 @@ class GeckoEventService extends GeckoStateEvents {
await _tabAddedSubject.close();
await _prefUpdateSubject.close();
await _siteAssignementSubject.close();
await _proxyLoadErrorSubject.close();
await _mlProgressSubject.close();
await _manifestUpdateSubject.close();
await _translationEngineSubject.close();
@@ -91,7 +91,10 @@ class GeckoHistoryService {
return _api.getVisited(urls);
}
Future<List<HistorySuggestion>> getSuggestions(String query, {int limit = 10}) {
Future<List<HistorySuggestion>> getSuggestions(
String query, {
int limit = 10,
}) {
return _api.getSuggestions(query, limit);
}
@@ -140,6 +143,8 @@ class GeckoHistoryService {
}
Future<void> deleteHistoryMetadataOlderThan(DateTime olderThan) {
return _api.deleteHistoryMetadataOlderThan(olderThan.millisecondsSinceEpoch);
return _api.deleteHistoryMetadataOlderThan(
olderThan.millisecondsSinceEpoch,
);
}
}
File diff suppressed because it is too large Load Diff