diff options
Diffstat (limited to 'Source/WebCore/html/shadow/MediaControlsApple.h')
-rw-r--r-- | Source/WebCore/html/shadow/MediaControlsApple.h | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/Source/WebCore/html/shadow/MediaControlsApple.h b/Source/WebCore/html/shadow/MediaControlsApple.h new file mode 100644 index 000000000..31b2bc9a5 --- /dev/null +++ b/Source/WebCore/html/shadow/MediaControlsApple.h @@ -0,0 +1,122 @@ +/* + * Copyright (C) 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. + * Copyright (C) 2011, 2012 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma once + +#if ENABLE(VIDEO) + +#include "MediaControls.h" + +namespace WebCore { + +class MediaControlsApple; + +class MediaControlsAppleEventListener : public EventListener { +public: + static Ref<MediaControlsAppleEventListener> create(MediaControlsApple* mediaControls) { return adoptRef(*new MediaControlsAppleEventListener(mediaControls)); } + static const MediaControlsAppleEventListener* cast(const EventListener* listener) + { + return listener->type() == MediaControlsAppleEventListenerType + ? static_cast<const MediaControlsAppleEventListener*>(listener) + : 0; + } + + bool operator==(const EventListener& other) const override; + +private: + MediaControlsAppleEventListener(MediaControlsApple* mediaControls) + : EventListener(MediaControlsAppleEventListenerType) + , m_mediaControls(mediaControls) + { + } + + void handleEvent(ScriptExecutionContext*, Event*) override; + + MediaControlsApple* m_mediaControls; +}; + +class MediaControlsApple final : public MediaControls { +public: + static RefPtr<MediaControlsApple> tryCreateControls(Document&); + + // MediaControls implementation. + void setMediaController(MediaControllerInterface*) override; + + void hide() override; + void makeTransparent() override; + + void reset() override; + + void changedMute() override; + void changedVolume() override; + + void enteredFullscreen() override; + void exitedFullscreen() override; + + void reportedError() override; + void loadedMetadata() override; + + void showVolumeSlider() override; + void updateCurrentTimeDisplay() override; + void updateStatusDisplay() override; + + void changedClosedCaptionsVisibility() override; + void toggleClosedCaptionTrackList() override; + void closedCaptionTracksChanged() override; + + bool shouldClosedCaptionsContainerPreventPageScrolling(int wheelDeltaY); + void handleClickEvent(Event&); + +private: + MediaControlsApple(Document&); + + void defaultEventHandler(Event&) override; + MediaControlsAppleEventListener& eventListener(); + + void showClosedCaptionTrackList(); + void hideClosedCaptionTrackList(); + void setFullscreenSliderVolume(); + + MediaControlRewindButtonElement* m_rewindButton { nullptr }; + MediaControlReturnToRealtimeButtonElement* m_returnToRealTimeButton { nullptr }; + MediaControlStatusDisplayElement* m_statusDisplay { nullptr }; + MediaControlTimeRemainingDisplayElement* m_timeRemainingDisplay { nullptr }; + MediaControlTimelineContainerElement* m_timelineContainer { nullptr }; + MediaControlSeekBackButtonElement* m_seekBackButton { nullptr }; + MediaControlSeekForwardButtonElement* m_seekForwardButton { nullptr }; + MediaControlClosedCaptionsTrackListElement* m_closedCaptionsTrackList { nullptr }; + MediaControlClosedCaptionsContainerElement* m_closedCaptionsContainer { nullptr }; + MediaControlVolumeSliderMuteButtonElement* m_volumeSliderMuteButton { nullptr }; + MediaControlVolumeSliderContainerElement* m_volumeSliderContainer { nullptr }; + MediaControlFullscreenVolumeMinButtonElement* m_fullScreenMinVolumeButton { nullptr }; + MediaControlFullscreenVolumeSliderElement* m_fullScreenVolumeSlider { nullptr }; + MediaControlFullscreenVolumeMaxButtonElement* m_fullScreenMaxVolumeButton { nullptr }; + RefPtr<MediaControlsAppleEventListener> m_eventListener; +}; + +} // namespace WebCore + +#endif // ENABLE(VIDEO) |