summaryrefslogtreecommitdiff
path: root/www-client/ungoogled-chromium/files/chromite-viewport-protection-popup-rounding.patch
blob: 21b2b4087e75e0926ff1647c1701654629fe4d72 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
--- a/third_party/blink/renderer/core/exported/web_page_popup_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_page_popup_impl.cc
@@ -34,0 +35 @@
+#include "base/numerics/safe_conversions.h"
@@ -1186,26 +1187,26 @@
   if (!opener_emulator_scale_) {
     return;
   }
-  screen_rect.set_x(
+  screen_rect.set_x(base::ClampRound(
       opener_widget_screen_origin_.x() +
       (screen_rect.x() - opener_original_widget_screen_origin_.x()) /
-          opener_emulator_scale_);
-  screen_rect.set_y(
+          opener_emulator_scale_));
+  screen_rect.set_y(base::ClampRound(
       opener_widget_screen_origin_.y() +
       (screen_rect.y() - opener_original_widget_screen_origin_.y()) /
-          opener_emulator_scale_);
+          opener_emulator_scale_));
 }
 
 void WebPagePopupImpl::EmulatedToScreenRect(gfx::Rect& screen_rect) {
   if (!opener_emulator_scale_) {
     return;
   }
-  screen_rect.set_x(opener_original_widget_screen_origin_.x() +
+  screen_rect.set_x(base::ClampRound(opener_original_widget_screen_origin_.x() +
                     (screen_rect.x() - opener_widget_screen_origin_.x()) *
-                        opener_emulator_scale_);
-  screen_rect.set_y(opener_original_widget_screen_origin_.y() +
+                        opener_emulator_scale_));
+  screen_rect.set_y(base::ClampRound(opener_original_widget_screen_origin_.y() +
                     (screen_rect.y() - opener_widget_screen_origin_.y()) *
-                        opener_emulator_scale_);
+                        opener_emulator_scale_));
 }
 
 std::unique_ptr<cc::LayerTreeFrameSink>