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#import "chrome/browser/fullscreen.h" 6 7#import <Cocoa/Cocoa.h> 8 9#include "base/command_line.h" 10#include "base/mac/mac_util.h" 11#include "chrome/common/chrome_switches.h" 12 13// Replicate specific 10.7 SDK declarations for building with prior SDKs. 14#if !defined(MAC_OS_X_VERSION_10_7) || \ 15 MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7 16 17enum { 18 NSApplicationPresentationFullScreen = 1 << 10 19}; 20 21#endif // MAC_OS_X_VERSION_10_7 22 23bool IsFullScreenMode() { 24 // Check if the main display has been captured (by games in particular). 25 if (CGDisplayIsCaptured(CGMainDisplayID())) 26 return true; 27 28 NSApplicationPresentationOptions options = 29 [NSApp currentSystemPresentationOptions]; 30 31 bool dock_hidden = (options & NSApplicationPresentationHideDock) || 32 (options & NSApplicationPresentationAutoHideDock); 33 34 bool menu_hidden = (options & NSApplicationPresentationHideMenuBar) || 35 (options & NSApplicationPresentationAutoHideMenuBar); 36 37 // If both dock and menu bar are hidden, that is the equivalent of the Carbon 38 // SystemUIMode (or Info.plist's LSUIPresentationMode) kUIModeAllHidden. 39 if (dock_hidden && menu_hidden) 40 return true; 41 42 if (options & NSApplicationPresentationFullScreen) 43 return true; 44 45 return false; 46} 47 48namespace chrome { 49namespace mac { 50 51bool SupportsSystemFullscreen() { 52 const CommandLine* command_line = CommandLine::ForCurrentProcess(); 53 if (command_line->HasSwitch(switches::kDisableSystemFullscreenForTesting)) 54 return false; 55 56 return base::mac::IsOSLionOrLater(); 57} 58 59} // namespace mac 60} // namespace chrome 61