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 "chrome/browser/ui/views/frame/browser_frame.h"
6
7#include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h"
8#include "chrome/browser/ui/views/frame/browser_root_view.h"
9#include "chrome/browser/ui/views/frame/browser_view.h"
10#include "chrome/browser/ui/views/frame/native_browser_frame.h"
11#include "views/widget/native_widget.h"
12#include "views/widget/widget.h"
13#include "views/window/native_window.h"
14#include "views/window/window.h"
15
16////////////////////////////////////////////////////////////////////////////////
17// BrowserFrame, public:
18
19BrowserFrame::~BrowserFrame() {
20}
21
22views::Window* BrowserFrame::GetWindow() {
23  return native_browser_frame_->AsNativeWindow()->GetWindow();
24}
25
26int BrowserFrame::GetMinimizeButtonOffset() const {
27  return native_browser_frame_->GetMinimizeButtonOffset();
28}
29
30gfx::Rect BrowserFrame::GetBoundsForTabStrip(views::View* tabstrip) const {
31  return browser_frame_view_->GetBoundsForTabStrip(tabstrip);
32}
33
34int BrowserFrame::GetHorizontalTabStripVerticalOffset(bool restored) const {
35  return browser_frame_view_->GetHorizontalTabStripVerticalOffset(restored);
36}
37
38void BrowserFrame::UpdateThrobber(bool running) {
39  browser_frame_view_->UpdateThrobber(running);
40}
41
42ui::ThemeProvider* BrowserFrame::GetThemeProviderForFrame() const {
43  return native_browser_frame_->GetThemeProviderForFrame();
44}
45
46bool BrowserFrame::AlwaysUseNativeFrame() const {
47  return native_browser_frame_->AlwaysUseNativeFrame();
48}
49
50views::View* BrowserFrame::GetFrameView() const {
51  return browser_frame_view_;
52}
53
54void BrowserFrame::TabStripDisplayModeChanged() {
55  native_browser_frame_->TabStripDisplayModeChanged();
56}
57
58////////////////////////////////////////////////////////////////////////////////
59// BrowserFrame, NativeBrowserFrameDelegate implementation:
60
61views::RootView* BrowserFrame::DelegateCreateRootView() {
62  root_view_ = new BrowserRootView(
63      browser_view_,
64      native_browser_frame_->AsNativeWindow()->AsNativeWidget()->GetWidget());
65  return root_view_;
66}
67
68views::NonClientFrameView* BrowserFrame::DelegateCreateFrameViewForWindow() {
69  browser_frame_view_ =
70      native_browser_frame_->CreateBrowserNonClientFrameView();
71  return browser_frame_view_;
72}
73
74
75////////////////////////////////////////////////////////////////////////////////
76// BrowserFrame, protected:
77
78BrowserFrame::BrowserFrame(BrowserView* browser_view)
79    : native_browser_frame_(NULL),
80      root_view_(NULL),
81      browser_frame_view_(NULL),
82      browser_view_(browser_view) {
83}
84