Revert "samsung tap scroll setting"

This reverts commit d5f977a3d2.
This commit is contained in:
Fabian Freund
2026-05-07 04:20:39 +02:00
parent fa204f7d1a
commit a67d338e6c
14 changed files with 2204 additions and 3356 deletions
@@ -141,23 +141,6 @@ class EngineSettingsReplicationService
}, },
); );
ref.listen(
fireImmediately: true,
generalSettingsWithDefaultsProvider.select(
(settings) => settings.browserHandlingScrollEnabled,
),
(previous, next) async {
await _service.setBrowserHandlingScrollEnabled(next);
},
onError: (error, stackTrace) {
logger.e(
'Error listening to browserHandlingScrollEnabled',
error: error,
stackTrace: stackTrace,
);
},
);
ref.listen( ref.listen(
fireImmediately: true, fireImmediately: true,
generalSettingsWithDefaultsProvider.select( generalSettingsWithDefaultsProvider.select(
@@ -44,7 +44,7 @@ final class EngineSettingsReplicationServiceProvider
} }
String _$engineSettingsReplicationServiceHash() => String _$engineSettingsReplicationServiceHash() =>
r'f38eb7631e56b3520ea92e82bd6df31ca4234471'; r'8f37476c9beecd6cc70a07b8cd3a51864b077176';
abstract class _$EngineSettingsReplicationService extends $Notifier<void> { abstract class _$EngineSettingsReplicationService extends $Notifier<void> {
void build(); void build();
@@ -25,9 +25,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:weblibre/features/settings/presentation/controllers/save_settings.dart'; import 'package:weblibre/features/settings/presentation/controllers/save_settings.dart';
import 'package:weblibre/features/settings/presentation/widgets/sections.dart'; import 'package:weblibre/features/settings/presentation/widgets/sections.dart';
import 'package:weblibre/features/user/data/models/engine_settings.dart'; import 'package:weblibre/features/user/data/models/engine_settings.dart';
import 'package:weblibre/features/user/data/models/general_settings.dart';
import 'package:weblibre/features/user/domain/presentation/dialogs/quit_browser_dialog.dart'; import 'package:weblibre/features/user/domain/presentation/dialogs/quit_browser_dialog.dart';
import 'package:weblibre/features/user/domain/repositories/general_settings.dart';
import 'package:weblibre/features/user/domain/repositories/engine_settings.dart'; import 'package:weblibre/features/user/domain/repositories/engine_settings.dart';
import 'package:weblibre/utils/exit_app.dart'; import 'package:weblibre/utils/exit_app.dart';
@@ -46,9 +44,6 @@ class ExperimentalSettingsScreen extends StatelessWidget {
controller: controller, controller: controller,
padding: const EdgeInsets.symmetric(horizontal: 12.0), padding: const EdgeInsets.symmetric(horizontal: 12.0),
children: const [ children: const [
SettingSection(name: 'Browser Touch Diagnostics'),
_TouchDiagnosticsInfoTile(),
_BrowserHandlingScrollEnabledTile(),
SettingSection(name: 'Web Push'), SettingSection(name: 'Web Push'),
_UnifiedPushDistributorTile(), _UnifiedPushDistributorTile(),
SettingSection(name: 'Runtime & Startup'), SettingSection(name: 'Runtime & Startup'),
@@ -63,51 +58,6 @@ class ExperimentalSettingsScreen extends StatelessWidget {
} }
} }
class _TouchDiagnosticsInfoTile extends StatelessWidget {
const _TouchDiagnosticsInfoTile();
@override
Widget build(BuildContext context) {
return const ListTile(
leading: Icon(MdiIcons.bugOutline),
title: Text('Samsung tap-scroll checks'),
subtitle: Text(
'For issue #284, test in this order: disable Pull to Refresh, disable Auto-hide Tab Bar, then disable the native scroll detector below.',
),
);
}
}
class _BrowserHandlingScrollEnabledTile extends HookConsumerWidget {
const _BrowserHandlingScrollEnabledTile();
@override
Widget build(BuildContext context, WidgetRef ref) {
final browserHandlingScrollEnabled = ref.watch(
generalSettingsWithDefaultsProvider.select(
(s) => s.browserHandlingScrollEnabled,
),
);
return SwitchListTile.adaptive(
title: const Text('Native Gecko Scroll Detector'),
subtitle: const Text(
'Lets native Gecko touch handling decide when the browser toolbar may react to page scrolling. Turn this off to test Samsung tap-scroll issues.',
),
secondary: const Icon(Icons.touch_app),
value: browserHandlingScrollEnabled,
onChanged: (value) async {
await ref
.read(saveGeneralSettingsControllerProvider.notifier)
.save(
(currentSettings) =>
currentSettings.copyWith.browserHandlingScrollEnabled(value),
);
},
);
}
}
class _UnifiedPushDistributorTile extends StatelessWidget { class _UnifiedPushDistributorTile extends StatelessWidget {
const _UnifiedPushDistributorTile(); const _UnifiedPushDistributorTile();
@@ -99,7 +99,6 @@ class GeneralSettings with FastEquatable {
final TabBarLayout tabBarLayout; final TabBarLayout tabBarLayout;
final QuickTabSwitcherMode quickTabSwitcherMode; final QuickTabSwitcherMode quickTabSwitcherMode;
final bool pullToRefreshEnabled; final bool pullToRefreshEnabled;
final bool browserHandlingScrollEnabled;
final bool useExternalDownloadManager; final bool useExternalDownloadManager;
final bool doubleBackCloseTab; final bool doubleBackCloseTab;
final Duration unassignedTabsAutoCleanInterval; final Duration unassignedTabsAutoCleanInterval;
@@ -155,7 +154,6 @@ class GeneralSettings with FastEquatable {
required this.tabBarLayout, required this.tabBarLayout,
required this.quickTabSwitcherMode, required this.quickTabSwitcherMode,
required this.pullToRefreshEnabled, required this.pullToRefreshEnabled,
required this.browserHandlingScrollEnabled,
required this.useExternalDownloadManager, required this.useExternalDownloadManager,
required this.doubleBackCloseTab, required this.doubleBackCloseTab,
required this.unassignedTabsAutoCleanInterval, required this.unassignedTabsAutoCleanInterval,
@@ -212,7 +210,6 @@ class GeneralSettings with FastEquatable {
TabBarLayout? tabBarLayout, TabBarLayout? tabBarLayout,
QuickTabSwitcherMode? quickTabSwitcherMode, QuickTabSwitcherMode? quickTabSwitcherMode,
bool? pullToRefreshEnabled, bool? pullToRefreshEnabled,
bool? browserHandlingScrollEnabled,
bool? useExternalDownloadManager, bool? useExternalDownloadManager,
bool? doubleBackCloseTab, bool? doubleBackCloseTab,
Duration? unassignedTabsAutoCleanInterval, Duration? unassignedTabsAutoCleanInterval,
@@ -270,7 +267,6 @@ class GeneralSettings with FastEquatable {
quickTabSwitcherMode = quickTabSwitcherMode =
quickTabSwitcherMode ?? QuickTabSwitcherMode.lastUsedTabs, quickTabSwitcherMode ?? QuickTabSwitcherMode.lastUsedTabs,
pullToRefreshEnabled = pullToRefreshEnabled ?? true, pullToRefreshEnabled = pullToRefreshEnabled ?? true,
browserHandlingScrollEnabled = browserHandlingScrollEnabled ?? true,
useExternalDownloadManager = useExternalDownloadManager ?? false, useExternalDownloadManager = useExternalDownloadManager ?? false,
doubleBackCloseTab = doubleBackCloseTab ?? true, doubleBackCloseTab = doubleBackCloseTab ?? true,
unassignedTabsAutoCleanInterval = unassignedTabsAutoCleanInterval =
@@ -383,7 +379,6 @@ class GeneralSettings with FastEquatable {
tabBarLayout, tabBarLayout,
quickTabSwitcherMode, quickTabSwitcherMode,
pullToRefreshEnabled, pullToRefreshEnabled,
browserHandlingScrollEnabled,
useExternalDownloadManager, useExternalDownloadManager,
doubleBackCloseTab, doubleBackCloseTab,
unassignedTabsAutoCleanInterval, unassignedTabsAutoCleanInterval,
@@ -75,10 +75,6 @@ abstract class _$GeneralSettingsCWProxy {
GeneralSettings pullToRefreshEnabled(bool pullToRefreshEnabled); GeneralSettings pullToRefreshEnabled(bool pullToRefreshEnabled);
GeneralSettings browserHandlingScrollEnabled(
bool browserHandlingScrollEnabled,
);
GeneralSettings useExternalDownloadManager(bool useExternalDownloadManager); GeneralSettings useExternalDownloadManager(bool useExternalDownloadManager);
GeneralSettings doubleBackCloseTab(bool doubleBackCloseTab); GeneralSettings doubleBackCloseTab(bool doubleBackCloseTab);
@@ -173,7 +169,6 @@ abstract class _$GeneralSettingsCWProxy {
TabBarLayout tabBarLayout, TabBarLayout tabBarLayout,
QuickTabSwitcherMode quickTabSwitcherMode, QuickTabSwitcherMode quickTabSwitcherMode,
bool pullToRefreshEnabled, bool pullToRefreshEnabled,
bool browserHandlingScrollEnabled,
bool useExternalDownloadManager, bool useExternalDownloadManager,
bool doubleBackCloseTab, bool doubleBackCloseTab,
Duration unassignedTabsAutoCleanInterval, Duration unassignedTabsAutoCleanInterval,
@@ -327,11 +322,6 @@ class _$GeneralSettingsCWProxyImpl implements _$GeneralSettingsCWProxy {
GeneralSettings pullToRefreshEnabled(bool pullToRefreshEnabled) => GeneralSettings pullToRefreshEnabled(bool pullToRefreshEnabled) =>
call(pullToRefreshEnabled: pullToRefreshEnabled); call(pullToRefreshEnabled: pullToRefreshEnabled);
@override
GeneralSettings browserHandlingScrollEnabled(
bool browserHandlingScrollEnabled,
) => call(browserHandlingScrollEnabled: browserHandlingScrollEnabled);
@override @override
GeneralSettings useExternalDownloadManager(bool useExternalDownloadManager) => GeneralSettings useExternalDownloadManager(bool useExternalDownloadManager) =>
call(useExternalDownloadManager: useExternalDownloadManager); call(useExternalDownloadManager: useExternalDownloadManager);
@@ -477,7 +467,6 @@ class _$GeneralSettingsCWProxyImpl implements _$GeneralSettingsCWProxy {
Object? tabBarLayout = const $CopyWithPlaceholder(), Object? tabBarLayout = const $CopyWithPlaceholder(),
Object? quickTabSwitcherMode = const $CopyWithPlaceholder(), Object? quickTabSwitcherMode = const $CopyWithPlaceholder(),
Object? pullToRefreshEnabled = const $CopyWithPlaceholder(), Object? pullToRefreshEnabled = const $CopyWithPlaceholder(),
Object? browserHandlingScrollEnabled = const $CopyWithPlaceholder(),
Object? useExternalDownloadManager = const $CopyWithPlaceholder(), Object? useExternalDownloadManager = const $CopyWithPlaceholder(),
Object? doubleBackCloseTab = const $CopyWithPlaceholder(), Object? doubleBackCloseTab = const $CopyWithPlaceholder(),
Object? unassignedTabsAutoCleanInterval = const $CopyWithPlaceholder(), Object? unassignedTabsAutoCleanInterval = const $CopyWithPlaceholder(),
@@ -668,12 +657,6 @@ class _$GeneralSettingsCWProxyImpl implements _$GeneralSettingsCWProxy {
? _value.pullToRefreshEnabled ? _value.pullToRefreshEnabled
// ignore: cast_nullable_to_non_nullable // ignore: cast_nullable_to_non_nullable
: pullToRefreshEnabled as bool, : pullToRefreshEnabled as bool,
browserHandlingScrollEnabled:
browserHandlingScrollEnabled == const $CopyWithPlaceholder() ||
browserHandlingScrollEnabled == null
? _value.browserHandlingScrollEnabled
// ignore: cast_nullable_to_non_nullable
: browserHandlingScrollEnabled as bool,
useExternalDownloadManager: useExternalDownloadManager:
useExternalDownloadManager == const $CopyWithPlaceholder() || useExternalDownloadManager == const $CopyWithPlaceholder() ||
useExternalDownloadManager == null useExternalDownloadManager == null
@@ -905,7 +888,6 @@ GeneralSettings _$GeneralSettingsFromJson(
json['quickTabSwitcherMode'], json['quickTabSwitcherMode'],
), ),
pullToRefreshEnabled: json['pullToRefreshEnabled'] as bool?, pullToRefreshEnabled: json['pullToRefreshEnabled'] as bool?,
browserHandlingScrollEnabled: json['browserHandlingScrollEnabled'] as bool?,
useExternalDownloadManager: json['useExternalDownloadManager'] as bool?, useExternalDownloadManager: json['useExternalDownloadManager'] as bool?,
doubleBackCloseTab: json['doubleBackCloseTab'] as bool?, doubleBackCloseTab: json['doubleBackCloseTab'] as bool?,
unassignedTabsAutoCleanInterval: unassignedTabsAutoCleanInterval:
@@ -988,7 +970,6 @@ Map<String, dynamic> _$GeneralSettingsToJson(
'quickTabSwitcherMode': 'quickTabSwitcherMode':
_$QuickTabSwitcherModeEnumMap[instance.quickTabSwitcherMode]!, _$QuickTabSwitcherModeEnumMap[instance.quickTabSwitcherMode]!,
'pullToRefreshEnabled': instance.pullToRefreshEnabled, 'pullToRefreshEnabled': instance.pullToRefreshEnabled,
'browserHandlingScrollEnabled': instance.browserHandlingScrollEnabled,
'useExternalDownloadManager': instance.useExternalDownloadManager, 'useExternalDownloadManager': instance.useExternalDownloadManager,
'doubleBackCloseTab': instance.doubleBackCloseTab, 'doubleBackCloseTab': instance.doubleBackCloseTab,
'unassignedTabsAutoCleanInterval': 'unassignedTabsAutoCleanInterval':
@@ -156,8 +156,6 @@ class GeneralSettingsRepository extends _$GeneralSettingsRepository {
DriftSqlType.bool, DriftSqlType.bool,
db.typeMapping, db.typeMapping,
), ),
'browserHandlingScrollEnabled': settings['browserHandlingScrollEnabled']
?.readAs(DriftSqlType.bool, db.typeMapping),
'useExternalDownloadManager': settings['useExternalDownloadManager'] 'useExternalDownloadManager': settings['useExternalDownloadManager']
?.readAs(DriftSqlType.bool, db.typeMapping), ?.readAs(DriftSqlType.bool, db.typeMapping),
'doubleBackCloseTab': settings['doubleBackCloseTab']?.readAs( 'doubleBackCloseTab': settings['doubleBackCloseTab']?.readAs(
@@ -35,7 +35,7 @@ final class GeneralSettingsRepositoryProvider
} }
String _$generalSettingsRepositoryHash() => String _$generalSettingsRepositoryHash() =>
r'36bbfdce0f33806dd0a73c416f5bf93e87bf74a1'; r'5fe717f8bccad163fa0cb8ec3294c4b00847e141';
abstract class _$GeneralSettingsRepository abstract class _$GeneralSettingsRepository
extends $StreamNotifier<GeneralSettings> { extends $StreamNotifier<GeneralSettings> {
@@ -569,11 +569,7 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Activit
} }
browserHandlingScrollFeature = BrowserHandlingScrollFeature(viewportEvents).also { browserHandlingScrollFeature = BrowserHandlingScrollFeature(viewportEvents).also {
it.start(GlobalComponents.browserHandlingScrollEnabled) it.start()
}
GlobalComponents.onBrowserHandlingScrollEnabledChanged = { enabled ->
browserHandlingScrollFeature?.setScrollDetectionEnabled(enabled)
} }
} }
@@ -690,7 +686,6 @@ abstract class BaseBrowserFragment : Fragment(), UserInteractionHandler, Activit
browserHandlingScrollFeature = null browserHandlingScrollFeature = null
GlobalComponents.onPullToRefreshEnabledChanged = null GlobalComponents.onPullToRefreshEnabledChanged = null
GlobalComponents.onBrowserHandlingScrollEnabledChanged = null
GlobalComponents.onScreenshotProtectionEnabledChanged = null GlobalComponents.onScreenshotProtectionEnabledChanged = null
val engineView = fragmentEngineView val engineView = fragmentEngineView
engineView?.setActivityContext(null) engineView?.setActivityContext(null)
@@ -75,14 +75,6 @@ object GlobalComponents {
var onPullToRefreshEnabledChanged: ((Boolean) -> Unit)? = null var onPullToRefreshEnabledChanged: ((Boolean) -> Unit)? = null
var browserHandlingScrollEnabled: Boolean = true
set(value) {
field = value
onBrowserHandlingScrollEnabledChanged?.invoke(value)
}
var onBrowserHandlingScrollEnabledChanged: ((Boolean) -> Unit)? = null
var screenshotProtectionEnabled: Boolean = false var screenshotProtectionEnabled: Boolean = false
set(value) { set(value) {
field = value field = value
@@ -419,10 +419,6 @@ class GeckoEngineSettingsApiImpl : GeckoEngineSettingsApi {
GlobalComponents.pullToRefreshEnabled = enabled GlobalComponents.pullToRefreshEnabled = enabled
} }
override fun setBrowserHandlingScrollEnabled(enabled: Boolean) {
GlobalComponents.browserHandlingScrollEnabled = enabled
}
override fun setScreenshotProtectionEnabled(enabled: Boolean) { override fun setScreenshotProtectionEnabled(enabled: Boolean) {
GlobalComponents.screenshotProtectionEnabled = enabled GlobalComponents.screenshotProtectionEnabled = enabled
} }
@@ -6757,7 +6757,6 @@ interface GeckoEngineSettingsApi {
fun updateRuntimeSettings(settings: GeckoEngineSettings) fun updateRuntimeSettings(settings: GeckoEngineSettings)
fun setScreenshotProtectionEnabled(enabled: Boolean) fun setScreenshotProtectionEnabled(enabled: Boolean)
fun setPullToRefreshEnabled(enabled: Boolean) fun setPullToRefreshEnabled(enabled: Boolean)
fun setBrowserHandlingScrollEnabled(enabled: Boolean)
/** /**
* Sets the app links mode preference (stored in SharedPreferences). * Sets the app links mode preference (stored in SharedPreferences).
* Controls how external app links are handled in the browser. * Controls how external app links are handled in the browser.
@@ -6852,24 +6851,6 @@ interface GeckoEngineSettingsApi {
channel.setMessageHandler(null) channel.setMessageHandler(null)
} }
} }
run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.flutter_mozilla_components.GeckoEngineSettingsApi.setBrowserHandlingScrollEnabled$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { message, reply ->
val args = message as List<Any?>
val enabledArg = args[0] as Boolean
val wrapped: List<Any?> = try {
api.setBrowserHandlingScrollEnabled(enabledArg)
listOf(null)
} catch (exception: Throwable) {
GeckoPigeonUtils.wrapError(exception)
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
}
}
run { run {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.flutter_mozilla_components.GeckoEngineSettingsApi.setAppLinksMode$separatedMessageChannelSuffix", codec) val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.flutter_mozilla_components.GeckoEngineSettingsApi.setAppLinksMode$separatedMessageChannelSuffix", codec)
if (api != null) { if (api != null) {
@@ -197,10 +197,6 @@ class GeckoEngineSettingsService {
return _api.setPullToRefreshEnabled(enabled); return _api.setPullToRefreshEnabled(enabled);
} }
Future<void> setBrowserHandlingScrollEnabled(bool enabled) {
return _api.setBrowserHandlingScrollEnabled(enabled);
}
/// Sets the app links mode preference. /// Sets the app links mode preference.
/// Controls how external app links are handled in browser. /// Controls how external app links are handled in browser.
Future<void> setAppLinksMode(AppLinksMode mode) { Future<void> setAppLinksMode(AppLinksMode mode) {
File diff suppressed because it is too large Load Diff
@@ -1496,7 +1496,6 @@ abstract class GeckoEngineSettingsApi {
void updateRuntimeSettings(GeckoEngineSettings settings); void updateRuntimeSettings(GeckoEngineSettings settings);
void setScreenshotProtectionEnabled(bool enabled); void setScreenshotProtectionEnabled(bool enabled);
void setPullToRefreshEnabled(bool enabled); void setPullToRefreshEnabled(bool enabled);
void setBrowserHandlingScrollEnabled(bool enabled);
/// Sets the app links mode preference (stored in SharedPreferences). /// Sets the app links mode preference (stored in SharedPreferences).
/// Controls how external app links are handled in the browser. /// Controls how external app links are handled in the browser.