| Index: content/browser/web_contents/web_contents_view_aura.cc
|
| diff --git a/content/browser/web_contents/web_contents_view_aura.cc b/content/browser/web_contents/web_contents_view_aura.cc
|
| index d04508ecd4cd6cf81ba68380725524958f605a5d..b78399ff02274278f5b3c83ac4368a651f14cd2a 100644
|
| --- a/content/browser/web_contents/web_contents_view_aura.cc
|
| +++ b/content/browser/web_contents/web_contents_view_aura.cc
|
| @@ -70,6 +70,10 @@
|
| #include "ui/wm/public/drag_drop_client.h"
|
| #include "ui/wm/public/drag_drop_delegate.h"
|
|
|
| +#if defined(OS_WIN)
|
| +#include "ui/base/win/hidden_window.h"
|
| +#endif
|
| +
|
| namespace content {
|
| WebContentsView* CreateWebContentsView(
|
| WebContentsImpl* web_contents,
|
| @@ -633,6 +637,8 @@ class WebContentsViewAura::WindowObserver
|
| #if defined(OS_WIN)
|
| if (!window->GetRootWindow()->HasObserver(this))
|
| window->GetRootWindow()->AddObserver(this);
|
| + view_->legacy_hwnd_->UpdateParent(
|
| + window->GetHost()->GetAcceleratedWidget());
|
| #endif
|
| }
|
| }
|
| @@ -652,6 +658,10 @@ class WebContentsViewAura::WindowObserver
|
| root_children[i]->RemoveObserver(this);
|
| }
|
| }
|
| +
|
| + // Update the legacy window's parent temporarily to the desktop window.
|
| + // It will eventually get reparented to the right root.
|
| + view_->legacy_hwnd_->UpdateParent(::GetDesktopWindow());
|
| #endif
|
| }
|
| }
|
| @@ -1005,6 +1015,7 @@ void WebContentsViewAura::SizeContents(const gfx::Size& size) {
|
| if (bounds.size() != size) {
|
| bounds.set_size(size);
|
| window_->SetBounds(bounds);
|
| + legacy_hwnd_->SetBounds(window_->GetBoundsInRootWindow());
|
| } else {
|
| // Our size matches what we want but the renderers size may not match.
|
| // Pretend we were resized so that the renderers size is updated too.
|
| @@ -1098,6 +1109,15 @@ void WebContentsViewAura::CreateView(
|
| // platforms as well.
|
| if (delegate_)
|
| drag_dest_delegate_ = delegate_->GetDragDestDelegate();
|
| +
|
| +#if defined(OS_WIN)
|
| + HWND parent_hwnd;
|
| + if (context && context->GetHost())
|
| + parent_hwnd = context->GetHost()->GetAcceleratedWidget();
|
| + else
|
| + parent_hwnd = ::GetDesktopWindow();
|
| + legacy_hwnd_.reset(LegacyRenderWidgetHostHWND::Create(parent_hwnd, this));
|
| +#endif
|
| }
|
|
|
| RenderWidgetHostViewBase* WebContentsViewAura::CreateViewForWidget(
|
| @@ -1138,12 +1158,22 @@ RenderWidgetHostViewBase* WebContentsViewAura::CreateViewForWidget(
|
| }
|
|
|
| AttachTouchEditableToRenderView();
|
| +
|
| +#if defined(OS_WIN)
|
| + view->SetLegacyRenderWidgetHostHWND(legacy_hwnd_.get());
|
| +#endif
|
| +
|
| return view;
|
| }
|
|
|
| RenderWidgetHostViewBase* WebContentsViewAura::CreateViewForPopupWidget(
|
| RenderWidgetHost* render_widget_host) {
|
| - return new RenderWidgetHostViewAura(render_widget_host);
|
| + RenderWidgetHostViewAura* view =
|
| + new RenderWidgetHostViewAura(render_widget_host);
|
| +#if defined(OS_WIN)
|
| + view->SetLegacyRenderWidgetHostHWND(legacy_hwnd_.get());
|
| +#endif
|
| + return view;
|
| }
|
|
|
| void WebContentsViewAura::SetPageTitle(const base::string16& title) {
|
| @@ -1612,6 +1642,31 @@ void WebContentsViewAura::UpdateWebContentsVisibility(bool visible) {
|
| if (web_contents_->should_normally_be_visible())
|
| web_contents_->WasHidden();
|
| }
|
| +
|
| +#if defined(OS_WIN)
|
| + if (visible) {
|
| + legacy_hwnd_->UpdateParent(
|
| + GetNativeView()->GetHost()->GetAcceleratedWidget());
|
| + legacy_hwnd_->SetBounds(window_->GetBoundsInRootWindow());
|
| + legacy_hwnd_->Show();
|
| + } else {
|
| + // We reparent the legacy Chrome_RenderWidgetHostHWND window to the global
|
| + // hidden window on the same lines as Windowed plugin windows.
|
| + legacy_hwnd_->UpdateParent(ui::GetHiddenWindow());
|
| + legacy_hwnd_->Hide();
|
| + }
|
| +#endif
|
| +}
|
| +
|
| +#if defined(OS_WIN)
|
| +BrowserAccessibilityManager*
|
| + WebContentsViewAura::GetRootBrowserAccessibilityManager() {
|
| + return web_contents_->GetRootBrowserAccessibilityManager();
|
| }
|
|
|
| +void WebContentsViewAura::OnLegacyHwndDestroyed(
|
| + LegacyRenderWidgetHostHWND* owner) {
|
| +}
|
| +#endif
|
| +
|
| } // namespace content
|
|
|