1 // Copyright 2018 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 CHROME_BROWSER_CHROMEOS_ARC_ACCESSIBILITY_ACCESSIBILITY_WINDOW_INFO_DATA_WRAPPER_H_
6 #define CHROME_BROWSER_CHROMEOS_ARC_ACCESSIBILITY_ACCESSIBILITY_WINDOW_INFO_DATA_WRAPPER_H_
7 
8 #include <string>
9 #include <vector>
10 
11 #include "chrome/browser/chromeos/arc/accessibility/accessibility_info_data_wrapper.h"
12 #include "ui/accessibility/ax_node_data.h"
13 
14 namespace arc {
15 
16 class AXTreeSourceArc;
17 
18 // Wrapper class for an AccessibilityWindowInfoData.
19 class AccessibilityWindowInfoDataWrapper : public AccessibilityInfoDataWrapper {
20  public:
21   AccessibilityWindowInfoDataWrapper(
22       AXTreeSourceArc* tree_source,
23       mojom::AccessibilityWindowInfoData* window);
24 
25   // AccessibilityInfoDataWrapper overrides.
26   bool IsNode() const override;
27   mojom::AccessibilityNodeInfoData* GetNode() const override;
28   mojom::AccessibilityWindowInfoData* GetWindow() const override;
29   int32_t GetId() const override;
30   const gfx::Rect GetBounds() const override;
31   bool IsVisibleToUser() const override;
32   bool IsVirtualNode() const override;
33   bool IsIgnored() const override;
34   bool IsImportantInAndroid() const override;
35   bool CanBeAccessibilityFocused() const override;
36   bool IsAccessibilityFocusableContainer() const override;
37   void PopulateAXRole(ui::AXNodeData* out_data) const override;
38   void PopulateAXState(ui::AXNodeData* out_data) const override;
39   void Serialize(ui::AXNodeData* out_data) const override;
40   std::string ComputeAXName(bool do_recursive) const override;
41   void GetChildren(
42       std::vector<AccessibilityInfoDataWrapper*>* children) const override;
43 
44  private:
45   bool GetProperty(mojom::AccessibilityWindowBooleanProperty prop) const;
46   bool GetProperty(mojom::AccessibilityWindowIntProperty prop,
47                    int32_t* out_value) const;
48   bool HasProperty(mojom::AccessibilityWindowStringProperty prop) const;
49   bool GetProperty(mojom::AccessibilityWindowStringProperty prop,
50                    std::string* out_value) const;
51   bool GetProperty(mojom::AccessibilityWindowIntListProperty prop,
52                    std::vector<int32_t>* out_value) const;
53 
54   mojom::AccessibilityWindowInfoData* window_ptr_ = nullptr;
55 
56   DISALLOW_COPY_AND_ASSIGN(AccessibilityWindowInfoDataWrapper);
57 };
58 
59 }  // namespace arc
60 
61 #endif  // CHROME_BROWSER_CHROMEOS_ARC_ACCESSIBILITY_ACCESSIBILITY_WINDOW_INFO_DATA_WRAPPER_H_
62