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