| Index: content/browser/renderer_host/render_view_host_impl.cc
 | 
| diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc
 | 
| index c457e2c339f50a4ca165710470be9a12f0d3b7df..abee01e209e1fe10c72b2e2afe764cb7d3fcf836 100644
 | 
| --- a/content/browser/renderer_host/render_view_host_impl.cc
 | 
| +++ b/content/browser/renderer_host/render_view_host_impl.cc
 | 
| @@ -90,8 +90,8 @@
 | 
|  #include "url/url_constants.h"
 | 
|  
 | 
|  #if defined(OS_WIN)
 | 
| -#include "base/win/win_util.h"
 | 
|  #include "ui/display/win/dpi.h"
 | 
| +#include "ui/gfx/geometry/dip_util.h"
 | 
|  #include "ui/gfx/platform_font_win.h"
 | 
|  #endif
 | 
|  
 | 
| @@ -108,27 +108,6 @@ namespace content {
 | 
|  namespace {
 | 
|  
 | 
|  #if defined(OS_WIN)
 | 
| -
 | 
| -const int kVirtualKeyboardDisplayWaitTimeoutMs = 100;
 | 
| -const int kMaxVirtualKeyboardDisplayRetries = 5;
 | 
| -
 | 
| -void DismissVirtualKeyboardTask() {
 | 
| -  static int virtual_keyboard_display_retries = 0;
 | 
| -  // If the virtual keyboard is not yet visible, then we execute the task again
 | 
| -  // waiting for it to show up.
 | 
| -  if (!base::win::DismissVirtualKeyboard()) {
 | 
| -    if (virtual_keyboard_display_retries < kMaxVirtualKeyboardDisplayRetries) {
 | 
| -      BrowserThread::PostDelayedTask(
 | 
| -          BrowserThread::UI, FROM_HERE,
 | 
| -          base::Bind(base::IgnoreResult(&DismissVirtualKeyboardTask)),
 | 
| -          TimeDelta::FromMilliseconds(kVirtualKeyboardDisplayWaitTimeoutMs));
 | 
| -      ++virtual_keyboard_display_retries;
 | 
| -    } else {
 | 
| -      virtual_keyboard_display_retries = 0;
 | 
| -    }
 | 
| -  }
 | 
| -}
 | 
| -
 | 
|  void GetWindowsSpecificPrefs(RendererPreferences* prefs) {
 | 
|    NONCLIENTMETRICS_XP metrics = {0};
 | 
|    base::win::GetNonClientMetrics(&metrics);
 | 
| @@ -163,7 +142,6 @@ void GetWindowsSpecificPrefs(RendererPreferences* prefs) {
 | 
|        display::win::GetSystemMetricsInDIP(SM_CXHSCROLL);
 | 
|  }
 | 
|  #endif
 | 
| -
 | 
|  }  // namespace
 | 
|  
 | 
|  // static
 | 
| @@ -227,7 +205,6 @@ RenderViewHostImpl::RenderViewHostImpl(
 | 
|        is_waiting_for_close_ack_(false),
 | 
|        sudden_termination_allowed_(false),
 | 
|        render_view_termination_status_(base::TERMINATION_STATUS_STILL_RUNNING),
 | 
| -      virtual_keyboard_requested_(false),
 | 
|        is_focused_element_editable_(false),
 | 
|        updating_web_preferences_(false),
 | 
|        render_view_ready_on_process_launch_(false),
 | 
| @@ -1127,16 +1104,6 @@ void RenderViewHostImpl::OnFocusedNodeChanged(
 | 
|    is_focused_element_editable_ = is_editable_node;
 | 
|    if (GetWidget()->GetView())
 | 
|      GetWidget()->GetView()->FocusedNodeChanged(is_editable_node);
 | 
| -#if defined(OS_WIN)
 | 
| -  if (!is_editable_node && virtual_keyboard_requested_) {
 | 
| -    virtual_keyboard_requested_ = false;
 | 
| -    delegate_->SetIsVirtualKeyboardRequested(false);
 | 
| -    BrowserThread::PostDelayedTask(
 | 
| -        BrowserThread::UI, FROM_HERE,
 | 
| -        base::Bind(base::IgnoreResult(&DismissVirtualKeyboardTask)),
 | 
| -        TimeDelta::FromMilliseconds(kVirtualKeyboardDisplayWaitTimeoutMs));
 | 
| -  }
 | 
| -#endif
 | 
|  
 | 
|    // None of the rest makes sense without a view.
 | 
|    if (!GetWidget()->GetView())
 | 
| @@ -1299,14 +1266,20 @@ void RenderViewHostImpl::OnRunFileChooser(const FileChooserParams& params) {
 | 
|  
 | 
|  void RenderViewHostImpl::OnFocusedNodeTouched(bool editable) {
 | 
|  #if defined(OS_WIN)
 | 
| -  if (editable) {
 | 
| -    virtual_keyboard_requested_ = base::win::DisplayVirtualKeyboard();
 | 
| -    delegate_->SetIsVirtualKeyboardRequested(true);
 | 
| -  } else {
 | 
| -    virtual_keyboard_requested_ = false;
 | 
| -    delegate_->SetIsVirtualKeyboardRequested(false);
 | 
| -    base::win::DismissVirtualKeyboard();
 | 
| -  }
 | 
| +  // We use the cursor position to determine where the touch occurred.
 | 
| +  // TODO(ananta)
 | 
| +  // Pass this information from blink.
 | 
| +  // In site isolation mode, we may not have a RenderViewHostImpl instance
 | 
| +  // which means that displaying the OSK is not going to work. We should
 | 
| +  // probably move this to RenderWidgetHostImpl and call the view from there.
 | 
| +  // https://bugs.chromium.org/p/chromium/issues/detail?id=613326
 | 
| +  POINT cursor_pos = {};
 | 
| +  ::GetCursorPos(&cursor_pos);
 | 
| +  float scale = GetScaleFactorForView(GetWidget()->GetView());
 | 
| +  gfx::Point location_dips_screen =
 | 
| +      gfx::ConvertPointToDIP(scale, gfx::Point(cursor_pos));
 | 
| +  if (GetWidget()->GetView())
 | 
| +    GetWidget()->GetView()->FocusedNodeTouched(location_dips_screen, editable);
 | 
|  #endif
 | 
|  }
 | 
|  
 | 
| 
 |