1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "ui/views/layout/fill_layout.h"
6
7#include "base/logging.h"
8
9namespace views {
10
11FillLayout::FillLayout() {}
12
13FillLayout::~FillLayout() {}
14
15void FillLayout::Layout(View* host) {
16  if (!host->has_children())
17    return;
18
19  View* frame_view = host->child_at(0);
20  frame_view->SetBoundsRect(host->GetContentsBounds());
21}
22
23gfx::Size FillLayout::GetPreferredSize(const View* host) const {
24  if (!host->has_children())
25    return gfx::Size();
26  DCHECK_EQ(1, host->child_count());
27  gfx::Rect rect(host->child_at(0)->GetPreferredSize());
28  rect.Inset(-host->GetInsets());
29  return rect.size();
30}
31
32int FillLayout::GetPreferredHeightForWidth(const View* host, int width) const {
33  if (!host->has_children())
34    return 0;
35  DCHECK_EQ(1, host->child_count());
36  const gfx::Insets insets = host->GetInsets();
37  return host->child_at(0)->GetHeightForWidth(width - insets.width()) +
38      insets.height();
39}
40
41}  // namespace views
42