| 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 c33e325cef30eaab1a331b7c0dcf7f6d7f8f6166..207788f04e72b91678915c507d5a43bcc8be6104 100644
|
| --- a/content/browser/renderer_host/render_widget_host_view_aura.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
|
| @@ -382,7 +382,6 @@ RenderWidgetHostViewAura::RenderWidgetHostViewAura(RenderWidgetHost* host,
|
| cursor_visibility_state_in_renderer_(UNKNOWN),
|
| #if defined(OS_WIN)
|
| legacy_render_widget_host_HWND_(nullptr),
|
| - legacy_window_destroyed_(false),
|
| #endif
|
| has_snapped_to_boundary_(false),
|
| is_guest_view_hack_(is_guest_view_hack),
|
| @@ -555,20 +554,6 @@ void RenderWidgetHostViewAura::Show() {
|
| }
|
|
|
| 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());
|
| - legacy_render_widget_host_HWND_->Show();
|
| - }
|
| -#endif
|
| }
|
|
|
| void RenderWidgetHostViewAura::Hide() {
|
| @@ -578,16 +563,6 @@ void RenderWidgetHostViewAura::Hide() {
|
| if (host_ && !host_->is_hidden()) {
|
| host_->WasHidden();
|
| delegated_frame_host_->WasHidden();
|
| -
|
| -#if defined(OS_WIN)
|
| - aura::WindowTreeHost* host = window_->GetHost();
|
| - if (host) {
|
| - // 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
|
| }
|
|
|
| #if defined(OS_WIN)
|
| @@ -1049,12 +1024,7 @@ void RenderWidgetHostViewAura::UpdateMouseLockRegion() {
|
| .ToRECT();
|
| ::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_t output_surface_id,
|
| @@ -1089,6 +1059,13 @@ void RenderWidgetHostViewAura::DidStopFlinging() {
|
| selection_controller_client_->OnScrollCompleted();
|
| }
|
|
|
| +#if defined(OS_WIN)
|
| +void RenderWidgetHostViewAura::SetLegacyRenderWidgetHostHWND(
|
| + LegacyRenderWidgetHostHWND* legacy_hwnd) {
|
| + legacy_render_widget_host_HWND_ = legacy_hwnd;
|
| +}
|
| +#endif
|
| +
|
| bool RenderWidgetHostViewAura::HasAcceleratedSurface(
|
| const gfx::Size& desired_size) {
|
| // Aura doesn't use GetBackingStore for accelerated pages, so it doesn't
|
| @@ -1270,8 +1247,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;
|
| }
|
| @@ -1687,19 +1667,15 @@ void RenderWidgetHostViewAura::OnDeviceScaleFactorChanged(
|
|
|
| void RenderWidgetHostViewAura::OnWindowDestroying(aura::Window* window) {
|
| #if defined(OS_WIN)
|
| - // 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;
|
| + HWND parent = NULL;
|
| + // If the tab was hidden and it's closed, host_->is_hidden would have been
|
| + // reset to false in RenderWidgetHostImpl::RendererExited.
|
| + if (!window_->GetRootWindow() || host_->is_hidden()) {
|
| + parent = ui::GetHiddenWindow();
|
| + } else {
|
| + parent = window_->GetHost()->GetAcceleratedWidget();
|
| }
|
| + legacy_render_widget_host_HWND_ = nullptr;
|
| #endif
|
|
|
| // Make sure that the input method no longer references to this object before
|
| @@ -2280,13 +2256,6 @@ RenderWidgetHostViewAura::~RenderWidgetHostViewAura() {
|
| popup_child_host_view_->popup_parent_host_view_ = NULL;
|
| }
|
| event_filter_for_popup_exit_.reset();
|
| -
|
| -#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::CreateAuraWindow() {
|
| @@ -2497,28 +2466,8 @@ void RenderWidgetHostViewAura::InternalSetBounds(const gfx::Rect& rect) {
|
| window_->SetBounds(rect);
|
| host_->WasResized();
|
| delegated_frame_host_->WasResized();
|
| -#if defined(OS_WIN)
|
| - // Create the legacy dummy window which corresponds to the bounds of the
|
| - // webcontents. It is needed for accessibility and for scrolling to work in
|
| - // legacy drivers for trackpoints/trackpads, etc.
|
| - if (!legacy_window_destroyed_ && GetHostWindowHWND()) {
|
| - if (!legacy_render_widget_host_HWND_) {
|
| - legacy_render_widget_host_HWND_ =
|
| - LegacyRenderWidgetHostHWND::Create(GetHostWindowHWND());
|
| - }
|
| - 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 defined(OS_WIN)
|
| if (mouse_locked_)
|
| UpdateMouseLockRegion();
|
| #endif
|
| @@ -2564,13 +2513,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(GetHostWindowHWND());
|
| -#endif
|
| -
|
| delegated_frame_host_->SetCompositor(window_->GetHost()->compositor());
|
| }
|
|
|
| @@ -2584,13 +2526,6 @@ void RenderWidgetHostViewAura::RemovingFromRootWindow() {
|
|
|
| window_->GetHost()->RemoveObserver(this);
|
| delegated_frame_host_->ResetCompositor();
|
| -
|
| -#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() {
|
|
|