Add support for AVKit fullscreen to WebKit2
https://bugs.webkit.org/show_bug.cgi?id=128143

Patch by Jeremy Jones <jeremyj@apple.com> on 2014-02-06
Reviewed by Simon Fraser.

Source/WebCore:

Rename overloaded functions to prevent ambiguous template parameter
compile error in generated code.

Rename overloaded exitFullscreen to exitFullscreenWithCompletionHandler.
Rename overloaded enterFullscreen to enterFullscreenWithCompletionHandler.

* WebCore.exp.in:
* WebCore.xcodeproj/project.pbxproj:
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(-[WebVideoFullscreenController exitFullscreen]):
* platform/ios/WebVideoFullscreenInterfaceAVKit.h:
* platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
(WebVideoFullscreenInterfaceAVKit::enterFullscreenWithCompletionHandler):
(WebVideoFullscreenInterfaceAVKit::enterFullscreen):
(WebVideoFullscreenInterfaceAVKit::exitFullscreenWithCompletionHandler):
(WebVideoFullscreenInterfaceAVKit::exitFullscreen):
* platform/ios/WebVideoFullscreenModelMediaElement.h:

Source/WebKit2:

Add WebVideoFullscreenManager and WebVideoFullscreenManagerProxy that implement
WebVideoFullscreenModel and WebVideoFullscreenInterface.

* DerivedSources.make:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
    initialize member m_videoFullscreenManager

(WebKit::WebPageProxy::videoFullscreenManager):
    add accessor for videoFullscreenManager

* UIProcess/WebPageProxy.h:
* UIProcess/WebVideoFullscreenManagerProxy.cpp: Added.
(WebKit::WebVideoFullscreenManagerProxy::create):
(WebKit::WebVideoFullscreenManagerProxy::WebVideoFullscreenManagerProxy):
(WebKit::WebVideoFullscreenManagerProxy::~WebVideoFullscreenManagerProxy):
    add basic creation for object.

(WebKit::WebVideoFullscreenManagerProxy::setVideoLayerID):
(WebKit::WebVideoFullscreenManagerProxy::requestExitFullScreen):
(WebKit::WebVideoFullscreenManagerProxy::play):
(WebKit::WebVideoFullscreenManagerProxy::pause):
(WebKit::WebVideoFullscreenManagerProxy::togglePlayState):
(WebKit::WebVideoFullscreenManagerProxy::seekToTime):
(WebKit::WebVideoFullscreenManagerProxy::didExitFullscreen):
    implement WebVideoFullscreenModel to send IPC message.

* UIProcess/WebVideoFullscreenManagerProxy.h: Added.
* UIProcess/WebVideoFullscreenManagerProxy.messages.in: Added.
    this interface closely matches WebVideoFullscreenInterface

* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::supportsFullscreenForNode):
(WebKit::WebChromeClient::enterFullscreenForNode):
(WebKit::WebChromeClient::exitFullscreenForNode):
    Forward these requests onto the videoFullscreenManager

* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::videoFullscreenManager):
    accessor for m_videoFullscreenManager

* WebProcess/WebPage/WebPage.h:
* WebProcess/WebVideoFullscreenManager.cpp: Added.
(WebKit::WebVideoFullscreenManager::create):
(WebKit::WebVideoFullscreenManager::WebVideoFullscreenManager):
(WebKit::WebVideoFullscreenManager::~WebVideoFullscreenManager):
    add basic creation for object.

(WebKit::WebVideoFullscreenManager::supportsFullscreen):
(WebKit::WebVideoFullscreenManager::enterFullscreenForNode):
(WebKit::WebVideoFullscreenManager::exitFullscreenForNode):
    implement interface called by WebChromeClient

(WebKit::WebVideoFullscreenManager::setDuration):
(WebKit::WebVideoFullscreenManager::setCurrentTime):
(WebKit::WebVideoFullscreenManager::setRate):
(WebKit::WebVideoFullscreenManager::setVideoDimensions):
(WebKit::WebVideoFullscreenManager::setVideoLayer):
(WebKit::WebVideoFullscreenManager::setVideoLayerID):
(WebKit::WebVideoFullscreenManager::enterFullscreen):
(WebKit::WebVideoFullscreenManager::exitFullscreen):
    implement WebVideoFullscreenInterface to send IPC message.

* WebProcess/WebVideoFullscreenManager.h: Added.
* WebProcess/WebVideoFullscreenManager.messages.in: Added.
    this interface closely matches WebVideoFullscreenModel

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@163600 268f45cc-cd09-0410-ab3c-d52691b4dbfc
23 files changed