From c4a71872eded25f04b3208b074fb5f5802fd9386 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Thu, 1 Sep 2022 15:26:08 +0200 Subject: [PATCH] v105 ready --- build/patches/Viewport-Protection.patch | 68 +++++++++++-------------- 1 file changed, 31 insertions(+), 37 deletions(-) diff --git a/build/patches/Viewport-Protection.patch b/build/patches/Viewport-Protection.patch index d0a17222..7afa4e6d 100644 --- a/build/patches/Viewport-Protection.patch +++ b/build/patches/Viewport-Protection.patch @@ -28,24 +28,24 @@ The feature is controlled by a site setting (default disabled) .../blink/renderer/core/events/mouse_event.h | 19 +++- .../renderer/core/events/pointer_event.h | 11 +++ .../renderer/core/exported/web_view_impl.cc | 2 +- - .../renderer/core/frame/local_dom_window.cc | 33 ++++++- + .../renderer/core/frame/local_dom_window.cc | 27 +++++- .../blink/renderer/core/frame/local_frame.cc | 12 ++- .../blink/renderer/core/frame/local_frame.h | 6 +- - .../core/frame/screen_metrics_emulator.cc | 7 +- + .../core/frame/screen_metrics_emulator.cc | 8 +- .../core/frame/screen_metrics_emulator.h | 8 ++ .../core/frame/web_frame_widget_impl.cc | 8 ++ .../core/frame/web_remote_frame_impl.cc | 3 +- .../blink/renderer/core/input/touch.cc | 17 +++- third_party/blink/renderer/core/page/page.cc | 74 ++++++++++++++++ third_party/blink/renderer/core/page/page.h | 7 ++ - 32 files changed, 356 insertions(+), 20 deletions(-) + 32 files changed, 351 insertions(+), 20 deletions(-) create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteViewportContentSetting.java create mode 100644 components/browser_ui/strings/android/viewport.grdp diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn --- a/components/browser_ui/site_settings/android/BUILD.gn +++ b/components/browser_ui/site_settings/android/BUILD.gn -@@ -78,6 +78,9 @@ android_library("java") { +@@ -85,6 +85,9 @@ android_library("java") { sources += [ "java/src/org/chromium/components/browser_ui/site_settings/BromiteWebRTCContentSetting.java", ] @@ -219,14 +219,14 @@ new file mode 100644 diff --git a/components/components_strings.grd b/components/components_strings.grd --- a/components/components_strings.grd +++ b/components/components_strings.grd -@@ -339,6 +339,7 @@ +@@ -340,6 +340,7 @@ + - + diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc @@ -389,7 +389,7 @@ diff --git a/third_party/blink/public/platform/web_content_settings_client.h b/t diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver.cc b/third_party/blink/renderer/core/css/resolver/style_resolver.cc --- a/third_party/blink/renderer/core/css/resolver/style_resolver.cc +++ b/third_party/blink/renderer/core/css/resolver/style_resolver.cc -@@ -1478,8 +1478,14 @@ scoped_refptr StyleResolver::InitialStyleForElement() const { +@@ -1487,8 +1487,14 @@ scoped_refptr StyleResolver::InitialStyleForElement() const { initial_style->SetRtlOrdering( GetDocument().VisuallyOrdered() ? EOrder::kVisual : EOrder::kLogical); @@ -478,19 +478,19 @@ diff --git a/third_party/blink/renderer/core/events/pointer_event.h b/third_part diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc --- a/third_party/blink/renderer/core/exported/web_view_impl.cc +++ b/third_party/blink/renderer/core/exported/web_view_impl.cc -@@ -1015,7 +1015,7 @@ WebPagePopupImpl* WebViewImpl::OpenPagePopup(PagePopupClient* client) { +@@ -1014,7 +1014,7 @@ WebPagePopupImpl* WebViewImpl::OpenPagePopup(PagePopupClient* client) { + page_popup_ = WebPagePopupImpl::Create( std::move(popup_widget_host), std::move(widget_host), - std::move(widget_receiver), agent_group_scheduler.DefaultTaskRunner()); - popup_widget->InitializeCompositing(agent_group_scheduler, -- opener_widget->GetOriginalScreenInfos(), -+ opener_widget->GetScreenInfos(), - /*settings=*/nullptr); - - page_popup_ = To(popup_widget); + std::move(widget_receiver), this, agent_group_scheduler, +- opener_widget->GetOriginalScreenInfos(), client); ++ opener_widget->GetScreenInfos(), client); + EnablePopupMouseWheelEventListener(web_opener_frame->LocalRoot()); + return page_popup_.get(); + } diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_party/blink/renderer/core/frame/local_dom_window.cc --- a/third_party/blink/renderer/core/frame/local_dom_window.cc +++ b/third_party/blink/renderer/core/frame/local_dom_window.cc -@@ -1406,6 +1406,11 @@ int LocalDOMWindow::outerHeight() const { +@@ -1388,6 +1388,11 @@ int LocalDOMWindow::outerHeight() const { if (!page) return 0; @@ -502,7 +502,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_p ChromeClient& chrome_client = page->GetChromeClient(); if (page->GetSettings().GetReportScreenSizeInPhysicalPixelsQuirk()) { return static_cast( -@@ -1431,6 +1436,11 @@ int LocalDOMWindow::outerWidth() const { +@@ -1413,6 +1418,11 @@ int LocalDOMWindow::outerWidth() const { if (!page) return 0; @@ -514,23 +514,17 @@ diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_p ChromeClient& chrome_client = page->GetChromeClient(); if (page->GetSettings().GetReportScreenSizeInPhysicalPixelsQuirk()) { return static_cast( -@@ -1618,7 +1628,14 @@ double LocalDOMWindow::devicePixelRatio() const { +@@ -1600,7 +1610,8 @@ double LocalDOMWindow::devicePixelRatio() const { if (!GetFrame()) return 0.0; - return GetFrame()->DevicePixelRatio(); -+ bool with_zoom_factor = true; -+ -+ // do not send the zoom factor override value -+ Page* page = GetFrame()->GetPage(); -+ if (page && page->IsScreenEmulated()) -+ with_zoom_factor = false; -+ -+ return GetFrame()->DevicePixelRatio(with_zoom_factor); ++ // never send the zoom factor override value ++ return GetFrame()->DevicePixelRatio(/*with_zoom_factor*/false); } void LocalDOMWindow::scrollBy(double x, double y) const { -@@ -2162,6 +2179,20 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate, +@@ -2142,6 +2153,20 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate, if (!completed_url.IsEmpty() || result.new_window) result.frame->Navigate(frame_request, WebFrameLoadType::kStandard); @@ -554,7 +548,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_p diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc --- a/third_party/blink/renderer/core/frame/local_frame.cc +++ b/third_party/blink/renderer/core/frame/local_frame.cc -@@ -1233,6 +1233,10 @@ gfx::SizeF LocalFrame::ResizePageRectsKeepingRatio( +@@ -1267,6 +1267,10 @@ gfx::SizeF LocalFrame::ResizePageRectsKeepingRatio( return gfx::SizeF(result_width, result_height); } @@ -565,7 +559,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ void LocalFrame::SetPageZoomFactor(float factor) { SetPageAndTextZoomFactors(factor, text_zoom_factor_); } -@@ -1381,12 +1385,16 @@ device::mojom::blink::DevicePostureType LocalFrame::GetDevicePosture() { +@@ -1406,12 +1410,16 @@ device::mojom::blink::DevicePostureType LocalFrame::GetDevicePosture() { return mojo_handler_->GetDevicePosture(); } @@ -580,14 +574,14 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ + if (with_zoom_factor) + ratio *= PageZoomFactor(); + else -+ ratio *= (PageZoomFactor() - page_zoom_factor_base_value_); ++ ratio = page_zoom_factor_; return ratio; } diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h --- a/third_party/blink/renderer/core/frame/local_frame.h +++ b/third_party/blink/renderer/core/frame/local_frame.h -@@ -351,14 +351,15 @@ class CORE_EXPORT LocalFrame final +@@ -364,13 +364,14 @@ class CORE_EXPORT LocalFrame final void SetInViewSourceMode(bool = true); void SetPageZoomFactor(float); @@ -599,13 +593,12 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/b void SetPageAndTextZoomFactors(float page_zoom_factor, float text_zoom_factor); - void DeviceScaleFactorChanged(); - double DevicePixelRatio() const; + double DevicePixelRatio(bool with_zoom_factor = true) const; // Informs the local root's document and its local descendant subtree that a // media query value changed. -@@ -867,6 +868,7 @@ class CORE_EXPORT LocalFrame final +@@ -886,6 +887,7 @@ class CORE_EXPORT LocalFrame final unsigned hidden_ : 1; float page_zoom_factor_; @@ -626,13 +619,14 @@ diff --git a/third_party/blink/renderer/core/frame/screen_metrics_emulator.cc b/ } void ScreenMetricsEmulator::UpdateVisualProperties( -@@ -191,9 +194,7 @@ void ScreenMetricsEmulator::OnUpdateScreenRects( +@@ -191,9 +194,8 @@ void ScreenMetricsEmulator::OnUpdateScreenRects( const gfx::Rect& window_screen_rect) { original_view_screen_rect_ = view_screen_rect; original_window_screen_rect_ = window_screen_rect; - if (emulating_desktop()) { - Apply(); - } ++ // needed as we need browser ui size + Apply(); } @@ -665,7 +659,7 @@ diff --git a/third_party/blink/renderer/core/frame/screen_metrics_emulator.h b/t diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc --- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc +++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc -@@ -1499,6 +1499,14 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( +@@ -1579,6 +1579,14 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( if (auto* device_emulator = DeviceEmulator()) { device_emulator->UpdateVisualProperties(visual_properties); @@ -683,7 +677,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th diff --git a/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc b/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc --- a/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc +++ b/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc -@@ -315,7 +315,8 @@ void WebRemoteFrameImpl::InitializeFrameVisualProperties( +@@ -339,7 +339,8 @@ void WebRemoteFrameImpl::InitializeFrameVisualProperties( visual_properties.page_scale_factor = ancestor_widget->PageScaleInMainFrame(); visual_properties.is_pinch_gesture_active = ancestor_widget->PinchGestureActiveInMainFrame(); @@ -753,7 +747,7 @@ diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/re +void Page::CalculateEmulatedScreenSetting(LocalFrame* frame, bool force) { + blink::WebContentSettingsClient* settings = frame->GetContentSettingsClient(); -+ if (settings->AllowViewportChange(false) || force) { ++ if ( (settings && settings->AllowViewportChange(false)) || force) { + // this is the maximum (and minimum) value which in percentage + // corresponds to +- 0.03% + // more or less 3-6 pixels according to the resolution 300-600px