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#ifndef WebFullScreenManager_h 262bde8e466a4451c7319e3a072d118917957d6554Steve Block#define WebFullScreenManager_h 272bde8e466a4451c7319e3a072d118917957d6554Steve Block 282bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(FULLSCREEN_API) 292bde8e466a4451c7319e3a072d118917957d6554Steve Block 302bde8e466a4451c7319e3a072d118917957d6554Steve Block#include <WebCore/IntRect.h> 312bde8e466a4451c7319e3a072d118917957d6554Steve Block#include <wtf/RefCounted.h> 322bde8e466a4451c7319e3a072d118917957d6554Steve Block#include <wtf/RefPtr.h> 332bde8e466a4451c7319e3a072d118917957d6554Steve Block 342bde8e466a4451c7319e3a072d118917957d6554Steve Blocknamespace CoreIPC { 352bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass ArgumentDecoder; 362bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass Connection; 372bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass MessageID; 382bde8e466a4451c7319e3a072d118917957d6554Steve Block} 392bde8e466a4451c7319e3a072d118917957d6554Steve Block 402bde8e466a4451c7319e3a072d118917957d6554Steve Blocknamespace WebCore { 412bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass IntRect; 422bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass Element; 432bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass GraphicsLayer; 442bde8e466a4451c7319e3a072d118917957d6554Steve Block} 452bde8e466a4451c7319e3a072d118917957d6554Steve Block 462bde8e466a4451c7319e3a072d118917957d6554Steve Blocknamespace WebKit { 472bde8e466a4451c7319e3a072d118917957d6554Steve Block 482bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass WebPage; 492bde8e466a4451c7319e3a072d118917957d6554Steve Block 502bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass WebFullScreenManager : public RefCounted<WebFullScreenManager> { 512bde8e466a4451c7319e3a072d118917957d6554Steve Blockpublic: 522bde8e466a4451c7319e3a072d118917957d6554Steve Block static PassRefPtr<WebFullScreenManager> create(WebPage*); 532bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual ~WebFullScreenManager(); 542bde8e466a4451c7319e3a072d118917957d6554Steve Block 552bde8e466a4451c7319e3a072d118917957d6554Steve Block void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); 562bde8e466a4451c7319e3a072d118917957d6554Steve Block 572bde8e466a4451c7319e3a072d118917957d6554Steve Block bool supportsFullScreen(bool withKeyboard); 582bde8e466a4451c7319e3a072d118917957d6554Steve Block void enterFullScreenForElement(WebCore::Element*); 592bde8e466a4451c7319e3a072d118917957d6554Steve Block void exitFullScreenForElement(WebCore::Element*); 602bde8e466a4451c7319e3a072d118917957d6554Steve Block void beganEnterFullScreenAnimation(); 612bde8e466a4451c7319e3a072d118917957d6554Steve Block void finishedEnterFullScreenAnimation(bool completed); 622bde8e466a4451c7319e3a072d118917957d6554Steve Block void beganExitFullScreenAnimation(); 632bde8e466a4451c7319e3a072d118917957d6554Steve Block void finishedExitFullScreenAnimation(bool completed); 642bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void setRootFullScreenLayer(WebCore::GraphicsLayer*) = 0; 652bde8e466a4451c7319e3a072d118917957d6554Steve Block 662daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void willEnterFullScreen(); 672daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void didEnterFullScreen(); 682daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void willExitFullScreen(); 692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch void didExitFullScreen(); 702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 712bde8e466a4451c7319e3a072d118917957d6554Steve Block WebCore::Element* element(); 722bde8e466a4451c7319e3a072d118917957d6554Steve Block 732bde8e466a4451c7319e3a072d118917957d6554Steve Blockprotected: 742bde8e466a4451c7319e3a072d118917957d6554Steve Block WebFullScreenManager(WebPage*); 752bde8e466a4451c7319e3a072d118917957d6554Steve Block 762bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void beginEnterFullScreenAnimation(float duration) = 0; 772bde8e466a4451c7319e3a072d118917957d6554Steve Block virtual void beginExitFullScreenAnimation(float duration) = 0; 782bde8e466a4451c7319e3a072d118917957d6554Steve Block WebCore::IntRect getFullScreenRect(); 792bde8e466a4451c7319e3a072d118917957d6554Steve Block 802bde8e466a4451c7319e3a072d118917957d6554Steve Block void didReceiveWebFullScreenManagerMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*); 812bde8e466a4451c7319e3a072d118917957d6554Steve Block 822bde8e466a4451c7319e3a072d118917957d6554Steve Block WebCore::IntRect m_initialFrame; 832bde8e466a4451c7319e3a072d118917957d6554Steve Block RefPtr<WebPage> m_page; 842bde8e466a4451c7319e3a072d118917957d6554Steve Block RefPtr<WebCore::Element> m_element; 852bde8e466a4451c7319e3a072d118917957d6554Steve Block}; 862bde8e466a4451c7319e3a072d118917957d6554Steve Block 872bde8e466a4451c7319e3a072d118917957d6554Steve Block} // namespace WebKit 882bde8e466a4451c7319e3a072d118917957d6554Steve Block 892bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif // ENABLE(FULLSCREEN_API) 902bde8e466a4451c7319e3a072d118917957d6554Steve Block 912bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif // WebFullScreenManager_h 92