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 80797bd6c895ae26f3d3b13c1f0d15d296dad930..a45ad0b6f19acb831497bd1aa89b836a67e92d9d 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc |
@@ -55,6 +55,7 @@ |
#include "ui/aura/client/focus_client.h" |
#include "ui/aura/client/screen_position_client.h" |
#include "ui/aura/client/tooltip_client.h" |
+#include "ui/aura/client/transient_window_client.h" |
#include "ui/aura/client/window_tree_client.h" |
#include "ui/aura/env.h" |
#include "ui/aura/root_window.h" |
@@ -504,6 +505,9 @@ void RenderWidgetHostViewAura::InitAsPopup( |
popup_parent_host_view_ = |
static_cast<RenderWidgetHostViewAura*>(parent_host_view); |
+ // TransientWindowClient may be NULL during tests. |
+ aura::client::TransientWindowClient* transient_window_client = |
+ aura::client::GetTransientWindowClient(); |
RenderWidgetHostViewAura* old_child = |
popup_parent_host_view_->popup_child_host_view_; |
if (old_child) { |
@@ -511,7 +515,10 @@ void RenderWidgetHostViewAura::InitAsPopup( |
// similar mechanism to ensure a second popup doesn't cause the first one |
// to never get a chance to filter events. See crbug.com/160589. |
DCHECK(old_child->popup_parent_host_view_ == popup_parent_host_view_); |
- popup_parent_host_view_->window_->RemoveTransientChild(old_child->window_); |
+ if (transient_window_client) { |
+ transient_window_client->RemoveTransientChild( |
+ popup_parent_host_view_->window_, old_child->window_); |
+ } |
old_child->popup_parent_host_view_ = NULL; |
} |
popup_parent_host_view_->popup_child_host_view_ = this; |
@@ -524,7 +531,10 @@ void RenderWidgetHostViewAura::InitAsPopup( |
// Setting the transient child allows for the popup to get mouse events when |
// in a system modal dialog. |
// This fixes crbug.com/328593. |
- popup_parent_host_view_->window_->AddTransientChild(window_); |
+ if (transient_window_client) { |
+ transient_window_client->AddTransientChild( |
+ popup_parent_host_view_->window_, window_); |
+ } |
SetBounds(bounds_in_screen); |
Show(); |