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; |
} |