[iOS] Don't update AVPlayerViewController currentTime while scrubbing
[WebKit-https.git] / Source / WebCore / platform / ios / WebAVPlayerController.h
1 /*
2  * Copyright (C) 2016 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
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.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #if PLATFORM(IOS_FAMILY) && HAVE(AVKIT)
27
28 #import <pal/spi/cocoa/AVKitSPI.h>
29
30 namespace WebCore {
31 class PlaybackSessionModel;
32 class PlaybackSessionInterfaceAVKit;
33 }
34
35 @interface WebAVMediaSelectionOption : NSObject
36 @property (retain) NSString *localizedDisplayName;
37 @end
38
39 @interface WebAVPlayerController : NSObject {
40     WebAVMediaSelectionOption *_currentAudioMediaSelectionOption;
41     WebAVMediaSelectionOption *_currentLegibleMediaSelectionOption;
42     BOOL _pictureInPictureInterrupted;
43     BOOL _muted;
44 }
45
46 @property (retain) AVPlayerController* playerControllerProxy;
47 @property (assign) WebCore::PlaybackSessionModel* delegate;
48 @property (assign) WebCore::PlaybackSessionInterfaceAVKit* playbackSessionInterface;
49
50 @property (readonly) BOOL canScanForward;
51 @property BOOL canScanBackward;
52 @property (readonly) BOOL canSeekToBeginning;
53 @property (readonly) BOOL canSeekToEnd;
54 @property (readonly) BOOL isScrubbing;
55
56 @property BOOL canPlay;
57 @property (getter=isPlaying) BOOL playing;
58 @property BOOL canPause;
59 @property BOOL canTogglePlayback;
60 @property double rate;
61 @property BOOL canSeek;
62 @property NSTimeInterval contentDuration;
63 @property CGSize contentDimensions;
64 @property BOOL hasEnabledAudio;
65 @property BOOL hasEnabledVideo;
66 @property BOOL hasVideo;
67 @property (readonly) NSTimeInterval minTime;
68 @property (readonly) NSTimeInterval maxTime;
69 @property NSTimeInterval contentDurationWithinEndTimes;
70 @property (retain) NSArray *loadedTimeRanges;
71 @property AVPlayerControllerStatus status;
72 @property (retain) AVValueTiming *timing;
73 @property (retain) NSArray *seekableTimeRanges;
74 @property (getter=isMuted) BOOL muted;
75 @property double volume;
76 - (void)volumeChanged:(double)volume;
77
78 @property (readonly) BOOL hasMediaSelectionOptions;
79 @property (readonly) BOOL hasAudioMediaSelectionOptions;
80 @property (retain) NSArray *audioMediaSelectionOptions;
81 @property (retain) WebAVMediaSelectionOption *currentAudioMediaSelectionOption;
82 @property (readonly) BOOL hasLegibleMediaSelectionOptions;
83 @property (retain) NSArray *legibleMediaSelectionOptions;
84 @property (retain) WebAVMediaSelectionOption *currentLegibleMediaSelectionOption;
85
86 @property (readonly, getter=isPlayingOnExternalScreen) BOOL playingOnExternalScreen;
87 @property (nonatomic, getter=isPlayingOnSecondScreen) BOOL playingOnSecondScreen;
88 @property (getter=isExternalPlaybackActive) BOOL externalPlaybackActive;
89 @property AVPlayerControllerExternalPlaybackType externalPlaybackType;
90 @property (retain) NSString *externalPlaybackAirPlayDeviceLocalizedName;
91 @property BOOL allowsExternalPlayback;
92 @property (getter=isPictureInPicturePossible) BOOL pictureInPicturePossible;
93 @property (getter=isPictureInPictureInterrupted) BOOL pictureInPictureInterrupted;
94
95 @property NSTimeInterval seekableTimeRangesLastModifiedTime;
96 @property NSTimeInterval liveUpdateInterval;
97
98 @property (NS_NONATOMIC_IOSONLY, retain, readwrite) AVValueTiming *minTiming;
99 @property (NS_NONATOMIC_IOSONLY, retain, readwrite) AVValueTiming *maxTiming;
100 @end
101
102 #endif
103