Chromium Code Reviews| Index: content/renderer/render_view_impl.cc |
| diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
| index 3e95872ccbf7afb1c98f175040fa501ade97947a..cddd354cb823b1a5f46473421d3f0393b95e3110 100644 |
| --- a/content/renderer/render_view_impl.cc |
| +++ b/content/renderer/render_view_impl.cc |
| @@ -778,6 +778,7 @@ RenderViewImpl::RenderViewImpl(RenderViewImplParams* params) |
| send_content_state_immediately_(false), |
| enabled_bindings_(0), |
| send_preferred_size_changes_(false), |
| + did_tap_multiple_targets_strategy_(MULTITARGET_POPUP), |
| is_loading_(false), |
| navigation_gesture_(NavigationGestureUnknown), |
| opened_by_user_gesture_(true), |
| @@ -6703,35 +6704,40 @@ bool RenderViewImpl::didTapMultipleTargets( |
| if (!new_total_scale) |
| return false; |
| - gfx::Size canvas_size = gfx::ToCeiledSize(gfx::ScaleSize(zoom_rect.size(), |
| - new_total_scale)); |
| - TransportDIB* transport_dib = NULL; |
| - { |
| - scoped_ptr<skia::PlatformCanvas> canvas( |
| - RenderProcess::current()->GetDrawingCanvas(&transport_dib, |
| - gfx::Rect(canvas_size))); |
| - if (!canvas) |
| - return false; |
| - |
| - // TODO(trchen): Cleanup the device scale factor mess. |
| - // device scale will be applied in WebKit |
| - // --> zoom_rect doesn't include device scale, |
| - // but WebKit will still draw on zoom_rect * device_scale_factor_ |
| - canvas->scale(new_total_scale / device_scale_factor_, |
| - new_total_scale / device_scale_factor_); |
| - canvas->translate(-zoom_rect.x() * device_scale_factor_, |
| - -zoom_rect.y() * device_scale_factor_); |
| - |
| - webwidget_->paint(webkit_glue::ToWebCanvas(canvas.get()), zoom_rect, |
| - WebWidget::ForceSoftwareRenderingAndIgnoreGPUResidentContent); |
| - } |
| - |
| - gfx::Rect physical_window_zoom_rect = gfx::ToEnclosingRect( |
| - ClientRectToPhysicalWindowRect(gfx::RectF(zoom_rect))); |
| - Send(new ViewHostMsg_ShowDisambiguationPopup(routing_id_, |
| - physical_window_zoom_rect, |
| - canvas_size, |
| - transport_dib->id())); |
| + if (did_tap_multiple_targets_strategy_ == MULTITARGET_ZOOM) { |
| + return webview()->zoomToMultipleTargetsRect(zoom_rect); |
| + } else if (did_tap_multiple_targets_strategy_ == MULTITARGET_POPUP) { |
| + gfx::Size canvas_size = |
| + gfx::ToCeiledSize(gfx::ScaleSize(zoom_rect.size(), new_total_scale)); |
| + TransportDIB* transport_dib = NULL; |
| + { |
| + scoped_ptr<skia::PlatformCanvas> canvas( |
| + RenderProcess::current()->GetDrawingCanvas(&transport_dib, |
| + gfx::Rect(canvas_size))); |
| + if (!canvas) |
| + return false; |
| + |
| + // TODO(trchen): Cleanup the device scale factor mess. |
| + // device scale will be applied in WebKit |
| + // --> zoom_rect doesn't include device scale, |
| + // but WebKit will still draw on zoom_rect * device_scale_factor_ |
| + canvas->scale(new_total_scale / device_scale_factor_, |
| + new_total_scale / device_scale_factor_); |
| + canvas->translate(-zoom_rect.x() * device_scale_factor_, |
| + -zoom_rect.y() * device_scale_factor_); |
| + |
| + webwidget_->paint(webkit_glue::ToWebCanvas(canvas.get()), zoom_rect, |
| + WebWidget::ForceSoftwareRenderingAndIgnoreGPUResidentContent); |
| + } |
| + |
| + gfx::Rect physical_window_zoom_rect = gfx::ToEnclosingRect( |
| + ClientRectToPhysicalWindowRect(gfx::RectF(zoom_rect))); |
| + Send(new ViewHostMsg_ShowDisambiguationPopup(routing_id_, |
| + physical_window_zoom_rect, |
| + canvas_size, |
| + transport_dib->id())); |
| + } else |
|
jochen (gone - plz use gerrit)
2013/07/16 10:05:54
nit. in chromium, if one if branch has curly brace
|
| + return false; |
| return true; |
| } |