12bde8e466a4451c7319e3a072d118917957d6554Steve Block/*
22bde8e466a4451c7319e3a072d118917957d6554Steve Block * Copyright (C) 2011 Apple Inc. All rights reserved.
32bde8e466a4451c7319e3a072d118917957d6554Steve Block *
42bde8e466a4451c7319e3a072d118917957d6554Steve Block * Redistribution and use in source and binary forms, with or without
52bde8e466a4451c7319e3a072d118917957d6554Steve Block * modification, are permitted provided that the following conditions
62bde8e466a4451c7319e3a072d118917957d6554Steve Block * are met:
72bde8e466a4451c7319e3a072d118917957d6554Steve Block * 1. Redistributions of source code must retain the above copyright
82bde8e466a4451c7319e3a072d118917957d6554Steve Block *    notice, this list of conditions and the following disclaimer.
92bde8e466a4451c7319e3a072d118917957d6554Steve Block * 2. Redistributions in binary form must reproduce the above copyright
102bde8e466a4451c7319e3a072d118917957d6554Steve Block *    notice, this list of conditions and the following disclaimer in the
112bde8e466a4451c7319e3a072d118917957d6554Steve Block *    documentation and/or other materials provided with the distribution.
122bde8e466a4451c7319e3a072d118917957d6554Steve Block *
132bde8e466a4451c7319e3a072d118917957d6554Steve Block * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
142bde8e466a4451c7319e3a072d118917957d6554Steve Block * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
152bde8e466a4451c7319e3a072d118917957d6554Steve Block * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
162bde8e466a4451c7319e3a072d118917957d6554Steve Block * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
172bde8e466a4451c7319e3a072d118917957d6554Steve Block * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
182bde8e466a4451c7319e3a072d118917957d6554Steve Block * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
192bde8e466a4451c7319e3a072d118917957d6554Steve Block * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
202bde8e466a4451c7319e3a072d118917957d6554Steve Block * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
212bde8e466a4451c7319e3a072d118917957d6554Steve Block * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
222bde8e466a4451c7319e3a072d118917957d6554Steve Block * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
232bde8e466a4451c7319e3a072d118917957d6554Steve Block * THE POSSIBILITY OF SUCH DAMAGE.
242bde8e466a4451c7319e3a072d118917957d6554Steve Block */
252bde8e466a4451c7319e3a072d118917957d6554Steve Block
262bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "config.h"
272bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "WebFullScreenManagerProxy.h"
282bde8e466a4451c7319e3a072d118917957d6554Steve Block
292bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(FULLSCREEN_API)
302bde8e466a4451c7319e3a072d118917957d6554Steve Block
312bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "WebContext.h"
322bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "WebFullScreenManagerMessages.h"
332bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "WebFullScreenManagerProxyMessages.h"
342bde8e466a4451c7319e3a072d118917957d6554Steve Block
352bde8e466a4451c7319e3a072d118917957d6554Steve Blocknamespace WebKit {
362bde8e466a4451c7319e3a072d118917957d6554Steve Block
372bde8e466a4451c7319e3a072d118917957d6554Steve BlockPassRefPtr<WebFullScreenManagerProxy> WebFullScreenManagerProxy::create(WebPageProxy* page)
382bde8e466a4451c7319e3a072d118917957d6554Steve Block{
392bde8e466a4451c7319e3a072d118917957d6554Steve Block    return adoptRef(new WebFullScreenManagerProxy(page));
402bde8e466a4451c7319e3a072d118917957d6554Steve Block}
412bde8e466a4451c7319e3a072d118917957d6554Steve Block
422bde8e466a4451c7319e3a072d118917957d6554Steve BlockWebFullScreenManagerProxy::WebFullScreenManagerProxy(WebPageProxy* page)
432bde8e466a4451c7319e3a072d118917957d6554Steve Block    : m_page(page)
442bde8e466a4451c7319e3a072d118917957d6554Steve Block    , m_webView(0)
452bde8e466a4451c7319e3a072d118917957d6554Steve Block{
462bde8e466a4451c7319e3a072d118917957d6554Steve Block}
472bde8e466a4451c7319e3a072d118917957d6554Steve Block
482bde8e466a4451c7319e3a072d118917957d6554Steve BlockWebFullScreenManagerProxy::~WebFullScreenManagerProxy()
492bde8e466a4451c7319e3a072d118917957d6554Steve Block{
502bde8e466a4451c7319e3a072d118917957d6554Steve Block}
512bde8e466a4451c7319e3a072d118917957d6554Steve Block
522bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebFullScreenManagerProxy::invalidate()
532bde8e466a4451c7319e3a072d118917957d6554Steve Block{
542bde8e466a4451c7319e3a072d118917957d6554Steve Block    m_webView = 0;
552bde8e466a4451c7319e3a072d118917957d6554Steve Block}
562bde8e466a4451c7319e3a072d118917957d6554Steve Block
572bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebFullScreenManagerProxy::setWebView(PlatformWebView* webView)
582bde8e466a4451c7319e3a072d118917957d6554Steve Block{
592bde8e466a4451c7319e3a072d118917957d6554Steve Block    m_webView = webView;
602bde8e466a4451c7319e3a072d118917957d6554Steve Block}
612bde8e466a4451c7319e3a072d118917957d6554Steve Block
622bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebFullScreenManagerProxy::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments)
632bde8e466a4451c7319e3a072d118917957d6554Steve Block{
642bde8e466a4451c7319e3a072d118917957d6554Steve Block    didReceiveWebFullScreenManagerProxyMessage(connection, messageID, arguments);
652bde8e466a4451c7319e3a072d118917957d6554Steve Block}
662bde8e466a4451c7319e3a072d118917957d6554Steve Block
672bde8e466a4451c7319e3a072d118917957d6554Steve BlockCoreIPC::SyncReplyMode WebFullScreenManagerProxy::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, CoreIPC::ArgumentEncoder* reply)
682bde8e466a4451c7319e3a072d118917957d6554Steve Block{
692bde8e466a4451c7319e3a072d118917957d6554Steve Block    return didReceiveSyncWebFullScreenManagerProxyMessage(connection, messageID, arguments, reply);
702bde8e466a4451c7319e3a072d118917957d6554Steve Block}
712bde8e466a4451c7319e3a072d118917957d6554Steve Block
722bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebFullScreenManagerProxy::willEnterFullScreen()
732bde8e466a4451c7319e3a072d118917957d6554Steve Block{
742bde8e466a4451c7319e3a072d118917957d6554Steve Block    m_page->process()->send(Messages::WebFullScreenManager::WillEnterFullScreen(), m_page->pageID());
752bde8e466a4451c7319e3a072d118917957d6554Steve Block}
762bde8e466a4451c7319e3a072d118917957d6554Steve Block
772bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebFullScreenManagerProxy::didEnterFullScreen()
782bde8e466a4451c7319e3a072d118917957d6554Steve Block{
792bde8e466a4451c7319e3a072d118917957d6554Steve Block    m_page->process()->send(Messages::WebFullScreenManager::DidEnterFullScreen(), m_page->pageID());
802bde8e466a4451c7319e3a072d118917957d6554Steve Block}
812bde8e466a4451c7319e3a072d118917957d6554Steve Block
822bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebFullScreenManagerProxy::willExitFullScreen()
832bde8e466a4451c7319e3a072d118917957d6554Steve Block{
842bde8e466a4451c7319e3a072d118917957d6554Steve Block    m_page->process()->send(Messages::WebFullScreenManager::WillExitFullScreen(), m_page->pageID());
852bde8e466a4451c7319e3a072d118917957d6554Steve Block}
862bde8e466a4451c7319e3a072d118917957d6554Steve Block
872bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebFullScreenManagerProxy::didExitFullScreen()
882bde8e466a4451c7319e3a072d118917957d6554Steve Block{
892bde8e466a4451c7319e3a072d118917957d6554Steve Block    m_page->process()->send(Messages::WebFullScreenManager::DidExitFullScreen(), m_page->pageID());
902bde8e466a4451c7319e3a072d118917957d6554Steve Block}
912bde8e466a4451c7319e3a072d118917957d6554Steve Block
922bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebFullScreenManagerProxy::beginEnterFullScreenAnimation(float duration)
932bde8e466a4451c7319e3a072d118917957d6554Steve Block{
942bde8e466a4451c7319e3a072d118917957d6554Steve Block    m_page->process()->send(Messages::WebFullScreenManager::BeginEnterFullScreenAnimation(duration), m_page->pageID());
952bde8e466a4451c7319e3a072d118917957d6554Steve Block}
962bde8e466a4451c7319e3a072d118917957d6554Steve Block
972bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebFullScreenManagerProxy::beginExitFullScreenAnimation(float duration)
982bde8e466a4451c7319e3a072d118917957d6554Steve Block{
992bde8e466a4451c7319e3a072d118917957d6554Steve Block    m_page->process()->send(Messages::WebFullScreenManager::BeginExitFullScreenAnimation(duration), m_page->pageID());
1002bde8e466a4451c7319e3a072d118917957d6554Steve Block}
1012bde8e466a4451c7319e3a072d118917957d6554Steve Block
1022bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid WebFullScreenManagerProxy::supportsFullScreen(bool withKeyboard, bool& supports)
1032bde8e466a4451c7319e3a072d118917957d6554Steve Block{
1042bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (withKeyboard)
1052bde8e466a4451c7319e3a072d118917957d6554Steve Block        supports = false;
1062bde8e466a4451c7319e3a072d118917957d6554Steve Block    else
1072bde8e466a4451c7319e3a072d118917957d6554Steve Block        supports = true;
1082bde8e466a4451c7319e3a072d118917957d6554Steve Block}
1092bde8e466a4451c7319e3a072d118917957d6554Steve Block
1102bde8e466a4451c7319e3a072d118917957d6554Steve Block} // namespace WebKit
1112bde8e466a4451c7319e3a072d118917957d6554Steve Block
1122bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif // ENABLE(FULLSCREEN_API)
113