1/* 2 * Copyright (C) 2011 Apple Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' 14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 23 * THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26#if ENABLE(FULLSCREEN_API) 27 28#import "GenericCallback.h" 29#import <wtf/OwnPtr.h> 30#import <wtf/RetainPtr.h> 31 32namespace WebKit { 33class LayerTreeContext; 34} 35 36namespace WebCore { 37class DisplaySleepDisabler; 38class IntRect; 39} 40 41@class WKView; 42@class WebCoreFullScreenPlaceholderView; 43@class WebWindowScaleAnimation; 44@class WebWindowFadeAnimation; 45 46typedef enum FullScreenState : NSInteger FullScreenState; 47 48@interface WKFullScreenWindowController : NSWindowController<NSWindowDelegate> { 49@private 50 WKView *_webView; // Cannot be retained, see <rdar://problem/14884666>. 51 RetainPtr<WebCoreFullScreenPlaceholderView> _webViewPlaceholder; 52 RetainPtr<WebWindowScaleAnimation> _scaleAnimation; 53 RetainPtr<WebWindowFadeAnimation> _fadeAnimation; 54 RetainPtr<NSWindow> _backgroundWindow; 55 NSRect _initialFrame; 56 NSRect _finalFrame; 57 RetainPtr<NSTimer> _watchdogTimer; 58 59 FullScreenState _fullScreenState; 60 61 double _savedScale; 62 RefPtr<WebKit::VoidCallback> _repaintCallback; 63} 64 65- (id)initWithWindow:(NSWindow *)window webView:(WKView *)webView; 66 67- (WebCoreFullScreenPlaceholderView*)webViewPlaceholder; 68 69- (BOOL)isFullScreen; 70 71- (void)enterFullScreen:(NSScreen *)screen; 72- (void)exitFullScreen; 73- (void)close; 74- (void)beganEnterFullScreenWithInitialFrame:(const WebCore::IntRect&)initialFrame finalFrame:(const WebCore::IntRect&)finalFrame; 75- (void)beganExitFullScreenWithInitialFrame:(const WebCore::IntRect&)initialFrame finalFrame:(const WebCore::IntRect&)finalFrame; 76 77@end 78 79#endif 80