Index: chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc |
diff --git a/chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc b/chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc |
index 5aa2b0f83de7170ac837d2ff9ec5701d60e31c06..8f061776edc3fb9e79b698a6c4cc1e363bbe59c1 100644 |
--- a/chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc |
+++ b/chrome/browser/ui/views/frame/immersive_mode_controller_ash.cc |
@@ -586,8 +586,8 @@ void ImmersiveModeControllerAsh::OnAddTransientChild(aura::Window* window, |
aura::Window* transient) { |
views::BubbleDelegateView* bubble_delegate = AsBubbleDelegate(transient); |
if (bubble_delegate && |
- bubble_delegate->anchor_view() && |
- top_container_->Contains(bubble_delegate->anchor_view())) { |
+ bubble_delegate->GetAnchorView() && |
+ top_container_->Contains(bubble_delegate->GetAnchorView())) { |
// Observe the aura::Window because the BubbleDelegateView may not be |
// parented to the widget's root view yet so |bubble_delegate->GetWidget()| |
// may still return NULL. |
@@ -837,10 +837,13 @@ void ImmersiveModeControllerAsh::UpdateFocusRevealedLock() { |
native_window_->GetRootWindow())->GetActiveWindow(); |
views::BubbleDelegateView* bubble_delegate = |
AsBubbleDelegate(active_window); |
- if (bubble_delegate && bubble_delegate->anchor_view()) { |
+ if (bubble_delegate && bubble_delegate->has_anchor_view()) { |
msw
2013/09/27 21:21:53
It seems like this code is avoiding a lock here fo
Mr4D (OOO till 08-26)
2013/09/27 22:52:21
Okay - I see you really really really don't want t
|
// BubbleManager will already have locked the top-of-window views if the |
// bubble is anchored to a child of |top_container_|. Don't acquire |
// |focus_revealed_lock_| here for the sake of simplicity. |
+ // Note that even though the anchor view might already be gone, the owning |
+ // anchor widget does still exist and as such it should be handled as if |
+ // the view is still there. |
} else { |
// The currently active window is not |native_window_| and it is not a |
// bubble with an anchor view. The top-of-window views should be revealed |
@@ -1170,8 +1173,8 @@ void ImmersiveModeControllerAsh::RecreateBubbleManager() { |
views::BubbleDelegateView* bubble_delegate = |
AsBubbleDelegate(transient_child); |
if (bubble_delegate && |
- bubble_delegate->anchor_view() && |
- top_container_->Contains(bubble_delegate->anchor_view())) { |
+ bubble_delegate->GetAnchorView() && |
+ top_container_->Contains(bubble_delegate->GetAnchorView())) { |
bubble_manager_->StartObserving(transient_child); |
} |
} |