Chromium Code Reviews| 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); |
| } |
| } |