Index: ash/common/frame/custom_frame_view_ash.cc |
diff --git a/ash/common/frame/custom_frame_view_ash.cc b/ash/common/frame/custom_frame_view_ash.cc |
index 806dbfce8d699c7136a5fafb49706fdd3e4342c3..511306bb09264409831f4f54457c15133145866a 100644 |
--- a/ash/common/frame/custom_frame_view_ash.cc |
+++ b/ash/common/frame/custom_frame_view_ash.cc |
@@ -44,15 +44,9 @@ class CustomFrameViewAshWindowStateDelegate : public wm::WindowStateDelegate, |
public WmWindowObserver { |
public: |
CustomFrameViewAshWindowStateDelegate(wm::WindowState* window_state, |
- CustomFrameViewAsh* custom_frame_view) |
+ CustomFrameViewAsh* custom_frame_view, |
+ bool enable_immersive) |
: window_state_(nullptr) { |
- immersive_fullscreen_controller_ = |
- WmShell::Get()->CreateImmersiveFullscreenController(); |
- if (immersive_fullscreen_controller_) { |
- custom_frame_view->InitImmersiveFullscreenControllerForView( |
- immersive_fullscreen_controller_.get()); |
- } |
- |
// Add a window state observer to exit fullscreen properly in case |
// fullscreen is exited without going through |
// WindowState::ToggleFullscreen(). This is the case when exiting |
@@ -61,6 +55,16 @@ class CustomFrameViewAshWindowStateDelegate : public wm::WindowStateDelegate, |
window_state_ = window_state; |
window_state_->AddObserver(this); |
window_state_->window()->AddObserver(this); |
+ |
+ if (!enable_immersive) |
+ return; |
+ |
+ immersive_fullscreen_controller_ = |
+ WmShell::Get()->CreateImmersiveFullscreenController(); |
+ if (immersive_fullscreen_controller_) { |
+ custom_frame_view->InitImmersiveFullscreenControllerForView( |
+ immersive_fullscreen_controller_.get()); |
+ } |
} |
~CustomFrameViewAshWindowStateDelegate() override { |
if (window_state_) { |
@@ -179,8 +183,14 @@ bool CustomFrameViewAsh::OverlayView::DoesIntersectRect( |
// static |
const char CustomFrameViewAsh::kViewClassName[] = "CustomFrameViewAsh"; |
-CustomFrameViewAsh::CustomFrameViewAsh(views::Widget* frame) |
- : frame_(frame), header_view_(new HeaderView(frame)) { |
+CustomFrameViewAsh::CustomFrameViewAsh( |
+ views::Widget* frame, |
+ ImmersiveFullscreenControllerDelegate* immersive_delegate, |
+ bool enable_immersive) |
+ : frame_(frame), |
+ header_view_(new HeaderView(frame)), |
+ immersive_delegate_(immersive_delegate ? immersive_delegate |
+ : header_view_) { |
WmWindow* frame_window = WmLookup::Get()->GetWindowForWidget(frame); |
frame_window->InstallResizeHandleWindowTargeter(nullptr); |
// |header_view_| is set as the non client view's overlay view so that it can |
@@ -192,7 +202,8 @@ CustomFrameViewAsh::CustomFrameViewAsh(views::Widget* frame) |
wm::WindowState* window_state = frame_window->GetWindowState(); |
if (!window_state->HasDelegate()) { |
window_state->SetDelegate(std::unique_ptr<wm::WindowStateDelegate>( |
- new CustomFrameViewAshWindowStateDelegate(window_state, this))); |
+ new CustomFrameViewAshWindowStateDelegate(window_state, this, |
+ enable_immersive))); |
} |
} |
@@ -200,7 +211,8 @@ CustomFrameViewAsh::~CustomFrameViewAsh() {} |
void CustomFrameViewAsh::InitImmersiveFullscreenControllerForView( |
ImmersiveFullscreenController* immersive_fullscreen_controller) { |
- immersive_fullscreen_controller->Init(header_view_, frame_, header_view_); |
+ immersive_fullscreen_controller->Init(immersive_delegate_, frame_, |
+ header_view_); |
} |
void CustomFrameViewAsh::SetFrameColors(SkColor active_frame_color, |
@@ -314,9 +326,6 @@ void CustomFrameViewAsh::VisibilityChanged(views::View* starting_from, |
header_view_->UpdateAvatarIcon(); |
} |
-//////////////////////////////////////////////////////////////////////////////// |
-// CustomFrameViewAsh, views::ViewTargeterDelegate overrides: |
- |
views::View* CustomFrameViewAsh::GetHeaderView() { |
return header_view_; |
} |