Commit c649b4ac authored by danakj's avatar danakj Committed by Commit Bot

Remove the emulator dependency on VisualProperties

Instead give the emulator a ScreenInfo and two sizes, which are the
only parts of VisualProperties it uses, and have it store them instead
of a whole VisualProperties.

R=avi@chromium.org

Bug: 1006052
Change-Id: Iecb2c1031dc3b438235175a716a01a531fafc5b0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1825857
Commit-Queue: danakj <danakj@chromium.org>
Reviewed-by: default avatarAvi Drissman <avi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#700490}
parent eda00578
...@@ -1490,7 +1490,7 @@ blink::WebPagePopup* RenderViewImpl::CreatePopupAndGetWidget( ...@@ -1490,7 +1490,7 @@ blink::WebPagePopup* RenderViewImpl::CreatePopupAndGetWidget(
// Devtools emulation, which may be currently applied to the // Devtools emulation, which may be currently applied to the
// |view_render_widget|, should also apply to the new popup. This doesn't // |view_render_widget|, should also apply to the new popup. This doesn't
// happen automatically. // happen automatically.
popup_widget->ApplyEmulatedScreenMetricsForPopupWidget(render_widget); popup_widget->ApplyEmulatedScreenMetricsForPopupWidget();
if (output_widget) if (output_widget)
*output_widget = popup_widget; *output_widget = popup_widget;
......
...@@ -598,12 +598,13 @@ void RenderWidget::Init(ShowCallback show_callback, WebWidget* web_widget) { ...@@ -598,12 +598,13 @@ void RenderWidget::Init(ShowCallback show_callback, WebWidget* web_widget) {
RenderThread::Get()->AddRoute(routing_id_, this); RenderThread::Get()->AddRoute(routing_id_, this);
} }
void RenderWidget::ApplyEmulatedScreenMetricsForPopupWidget( void RenderWidget::ApplyEmulatedScreenMetricsForPopupWidget() {
RenderWidget* origin_widget) {
RenderWidgetScreenMetricsEmulator* emulator = RenderWidgetScreenMetricsEmulator* emulator =
page_properties_->ScreenMetricsEmulator(); page_properties_->ScreenMetricsEmulator();
if (!emulator) if (!emulator)
return; return;
// TODO(danakj): Have RenderWidget go directly through the emulator when it
// uses these popup variables, and remove the variables.
popup_origin_scale_for_emulation_ = emulator->scale(); popup_origin_scale_for_emulation_ = emulator->scale();
popup_view_origin_for_emulation_ = emulator->applied_widget_rect().origin(); popup_view_origin_for_emulation_ = emulator->applied_widget_rect().origin();
popup_screen_origin_for_emulation_ = popup_screen_origin_for_emulation_ =
...@@ -932,7 +933,8 @@ void RenderWidget::SynchronizeVisualPropertiesFromRenderView( ...@@ -932,7 +933,8 @@ void RenderWidget::SynchronizeVisualPropertiesFromRenderView(
// modify can be consumed directly here instead of in // modify can be consumed directly here instead of in
// SynchronizeVisualProperties(). // SynchronizeVisualProperties().
page_properties_->ScreenMetricsEmulator()->OnSynchronizeVisualProperties( page_properties_->ScreenMetricsEmulator()->OnSynchronizeVisualProperties(
visual_properties); visual_properties.screen_info, visual_properties.new_size,
visual_properties.visible_viewport_size);
} else { } else {
gfx::Rect new_compositor_viewport_pixel_rect = gfx::Rect new_compositor_viewport_pixel_rect =
visual_properties.compositor_viewport_pixel_rect; visual_properties.compositor_viewport_pixel_rect;
...@@ -1037,18 +1039,10 @@ void RenderWidget::OnEnableDeviceEmulation( ...@@ -1037,18 +1039,10 @@ void RenderWidget::OnEnableDeviceEmulation(
return; return;
if (!page_properties_->ScreenMetricsEmulator()) { if (!page_properties_->ScreenMetricsEmulator()) {
VisualProperties visual_properties;
visual_properties.screen_info = page_properties_->GetScreenInfo();
visual_properties.new_size = size_;
visual_properties.compositor_viewport_pixel_rect = CompositorViewportRect();
visual_properties.local_surface_id_allocation =
local_surface_id_allocation_from_parent_;
visual_properties.visible_viewport_size = visible_viewport_size_;
visual_properties.is_fullscreen_granted = is_fullscreen_granted_;
visual_properties.display_mode = display_mode_;
page_properties_->SetScreenMetricsEmulator( page_properties_->SetScreenMetricsEmulator(
std::make_unique<RenderWidgetScreenMetricsEmulator>( std::make_unique<RenderWidgetScreenMetricsEmulator>(
this, visual_properties, widget_screen_rect_, window_screen_rect_)); this, page_properties_->GetScreenInfo(), size_,
visible_viewport_size_, widget_screen_rect_, window_screen_rect_));
} }
page_properties_->ScreenMetricsEmulator()->ChangeEmulationParams(params); page_properties_->ScreenMetricsEmulator()->ChangeEmulationParams(params);
} }
......
...@@ -553,7 +553,7 @@ class CONTENT_EXPORT RenderWidget ...@@ -553,7 +553,7 @@ class CONTENT_EXPORT RenderWidget
void OnImeEventGuardStart(ImeEventGuard* guard); void OnImeEventGuardStart(ImeEventGuard* guard);
void OnImeEventGuardFinish(ImeEventGuard* guard); void OnImeEventGuardFinish(ImeEventGuard* guard);
void ApplyEmulatedScreenMetricsForPopupWidget(RenderWidget* origin_widget); void ApplyEmulatedScreenMetricsForPopupWidget();
// Checks if the selection bounds have been changed. If they are changed, // Checks if the selection bounds have been changed. If they are changed,
// the new value will be sent to the browser process. // the new value will be sent to the browser process.
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include "content/renderer/render_widget_screen_metrics_emulator.h" #include "content/renderer/render_widget_screen_metrics_emulator.h"
#include "content/common/visual_properties.h"
#include "content/public/common/context_menu_params.h" #include "content/public/common/context_menu_params.h"
#include "content/renderer/render_widget_screen_metrics_emulator_delegate.h" #include "content/renderer/render_widget_screen_metrics_emulator_delegate.h"
...@@ -12,11 +11,15 @@ namespace content { ...@@ -12,11 +11,15 @@ namespace content {
RenderWidgetScreenMetricsEmulator::RenderWidgetScreenMetricsEmulator( RenderWidgetScreenMetricsEmulator::RenderWidgetScreenMetricsEmulator(
RenderWidgetScreenMetricsEmulatorDelegate* delegate, RenderWidgetScreenMetricsEmulatorDelegate* delegate,
const VisualProperties& visual_properties, const ScreenInfo& screen_info,
const gfx::Size& widget_size,
const gfx::Size& visible_viewport_size,
const gfx::Rect& view_screen_rect, const gfx::Rect& view_screen_rect,
const gfx::Rect& window_screen_rect) const gfx::Rect& window_screen_rect)
: delegate_(delegate), : delegate_(delegate),
original_visual_properties_(visual_properties), original_screen_info_(screen_info),
original_widget_size_(widget_size),
original_visible_viewport_size_(visible_viewport_size),
original_view_screen_rect_(view_screen_rect), original_view_screen_rect_(view_screen_rect),
original_window_screen_rect_(window_screen_rect) {} original_window_screen_rect_(window_screen_rect) {}
...@@ -27,11 +30,8 @@ void RenderWidgetScreenMetricsEmulator::DisableAndApply() { ...@@ -27,11 +30,8 @@ void RenderWidgetScreenMetricsEmulator::DisableAndApply() {
delegate_->SetScreenMetricsEmulationParameters(false, emulation_params_); delegate_->SetScreenMetricsEmulationParameters(false, emulation_params_);
delegate_->SetScreenRects(original_view_screen_rect_, delegate_->SetScreenRects(original_view_screen_rect_,
original_window_screen_rect_); original_window_screen_rect_);
delegate_->SetScreenInfoAndSize( delegate_->SetScreenInfoAndSize(original_screen_info_, original_widget_size_,
original_visual_properties_.screen_info, original_visible_viewport_size_);
/*widget_size=*/original_visual_properties_.new_size,
/*visible_viewport_size=*/
original_visual_properties_.visible_viewport_size);
} }
void RenderWidgetScreenMetricsEmulator::ChangeEmulationParams( void RenderWidgetScreenMetricsEmulator::ChangeEmulationParams(
...@@ -41,7 +41,7 @@ void RenderWidgetScreenMetricsEmulator::ChangeEmulationParams( ...@@ -41,7 +41,7 @@ void RenderWidgetScreenMetricsEmulator::ChangeEmulationParams(
} }
void RenderWidgetScreenMetricsEmulator::Apply() { void RenderWidgetScreenMetricsEmulator::Apply() {
ScreenInfo screen_info = original_visual_properties_.screen_info; ScreenInfo screen_info = original_screen_info_;
applied_widget_rect_.set_size(gfx::Size(emulation_params_.view_size)); applied_widget_rect_.set_size(gfx::Size(emulation_params_.view_size));
...@@ -136,8 +136,12 @@ void RenderWidgetScreenMetricsEmulator::Apply() { ...@@ -136,8 +136,12 @@ void RenderWidgetScreenMetricsEmulator::Apply() {
} }
void RenderWidgetScreenMetricsEmulator::OnSynchronizeVisualProperties( void RenderWidgetScreenMetricsEmulator::OnSynchronizeVisualProperties(
const VisualProperties& params) { const ScreenInfo& screen_info,
original_visual_properties_ = params; const gfx::Size& widget_size,
const gfx::Size& visible_viewport_size) {
original_screen_info_ = screen_info;
original_widget_size_ = widget_size;
original_visible_viewport_size_ = visible_viewport_size;
Apply(); Apply();
} }
......
...@@ -8,12 +8,10 @@ ...@@ -8,12 +8,10 @@
#include <memory> #include <memory>
#include "content/common/content_export.h" #include "content/common/content_export.h"
#include "content/common/visual_properties.h" #include "content/public/common/screen_info.h"
#include "third_party/blink/public/web/web_device_emulation_params.h" #include "third_party/blink/public/web/web_device_emulation_params.h"
#include "ui/gfx/geometry/rect.h"
namespace gfx { #include "ui/gfx/geometry/size.h"
class Rect;
}
namespace content { namespace content {
class RenderWidgetScreenMetricsEmulatorDelegate; class RenderWidgetScreenMetricsEmulatorDelegate;
...@@ -27,26 +25,24 @@ class CONTENT_EXPORT RenderWidgetScreenMetricsEmulator { ...@@ -27,26 +25,24 @@ class CONTENT_EXPORT RenderWidgetScreenMetricsEmulator {
public: public:
RenderWidgetScreenMetricsEmulator( RenderWidgetScreenMetricsEmulator(
RenderWidgetScreenMetricsEmulatorDelegate* delegate, RenderWidgetScreenMetricsEmulatorDelegate* delegate,
const VisualProperties& visual_properties, const ScreenInfo& screen_info,
const gfx::Size& widget_size,
const gfx::Size& visible_viewport_size,
const gfx::Rect& view_screen_rect, const gfx::Rect& view_screen_rect,
const gfx::Rect& window_screen_rect); const gfx::Rect& window_screen_rect);
~RenderWidgetScreenMetricsEmulator(); ~RenderWidgetScreenMetricsEmulator();
// Scale and offset used to convert between host coordinates const gfx::Size& original_size() const { return original_widget_size_; }
// and webwidget coordinates.
const gfx::Size& original_size() const {
return original_visual_properties_.new_size;
}
float scale() const { return scale_; }
const gfx::Rect& applied_widget_rect() const { return applied_widget_rect_; }
const ScreenInfo& original_screen_info() const { const ScreenInfo& original_screen_info() const {
return original_visual_properties_.screen_info; return original_screen_info_;
} }
const gfx::Rect& original_screen_rect() const { const gfx::Rect& original_screen_rect() const {
return original_view_screen_rect_; return original_view_screen_rect_;
} }
float scale() const { return scale_; }
const gfx::Rect& applied_widget_rect() const { return applied_widget_rect_; }
// Disables emulation and applies non-emulated values to the RenderWidget. // Disables emulation and applies non-emulated values to the RenderWidget.
// Call this before destroying the RenderWidgetScreenMetricsEmulator. // Call this before destroying the RenderWidgetScreenMetricsEmulator.
void DisableAndApply(); void DisableAndApply();
...@@ -54,11 +50,13 @@ class CONTENT_EXPORT RenderWidgetScreenMetricsEmulator { ...@@ -54,11 +50,13 @@ class CONTENT_EXPORT RenderWidgetScreenMetricsEmulator {
// Sets new parameters and applies them to the RenderWidget. // Sets new parameters and applies them to the RenderWidget.
void ChangeEmulationParams(const blink::WebDeviceEmulationParams& params); void ChangeEmulationParams(const blink::WebDeviceEmulationParams& params);
// The following methods alter handlers' behavior for messages related to void OnSynchronizeVisualProperties(const ScreenInfo& screen_info,
// widget size and position. const gfx::Size& widget_size,
void OnSynchronizeVisualProperties(const VisualProperties& params); const gfx::Size& visible_viewport_size);
void OnUpdateScreenRects(const gfx::Rect& view_screen_rect, void OnUpdateScreenRects(const gfx::Rect& view_screen_rect,
const gfx::Rect& window_screen_rect); const gfx::Rect& window_screen_rect);
// Modify ContextMenuParams to account for emulation.
void OnShowContextMenu(ContextMenuParams* params); void OnShowContextMenu(ContextMenuParams* params);
private: private:
...@@ -77,7 +75,9 @@ class CONTENT_EXPORT RenderWidgetScreenMetricsEmulator { ...@@ -77,7 +75,9 @@ class CONTENT_EXPORT RenderWidgetScreenMetricsEmulator {
gfx::Rect applied_widget_rect_; gfx::Rect applied_widget_rect_;
// Original values to restore back after emulation ends. // Original values to restore back after emulation ends.
VisualProperties original_visual_properties_; ScreenInfo original_screen_info_;
gfx::Size original_widget_size_;
gfx::Size original_visible_viewport_size_;
gfx::Rect original_view_screen_rect_; gfx::Rect original_view_screen_rect_;
gfx::Rect original_window_screen_rect_; gfx::Rect original_window_screen_rect_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment