15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/fill_layout.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views {
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)FillLayout::FillLayout() {}
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)FillLayout::~FillLayout() {}
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FillLayout::Layout(View* host) {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!host->has_children())
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  View* frame_view = host->child_at(0);
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  frame_view->SetBoundsRect(host->GetContentsBounds());
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)gfx::Size FillLayout::GetPreferredSize(const View* host) const {
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  if (!host->has_children())
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return gfx::Size();
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK_EQ(1, host->child_count());
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  gfx::Rect rect(host->child_at(0)->GetPreferredSize());
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  rect.Inset(-host->GetInsets());
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return rect.size();
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)int FillLayout::GetPreferredHeightForWidth(const View* host, int width) const {
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  if (!host->has_children())
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    return 0;
354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  DCHECK_EQ(1, host->child_count());
364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  const gfx::Insets insets = host->GetInsets();
374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return host->child_at(0)->GetHeightForWidth(width - insets.width()) +
384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)      insets.height();
394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace views
42