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