Chromium Code Reviews| 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 d75b7287c3d1a2cf3d75da93b3da520077363e28..a290e5c60b4a21e5b1ad9ec1f575363c3d84cec2 100644 |
| --- a/ash/common/frame/custom_frame_view_ash.cc |
| +++ b/ash/common/frame/custom_frame_view_ash.cc |
| @@ -125,6 +125,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; |
| @@ -135,6 +137,8 @@ class CustomFrameViewAsh::OverlayView : public views::View, |
| HeaderView* header_view_; |
| + base::Optional<int> header_height_; |
|
James Cook
2017/03/02 21:00:00
This makes sense as Optional.
|
| + |
| DISALLOW_COPY_AND_ASSIGN(OverlayView); |
| }; |
| @@ -147,6 +151,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: |
| @@ -155,11 +168,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); |
| } |
| @@ -186,16 +202,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 = WmLookup::Get()->GetWindowForWidget(frame); |
| 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->SetColorProperty(WmWindowProperty::TOP_VIEW_COLOR, |
| header_view_->GetInactiveFrameColor()); |
| @@ -225,6 +243,10 @@ void CustomFrameViewAsh::SetFrameColors(SkColor active_frame_color, |
| header_view_->GetInactiveFrameColor()); |
| } |
| +void CustomFrameViewAsh::SetHeaderHeight(base::Optional<int> height) { |
| + overlay_view_->SetHeaderHeight(height); |
| +} |
| + |
| //////////////////////////////////////////////////////////////////////////////// |
| // CustomFrameViewAsh, views::NonClientFrameView overrides: |