Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit e465aeb3 authored by Carmelo Messina's avatar Carmelo Messina
Browse files

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)
parent 63888d58
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -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;
 }