| 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 470dd01cd989fd1fb0dee323a9bf2ee6c5b3a078..919256255c0037c826000b1592423b2673b6d815 100644
|
| --- a/ash/common/frame/custom_frame_view_ash.cc
|
| +++ b/ash/common/frame/custom_frame_view_ash.cc
|
| @@ -124,6 +124,8 @@ class CustomFrameViewAsh::OverlayView : public views::View,
|
| explicit OverlayView(HeaderView* header_view);
|
| ~OverlayView() override;
|
|
|
| + void SetHeaderHeight(base::Optional<int> height);
|
| +
|
| // views::View:
|
| void Layout() override;
|
|
|
| @@ -134,6 +136,8 @@ class CustomFrameViewAsh::OverlayView : public views::View,
|
|
|
| HeaderView* header_view_;
|
|
|
| + base::Optional<int> header_height_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(OverlayView);
|
| };
|
|
|
| @@ -146,6 +150,15 @@ CustomFrameViewAsh::OverlayView::OverlayView(HeaderView* header_view)
|
|
|
| CustomFrameViewAsh::OverlayView::~OverlayView() {}
|
|
|
| +void CustomFrameViewAsh::OverlayView::SetHeaderHeight(
|
| + base::Optional<int> height) {
|
| + if (header_height_ == height)
|
| + return;
|
| +
|
| + header_height_ = height;
|
| + Layout();
|
| +}
|
| +
|
| ///////////////////////////////////////////////////////////////////////////////
|
| // CustomFrameViewAsh::OverlayView, views::View overrides:
|
|
|
| @@ -154,11 +167,14 @@ void CustomFrameViewAsh::OverlayView::Layout() {
|
| // GetPreferredOnScreenHeight().
|
| header_view_->Layout();
|
|
|
| - int onscreen_height = header_view_->GetPreferredOnScreenHeight();
|
| + int onscreen_height = header_height_
|
| + ? *header_height_
|
| + : header_view_->GetPreferredOnScreenHeight();
|
| if (onscreen_height == 0) {
|
| header_view_->SetVisible(false);
|
| } else {
|
| - int height = header_view_->GetPreferredHeight();
|
| + const int height =
|
| + header_height_ ? *header_height_ : header_view_->GetPreferredHeight();
|
| header_view_->SetBounds(0, onscreen_height - height, width(), height);
|
| header_view_->SetVisible(true);
|
| }
|
| @@ -185,16 +201,18 @@ const char CustomFrameViewAsh::kViewClassName[] = "CustomFrameViewAsh";
|
| CustomFrameViewAsh::CustomFrameViewAsh(
|
| views::Widget* frame,
|
| ImmersiveFullscreenControllerDelegate* immersive_delegate,
|
| - bool enable_immersive)
|
| + bool enable_immersive,
|
| + mojom::WindowStyle window_style)
|
| : frame_(frame),
|
| - header_view_(new HeaderView(frame)),
|
| + header_view_(new HeaderView(frame, window_style)),
|
| + overlay_view_(new OverlayView(header_view_)),
|
| immersive_delegate_(immersive_delegate ? immersive_delegate
|
| : header_view_) {
|
| WmWindow* frame_window = WmWindow::Get(frame->GetNativeWindow());
|
| frame_window->InstallResizeHandleWindowTargeter(nullptr);
|
| // |header_view_| is set as the non client view's overlay view so that it can
|
| // overlay the web contents in immersive fullscreen.
|
| - frame->non_client_view()->SetOverlayView(new OverlayView(header_view_));
|
| + frame->non_client_view()->SetOverlayView(overlay_view_);
|
| frame_window->aura_window()->SetProperty(
|
| aura::client::kTopViewColor, header_view_->GetInactiveFrameColor());
|
|
|
| @@ -224,6 +242,10 @@ void CustomFrameViewAsh::SetFrameColors(SkColor active_frame_color,
|
| aura::client::kTopViewColor, header_view_->GetInactiveFrameColor());
|
| }
|
|
|
| +void CustomFrameViewAsh::SetHeaderHeight(base::Optional<int> height) {
|
| + overlay_view_->SetHeaderHeight(height);
|
| +}
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // CustomFrameViewAsh, views::NonClientFrameView overrides:
|
|
|
|
|