Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(755)

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 387353004: Create only a single LegacyRenderWidgetHostHWND per WebContentsViewAura. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@render_frame_ax_3
Patch Set: One more unneeded line Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 1a58187266d53e13ee4fbc242ae61510d1d6c900..057c3961e0dd2934a2934e2ad581cd2242f55e72 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
touch_editing_client_(NULL),
weak_ptr_factory_(this) {
@@ -571,16 +570,6 @@ void RenderWidgetHostViewAura::WasShown() {
delegated_frame_host_->WasShown();
#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
@@ -599,10 +588,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
}
@@ -763,19 +748,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() {
@@ -1004,12 +981,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::AcceleratedSurfaceBuffersSwapped(
const GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params& params_in_pixel,
@@ -1040,6 +1012,11 @@ void RenderWidgetHostViewAura::OnSwapCompositorFrame(
}
#if defined(OS_WIN)
+void RenderWidgetHostViewAura::SetLegacyRenderWidgetHostHWND(
+ LegacyRenderWidgetHostHWND* legacy_hwnd) {
+ legacy_render_widget_host_HWND_ = legacy_hwnd;
+}
+
void RenderWidgetHostViewAura::SetParentNativeViewAccessible(
gfx::NativeViewAccessible accessible_parent) {
}
@@ -1644,20 +1621,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
@@ -2147,13 +2111,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() {
@@ -2294,34 +2251,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
@@ -2367,14 +2296,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();
}
@@ -2388,13 +2309,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() {

Powered by Google App Engine
This is Rietveld 408576698