browser_frame_chromeos.cc revision 21d179b334e59e9a3bfcaed4c4430bef1bc5759d
1// Copyright (c) 2010 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/chromeos/frame/browser_frame_chromeos.h"
6
7#include "base/command_line.h"
8#include "chrome/browser/ui/views/frame/browser_view.h"
9#include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h"
10#include "chrome/common/chrome_switches.h"
11
12// static (Factory method.)
13BrowserFrame* BrowserFrame::Create(BrowserView* browser_view,
14                                   Profile* profile) {
15  chromeos::BrowserFrameChromeos* frame =
16      new chromeos::BrowserFrameChromeos(browser_view, profile);
17  frame->Init();
18  return frame;
19}
20
21namespace chromeos {
22
23BrowserFrameChromeos::BrowserFrameChromeos(
24    BrowserView* browser_view, Profile* profile)
25    : BrowserFrameGtk(browser_view, profile) {
26}
27
28BrowserFrameChromeos::~BrowserFrameChromeos() {
29}
30
31void BrowserFrameChromeos::Init() {
32  // NOTE: This logic supersedes the logic in BrowserFrameGtk::Init()
33  // by always setting browser_frame_view_.
34  set_browser_frame_view(
35      browser::CreateBrowserNonClientFrameView(this, browser_view()));
36
37  BrowserFrameGtk::Init();
38
39  if (!browser_view()->IsBrowserTypePopup()) {
40    // On chromeos we want windows to always render as active.
41    GetNonClientView()->DisableInactiveRendering(true);
42  }
43}
44
45bool BrowserFrameChromeos::IsMaximized() const {
46  if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kChromeosFrame))
47    return WindowGtk::IsMaximized();
48  bool is_popup = browser_view()->IsBrowserTypePopup();
49  return !IsFullscreen() && (!is_popup || WindowGtk::IsMaximized());
50}
51
52}  // namespace chromeos
53