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

Don't crash by trying to set PageZoom on undead RenderWidgets

Web tests set page zoom on every RenderView's main frame, but some may
be holding a remote main frame. Don't try to set page zoom on those ones
and let the page zoom propagate from the main frame down to those
RenderViews and their child frames.

R=avi@chromium.org

Bug: 1006580
Change-Id: I411b9cd8d21f16e03649c9c716a3e6d1e7fc271e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1823317Reviewed-by: default avatarAvi Drissman <avi@chromium.org>
Commit-Queue: danakj <danakj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#699963}
parent 5c76f3e0
...@@ -1818,22 +1818,37 @@ void EventSender::TextZoomOut() { ...@@ -1818,22 +1818,37 @@ void EventSender::TextZoomOut() {
void EventSender::ZoomPageIn() { void EventSender::ZoomPageIn() {
for (WebViewTestProxy* view_proxy : interfaces()->GetWindowList()) { for (WebViewTestProxy* view_proxy : interfaces()->GetWindowList()) {
view_proxy->GetWidget()->SetZoomLevelForTesting( // Only set page zoom on main frames. Any RenderViews that exist for
view_proxy->webview()->ZoomLevel() + 1); // a proxy main frame will hear about the change as a side effect of
// changing the main frame.
if (view_proxy->GetMainRenderFrame()) {
view_proxy->GetWidget()->SetZoomLevelForTesting(
view_proxy->webview()->ZoomLevel() + 1);
}
} }
} }
void EventSender::ZoomPageOut() { void EventSender::ZoomPageOut() {
for (WebViewTestProxy* view_proxy : interfaces()->GetWindowList()) { for (WebViewTestProxy* view_proxy : interfaces()->GetWindowList()) {
view_proxy->GetWidget()->SetZoomLevelForTesting( // Only set page zoom on main frames. Any RenderViews that exist for
view_proxy->webview()->ZoomLevel() - 1); // a proxy main frame will hear about the change as a side effect of
// changing the main frame.
if (view_proxy->GetMainRenderFrame()) {
view_proxy->GetWidget()->SetZoomLevelForTesting(
view_proxy->webview()->ZoomLevel() - 1);
}
} }
} }
void EventSender::SetPageZoomFactor(double zoom_factor) { void EventSender::SetPageZoomFactor(double zoom_factor) {
for (WebViewTestProxy* view_proxy : interfaces()->GetWindowList()) { for (WebViewTestProxy* view_proxy : interfaces()->GetWindowList()) {
view_proxy->GetWidget()->SetZoomLevelForTesting(std::log(zoom_factor) / // Only set page zoom on main frames. Any RenderViews that exist for
std::log(1.2)); // a proxy main frame will hear about the change as a side effect of
// changing the main frame.
if (view_proxy->GetMainRenderFrame()) {
view_proxy->GetWidget()->SetZoomLevelForTesting(std::log(zoom_factor) /
std::log(1.2));
}
} }
} }
......
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