| 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 0cb6a0897c81bff6d02e69742a202305c728dbcd..074a309e045a43ef514afa1c672bd7bb5a927292 100644
 | 
| --- a/content/browser/renderer_host/render_widget_host_view_aura.cc
 | 
| +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
 | 
| @@ -448,7 +448,6 @@ RenderWidgetHostViewAura::RenderWidgetHostViewAura(RenderWidgetHost* host,
 | 
|        cursor_visibility_state_in_renderer_(UNKNOWN),
 | 
|  #if defined(OS_WIN)
 | 
|        legacy_render_widget_host_HWND_(NULL),
 | 
| -      legacy_window_destroyed_(false),
 | 
|  #endif
 | 
|        has_snapped_to_boundary_(false),
 | 
|        touch_editing_client_(NULL),
 | 
| @@ -602,16 +601,6 @@ void RenderWidgetHostViewAura::WasShown() {
 | 
|    delegated_frame_host_->WasShown(browser_latency_info);
 | 
|  
 | 
|  #if defined(OS_WIN)
 | 
| -  if (legacy_render_widget_host_HWND_) {
 | 
| -    // Reparent the legacy Chrome_RenderWidgetHostHWND window to the parent
 | 
| -    // window before reparenting any plugins. This ensures that the plugin
 | 
| -    // windows stay on top of the child Zorder in the parent and receive
 | 
| -    // mouse events, etc.
 | 
| -    legacy_render_widget_host_HWND_->UpdateParent(
 | 
| -        GetNativeView()->GetHost()->GetAcceleratedWidget());
 | 
| -    legacy_render_widget_host_HWND_->SetBounds(
 | 
| -        window_->GetBoundsInRootWindow());
 | 
| -  }
 | 
|    LPARAM lparam = reinterpret_cast<LPARAM>(this);
 | 
|    EnumChildWindows(ui::GetHiddenWindow(), ShowWindowsCallback, lparam);
 | 
|  #endif
 | 
| @@ -630,10 +619,6 @@ void RenderWidgetHostViewAura::WasHidden() {
 | 
|      HWND parent = host->GetAcceleratedWidget();
 | 
|      LPARAM lparam = reinterpret_cast<LPARAM>(this);
 | 
|      EnumChildWindows(parent, HideWindowsCallback, lparam);
 | 
| -    // We reparent the legacy Chrome_RenderWidgetHostHWND window to the global
 | 
| -    // hidden window on the same lines as Windowed plugin windows.
 | 
| -    if (legacy_render_widget_host_HWND_)
 | 
| -      legacy_render_widget_host_HWND_->UpdateParent(ui::GetHiddenWindow());
 | 
|    }
 | 
|  #endif
 | 
|  }
 | 
| @@ -798,19 +783,11 @@ bool RenderWidgetHostViewAura::IsSurfaceAvailableForCopy() const {
 | 
|  void RenderWidgetHostViewAura::Show() {
 | 
|    window_->Show();
 | 
|    WasShown();
 | 
| -#if defined(OS_WIN)
 | 
| -  if (legacy_render_widget_host_HWND_)
 | 
| -    legacy_render_widget_host_HWND_->Show();
 | 
| -#endif
 | 
|  }
 | 
|  
 | 
|  void RenderWidgetHostViewAura::Hide() {
 | 
|    window_->Hide();
 | 
|    WasHidden();
 | 
| -#if defined(OS_WIN)
 | 
| -  if (legacy_render_widget_host_HWND_)
 | 
| -    legacy_render_widget_host_HWND_->Hide();
 | 
| -#endif
 | 
|  }
 | 
|  
 | 
|  bool RenderWidgetHostViewAura::IsShowing() {
 | 
| @@ -1035,12 +1012,7 @@ void RenderWidgetHostViewAura::UpdateMouseLockRegion() {
 | 
|      ::ClipCursor(&window_rect);
 | 
|    }
 | 
|  }
 | 
| -
 | 
| -void RenderWidgetHostViewAura::OnLegacyWindowDestroyed() {
 | 
| -  legacy_render_widget_host_HWND_ = NULL;
 | 
| -  legacy_window_destroyed_ = true;
 | 
| -}
 | 
| -#endif
 | 
| +#endif  // defined(OS_WIN)
 | 
|  
 | 
|  void RenderWidgetHostViewAura::OnSwapCompositorFrame(
 | 
|      uint32 output_surface_id,
 | 
| @@ -1072,6 +1044,11 @@ void RenderWidgetHostViewAura::DidStopFlinging() {
 | 
|  }
 | 
|  
 | 
|  #if defined(OS_WIN)
 | 
| +void RenderWidgetHostViewAura::SetLegacyRenderWidgetHostHWND(
 | 
| +    LegacyRenderWidgetHostHWND* legacy_hwnd) {
 | 
| +  legacy_render_widget_host_HWND_ = legacy_hwnd;
 | 
| +}
 | 
| +
 | 
|  void RenderWidgetHostViewAura::SetParentNativeViewAccessible(
 | 
|      gfx::NativeViewAccessible accessible_parent) {
 | 
|  }
 | 
| @@ -1079,8 +1056,9 @@ void RenderWidgetHostViewAura::SetParentNativeViewAccessible(
 | 
|  gfx::NativeViewId RenderWidgetHostViewAura::GetParentForWindowlessPlugin()
 | 
|      const {
 | 
|    if (legacy_render_widget_host_HWND_) {
 | 
| -    return reinterpret_cast<gfx::NativeViewId>(
 | 
| -        legacy_render_widget_host_HWND_->hwnd());
 | 
| +    HWND hwnd = legacy_render_widget_host_HWND_->hwnd();
 | 
| +    if (::IsWindow(hwnd))
 | 
| +      return reinterpret_cast<gfx::NativeViewId>(hwnd);
 | 
|    }
 | 
|    return NULL;
 | 
|  }
 | 
| @@ -1223,8 +1201,11 @@ RenderWidgetHostViewAura::CreateBrowserAccessibilityManager(
 | 
|  gfx::AcceleratedWidget
 | 
|  RenderWidgetHostViewAura::AccessibilityGetAcceleratedWidget() {
 | 
|  #if defined(OS_WIN)
 | 
| -  if (legacy_render_widget_host_HWND_)
 | 
| -    return legacy_render_widget_host_HWND_->hwnd();
 | 
| +  if (legacy_render_widget_host_HWND_) {
 | 
| +    HWND hwnd = legacy_render_widget_host_HWND_->hwnd();
 | 
| +    if (::IsWindow(hwnd))
 | 
| +      return hwnd;
 | 
| +  }
 | 
|  #endif
 | 
|    return gfx::kNullAcceleratedWidget;
 | 
|  }
 | 
| @@ -1747,20 +1728,7 @@ void RenderWidgetHostViewAura::OnWindowDestroying(aura::Window* window) {
 | 
|    }
 | 
|    LPARAM lparam = reinterpret_cast<LPARAM>(this);
 | 
|    EnumChildWindows(parent, WindowDestroyingCallback, lparam);
 | 
| -
 | 
| -  // The LegacyRenderWidgetHostHWND instance is destroyed when its window is
 | 
| -  // destroyed. Normally we control when that happens via the Destroy call
 | 
| -  // in the dtor. However there may be cases where the window is destroyed
 | 
| -  // by Windows, i.e. the parent window is destroyed before the
 | 
| -  // RenderWidgetHostViewAura instance goes away etc. To avoid that we
 | 
| -  // destroy the LegacyRenderWidgetHostHWND instance here.
 | 
| -  if (legacy_render_widget_host_HWND_) {
 | 
| -    legacy_render_widget_host_HWND_->set_host(NULL);
 | 
| -    legacy_render_widget_host_HWND_->Destroy();
 | 
| -    // The Destroy call above will delete the LegacyRenderWidgetHostHWND
 | 
| -    // instance.
 | 
| -    legacy_render_widget_host_HWND_ = NULL;
 | 
| -  }
 | 
| +  legacy_render_widget_host_HWND_ = NULL;
 | 
|  #endif
 | 
|  
 | 
|    // Make sure that the input method no longer references to this object before
 | 
| @@ -2268,13 +2236,6 @@ RenderWidgetHostViewAura::~RenderWidgetHostViewAura() {
 | 
|    // Aura root window and we don't have a way to get an input method object
 | 
|    // associated with the window, but just in case.
 | 
|    DetachFromInputMethod();
 | 
| -
 | 
| -#if defined(OS_WIN)
 | 
| -  // The LegacyRenderWidgetHostHWND window should have been destroyed in
 | 
| -  // RenderWidgetHostViewAura::OnWindowDestroying and the pointer should
 | 
| -  // be set to NULL.
 | 
| -  DCHECK(!legacy_render_widget_host_HWND_);
 | 
| -#endif
 | 
|  }
 | 
|  
 | 
|  void RenderWidgetHostViewAura::UpdateCursorIfOverSelf() {
 | 
| @@ -2431,34 +2392,6 @@ void RenderWidgetHostViewAura::InternalSetBounds(const gfx::Rect& rect) {
 | 
|        selection_focus_rect_);
 | 
|    }
 | 
|  #if defined(OS_WIN)
 | 
| -  // Create the legacy dummy window which corresponds to the bounds of the
 | 
| -  // webcontents. This will be passed as the container window for windowless
 | 
| -  // plugins.
 | 
| -  // Plugins like Flash assume the container window which is returned via the
 | 
| -  // NPNVnetscapeWindow property corresponds to the bounds of the webpage.
 | 
| -  // This is not true in Aura where we have only HWND which is the main Aura
 | 
| -  // window. If we return this window to plugins like Flash then it causes the
 | 
| -  // coordinate translations done by these plugins to break.
 | 
| -  // Additonally the legacy dummy window is needed for accessibility and for
 | 
| -  // scrolling to work in legacy drivers for trackpoints/trackpads, etc.
 | 
| -  if (!legacy_window_destroyed_ && GetNativeViewId()) {
 | 
| -    if (!legacy_render_widget_host_HWND_) {
 | 
| -      legacy_render_widget_host_HWND_ = LegacyRenderWidgetHostHWND::Create(
 | 
| -          reinterpret_cast<HWND>(GetNativeViewId()));
 | 
| -    }
 | 
| -    if (legacy_render_widget_host_HWND_) {
 | 
| -      legacy_render_widget_host_HWND_->set_host(this);
 | 
| -      legacy_render_widget_host_HWND_->SetBounds(
 | 
| -          window_->GetBoundsInRootWindow());
 | 
| -      // There are cases where the parent window is created, made visible and
 | 
| -      // the associated RenderWidget is also visible before the
 | 
| -      // LegacyRenderWidgetHostHWND instace is created. Ensure that it is shown
 | 
| -      // here.
 | 
| -      if (!host_->is_hidden())
 | 
| -        legacy_render_widget_host_HWND_->Show();
 | 
| -    }
 | 
| -  }
 | 
| -
 | 
|    if (mouse_locked_)
 | 
|      UpdateMouseLockRegion();
 | 
|  #endif
 | 
| @@ -2504,14 +2437,6 @@ void RenderWidgetHostViewAura::AddedToRootWindow() {
 | 
|        input_method->SetFocusedTextInputClient(this);
 | 
|    }
 | 
|  
 | 
| -#if defined(OS_WIN)
 | 
| -  // The parent may have changed here. Ensure that the legacy window is
 | 
| -  // reparented accordingly.
 | 
| -  if (legacy_render_widget_host_HWND_)
 | 
| -    legacy_render_widget_host_HWND_->UpdateParent(
 | 
| -        reinterpret_cast<HWND>(GetNativeViewId()));
 | 
| -#endif
 | 
| -
 | 
|    delegated_frame_host_->AddedToWindow();
 | 
|  }
 | 
|  
 | 
| @@ -2525,13 +2450,6 @@ void RenderWidgetHostViewAura::RemovingFromRootWindow() {
 | 
|  
 | 
|    window_->GetHost()->RemoveObserver(this);
 | 
|    delegated_frame_host_->RemovingFromWindow();
 | 
| -
 | 
| -#if defined(OS_WIN)
 | 
| -  // Update the legacy window's parent temporarily to the desktop window. It
 | 
| -  // will eventually get reparented to the right root.
 | 
| -  if (legacy_render_widget_host_HWND_)
 | 
| -    legacy_render_widget_host_HWND_->UpdateParent(::GetDesktopWindow());
 | 
| -#endif
 | 
|  }
 | 
|  
 | 
|  void RenderWidgetHostViewAura::DetachFromInputMethod() {
 | 
| 
 |