1 // Copyright (c) 2012 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 CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MAC_H_
6 #define CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MAC_H_
7 
8 #include <map>
9 #include <utility>
10 #include <vector>
11 
12 #include "base/macros.h"
13 #include "content/browser/accessibility/browser_accessibility.h"
14 #include "content/common/content_export.h"
15 
16 @class BrowserAccessibilityCocoa;
17 
18 namespace content {
19 
20 #if __OBJC__
21 CONTENT_EXPORT const BrowserAccessibilityCocoa* ToBrowserAccessibilityCocoa(
22     const BrowserAccessibility* obj);
23 CONTENT_EXPORT BrowserAccessibilityCocoa* ToBrowserAccessibilityCocoa(
24     BrowserAccessibility* obj);
25 #endif
26 
27 class BrowserAccessibilityMac : public BrowserAccessibility {
28  public:
29   // BrowserAccessibility overrides.
30   void NativeReleaseReference() override;
31   bool IsNative() const override;
32   void OnDataChanged() override;
33   uint32_t PlatformChildCount() const override;
34   BrowserAccessibility* PlatformGetChild(uint32_t child_index) const override;
35 
36   BrowserAccessibility* PlatformGetFirstChild() const override;
37   BrowserAccessibility* PlatformGetLastChild() const override;
38   BrowserAccessibility* PlatformGetNextSibling() const override;
39   BrowserAccessibility* PlatformGetPreviousSibling() const override;
40 
41   // The BrowserAccessibilityCocoa associated with us.
native_view()42   BrowserAccessibilityCocoa* native_view() const {
43     return browser_accessibility_cocoa_;
44   }
45 
46   // Refresh the native object associated with this.
47   // Useful for re-announcing the current focus when properties have changed.
48   void ReplaceNativeObject();
49 
50  private:
51   // This gives BrowserAccessibility::Create access to the class constructor.
52   friend class BrowserAccessibility;
53 
54   BrowserAccessibilityMac();
55 
56   // Allows access to the BrowserAccessibilityCocoa which wraps this.
57   // BrowserAccessibility.
58   // We own this object until our manager calls ReleaseReference;
59   // thereafter, the cocoa object owns us.
60   BrowserAccessibilityCocoa* browser_accessibility_cocoa_;
61   DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityMac);
62 };
63 
64 }  // namespace content
65 
66 #endif  // CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_MAC_H_
67