Commits:
-
d899ceb7
by Fatih at 2024-09-23T18:31:25+00:00
Bug 1834307: Change StaticPrefs::general_smoothScroll() calls with nsLayoutUtils::IsSmoothScrollingEnabled. r=tjr
Differential Revision: https://phabricator.services.mozilla.com/D221363
-
9997a81e
by Fatih at 2024-09-23T18:31:25+00:00
Bug 1834307: Check RFPTarget::CSSPrefersReducedMotion in nsLayoutUtils::IsSmoothScrollingEnabled. r=tjr
Differential Revision: https://phabricator.services.mozilla.com/D221364
-
ef0d9e9a
by Morgan at 2024-09-23T18:31:26+00:00
Bug 42070: Hide "Use smooth scrolling" from settings
-
1b7b6e9c
by Morgan at 2024-09-23T18:31:26+00:00
fixup! Bug 42027: Base Browser migration procedures.
Bug 42078: Hide Smoothscroll UX
9 changed files:
Changes:
browser/components/BrowserGlue.sys.mjs
... |
... |
@@ -4650,7 +4650,8 @@ BrowserGlue.prototype = { |
4650
|
4650
|
// the security level anymore (tor-browser#42149).
|
4651
|
4651
|
// Also, reset security.xfocsp.errorReporting.automatic since we
|
4652
|
4652
|
// hid its neterror checkbox. tor-browser#42653.
|
4653
|
|
- const MIGRATION_VERSION = 2;
|
|
4653
|
+ // Version 3: 14.0a7: Reset general.smoothScroll. tor-browser#42070.
|
|
4654
|
+ const MIGRATION_VERSION = 3;
|
4654
|
4655
|
const MIGRATION_PREF = "basebrowser.migration.version";
|
4655
|
4656
|
// We do not care whether this is a new or old profile, since in version 1
|
4656
|
4657
|
// we just quickly clear a user preference, which should not do anything to
|
... |
... |
@@ -4678,6 +4679,11 @@ BrowserGlue.prototype = { |
4678
|
4679
|
Services.prefs.clearUserPref(prefName);
|
4679
|
4680
|
}
|
4680
|
4681
|
}
|
|
4682
|
+ if (currentVersion < 3) {
|
|
4683
|
+ Services.prefs.clearUserPref(
|
|
4684
|
+ "general.smoothScroll"
|
|
4685
|
+ );
|
|
4686
|
+ }
|
4681
|
4687
|
Services.prefs.setIntPref(MIGRATION_PREF, MIGRATION_VERSION);
|
4682
|
4688
|
},
|
4683
|
4689
|
|
browser/components/preferences/main.inc.xhtml
... |
... |
@@ -731,7 +731,8 @@ |
731
|
731
|
preference="general.autoScroll"/>
|
732
|
732
|
<checkbox id="useSmoothScrolling"
|
733
|
733
|
data-l10n-id="browsing-use-smooth-scrolling"
|
734
|
|
- preference="general.smoothScroll"/>
|
|
734
|
+ preference="general.smoothScroll"
|
|
735
|
+ hidden="true"/>
|
735
|
736
|
#ifdef MOZ_WIDGET_GTK
|
736
|
737
|
<checkbox id="useOverlayScrollbars"
|
737
|
738
|
data-l10n-id="browsing-gtk-use-non-overlay-scrollbars"
|
gfx/layers/apz/src/APZInputBridge.cpp
... |
... |
@@ -10,6 +10,7 @@ |
10
|
10
|
#include "InputData.h" // for MouseInput, etc
|
11
|
11
|
#include "InputBlockState.h" // for InputBlockState
|
12
|
12
|
#include "OverscrollHandoffState.h" // for OverscrollHandoffState
|
|
13
|
+#include "nsLayoutUtils.h" // for IsSmoothScrollingEnabled
|
13
|
14
|
#include "mozilla/EventForwards.h"
|
14
|
15
|
#include "mozilla/dom/WheelEventBinding.h" // for WheelEvent constants
|
15
|
16
|
#include "mozilla/EventStateManager.h" // for EventStateManager
|
... |
... |
@@ -270,7 +271,7 @@ APZEventResult APZInputBridge::ReceiveInputEvent( |
270
|
271
|
if (Maybe<APZWheelAction> action = ActionForWheelEvent(&wheelEvent)) {
|
271
|
272
|
ScrollWheelInput::ScrollMode scrollMode =
|
272
|
273
|
ScrollWheelInput::SCROLLMODE_INSTANT;
|
273
|
|
- if (StaticPrefs::general_smoothScroll() &&
|
|
274
|
+ if (nsLayoutUtils::IsSmoothScrollingEnabled() &&
|
274
|
275
|
((wheelEvent.mDeltaMode ==
|
275
|
276
|
dom::WheelEvent_Binding::DOM_DELTA_LINE &&
|
276
|
277
|
StaticPrefs::general_smoothScroll_mouseWheel()) ||
|
gfx/layers/apz/src/APZPublicUtils.cpp
... |
... |
@@ -7,6 +7,7 @@ |
7
|
7
|
#include "mozilla/layers/APZPublicUtils.h"
|
8
|
8
|
|
9
|
9
|
#include "AsyncPanZoomController.h"
|
|
10
|
+#include "nsLayoutUtils.h"
|
10
|
11
|
#include "mozilla/HelperMacros.h"
|
11
|
12
|
#include "mozilla/StaticPrefs_general.h"
|
12
|
13
|
|
... |
... |
@@ -36,9 +37,10 @@ ScrollAnimationBezierPhysicsSettings ComputeBezierAnimationSettingsForOrigin( |
36
|
37
|
int32_t minMS = 0;
|
37
|
38
|
int32_t maxMS = 0;
|
38
|
39
|
bool isOriginSmoothnessEnabled = false;
|
|
40
|
+ bool isGeneralSmoothnessEnabled = nsLayoutUtils::IsSmoothScrollingEnabled();
|
39
|
41
|
|
40
|
42
|
#define READ_DURATIONS(prefbase) \
|
41
|
|
- isOriginSmoothnessEnabled = StaticPrefs::general_smoothScroll() && \
|
|
43
|
+ isOriginSmoothnessEnabled = isGeneralSmoothnessEnabled && \
|
42
|
44
|
StaticPrefs::general_smoothScroll_##prefbase(); \
|
43
|
45
|
if (isOriginSmoothnessEnabled) { \
|
44
|
46
|
minMS = StaticPrefs::general_smoothScroll_##prefbase##_durationMinMS(); \
|
... |
... |
@@ -88,7 +90,8 @@ ScrollAnimationBezierPhysicsSettings ComputeBezierAnimationSettingsForOrigin( |
88
|
90
|
}
|
89
|
91
|
|
90
|
92
|
ScrollMode GetScrollModeForOrigin(ScrollOrigin origin) {
|
91
|
|
- if (!StaticPrefs::general_smoothScroll()) return ScrollMode::Instant;
|
|
93
|
+ bool isSmoothScrollingEnabled = nsLayoutUtils::IsSmoothScrollingEnabled();
|
|
94
|
+ if (!isSmoothScrollingEnabled) return ScrollMode::Instant;
|
92
|
95
|
switch (origin) {
|
93
|
96
|
case ScrollOrigin::Lines:
|
94
|
97
|
return StaticPrefs::general_smoothScroll_lines() ? ScrollMode::Smooth
|
... |
... |
@@ -101,8 +104,8 @@ ScrollMode GetScrollModeForOrigin(ScrollOrigin origin) { |
101
|
104
|
: ScrollMode::Instant;
|
102
|
105
|
default:
|
103
|
106
|
MOZ_ASSERT(false, "Unknown keyboard scroll origin");
|
104
|
|
- return StaticPrefs::general_smoothScroll() ? ScrollMode::Smooth
|
105
|
|
- : ScrollMode::Instant;
|
|
107
|
+ return isSmoothScrollingEnabled ? ScrollMode::Smooth
|
|
108
|
+ : ScrollMode::Instant;
|
106
|
109
|
}
|
107
|
110
|
}
|
108
|
111
|
|
gfx/layers/apz/src/GenericScrollAnimation.cpp
... |
... |
@@ -8,6 +8,7 @@ |
8
|
8
|
|
9
|
9
|
#include "AsyncPanZoomController.h"
|
10
|
10
|
#include "FrameMetrics.h"
|
|
11
|
+#include "nsLayoutUtils.h"
|
11
|
12
|
#include "mozilla/layers/APZPublicUtils.h"
|
12
|
13
|
#include "nsPoint.h"
|
13
|
14
|
#include "ScrollAnimationPhysics.h"
|
... |
... |
@@ -28,7 +29,7 @@ GenericScrollAnimation::GenericScrollAnimation(AsyncPanZoomController& aApzc, |
28
|
29
|
// ScrollAnimationBezierPhysics (despite its name) handles the case of
|
29
|
30
|
// general.smoothScroll being disabled whereas ScrollAnimationMSDPhysics does
|
30
|
31
|
// not (ie it scrolls smoothly).
|
31
|
|
- if (StaticPrefs::general_smoothScroll() &&
|
|
32
|
+ if (nsLayoutUtils::IsSmoothScrollingEnabled() &&
|
32
|
33
|
StaticPrefs::general_smoothScroll_msdPhysics_enabled()) {
|
33
|
34
|
mAnimationPhysics = MakeUnique<ScrollAnimationMSDPhysics>(aInitialPosition);
|
34
|
35
|
} else {
|
gfx/layers/apz/src/WheelScrollAnimation.cpp
... |
... |
@@ -8,6 +8,7 @@ |
8
|
8
|
|
9
|
9
|
#include <tuple>
|
10
|
10
|
#include "AsyncPanZoomController.h"
|
|
11
|
+#include "nsLayoutUtils.h"
|
11
|
12
|
#include "mozilla/StaticPrefs_general.h"
|
12
|
13
|
#include "mozilla/layers/APZPublicUtils.h"
|
13
|
14
|
#include "nsPoint.h"
|
... |
... |
@@ -35,7 +36,7 @@ WheelScrollAnimation::WheelScrollAnimation( |
35
|
36
|
ScrollWheelInput::ScrollDeltaType aDeltaType)
|
36
|
37
|
: GenericScrollAnimation(aApzc, aInitialPosition,
|
37
|
38
|
OriginForDeltaType(aDeltaType)) {
|
38
|
|
- MOZ_ASSERT(StaticPrefs::general_smoothScroll(),
|
|
39
|
+ MOZ_ASSERT(nsLayoutUtils::IsSmoothScrollingEnabled(),
|
39
|
40
|
"We shouldn't be creating a WheelScrollAnimation if smooth "
|
40
|
41
|
"scrolling is disabled");
|
41
|
42
|
mDirectionForcedToOverscroll =
|
layout/base/nsLayoutUtils.cpp
... |
... |
@@ -7765,28 +7765,23 @@ size_t nsLayoutUtils::SizeOfTextRunsForFrames(nsIFrame* aFrame, |
7765
|
7765
|
|
7766
|
7766
|
/* static */
|
7767
|
7767
|
void nsLayoutUtils::RecomputeSmoothScrollDefault() {
|
|
7768
|
+ // We want prefers-reduced-motion to determine the default
|
|
7769
|
+ // value of the general.smoothScroll pref. If the user
|
|
7770
|
+ // changed the pref we want to respect the change.
|
|
7771
|
+ Preferences::SetBool(
|
|
7772
|
+ StaticPrefs::GetPrefName_general_smoothScroll(),
|
|
7773
|
+ !LookAndFeel::GetInt(LookAndFeel::IntID::PrefersReducedMotion, 0),
|
|
7774
|
+ PrefValueKind::Default);
|
|
7775
|
+}
|
|
7776
|
+
|
|
7777
|
+/* static */
|
|
7778
|
+bool nsLayoutUtils::IsSmoothScrollingEnabled() {
|
7768
|
7779
|
if (nsContentUtils::ShouldResistFingerprinting(
|
7769
|
7780
|
"We use the global RFP pref to maintain consistent scroll behavior "
|
7770
|
7781
|
"in the browser.",
|
7771
|
7782
|
RFPTarget::CSSPrefersReducedMotion)) {
|
7772
|
|
- // When resist fingerprinting is enabled, we should not default disable
|
7773
|
|
- // smooth scrolls when the user prefers-reduced-motion to avoid leaking
|
7774
|
|
- // the value of the OS pref to sites.
|
7775
|
|
- Preferences::SetBool(StaticPrefs::GetPrefName_general_smoothScroll(), true,
|
7776
|
|
- PrefValueKind::Default);
|
7777
|
|
- } else {
|
7778
|
|
- // We want prefers-reduced-motion to determine the default
|
7779
|
|
- // value of the general.smoothScroll pref. If the user
|
7780
|
|
- // changed the pref we want to respect the change.
|
7781
|
|
- Preferences::SetBool(
|
7782
|
|
- StaticPrefs::GetPrefName_general_smoothScroll(),
|
7783
|
|
- !LookAndFeel::GetInt(LookAndFeel::IntID::PrefersReducedMotion, 0),
|
7784
|
|
- PrefValueKind::Default);
|
|
7783
|
+ return true;
|
7785
|
7784
|
}
|
7786
|
|
-}
|
7787
|
|
-
|
7788
|
|
-/* static */
|
7789
|
|
-bool nsLayoutUtils::IsSmoothScrollingEnabled() {
|
7790
|
7785
|
return StaticPrefs::general_smoothScroll();
|
7791
|
7786
|
}
|
7792
|
7787
|
|
layout/xul/nsSliderFrame.cpp
... |
... |
@@ -1535,7 +1535,7 @@ void nsSliderFrame::PageScroll(bool aClickAndHold) { |
1535
|
1535
|
|
1536
|
1536
|
mCurrentClickHoldDestination = Some(pos);
|
1537
|
1537
|
sf->ScrollTo(pos,
|
1538
|
|
- StaticPrefs::general_smoothScroll() &&
|
|
1538
|
+ nsLayoutUtils::IsSmoothScrollingEnabled() &&
|
1539
|
1539
|
StaticPrefs::general_smoothScroll_pages()
|
1540
|
1540
|
? ScrollMode::Smooth
|
1541
|
1541
|
: ScrollMode::Instant,
|
widget/cocoa/nsChildView.mm
... |
... |
@@ -3266,7 +3266,7 @@ static gfx::IntPoint GetIntegerDeltaForEvent(NSEvent* aEvent) { |
3266
|
3266
|
} else {
|
3267
|
3267
|
ScrollWheelInput::ScrollMode scrollMode =
|
3268
|
3268
|
ScrollWheelInput::SCROLLMODE_INSTANT;
|
3269
|
|
- if (StaticPrefs::general_smoothScroll() &&
|
|
3269
|
+ if (nsLayoutUtils::IsSmoothScrollingEnabled() &&
|
3270
|
3270
|
StaticPrefs::general_smoothScroll_mouseWheel()) {
|
3271
|
3271
|
scrollMode = ScrollWheelInput::SCROLLMODE_SMOOTH;
|
3272
|
3272
|
}
|
|