2 * Copyright (C) 2014 Apple Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23 * THE POSSIBILITY OF SUCH DAMAGE.
26 #ifndef WebVideoFullscreenManagerProxy_h
27 #define WebVideoFullscreenManagerProxy_h
31 #include "MessageReceiver.h"
32 #include <WebCore/GraphicsLayer.h>
33 #include <WebCore/WebVideoFullscreenInterfaceAVKit.h>
34 #include <WebCore/WebVideoFullscreenModel.h>
35 #include <wtf/PassRefPtr.h>
36 #include <wtf/RefCounted.h>
37 #include <wtf/RefPtr.h>
45 class WebVideoFullscreenManagerProxy : public WebCore::WebVideoFullscreenInterfaceAVKit, public WebCore::WebVideoFullscreenChangeObserver, public WebCore::WebVideoFullscreenModel, private IPC::MessageReceiver {
47 static PassRefPtr<WebVideoFullscreenManagerProxy> create(WebPageProxy&);
48 virtual ~WebVideoFullscreenManagerProxy();
50 virtual void invalidate() override;
51 virtual void requestExitFullscreen() override;
54 explicit WebVideoFullscreenManagerProxy(WebPageProxy&);
55 virtual void didReceiveMessage(IPC::Connection&, IPC::MessageDecoder&) override;
57 // Translate to FullscreenInterface
58 void setupFullscreenWithID(uint32_t, const WebCore::IntRect& initialRect, float hostingDeviceScaleFactor, WebCore::HTMLMediaElement::VideoFullscreenMode, bool allowOptimizedFullscreen);
59 void setSeekableRangesVector(const Vector<std::pair<double, double>>&);
60 void setExternalPlaybackProperties(bool enabled, uint32_t targetType, String localizedDeviceName);
61 void fullscreenModeChanged(WebCore::HTMLMediaElement::VideoFullscreenMode) override;
62 void preparedToReturnToInline(bool visible, const WebCore::IntRect& inlineRect) override;
64 // Fullscreen Observer
65 virtual void didSetupFullscreen() override;
66 virtual void didEnterFullscreen() override;
67 virtual void didExitFullscreen() override;
68 virtual void didCleanupFullscreen() override;
69 virtual void fullscreenMayReturnToInline() override;
72 virtual void play() override;
73 virtual void pause() override;
74 virtual void togglePlayState() override;
75 virtual void beginScrubbing() override;
76 virtual void endScrubbing() override;
77 virtual void seekToTime(double) override;
78 virtual void fastSeek(double time) override;
79 virtual void beginScanningForward() override;
80 virtual void beginScanningBackward() override;
81 virtual void endScanning() override;
82 virtual void setVideoLayerFrame(WebCore::FloatRect) override;
83 virtual void setVideoLayerGravity(WebCore::WebVideoFullscreenModel::VideoGravity) override;
84 virtual void selectAudioMediaOption(uint64_t) override;
85 virtual void selectLegibleMediaOption(uint64_t) override;
88 RetainPtr<PlatformLayer> m_layerHost;
93 #endif // PLATFORM(IOS)
95 #endif // WebVideoFullscreenManagerProxy_h