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