| Index: content/browser/renderer_host/render_widget_host_view_aura.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
|
| index eee2df69b76756f82a597511cb8b934f22227e9e..42e5657e88a8132fb62ccefd1bddec65cb124165 100644
|
| --- a/content/browser/renderer_host/render_widget_host_view_aura.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
|
| @@ -29,6 +29,7 @@
|
| #include "content/browser/renderer_host/input/synthetic_gesture_target_aura.h"
|
| #include "content/browser/renderer_host/overscroll_controller.h"
|
| #include "content/browser/renderer_host/render_view_host_delegate.h"
|
| +#include "content/browser/renderer_host/render_view_host_delegate_view.h"
|
| #include "content/browser/renderer_host/render_view_host_impl.h"
|
| #include "content/browser/renderer_host/render_widget_host_impl.h"
|
| #include "content/browser/renderer_host/ui_events_helper.h"
|
| @@ -1224,6 +1225,50 @@ gfx::GLSurfaceHandle RenderWidgetHostViewAura::GetCompositingSurface() {
|
| return ImageTransportFactory::GetInstance()->GetSharedSurfaceHandle();
|
| }
|
|
|
| +#if defined(OS_WIN)
|
| +void RenderWidgetHostViewAura::ShowDisambiguationPopup(
|
| + const gfx::Rect& target_rect,
|
| + const SkBitmap& zoomed_bitmap) {
|
| + // |target_rect| is provided in pixels, not DIPs. So we convert it to DIPs
|
| + // by scaling it by the inverse of the device scale factor.
|
| + gfx::RectF screen_target_rect_f(target_rect);
|
| + screen_target_rect_f.Scale(1.0f / current_device_scale_factor_);
|
| + disambiguation_target_rect_ = gfx::ToEnclosingRect(screen_target_rect_f);
|
| +
|
| + float scale = static_cast<float>(zoomed_bitmap.width()) /
|
| + static_cast<float>(target_rect.width());
|
| + scale = std::min(scale, 3.0f);
|
| + scale = std::max(scale, 1.0f);
|
| + gfx::Size zoomed_size(gfx::ToCeiledSize(
|
| + gfx::ScaleSize(disambiguation_target_rect_.size(), scale)));
|
| +
|
| + CopyFromCompositingSurface(
|
| + disambiguation_target_rect_,
|
| + zoomed_size,
|
| + base::Bind(&RenderWidgetHostViewAura::DisambiguationPopupRendered,
|
| + base::Unretained(this)),
|
| + kN32_SkColorType);
|
| +}
|
| +
|
| +void RenderWidgetHostViewAura::DisambiguationPopupRendered(
|
| + bool success,
|
| + const SkBitmap& result) {
|
| + if (!success)
|
| + return;
|
| +
|
| + // Use RenderViewHostDelegate to get to the WebContentsViewAura, which will
|
| + // actually show the delegate.
|
| + RenderViewHostDelegate* delegate = NULL;
|
| + if (host_->IsRenderView())
|
| + delegate = RenderViewHost::From(host_)->GetDelegate();
|
| + RenderViewHostDelegateView* delegate_view = NULL;
|
| + if (delegate)
|
| + delegate_view = delegate->GetDelegateView();
|
| + if (delegate_view)
|
| + delegate_view->ShowDisambiguationPopup(disambiguation_target_rect_, result);
|
| +}
|
| +#endif
|
| +
|
| bool RenderWidgetHostViewAura::LockMouse() {
|
| aura::Window* root_window = window_->GetRootWindow();
|
| if (!root_window)
|
|
|