browser_non_client_frame_view_factory_aura.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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.
4
5#include "chrome/browser/ui/views/frame/browser_view.h"
6
7#include "base/command_line.h"
8#include "chrome/browser/ui/views/frame/opaque_browser_frame_view.h"
9
10#if defined(USE_ASH)
11#include "chrome/browser/ui/views/frame/app_non_client_frame_view_ash.h"
12#include "chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.h"
13#endif
14
15#if defined(OS_WIN)
16#include "chrome/browser/ui/views/frame/glass_browser_frame_view.h"
17#endif
18
19namespace chrome {
20
21BrowserNonClientFrameView* CreateBrowserNonClientFrameView(
22    BrowserFrame* frame, BrowserView* browser_view) {
23#if defined(USE_AURA) && defined(OS_WIN)
24  if (browser_view->browser()->
25          host_desktop_type() == chrome::HOST_DESKTOP_TYPE_NATIVE) {
26    if (frame->ShouldUseNativeFrame())
27      return new GlassBrowserFrameView(frame, browser_view);
28    return new OpaqueBrowserFrameView(frame, browser_view);
29  }
30#endif
31#if defined(USE_ASH)
32  // If this is an app window and it's maximized, use the special frame_view.
33  if (browser_view->browser()->is_app() &&
34      browser_view->browser()->app_type() != Browser::APP_TYPE_CHILD &&
35      browser_view->IsMaximized())
36    return new AppNonClientFrameViewAsh(frame, browser_view);
37
38  // Default is potentially translucent fancy frames.
39  BrowserNonClientFrameViewAsh* frame_view =
40      new BrowserNonClientFrameViewAsh(frame, browser_view);
41  frame_view->Init();
42  return frame_view;
43#else
44  return new OpaqueBrowserFrameView(frame, browser_view);
45#endif
46}
47
48}  // namespace chrome
49