Commit 42df3182 authored by jer.noble@apple.com's avatar jer.noble@apple.com

2011-03-11 Jer Noble <jer.noble@apple.com>

        Reviewed by Anders Carlsson.

        Add full screen animation code to WebFullScreenManager.
        https://bugs.webkit.org/show_bug.cgi?id=56220

        * WebProcess/FullScreen/WebFullScreenManager.cpp: .
        (WebKit::WebFullScreenManager::~WebFullScreenManager): Added.
        (WebKit::WebFullScreenManager::exitFullScreenForElement): Remove ASSERTs.
        (WebKit::WebFullScreenManager::willEnterFullScreen): Set the full screen renderer's background color.
        (WebKit::WebFullScreenManager::didEnterFullScreen): Ditto.
        (WebKit::WebFullScreenManager::willExitFullScreen): Ditto.
        (WebKit::WebFullScreenManager::didExitFullScreen): Ditto.
        * WebProcess/FullScreen/WebFullScreenManager.h: Make a few functions pure virtual to be implemented in a
            concrete subclass.
        * WebProcess/FullScreen/mac/WebFullScreenManagerMac.h: Added.
        * WebProcess/FullScreen/mac/WebFullScreenManagerMac.mm: Added.
        (-[WebFullScreenManagerAnimationListener initWithManager:WebKit::began:finished:]): Listener for CAAnimations.
        (-[WebFullScreenManagerAnimationListener animationDidStart:]): Added.
        (-[WebFullScreenManagerAnimationListener animationDidStop:finished:]): Added.
        (-[WebFullScreenManagerAnimationListener invalidate]): Added.
        (WebKit::WebFullScreenManager::create): Now creates a WebFullScreenManagerMac.
        (WebKit::WebFullScreenManagerMac::create): Added.
        (WebKit::WebFullScreenManagerMac::WebFullScreenManagerMac): Added.
        (WebKit::WebFullScreenManagerMac::~WebFullScreenManagerMac): Added.
        (WebKit::WebFullScreenManagerMac::setRootFullScreenLayer): Set up the remote layer host.
        (WebKit::WebFullScreenManagerMac::beginEnterFullScreenAnimation): Create a CATransform3D
            which will animate the full screen renderer from its initial position to its final one.
        (WebKit::WebFullScreenManagerMac::beginExitFullScreenAnimation): Ditto.

