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(
// Devtools emulation, which may be currently applied to the
// |view_render_widget|, should also apply to the new popup. This doesn't
// happen automatically.
popup_widget->ApplyEmulatedScreenMetricsForPopupWidget(render_widget);
popup_widget->ApplyEmulatedScreenMetricsForPopupWidget();
if (output_widget)
*output_widget = popup_widget;
......
......@@ -598,12 +598,13 @@ void RenderWidget::Init(ShowCallback show_callback, WebWidget* web_widget) {
RenderThread::Get()->AddRoute(routing_id_, this);
}
void RenderWidget::ApplyEmulatedScreenMetricsForPopupWidget(
RenderWidget* origin_widget) {
void RenderWidget::ApplyEmulatedScreenMetricsForPopupWidget() {
RenderWidgetScreenMetricsEmulator* emulator =
page_properties_->ScreenMetricsEmulator();
if (!emulator)
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_view_origin_for_emulation_ = emulator->applied_widget_rect().origin();
popup_screen_origin_for_emulation_ =
......@@ -932,7 +933,8 @@ void RenderWidget::SynchronizeVisualPropertiesFromRenderView(
// modify can be consumed directly here instead of in
// SynchronizeVisualProperties().
page_properties_->ScreenMetricsEmulator()->OnSynchronizeVisualProperties(
visual_properties);
visual_properties.screen_info, visual_properties.new_size,
visual_properties.visible_viewport_size);
} else {
gfx::Rect new_compositor_viewport_pixel_rect =
visual_properties.compositor_viewport_pixel_rect;
......@@ -1037,18 +1039,10 @@ void RenderWidget::OnEnableDeviceEmulation(
return;
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(
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);
}
......
......@@ -553,7 +553,7 @@ class CONTENT_EXPORT RenderWidget
void OnImeEventGuardStart(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,
// the new value will be sent to the browser process.
......
......@@ -4,7 +4,6 @@
#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/renderer/render_widget_screen_metrics_emulator_delegate.h"
......@@ -12,11 +11,15 @@ namespace content {
RenderWidgetScreenMetricsEmulator::RenderWidgetScreenMetricsEmulator(
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& window_screen_rect)
: 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_window_screen_rect_(window_screen_rect) {}
......@@ -27,11 +30,8 @@ void RenderWidgetScreenMetricsEmulator::DisableAndApply() {
delegate_->SetScreenMetricsEmulationParameters(false, emulation_params_);
delegate_->SetScreenRects(original_view_screen_rect_,
original_window_screen_rect_);
delegate_->SetScreenInfoAndSize(
original_visual_properties_.screen_info,
/*widget_size=*/original_visual_properties_.new_size,
/*visible_viewport_size=*/
original_visual_properties_.visible_viewport_size);
delegate_->SetScreenInfoAndSize(original_screen_info_, original_widget_size_,
original_visible_viewport_size_);
}
void RenderWidgetScreenMetricsEmulator::ChangeEmulationParams(
......@@ -41,7 +41,7 @@ void RenderWidgetScreenMetricsEmulator::ChangeEmulationParams(
}
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));
......@@ -136,8 +136,12 @@ void RenderWidgetScreenMetricsEmulator::Apply() {
}
void RenderWidgetScreenMetricsEmulator::OnSynchronizeVisualProperties(
const VisualProperties& params) {
original_visual_properties_ = params;
const ScreenInfo& screen_info,
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();
}
......
......@@ -8,12 +8,10 @@
#include <memory>
#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"
namespace gfx {
class Rect;
}
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size.h"
namespace content {
class RenderWidgetScreenMetricsEmulatorDelegate;
......@@ -27,26 +25,24 @@ class CONTENT_EXPORT RenderWidgetScreenMetricsEmulator {
public:
RenderWidgetScreenMetricsEmulator(
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& window_screen_rect);
~RenderWidgetScreenMetricsEmulator();
// Scale and offset used to convert between host coordinates
// 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 gfx::Size& original_size() const { return original_widget_size_; }
const ScreenInfo& original_screen_info() const {
return original_visual_properties_.screen_info;
return original_screen_info_;
}
const gfx::Rect& original_screen_rect() const {
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.
// Call this before destroying the RenderWidgetScreenMetricsEmulator.
void DisableAndApply();
......@@ -54,11 +50,13 @@ class CONTENT_EXPORT RenderWidgetScreenMetricsEmulator {
// Sets new parameters and applies them to the RenderWidget.
void ChangeEmulationParams(const blink::WebDeviceEmulationParams& params);
// The following methods alter handlers' behavior for messages related to
// widget size and position.
void OnSynchronizeVisualProperties(const VisualProperties& params);
void OnSynchronizeVisualProperties(const ScreenInfo& screen_info,
const gfx::Size& widget_size,
const gfx::Size& visible_viewport_size);
void OnUpdateScreenRects(const gfx::Rect& view_screen_rect,
const gfx::Rect& window_screen_rect);
// Modify ContextMenuParams to account for emulation.
void OnShowContextMenu(ContextMenuParams* params);
private:
......@@ -77,7 +75,9 @@ class CONTENT_EXPORT RenderWidgetScreenMetricsEmulator {
gfx::Rect applied_widget_rect_;
// 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_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