Add hasVideo property to WebAVPlayerController.
[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) && HAVE(AVKIT)
27
28 #import "AVKitSPI.h"
29
30 namespace WebCore {
31 class WebPlaybackSessionModel;
32 class WebPlaybackSessionInterfaceAVKit;
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 }
44
45 @property (retain) AVPlayerController* playerControllerProxy;
46 @property (assign) WebCore::WebPlaybackSessionModel* delegate;
47 @property (assign) WebCore::WebPlaybackSessionInterfaceAVKit* playbackSessionInterface;
48
49 @property (readonly) BOOL canScanForward;
50 @property BOOL canScanBackward;
51 @property (readonly) BOOL canSeekToBeginning;
52 @property (readonly) BOOL canSeekToEnd;
53
54 @property BOOL canPlay;
55 @property (getter=isPlaying) BOOL playing;
56 @property BOOL canPause;
57 @property BOOL canTogglePlayback;
58 @property double rate;
59 @property BOOL canSeek;
60 @property NSTimeInterval contentDuration;
61 @property CGSize contentDimensions;
62 @property BOOL hasEnabledAudio;
63 @property BOOL hasEnabledVideo;
64 @property BOOL hasVideo;
65 @property NSTimeInterval minTime;
66 @property NSTimeInterval maxTime;
67 @property NSTimeInterval contentDurationWithinEndTimes;
68 @property (retain) NSArray *loadedTimeRanges;
69 @property AVPlayerControllerStatus status;
70 @property (retain) AVValueTiming *timing;
71 @property (retain) NSArray *seekableTimeRanges;
72
73 @property (readonly) BOOL hasMediaSelectionOptions;
74 @property (readonly) BOOL hasAudioMediaSelectionOptions;
75 @property (retain) NSArray *audioMediaSelectionOptions;
76 @property (retain) WebAVMediaSelectionOption *currentAudioMediaSelectionOption;
77 @property (readonly) BOOL hasLegibleMediaSelectionOptions;
78 @property (retain) NSArray *legibleMediaSelectionOptions;
79 @property (retain) WebAVMediaSelectionOption *currentLegibleMediaSelectionOption;
80
81 @property (readonly, getter=isPlayingOnExternalScreen) BOOL playingOnExternalScreen;
82 @property (readonly, getter=isPlayingOnSecondScreen) BOOL playingOnSecondScreen;
83 @property (getter=isExternalPlaybackActive) BOOL externalPlaybackActive;
84 @property AVPlayerControllerExternalPlaybackType externalPlaybackType;
85 @property (retain) NSString *externalPlaybackAirPlayDeviceLocalizedName;
86 @property BOOL allowsExternalPlayback;
87 @property (getter=isPictureInPicturePossible) BOOL pictureInPicturePossible;
88 @property (getter=isPictureInPictureInterrupted) BOOL pictureInPictureInterrupted;
89 @end
90
91 #endif
92