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 Computer, 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
30#ifndef AccessibilityMediaControls_h
31#define AccessibilityMediaControls_h
32
33#if ENABLE(VIDEO)
34
35#include "AccessibilitySlider.h"
36#include "MediaControlElements.h"
37
38namespace WebCore {
39
40class AccessibilityMediaControl : public AccessibilityRenderObject {
41
42public:
43    static PassRefPtr<AccessibilityObject> create(RenderObject*);
44    virtual ~AccessibilityMediaControl() { }
45
46    virtual AccessibilityRole roleValue() const;
47    virtual bool accessibilityIsIgnored() const;
48
49    virtual String title() const;
50    virtual String accessibilityDescription() const;
51    virtual String helpText() const;
52
53protected:
54    AccessibilityMediaControl(RenderObject*);
55    MediaControlElementType controlType() const;
56    String controlTypeName() const;
57};
58
59
60class AccessibilityMediaTimeline : public AccessibilitySlider {
61
62public:
63    static PassRefPtr<AccessibilityObject> create(RenderObject*);
64    virtual ~AccessibilityMediaTimeline() { }
65
66    virtual bool isMediaTimeline() const { return true; }
67
68    virtual String helpText() const;
69    virtual String valueDescription() const;
70    const AtomicString& getAttribute(const QualifiedName& attribute) const;
71
72private:
73    AccessibilityMediaTimeline(RenderObject*);
74};
75
76
77class AccessibilityMediaControlsContainer : public AccessibilityMediaControl {
78
79public:
80    static PassRefPtr<AccessibilityObject> create(RenderObject*);
81    virtual ~AccessibilityMediaControlsContainer() { }
82
83    virtual AccessibilityRole roleValue() const { return ToolbarRole; }
84    virtual bool accessibilityIsIgnored() const { return false; }
85
86    virtual String helpText() const;
87    virtual String accessibilityDescription() const;
88
89private:
90    AccessibilityMediaControlsContainer(RenderObject*);
91    bool controllingVideoElement() const;
92    const String elementTypeName() const;
93};
94
95
96class AccessibilityMediaTimeDisplay : public AccessibilityMediaControl {
97
98public:
99    static PassRefPtr<AccessibilityObject> create(RenderObject*);
100    virtual ~AccessibilityMediaTimeDisplay() { }
101
102    virtual AccessibilityRole roleValue() const { return StaticTextRole; }
103    virtual bool accessibilityIsIgnored() const;
104
105    virtual String stringValue() const;
106    virtual String accessibilityDescription() const;
107
108private:
109    AccessibilityMediaTimeDisplay(RenderObject*);
110};
111
112
113} // namespace WebCore
114
115#endif // ENABLE(VIDEO)
116
117#endif // AccessibilityMediaControls_h
118