NaCl: Update revision in DEPS, r12770 -> r12773
[chromium-blink-merge.git] / ui / views / window / client_view.cc
blob7edc5f4d5b98fac346eecbfebae05cd82f418fcf
1 // Copyright (c) 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.
5 #include "ui/views/window/client_view.h"
7 #include "base/logging.h"
8 #include "ui/base/accessibility/accessible_view_state.h"
9 #include "ui/base/hit_test.h"
10 #include "ui/views/widget/widget.h"
11 #include "ui/views/widget/widget_delegate.h"
13 namespace views {
15 // static
16 const char ClientView::kViewClassName[] =
17 "ui/views/window/ClientView";
19 ///////////////////////////////////////////////////////////////////////////////
20 // ClientView, public:
22 ClientView::ClientView(Widget* widget, View* contents_view)
23 : contents_view_(contents_view) {
26 int ClientView::NonClientHitTest(const gfx::Point& point) {
27 return bounds().Contains(point) ? HTCLIENT : HTNOWHERE;
30 DialogClientView* ClientView::AsDialogClientView() {
31 return NULL;
34 const DialogClientView* ClientView::AsDialogClientView() const {
35 return NULL;
38 bool ClientView::CanClose() {
39 return true;
42 void ClientView::WidgetClosing() {
45 ///////////////////////////////////////////////////////////////////////////////
46 // ClientView, View overrides:
48 gfx::Size ClientView::GetPreferredSize() {
49 // |contents_view_| is allowed to be NULL up until the point where this view
50 // is attached to a Container.
51 return contents_view_ ? contents_view_->GetPreferredSize() : gfx::Size();
54 gfx::Size ClientView::GetMaximumSize() {
55 // |contents_view_| is allowed to be NULL up until the point where this view
56 // is attached to a Container.
57 return contents_view_ ? contents_view_->GetMaximumSize() : gfx::Size();
60 gfx::Size ClientView::GetMinimumSize() {
61 // |contents_view_| is allowed to be NULL up until the point where this view
62 // is attached to a Container.
63 return contents_view_ ? contents_view_->GetMinimumSize() : gfx::Size();
66 void ClientView::Layout() {
67 // |contents_view_| is allowed to be NULL up until the point where this view
68 // is attached to a Container.
69 if (contents_view_)
70 contents_view_->SetBounds(0, 0, width(), height());
73 const char* ClientView::GetClassName() const {
74 return kViewClassName;
77 void ClientView::GetAccessibleState(ui::AccessibleViewState* state) {
78 state->role = ui::AccessibilityTypes::ROLE_CLIENT;
81 void ClientView::OnBoundsChanged(const gfx::Rect& previous_bounds) {
82 // Overridden to do nothing. The NonClientView manually calls Layout on the
83 // ClientView when it is itself laid out, see comment in
84 // NonClientView::Layout.
87 void ClientView::ViewHierarchyChanged(
88 const ViewHierarchyChangedDetails& details) {
89 if (details.is_add && details.child == this) {
90 DCHECK(GetWidget());
91 DCHECK(contents_view_); // |contents_view_| must be valid now!
92 // Insert |contents_view_| at index 0 so it is first in the focus chain.
93 // (the OK/Cancel buttons are inserted before contents_view_)
94 AddChildViewAt(contents_view_, 0);
98 } // namespace views