git-svn-id: svn://svn.chromium.org/blink/trunk@80923 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 15c749a0
/*
* Copyright (C) 2010 Apple Inc. All rights reserved.
* Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
......
/*
* Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved.
* Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
......
2011-03-11 Jer Noble <jer.noble@apple.com>
Reviewed by Anders Carlsson.
Add the WKFullScreenWindowController, mostly cribbed from WebKit's WebFullScreenController.
[WebKit2] Implement a full screen window controller
https://bugs.webkit.org/show_bug.cgi?id=56210
* UIProcess/mac/WKFullScreenWindowController.h: Added.
* UIProcess/mac/WKFullScreenWindowController.mm: Added.
(-[WKFullScreenWindowController init]): Remove the _mediaEventListener.
(-[WKFullScreenWindowController dealloc]): Make sure to cancel previous async requests.
(-[WKFullScreenWindowController windowDidLoad]): Remove the Tiger protection.
(-[WKFullScreenWindowController webView]): Type change.
(-[WKFullScreenWindowController setWebView:]): Type change.
(-[WKFullScreenWindowController applicationDidResignActive:]): Case changes.
(-[WKFullScreenWindowController applicationDidChangeScreenParameters:]): Case changes.
(-[WKFullScreenWindowController enterFullScreen:]): Removed most of the animation code
which will reappear in WebFullScreenManager.
(-[WKFullScreenWindowController beganEnterFullScreenAnimation]): Added.
(-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): Added.
(-[WKFullScreenWindowController exitFullScreen]): Ditto to enterFullScreen.
(-[WKFullScreenWindowController beganExitFullScreenAnimation]): Added.
(-[WKFullScreenWindowController finishedExitFullScreenAnimation:]): Added.
(-[WKFullScreenWindowController enterAcceleratedCompositingMode:WebKit::]): Set up the
layer tree host.
(-[WKFullScreenWindowController exitAcceleratedCompositingMode]): Tear down same.
(-[WKFullScreenWindowController getFullScreenRect:WebCore::]): Added.
(-[WKFullScreenWindowController _updateMenuAndDockForFullScreen]): Case changes.
(-[WKFullScreenWindowController _disableIdleDisplaySleep]): Ditto.
(-[WKFullScreenWindowController _enableIdleDisplaySleep]): Ditto.
(-[WKFullScreenWindowController _disableIdleSystemSleep]): Ditto.
(-[WKFullScreenWindowController _enableIdleSystemSleep]): Ditto.
(-[WKFullScreenWindowController _enableTickleTimer]): Ditto.
(-[WKFullScreenWindowController _disableTickleTimer]): Ditto.
(-[WKFullScreenWindowController _tickleTimerFired]): Ditto.
(-[WKFullScreenWindowController _updatePowerAssertions]): Use _isPlaying ivar.
(-[WKFullScreenWindowController _manager]): Added.
(-[WKFullScreenWindowController _requestExit]): Case changes.
(-[WKFullScreenWindowController _requestExitFullScreenWithAnimation:]): Ditto.
(-[WKFullScreenWindowController _swapView:with:]): Added.
(-[WKFullScreenWindowController _fullScreenWindow]): Case changes.
(-[WKFullScreenWindow initWithContentRect:styleMask:backing:defer:]): Geometry no
longer needs to be flipped.
(-[WKFullScreenWindow cancelOperation:]): Case changes.
2011-03-11 Jer Noble <jer.noble@apple.com>
Reviewed by Anders Carlsson.
......
/*
* Copyright (C) 2011 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#if ENABLE(FULLSCREEN_API)
#import <Cocoa/Cocoa.h>
#import <wtf/RetainPtr.h>
namespace WebKit {
class LayerTreeContext;
}
namespace WebCore {
class IntRect;
}
@class WKView;
@interface WKFullScreenWindowController : NSWindowController {
@private
WKView *_webView;
RetainPtr<NSView> _webViewPlaceholder;
RetainPtr<NSView> _layerViewPlaceholder;
RetainPtr<NSView> _layerHostingView;
BOOL _isAnimating;
BOOL _isFullScreen;
BOOL _isWindowLoaded;
BOOL _forceDisableAnimation;
BOOL _isPlaying;
CGRect _initialFrame;
uint32_t _idleDisplaySleepAssertion;
uint32_t _idleSystemSleepAssertion;
NSTimer *_tickleTimer;
}
- (WKView*)webView;
- (void)setWebView:(WKView*)webView;
- (void)enterFullScreen:(NSScreen *)screen;
- (void)exitFullScreen;
- (void)beganEnterFullScreenAnimation;
- (void)beganExitFullScreenAnimation;
- (void)finishedEnterFullScreenAnimation:(bool)completed;
- (void)finishedExitFullScreenAnimation:(bool)completed;
- (void)enterAcceleratedCompositingMode:(const WebKit::LayerTreeContext&)context;
- (void)exitAcceleratedCompositingMode;
- (WebCore::IntRect)getFullScreenRect;
@end
#endif
......@@ -741,6 +741,9 @@
CD73BA47131ACC9A00EEDED2 /* WebFullScreenManagerProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD73BA45131ACC8800EEDED2 /* WebFullScreenManagerProxyMessageReceiver.cpp */; };
CD73BA4E131ACDB700EEDED2 /* WebFullScreenManagerMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD73BA48131ACD8E00EEDED2 /* WebFullScreenManagerMessageReceiver.cpp */; };
CD73BA53131B645B00EEDED2 /* WebFullScreenManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD73BA37131A29FE00EEDED2 /* WebFullScreenManager.cpp */; };
CDCA85C8132ABA4E00E961DF /* WKFullScreenWindowController.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDCA85C6132ABA4E00E961DF /* WKFullScreenWindowController.mm */; };
CDCA85C9132ABA4E00E961DF /* WKFullScreenWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = CDCA85C7132ABA4E00E961DF /* WKFullScreenWindowController.h */; };
CDCA85D5132AC2B300E961DF /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CDCA85D4132AC2B300E961DF /* IOKit.framework */; };
D3B9484611FF4B6500032B39 /* WebPopupMenu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D3B9484211FF4B6500032B39 /* WebPopupMenu.cpp */; };
D3B9484711FF4B6500032B39 /* WebPopupMenu.h in Headers */ = {isa = PBXBuildFile; fileRef = D3B9484311FF4B6500032B39 /* WebPopupMenu.h */; };
D3B9484811FF4B6500032B39 /* WebSearchPopupMenu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D3B9484411FF4B6500032B39 /* WebSearchPopupMenu.cpp */; };
......@@ -1615,6 +1618,9 @@
CD73BA48131ACD8E00EEDED2 /* WebFullScreenManagerMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebFullScreenManagerMessageReceiver.cpp; sourceTree = "<group>"; };
CD73BA49131ACD8E00EEDED2 /* WebFullScreenManagerMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebFullScreenManagerMessages.h; sourceTree = "<group>"; };
CD73BA4A131ACD8F00EEDED2 /* WebFullScreenManagerProxyMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebFullScreenManagerProxyMessages.h; sourceTree = "<group>"; };
CDCA85C6132ABA4E00E961DF /* WKFullScreenWindowController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKFullScreenWindowController.mm; sourceTree = "<group>"; };
CDCA85C7132ABA4E00E961DF /* WKFullScreenWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKFullScreenWindowController.h; sourceTree = "<group>"; };
CDCA85D4132AC2B300E961DF /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
D3B9484211FF4B6500032B39 /* WebPopupMenu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebPopupMenu.cpp; sourceTree = "<group>"; };
D3B9484311FF4B6500032B39 /* WebPopupMenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPopupMenu.h; sourceTree = "<group>"; };
D3B9484411FF4B6500032B39 /* WebSearchPopupMenu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebSearchPopupMenu.cpp; sourceTree = "<group>"; };
......@@ -1672,6 +1678,7 @@
1AA1CC5D100FA1A10078DEBC /* QuartzCore.framework in Frameworks */,
1A1C4EC810D06099005E67E7 /* WebCore.framework in Frameworks */,
BCF5068512431861005955AE /* Security.framework in Frameworks */,
CDCA85D5132AC2B300E961DF /* IOKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -1745,6 +1752,7 @@
1AA1CD06100FA1BA0078DEBC /* Carbon.framework */,
1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */,
BCD0042C110C1E27003B8A67 /* CoreServices.framework */,
CDCA85D4132AC2B300E961DF /* IOKit.framework */,
1AA1C7DE100E846E0078DEBC /* JavaScriptCore.framework */,
BC87DFA91018101400564216 /* libicucore.dylib */,
1AA1CC5C100FA1A10078DEBC /* QuartzCore.framework */,
......@@ -2868,6 +2876,8 @@
BCCF085C113F3B7500C650C5 /* mac */ = {
isa = PBXGroup;
children = (
CDCA85C6132ABA4E00E961DF /* WKFullScreenWindowController.mm */,
CDCA85C7132ABA4E00E961DF /* WKFullScreenWindowController.h */,
1A64292C12DE5F9800CAAE2C /* BackingStoreMac.mm */,
BC2651F511825EF800243E12 /* ChunkedUpdateDrawingAreaProxyMac.mm */,
1AA417ED12C00D87002BE67B /* TextCheckerMac.mm */,
......@@ -3455,6 +3465,7 @@
37C4E9F6131C6E7E0029BD5A /* config.h in Headers */,
E1BB16A413201B9B00F49431 /* FullKeyboardAccessWatcher.h in Headers */,
33AA1067131F060000D4A575 /* WebCookieManagerProxyClient.h in Headers */,
CDCA85C9132ABA4E00E961DF /* WKFullScreenWindowController.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -4059,6 +4070,7 @@
CD73BA4E131ACDB700EEDED2 /* WebFullScreenManagerMessageReceiver.cpp in Sources */,
CD73BA53131B645B00EEDED2 /* WebFullScreenManager.cpp in Sources */,
CD6F75F4131B66D000D6B21E /* WebFullScreenManagerProxy.cpp in Sources */,
CDCA85C8132ABA4E00E961DF /* WKFullScreenWindowController.mm in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment