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

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

Issue 1815593002: Remove windowed NPAPI code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@make_test_plugin_windowless
Patch Set: rebase Created 4 years, 9 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 849dd8b2d5ae84c10750804a5e52c9cb5da654df..7608c7b652a396f5c3024a5c581397edf1b714de 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -141,97 +141,6 @@ const int kMouseLockBorderPercentage = 15;
const int kResizeLockTimeoutMs = 67;
#if defined(OS_WIN)
-// Used to associate a plugin HWND with its RenderWidgetHostViewAura instance.
-const wchar_t kWidgetOwnerProperty[] = L"RenderWidgetHostViewAuraOwner";
-
-BOOL CALLBACK WindowDestroyingCallback(HWND window, LPARAM param) {
- RenderWidgetHostViewAura* widget =
- reinterpret_cast<RenderWidgetHostViewAura*>(param);
- if (GetProp(window, kWidgetOwnerProperty) == widget) {
- // Properties set on HWNDs must be removed to avoid leaks.
- RemoveProp(window, kWidgetOwnerProperty);
- RenderWidgetHostViewBase::DetachPluginWindowsCallback(window);
- }
- return TRUE;
-}
-
-BOOL CALLBACK HideWindowsCallback(HWND window, LPARAM param) {
- RenderWidgetHostViewAura* widget =
- reinterpret_cast<RenderWidgetHostViewAura*>(param);
- if (GetProp(window, kWidgetOwnerProperty) == widget)
- SetParent(window, ui::GetHiddenWindow());
- return TRUE;
-}
-
-BOOL CALLBACK ShowWindowsCallback(HWND window, LPARAM param) {
- RenderWidgetHostViewAura* widget =
- reinterpret_cast<RenderWidgetHostViewAura*>(param);
-
- if (GetProp(window, kWidgetOwnerProperty) == widget &&
- widget->GetNativeView()->GetHost()) {
- HWND parent = widget->GetNativeView()->GetHost()->GetAcceleratedWidget();
- SetParent(window, parent);
- }
- return TRUE;
-}
-
-struct CutoutRectsParams {
- RenderWidgetHostViewAura* widget;
- std::vector<gfx::Rect> cutout_rects;
- std::map<HWND, WebPluginGeometry>* geometry;
-};
-
-// Used to update the region for the windowed plugin to draw in. We start with
-// the clip rect from the renderer, then remove the cutout rects from the
-// renderer, and then remove the transient windows from the root window and the
-// constrained windows from the parent window.
-BOOL CALLBACK SetCutoutRectsCallback(HWND window, LPARAM param) {
- CutoutRectsParams* params = reinterpret_cast<CutoutRectsParams*>(param);
-
- if (GetProp(window, kWidgetOwnerProperty) == params->widget) {
- // First calculate the offset of this plugin from the root window, since
- // the cutouts are relative to the root window.
- HWND parent =
- params->widget->GetNativeView()->GetHost()->GetAcceleratedWidget();
- POINT offset;
- offset.x = offset.y = 0;
- MapWindowPoints(window, parent, &offset, 1);
-
- // Now get the cached clip rect and cutouts for this plugin window that came
- // from the renderer.
- std::map<HWND, WebPluginGeometry>::iterator i = params->geometry->begin();
- while (i != params->geometry->end() &&
- i->second.window != window &&
- GetParent(i->second.window) != window) {
- ++i;
- }
-
- if (i == params->geometry->end()) {
- NOTREACHED();
- return TRUE;
- }
-
- HRGN hrgn = CreateRectRgn(i->second.clip_rect.x(),
- i->second.clip_rect.y(),
- i->second.clip_rect.right(),
- i->second.clip_rect.bottom());
- // We start with the cutout rects that came from the renderer, then add the
- // ones that came from transient and constrained windows.
- std::vector<gfx::Rect> cutout_rects = i->second.cutout_rects;
- for (size_t i = 0; i < params->cutout_rects.size(); ++i) {
- gfx::Rect offset_cutout = params->cutout_rects[i];
- offset_cutout.Offset(-offset.x, -offset.y);
- cutout_rects.push_back(offset_cutout);
- }
- gfx::SubtractRectanglesFromRegion(hrgn, cutout_rects);
- // If we don't have any cutout rects then no point in messing with the
- // window region.
- if (cutout_rects.size())
- SetWindowRgn(window, hrgn, TRUE);
- }
- return TRUE;
-}
-
// A callback function for EnumThreadWindows to enumerate and dismiss
// any owned popup windows.
BOOL CALLBACK DismissOwnedPopups(HWND window, LPARAM arg) {
@@ -659,12 +568,8 @@ void RenderWidgetHostViewAura::Show() {
GetNativeView()->GetHost()->GetAcceleratedWidget());
legacy_render_widget_host_HWND_->SetBounds(
window_->GetBoundsInRootWindow());
- }
- LPARAM lparam = reinterpret_cast<LPARAM>(this);
- EnumChildWindows(ui::GetHiddenWindow(), ShowWindowsCallback, lparam);
-
- if (legacy_render_widget_host_HWND_)
legacy_render_widget_host_HWND_->Show();
+ }
#endif
}
@@ -677,12 +582,8 @@ void RenderWidgetHostViewAura::Hide() {
delegated_frame_host_->WasHidden();
#if defined(OS_WIN)
- constrained_rects_.clear();
aura::WindowTreeHost* host = window_->GetHost();
if (host) {
- 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_)
@@ -901,58 +802,6 @@ void RenderWidgetHostViewAura::ParentHierarchyChanged() {
HandleParentBoundsChanged();
}
-void RenderWidgetHostViewAura::MovePluginWindows(
- const std::vector<WebPluginGeometry>& plugin_window_moves) {
-#if defined(OS_WIN)
- // We need to clip the rectangle to the tab's viewport, otherwise we will draw
- // over the browser UI.
- if (!window_->GetRootWindow()) {
- DCHECK(plugin_window_moves.empty());
- return;
- }
- HWND parent = window_->GetHost()->GetAcceleratedWidget();
- gfx::Rect view_bounds = window_->GetBoundsInRootWindow();
- std::vector<WebPluginGeometry> moves = plugin_window_moves;
-
- gfx::Rect view_port(view_bounds.size());
-
- for (size_t i = 0; i < moves.size(); ++i) {
- gfx::Rect clip(moves[i].clip_rect);
- gfx::Vector2d view_port_offset(
- moves[i].window_rect.OffsetFromOrigin());
- clip.Offset(view_port_offset);
- clip.Intersect(view_port);
- clip.Offset(-view_port_offset);
- moves[i].clip_rect = clip;
-
- moves[i].window_rect.Offset(view_bounds.OffsetFromOrigin());
-
- plugin_window_moves_[moves[i].window] = moves[i];
-
- // constrained_rects_ are relative to the root window. We want to convert
- // them to be relative to the plugin window.
- for (size_t j = 0; j < constrained_rects_.size(); ++j) {
- gfx::Rect offset_cutout = constrained_rects_[j];
- offset_cutout -= moves[i].window_rect.OffsetFromOrigin();
- moves[i].cutout_rects.push_back(offset_cutout);
- }
- }
-
- MovePluginWindowsHelper(parent, moves);
-
- // Make sure each plugin window (or its wrapper if it exists) has a pointer to
- // |this|.
- for (size_t i = 0; i < moves.size(); ++i) {
- HWND window = moves[i].window;
- if (GetParent(window) != parent) {
- window = GetParent(window);
- }
- if (!GetProp(window, kWidgetOwnerProperty))
- SetProp(window, kWidgetOwnerProperty, this);
- }
-#endif // defined(OS_WIN)
-}
-
void RenderWidgetHostViewAura::Focus() {
// Make sure we have a FocusClient before attempting to Focus(). In some
// situations we may not yet be in a valid Window hierarchy (such as reloading
@@ -1177,27 +1026,6 @@ bool RenderWidgetHostViewAura::UsesNativeWindowFrame() const {
return (legacy_render_widget_host_HWND_ != NULL);
}
-void RenderWidgetHostViewAura::UpdateConstrainedWindowRects(
- const std::vector<gfx::Rect>& rects) {
- // Check this before setting constrained_rects_, so that next time they're set
- // and we have a root window we don't early return.
- if (!window_->GetHost())
- return;
-
- if (rects == constrained_rects_)
- return;
-
- constrained_rects_ = rects;
-
- HWND parent = window_->GetHost()->GetAcceleratedWidget();
- CutoutRectsParams params;
- params.widget = this;
- params.cutout_rects = constrained_rects_;
- params.geometry = &plugin_window_moves_;
- LPARAM lparam = reinterpret_cast<LPARAM>(&params);
- EnumChildWindows(parent, SetCutoutRectsCallback, lparam);
-}
-
void RenderWidgetHostViewAura::UpdateMouseLockRegion() {
RECT window_rect =
gfx::win::DIPToScreenRect(window_->GetBoundsInScreen()).ToRECT();
@@ -1951,17 +1779,6 @@ void RenderWidgetHostViewAura::OnDeviceScaleFactorChanged(
void RenderWidgetHostViewAura::OnWindowDestroying(aura::Window* window) {
#if defined(OS_WIN)
- 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();
- }
- 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
@@ -2771,11 +2588,6 @@ void RenderWidgetHostViewAura::InternalSetBounds(const gfx::Rect& rect) {
// 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()) {

Powered by Google App Engine
This is Rietveld 408576698