15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef UI_BASE_COCOA_FULLSCREEN_WINDOW_MANAGER_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define UI_BASE_COCOA_FULLSCREEN_WINDOW_MANAGER_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#import <Cocoa/Cocoa.h> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/mac/mac_util.h" 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/mac/scoped_nsobject.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/base/ui_base_export.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A utility class to manage the fullscreen mode for a given window. This class 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// also updates the window frame if the screen changes. 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)UI_BASE_EXPORT 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@interface FullscreenWindowManager : NSObject { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) @private 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::scoped_nsobject<NSWindow> window_; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Explicitly keep track of the screen we want to position the window in. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This is better than using -[NSWindow screen] because that might change if 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the screen changes to a low resolution. 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::scoped_nsobject<NSScreen> desiredScreen_; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::mac::FullScreenMode fullscreenMode_; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BOOL fullscreenActive_; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- (id)initWithWindow:(NSWindow*)window 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) desiredScreen:(NSScreen*)desiredScreen; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Enables fullscreen mode which causes the menubar and dock to be hidden as 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// needed. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- (void)enterFullscreenMode; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Exists fullscreen mode which stops hiding the menubar and dock. 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)- (void)exitFullscreenMode; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@end 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // UI_BASE_COCOA_FULLSCREEN_WINDOW_MANAGER_H_ 41