Android Pixel Perfect Mode: fix multiple issues

Linux: crash on launch after update to v140.0.7339.128 (#2326)
Desktops: automatically scrolls down when typing (#2321)
This commit is contained in:
Carmelo Messina
2025-09-19 16:23:40 +02:00
parent 63888d58b5
commit e465aeb3e3
+11 -6
View File
@@ -83,7 +83,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../renderer/core/exported/web_view_impl.cc | 41 ++++++++++++----
.../renderer/core/exported/web_view_impl.h | 5 ++
.../renderer/core/frame/local_frame_view.cc | 5 +-
.../renderer/core/frame/visual_viewport.cc | 34 ++++++++++++-
.../renderer/core/frame/visual_viewport.cc | 39 ++++++++++++++-
.../renderer/core/frame/visual_viewport.h | 7 ++-
.../core/frame/web_frame_widget_impl.cc | 36 ++++++++++++--
.../core/frame/web_frame_widget_impl.h | 1 +
@@ -109,7 +109,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
ui/display/mojom/screen_info_mojom_traits.h | 4 ++
ui/display/screen_info.h | 1 +
ui/events/blink/blink_event_util.cc | 2 +-
99 files changed, 528 insertions(+), 140 deletions(-)
99 files changed, 533 insertions(+), 140 deletions(-)
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sPixelPerfect.java
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Pixel-perfect-mode.grdp
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Pixel-perfect-mode.inc
@@ -1684,11 +1684,14 @@ diff --git a/third_party/blink/renderer/core/frame/visual_viewport.cc b/third_pa
needs_paint_property_update_(true),
overscroll_type_(ComputeOverscrollType()) {
UniqueObjectId unique_id = NewUniqueObjectId();
@@ -391,6 +393,30 @@ void VisualViewport::EnqueueResizeEvent() {
@@ -391,6 +393,33 @@ void VisualViewport::EnqueueResizeEvent() {
document->EnqueueVisualViewportResizeEvent();
}
+void VisualViewport::SetSizeReal(const gfx::Size& size) {
+ if (!RuntimeEnabledFeatures::PixelPerfectEnabled())
+ return;
+
+ auto scale = ScaleFromDIP();
+ auto size_dpi = gfx::Size(size.width() * scale, size.height() * scale);
+ if (size_real_ == size_dpi)
@@ -1715,17 +1718,19 @@ diff --git a/third_party/blink/renderer/core/frame/visual_viewport.cc b/third_pa
void VisualViewport::SetSize(const gfx::Size& size) {
if (size_ == size)
return;
@@ -446,7 +472,8 @@ gfx::RectF VisualViewport::VisibleRect(
@@ -446,7 +475,10 @@ gfx::RectF VisualViewport::VisibleRect(
if (scrollbar_inclusion == kExcludeScrollbars)
visible_size = gfx::SizeF(ExcludeScrollbars(size_));
- visible_size.Enlarge(0, browser_controls_adjustment_);
+ int value = browser_controls_adjustment_ / browser_controls_scale_ * ScaleFromDIP();
+ int value = browser_controls_adjustment_;
+ if (RuntimeEnabledFeatures::PixelPerfectEnabled())
+ value = browser_controls_adjustment_ / browser_controls_scale_ * ScaleFromDIP();
+ visible_size.Enlarge(0, value);
visible_size.Scale(1 / scale_);
return gfx::RectF(ScrollPosition(), visible_size);
@@ -879,10 +906,13 @@ gfx::Point VisualViewport::ClampDocumentOffsetAtScale(const gfx::Point& offset,
@@ -879,10 +911,13 @@ gfx::Point VisualViewport::ClampDocumentOffsetAtScale(const gfx::Point& offset,
return clamped;
}