Home | History | Annotate | Download | only in frame
      1 // Copyright 2012 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 "chrome/browser/ui/views/frame/contents_container.h"
      6 
      7 ContentsContainer::ContentsContainer(views::View* active_web_view)
      8     : active_web_view_(active_web_view),
      9       active_top_margin_(0) {
     10   AddChildView(active_web_view_);
     11 }
     12 
     13 ContentsContainer::~ContentsContainer() {
     14 }
     15 
     16 bool ContentsContainer::SetActiveTopMargin(int margin) {
     17   if (active_top_margin_ == margin)
     18     return false;
     19 
     20   active_top_margin_ = margin;
     21   // Make sure we layout next time around. We need this in case our bounds
     22   // haven't changed.
     23   InvalidateLayout();
     24   return true;
     25 }
     26 
     27 void ContentsContainer::Layout() {
     28   int content_y = active_top_margin_;
     29   int content_height = std::max(0, height() - content_y);
     30 
     31   active_web_view_->SetBounds(0, content_y, width(), content_height);
     32 
     33   // Need to invoke views::View in case any views whose bounds didn't change
     34   // still need a layout.
     35   views::View::Layout();
     36 }
     37 
     38 const char* ContentsContainer::GetClassName() const {
     39   return "ContentsContainer";
     40 }
     41