blob: 2b7629a8c0655530900a26c8c192b6b0d70fd29b [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ax_platform_node_mac_unittest.h"
#include "ax_platform_node_mac.h"
#include "gtest/gtest.h"
#include "test_ax_node_wrapper.h"
#include "third_party/accessibility/ax/ax_node_data.h"
namespace ui {
AXPlatformNodeMacTest::AXPlatformNodeMacTest() = default;
AXPlatformNodeMacTest::~AXPlatformNodeMacTest() = default;
void AXPlatformNodeMacTest::SetUp() {}
void AXPlatformNodeMacTest::TearDown() {
// Destroy the tree and make sure we're not leaking any objects.
DestroyTree();
TestAXNodeWrapper::SetGlobalIsWebContent(false);
ASSERT_EQ(0U, AXPlatformNodeBase::GetInstanceCountForTesting());
}
AXPlatformNode* AXPlatformNodeMacTest::AXPlatformNodeFromNode(AXNode* node) {
const TestAXNodeWrapper* wrapper = TestAXNodeWrapper::GetOrCreate(GetTree(), node);
return wrapper ? wrapper->ax_platform_node() : nullptr;
}
// Verify that we can get an AXPlatformNodeMac and AXPlatformNodeCocoa from the tree.
TEST_F(AXPlatformNodeMacTest, CanGetCocoaPlatformNodeFromTree) {
AXNodeData root;
root.id = 1;
root.relative_bounds.bounds = gfx::RectF(0, 0, 40, 40);
Init(root);
AXNode* root_node = GetRootAsAXNode();
ASSERT_TRUE(root_node != nullptr);
AXPlatformNode* platform_node = AXPlatformNodeFromNode(root_node);
ASSERT_TRUE(platform_node != nullptr);
AXPlatformNodeCocoa* native_root = platform_node->GetNativeViewAccessible();
EXPECT_TRUE(native_root != nullptr);
}
// Test that [AXPlatformNodeCocoa accessbilityRangeForPosition:] doesn't crash.
// https://github.com/flutter/flutter/issues/102416
TEST_F(AXPlatformNodeMacTest, AccessibilityRangeForPositionDoesntCrash) {
AXNodeData root;
root.id = 1;
root.relative_bounds.bounds = gfx::RectF(0, 0, 40, 40);
Init(root);
AXNode* root_node = GetRootAsAXNode();
ASSERT_TRUE(root_node != nullptr);
AXPlatformNode* platform_node = AXPlatformNodeFromNode(root_node);
ASSERT_TRUE(platform_node != nullptr);
NSPoint point = NSMakePoint(0, 0);
AXPlatformNodeCocoa* native_root = platform_node->GetNativeViewAccessible();
ASSERT_TRUE(native_root != nullptr);
[native_root accessibilityRangeForPosition:(NSPoint)point];
}
} // namespace ui