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#ifndef WebFullScreenManagerProxy_h 272bde8e466a4451c7319e3a072d118917957d6554Steve Block#define WebFullScreenManagerProxy_h 282bde8e466a4451c7319e3a072d118917957d6554Steve Block 292bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(FULLSCREEN_API) 302bde8e466a4451c7319e3a072d118917957d6554Steve Block 312bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "Connection.h" 322bde8e466a4451c7319e3a072d118917957d6554Steve Block#include <wtf/PassRefPtr.h> 332bde8e466a4451c7319e3a072d118917957d6554Steve Block#include <wtf/RefPtr.h> 342bde8e466a4451c7319e3a072d118917957d6554Steve Block 352bde8e466a4451c7319e3a072d118917957d6554Steve Blocknamespace CoreIPC { 362bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass ArgumentDecoder; 372bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass Connection; 382bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass MessageID; 392bde8e466a4451c7319e3a072d118917957d6554Steve Block} 402bde8e466a4451c7319e3a072d118917957d6554Steve Block 412bde8e466a4451c7319e3a072d118917957d6554Steve Blocknamespace WebCore { 422bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass IntRect; 432bde8e466a4451c7319e3a072d118917957d6554Steve Block} 442bde8e466a4451c7319e3a072d118917957d6554Steve Block 452bde8e466a4451c7319e3a072d118917957d6554Steve Block#if PLATFORM(MAC) 462bde8e466a4451c7319e3a072d118917957d6554Steve BlockOBJC_CLASS WKView; 472bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 482bde8e466a4451c7319e3a072d118917957d6554Steve Block 492bde8e466a4451c7319e3a072d118917957d6554Steve Blocknamespace WebKit { 502bde8e466a4451c7319e3a072d118917957d6554Steve Block 512bde8e466a4451c7319e3a072d118917957d6554Steve Block#if PLATFORM(MAC) 522bde8e466a4451c7319e3a072d118917957d6554Steve Blocktypedef WKView PlatformWebView; 532bde8e466a4451c7319e3a072d118917957d6554Steve Block#elif PLATFORM(WIN) 542bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass WebView; 552bde8e466a4451c7319e3a072d118917957d6554Steve Blocktypedef WebView PlatformWebView; 562bde8e466a4451c7319e3a072d118917957d6554Steve Block#elif PLATFORM(QT) 572bde8e466a4451c7319e3a072d118917957d6554Steve Blocktypedef QGraphicsWKView PlatformWebView; 582bde8e466a4451c7319e3a072d118917957d6554Steve Block#elif PLATFORM(GTK) 592bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass WebView; 602bde8e466a4451c7319e3a072d118917957d6554Steve Blocktypedef WebView PlatformWebView; 612bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 622bde8e466a4451c7319e3a072d118917957d6554Steve Block 632bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass WebPageProxy; 642bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass LayerTreeContext; 652bde8e466a4451c7319e3a072d118917957d6554Steve Block 662bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass WebFullScreenManagerProxy : public RefCounted<WebFullScreenManagerProxy> { 672bde8e466a4451c7319e3a072d118917957d6554Steve Blockpublic: 682bde8e466a4451c7319e3a072d118917957d6554Steve Block static PassRefPtr<WebFullScreenManagerProxy> create(WebPageProxy*); 692bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual ~WebFullScreenManagerProxy(); 702bde8e466a4451c7319e3a072d118917957d6554Steve Block 712bde8e466a4451c7319e3a072d118917957d6554Steve Block void invalidate(); 722bde8e466a4451c7319e3a072d118917957d6554Steve Block 732bde8e466a4451c7319e3a072d118917957d6554Steve Block void setWebView(PlatformWebView*); 742bde8e466a4451c7319e3a072d118917957d6554Steve Block 752bde8e466a4451c7319e3a072d118917957d6554Steve Block void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); 762bde8e466a4451c7319e3a072d118917957d6554Steve Block CoreIPC::SyncReplyMode didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder* arguments, CoreIPC::ArgumentEncoder* reply); 772bde8e466a4451c7319e3a072d118917957d6554Steve Block 782bde8e466a4451c7319e3a072d118917957d6554Steve Block void willEnterFullScreen(); 792bde8e466a4451c7319e3a072d118917957d6554Steve Block void didEnterFullScreen(); 802bde8e466a4451c7319e3a072d118917957d6554Steve Block void willExitFullScreen(); 812bde8e466a4451c7319e3a072d118917957d6554Steve Block void didExitFullScreen(); 822bde8e466a4451c7319e3a072d118917957d6554Steve Block void beginEnterFullScreenAnimation(float duration); 832bde8e466a4451c7319e3a072d118917957d6554Steve Block void beginExitFullScreenAnimation(float duration); 842bde8e466a4451c7319e3a072d118917957d6554Steve Block 852bde8e466a4451c7319e3a072d118917957d6554Steve Blockprivate: 862bde8e466a4451c7319e3a072d118917957d6554Steve Block WebFullScreenManagerProxy(WebPageProxy*); 872bde8e466a4451c7319e3a072d118917957d6554Steve Block 882bde8e466a4451c7319e3a072d118917957d6554Steve Block void supportsFullScreen(bool withKeyboard, bool&); 892bde8e466a4451c7319e3a072d118917957d6554Steve Block void enterFullScreen(); 902bde8e466a4451c7319e3a072d118917957d6554Steve Block void exitFullScreen(); 912bde8e466a4451c7319e3a072d118917957d6554Steve Block void beganEnterFullScreenAnimation(); 922bde8e466a4451c7319e3a072d118917957d6554Steve Block void finishedEnterFullScreenAnimation(bool completed); 932bde8e466a4451c7319e3a072d118917957d6554Steve Block void beganExitFullScreenAnimation(); 942bde8e466a4451c7319e3a072d118917957d6554Steve Block void finishedExitFullScreenAnimation(bool completed); 952bde8e466a4451c7319e3a072d118917957d6554Steve Block void enterAcceleratedCompositingMode(const LayerTreeContext&); 962bde8e466a4451c7319e3a072d118917957d6554Steve Block void exitAcceleratedCompositingMode(); 972bde8e466a4451c7319e3a072d118917957d6554Steve Block void getFullScreenRect(WebCore::IntRect&); 982bde8e466a4451c7319e3a072d118917957d6554Steve Block 992bde8e466a4451c7319e3a072d118917957d6554Steve Block WebPageProxy* m_page; 1002bde8e466a4451c7319e3a072d118917957d6554Steve Block PlatformWebView* m_webView; 1012bde8e466a4451c7319e3a072d118917957d6554Steve Block 1022bde8e466a4451c7319e3a072d118917957d6554Steve Block void didReceiveWebFullScreenManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); 1032bde8e466a4451c7319e3a072d118917957d6554Steve Block CoreIPC::SyncReplyMode didReceiveSyncWebFullScreenManagerProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder* arguments, CoreIPC::ArgumentEncoder* reply); 1042bde8e466a4451c7319e3a072d118917957d6554Steve Block}; 1052bde8e466a4451c7319e3a072d118917957d6554Steve Block 1062bde8e466a4451c7319e3a072d118917957d6554Steve Block} // namespace WebKit 1072bde8e466a4451c7319e3a072d118917957d6554Steve Block 1082bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif // ENABLE(FULLSCREEN_API) 1092bde8e466a4451c7319e3a072d118917957d6554Steve Block 1102bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif // WebFullScreenManagerProxy_h 111