Use "= default" to denote default constructor or destructor
[WebKit-https.git] / Source / WebCore / platform / graphics / InbandTextTrackPrivate.h
1 /*
2  * Copyright (C) 2012 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 #ifndef InbandTextTrackPrivate_h
27 #define InbandTextTrackPrivate_h
28
29 #if ENABLE(VIDEO_TRACK)
30
31 #include "InbandTextTrackPrivateClient.h"
32 #include <pal/Logger.h>
33
34 namespace WebCore {
35
36 class InbandTextTrackPrivate : public TrackPrivateBase {
37 public:
38     enum CueFormat {
39         Data,
40         Generic,
41         WebVTT
42     };
43     static RefPtr<InbandTextTrackPrivate> create(CueFormat format) { return adoptRef(new InbandTextTrackPrivate(format)); }
44     virtual ~InbandTextTrackPrivate() = default;
45
46     InbandTextTrackPrivateClient* client() const override { return m_client; }
47     void setClient(InbandTextTrackPrivateClient* client) { m_client = client; }
48
49     enum Mode {
50         Disabled,
51         Hidden,
52         Showing
53     };
54     virtual void setMode(Mode mode) { m_mode = mode; };
55     virtual InbandTextTrackPrivate::Mode mode() const { return m_mode; }
56
57     enum Kind {
58         Subtitles,
59         Captions,
60         Descriptions,
61         Chapters,
62         Metadata,
63         Forced,
64         None
65     };
66     virtual Kind kind() const { return Subtitles; }
67     virtual bool isClosedCaptions() const { return false; }
68     virtual bool isSDH() const { return false; }
69     virtual bool containsOnlyForcedSubtitles() const { return false; }
70     virtual bool isMainProgramContent() const { return true; }
71     virtual bool isEasyToRead() const { return false; }
72     virtual bool isDefault() const { return false; }
73     AtomicString label() const override { return emptyAtom(); }
74     AtomicString language() const override { return emptyAtom(); }
75     AtomicString id() const override { return emptyAtom(); }
76     virtual AtomicString inBandMetadataTrackDispatchType() const { return emptyAtom(); }
77
78     virtual int textTrackIndex() const { return 0; }
79
80     CueFormat cueFormat() const { return m_format; }
81
82 #if !RELEASE_LOG_DISABLED
83     const char* logClassName() const override { return "InbandTextTrackPrivate"; }
84 #endif
85
86 protected:
87     InbandTextTrackPrivate(CueFormat format)
88         : m_format(format)
89         , m_client(0)
90         , m_mode(Disabled)
91     {
92     }
93
94 private:
95     CueFormat m_format;
96     InbandTextTrackPrivateClient* m_client;
97     Mode m_mode;
98 };
99
100 } // namespace WebCore
101
102 #endif
103 #endif