1/*
2 * Copyright (C) 2009 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 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. Neither the name of Apple Inc. ("Apple") nor the names of
14 * its contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#pragma once
30
31#if ENABLE(VIDEO)
32
33#include "AccessibilitySlider.h"
34#include "MediaControlElements.h"
35
36namespace WebCore {
37
38class AccessibilityMediaControl : public AccessibilityRenderObject {
39public:
40 static Ref<AccessibilityObject> create(RenderObject*);
41 virtual ~AccessibilityMediaControl() = default;
42
43 AccessibilityRole roleValue() const override;
44
45 String title() const override;
46 String accessibilityDescription() const override;
47 String helpText() const override;
48
49protected:
50 explicit AccessibilityMediaControl(RenderObject*);
51 MediaControlElementType controlType() const;
52 const String& controlTypeName() const;
53 bool computeAccessibilityIsIgnored() const override;
54
55private:
56 void accessibilityText(Vector<AccessibilityText>&) const override;
57};
58
59
60class AccessibilityMediaTimeline final : public AccessibilitySlider {
61public:
62 static Ref<AccessibilityObject> create(RenderObject*);
63 virtual ~AccessibilityMediaTimeline() = default;
64
65 String helpText() const override;
66 String valueDescription() const override;
67 const AtomicString& getAttribute(const QualifiedName& attribute) const;
68
69private:
70 explicit AccessibilityMediaTimeline(RenderObject*);
71
72 bool isMediaTimeline() const override { return true; }
73};
74
75
76class AccessibilityMediaControlsContainer final : public AccessibilityMediaControl {
77public:
78 static Ref<AccessibilityObject> create(RenderObject*);
79 virtual ~AccessibilityMediaControlsContainer() = default;
80
81 AccessibilityRole roleValue() const override { return AccessibilityRole::Toolbar; }
82
83 String helpText() const override;
84 String accessibilityDescription() const override;
85
86private:
87 explicit AccessibilityMediaControlsContainer(RenderObject*);
88 bool controllingVideoElement() const;
89 const String& elementTypeName() const;
90 bool computeAccessibilityIsIgnored() const override;
91};
92
93
94class AccessibilityMediaTimeDisplay final : public AccessibilityMediaControl {
95public:
96 static Ref<AccessibilityObject> create(RenderObject*);
97 virtual ~AccessibilityMediaTimeDisplay() = default;
98
99 AccessibilityRole roleValue() const override { return AccessibilityRole::ApplicationTimer; }
100
101 String stringValue() const override;
102 String accessibilityDescription() const override;
103
104private:
105 explicit AccessibilityMediaTimeDisplay(RenderObject*);
106 bool isMediaControlLabel() const override { return true; }
107 bool computeAccessibilityIsIgnored() const override;
108};
109
110} // namespace WebCore
111
112#endif // ENABLE(VIDEO)
113