1 // Copyright 2019 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_ACCESSIBILITY_AX_MEDIA_ELEMENT_H_
6 #define THIRD_PARTY_BLINK_RENDERER_MODULES_ACCESSIBILITY_AX_MEDIA_ELEMENT_H_
7 
8 #include "base/macros.h"
9 #include "third_party/blink/renderer/core/html/media/html_media_element.h"
10 #include "third_party/blink/renderer/modules/accessibility/ax_layout_object.h"
11 
12 namespace blink {
13 
14 class AXObjectCacheImpl;
15 
16 class AccessibilityMediaElement : public AXLayoutObject {
17  public:
18   static AXObject* Create(LayoutObject*, AXObjectCacheImpl&);
19 
20   AccessibilityMediaElement(LayoutObject*, AXObjectCacheImpl&);
21   ~AccessibilityMediaElement() override = default;
22 
23   // AXLayoutObject overrides.
24   String TextAlternative(bool recursive,
25                          bool in_aria_labelled_by_traversal,
26                          AXObjectSet& visited,
27                          ax::mojom::NameFrom&,
28                          AXRelatedObjectVector*,
29                          NameSources*) const override;
30 
31   // AXNodeObject overrides.
32   bool CanHaveChildren() const override;
33   bool ComputeAccessibilityIsIgnored(IgnoredReasons* = nullptr) const override;
34   AXRestriction Restriction() const override;
35 
36  protected:
37   bool HasControls() const;
38   bool HasEmptySource() const;
39   bool IsUnplayable() const;
40 
41   DISALLOW_COPY_AND_ASSIGN(AccessibilityMediaElement);
42 };
43 
44 }  // namespace blink
45 
46 #endif  // THIRD_PARTY_BLINK_RENDERER_MODULES_ACCESSIBILITY_AX_MEDIA_ELEMENT_H_
47