| // Copyright 2024 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef UI_ACCESSIBILITY_PLATFORM_AX_PLATFORM_NODE_IOS_H_ | |
| #define UI_ACCESSIBILITY_PLATFORM_AX_PLATFORM_NODE_IOS_H_ | |
| #include <memory> | |
| #include "base/component_export.h" | |
| #include "ui/accessibility/platform/ax_platform_node_base.h" | |
| namespace ui { | |
| // TODO(crbug.com/336611337): This interface exists since the long-term | |
| // plan is to migrate functionality from //content/browser/accessibility to | |
| // //ui/accessibility, but not all functionality needed to make this happen is | |
| // directly available through existing //ui/accessibility classes. Once the | |
| // functionality here is available elsewhere, this class can be removed. | |
| class AXPlatformNodeIOSDelegate { | |
| public: | |
| virtual float GetDeviceScaleFactor() const = 0; | |
| }; | |
| class COMPONENT_EXPORT(AX_PLATFORM) AXPlatformNodeIOS | |
| : public AXPlatformNodeBase { | |
| public: | |
| AXPlatformNodeIOS(const AXPlatformNodeIOS&) = delete; | |
| AXPlatformNodeIOS& operator=(const AXPlatformNodeIOS&) = delete; | |
| void SetIOSDelegate(AXPlatformNodeIOSDelegate* ios_delegate); | |
| AXPlatformNodeIOSDelegate* GetIOSDelegate() const; | |
| // AXPlatformNode. | |
| void Init(AXPlatformNodeDelegate& delegate) override; | |
| void Destroy() override; | |
| gfx::NativeViewAccessible GetNativeViewAccessible() override; | |
| protected: | |
| AXPlatformNodeIOS(); | |
| ~AXPlatformNodeIOS() override; | |
| private: | |
| friend AXPlatformNode::Pointer AXPlatformNode::Create( | |
| AXPlatformNodeDelegate& delegate); | |
| // Creates a new wrapper node. | |
| void CreateNativeWrapper(); | |
| // An opaque pointer into the UIKit wrapper object for this node. | |
| struct ObjCStorage; | |
| std::unique_ptr<ObjCStorage> objc_storage_; | |
| // This node's iOS delegate. | |
| raw_ptr<AXPlatformNodeIOSDelegate> ios_delegate_; | |
| }; | |
| } // namespace ui | |
| #endif // UI_ACCESSIBILITY_PLATFORM_AX_PLATFORM_NODE_IOS_H_ |