blob: 2d283603fee2db9327fd03ae4e1438819daeb6f9 [file] [log] [blame]
[email protected]3c645372011-01-25 20:54:061// 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
[email protected]3c645372011-01-25 20:54:067#import <Cocoa/Cocoa.h>
8
[email protected]ee6a5272013-07-15 21:14:019#include "base/command_line.h"
10#include "base/mac/mac_util.h"
11#include "chrome/common/chrome_switches.h"
12
[email protected]d621e702013-01-24 01:43:0013// 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
[email protected]abd4d9a2012-12-29 01:01:1516
[email protected]d621e702013-01-24 01:43:0017enum {
18 NSApplicationPresentationFullScreen = 1 << 10
19};
[email protected]3c645372011-01-25 20:54:0620
[email protected]d621e702013-01-24 01:43:0021#endif // MAC_OS_X_VERSION_10_7
[email protected]3c645372011-01-25 20:54:0622
23bool IsFullScreenMode() {
[email protected]d621e702013-01-24 01:43:0024 // Check if the main display has been captured (by games in particular).
[email protected]3c645372011-01-25 20:54:0625 if (CGDisplayIsCaptured(CGMainDisplayID()))
26 return true;
27
[email protected]d621e702013-01-24 01:43:0028 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;
[email protected]3c645372011-01-25 20:54:0646}
[email protected]ee6a5272013-07-15 21:14:0147
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