• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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