1231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block/*
2231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Copyright (C) 2009 Apple Inc. All rights reserved.
3231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block *
4231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * Redistribution and use in source and binary forms, with or without
5231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * modification, are permitted provided that the following conditions
6231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * are met:
7231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block *
8231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * 1.  Redistributions of source code must retain the above copyright
9231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block *     notice, this list of conditions and the following disclaimer.
10231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * 2.  Redistributions in binary form must reproduce the above copyright
11231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block *     notice, this list of conditions and the following disclaimer in the
12231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block *     documentation and/or other materials provided with the distribution.
13231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
14231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block *     its contributors may be used to endorse or promote products derived
15231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block *     from this software without specific prior written permission.
16231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block *
17231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block */
28231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
29231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
30231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#ifndef AccessibilityMediaControls_h
31231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#define AccessibilityMediaControls_h
32231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
33231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#if ENABLE(VIDEO)
34231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
35231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "AccessibilitySlider.h"
36231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "MediaControlElements.h"
37231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
38231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Blocknamespace WebCore {
39231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
40643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass AccessibilityMediaControl : public AccessibilityRenderObject {
41231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
42643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockpublic:
43643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    static PassRefPtr<AccessibilityObject> create(RenderObject*);
44643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual ~AccessibilityMediaControl() { }
45231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
46643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual AccessibilityRole roleValue() const;
47643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool accessibilityIsIgnored() const;
48231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
49643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual String title() const;
50643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual String accessibilityDescription() const;
51643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual String helpText() const;
52231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
53643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockprotected:
54643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    AccessibilityMediaControl(RenderObject*);
55643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    MediaControlElementType controlType() const;
56643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    String controlTypeName() const;
57643ca7872b450ea4efacab6188849e5aac2ba161Steve Block};
58231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
59231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
60643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass AccessibilityMediaTimeline : public AccessibilitySlider {
61231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
62643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockpublic:
63643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    static PassRefPtr<AccessibilityObject> create(RenderObject*);
64643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual ~AccessibilityMediaTimeline() { }
65231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
66643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool isMediaTimeline() const { return true; }
67231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
68643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual String helpText() const;
69643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual String valueDescription() const;
70643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    const AtomicString& getAttribute(const QualifiedName& attribute) const;
71231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
72643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockprivate:
73643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    AccessibilityMediaTimeline(RenderObject*);
74643ca7872b450ea4efacab6188849e5aac2ba161Steve Block};
75231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
76231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
77643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass AccessibilityMediaControlsContainer : public AccessibilityMediaControl {
78231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
79643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockpublic:
80643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    static PassRefPtr<AccessibilityObject> create(RenderObject*);
81643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual ~AccessibilityMediaControlsContainer() { }
82231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
83643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual AccessibilityRole roleValue() const { return ToolbarRole; }
84643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool accessibilityIsIgnored() const { return false; }
85231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
86643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual String helpText() const;
87643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual String accessibilityDescription() const;
88231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
89643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockprivate:
90643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    AccessibilityMediaControlsContainer(RenderObject*);
91643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    bool controllingVideoElement() const;
92643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    const String elementTypeName() const;
93643ca7872b450ea4efacab6188849e5aac2ba161Steve Block};
94231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
95231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
96643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass AccessibilityMediaTimeDisplay : public AccessibilityMediaControl {
97231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
98643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockpublic:
99643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    static PassRefPtr<AccessibilityObject> create(RenderObject*);
100643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual ~AccessibilityMediaTimeDisplay() { }
101231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
102643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual AccessibilityRole roleValue() const { return StaticTextRole; }
103643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual bool accessibilityIsIgnored() const;
104231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
105643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual String stringValue() const;
106643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    virtual String accessibilityDescription() const;
107231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
108643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockprivate:
109643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    AccessibilityMediaTimeDisplay(RenderObject*);
110643ca7872b450ea4efacab6188849e5aac2ba161Steve Block};
111231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
112231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
113231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} // namespace WebCore
114231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
115231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif // ENABLE(VIDEO)
116231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
117231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#endif // AccessibilityMediaControls_h
118