Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit e44c800

Browse files
Add clipping_behavior, tree_id
1 parent 6485595 commit e44c800

File tree

4 files changed

+22
-21
lines changed

4 files changed

+22
-21
lines changed

third_party/accessibility/ax/ax_range.h

+4-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <utility>
1212
#include <vector>
1313

14+
#include "ax_clipping_behavior.h"
1415
#include "ax_enums.h"
1516
#include "ax_offscreen_result.h"
1617
#include "ax_role_properties.h"
@@ -35,6 +36,7 @@ class AXRangeRectDelegate {
3536
AXNode::AXID node_id,
3637
int start_offset,
3738
int end_offset,
39+
ui::AXClippingBehavior clipping_behavior,
3840
AXOffscreenResult* offscreen_result) = 0;
3941
virtual gfx::Rect GetBoundsRect(AXTreeID tree_id,
4042
AXNode::AXID node_id,
@@ -392,7 +394,8 @@ class AXRange {
392394
current_line_start->tree_id(),
393395
current_line_start->anchor_id(),
394396
current_line_start->text_offset(),
395-
current_line_end->text_offset(), &offscreen_result)
397+
current_line_end->text_offset(),
398+
ui::AXClippingBehavior::kUnclipped, &offscreen_result)
396399
: delegate->GetBoundsRect(current_line_start->tree_id(),
397400
current_line_start->anchor_id(),
398401
&offscreen_result);

third_party/accessibility/ax/ax_range_unittest.cc

+2-1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ class TestAXRangeScreenRectDelegate : public AXRangeRectDelegate {
6868
AXNode::AXID node_id,
6969
int start_offset,
7070
int end_offset,
71+
ui::AXClippingBehavior clipping_behavior,
7172
AXOffscreenResult* offscreen_result) override {
7273
if (tree_manager_->GetTreeID() != tree_id)
7374
return gfx::Rect();
@@ -80,7 +81,7 @@ class TestAXRangeScreenRectDelegate : public AXRangeRectDelegate {
8081
TestAXNodeHelper::GetOrCreate(tree_manager_->GetTree(), node);
8182
return wrapper->GetInnerTextRangeBoundsRect(
8283
start_offset, end_offset, AXCoordinateSystem::kScreenDIPs,
83-
AXClippingBehavior::kClipped, offscreen_result);
84+
clipping_behavior, offscreen_result);
8485
}
8586

8687
gfx::Rect GetBoundsRect(AXTreeID tree_id,

third_party/accessibility/ax/platform/ax_platform_node_textrangeprovider_win.cc

+14-17
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,13 @@ class AXRangePhysicalPixelRectDelegate : public AXRangeRectDelegate {
6565
AXNode::AXID node_id,
6666
int start_offset,
6767
int end_offset,
68+
ui::AXClippingBehavior clipping_behavior,
6869
AXOffscreenResult* offscreen_result) override {
6970
AXPlatformNodeDelegate* delegate = host_->GetDelegate(tree_id, node_id);
7071
BASE_DCHECK(delegate);
7172
return delegate->GetInnerTextRangeBoundsRect(
7273
start_offset, end_offset, ui::AXCoordinateSystem::kScreenPhysicalPixels,
73-
AXClippingBehavior::kClipped, offscreen_result);
74+
clipping_behavior, offscreen_result);
7475
}
7576

7677
gfx::Rect GetBoundsRect(AXTreeID tree_id,
@@ -1517,14 +1518,14 @@ void AXPlatformNodeTextRangeProviderWin::TextRangeEndpoints::SetStart(
15171518
// IsNullPosition().
15181519
if (did_tree_change && start_->kind() != AXPositionKind::NULL_POSITION &&
15191520
start_->tree_id() != end_->tree_id()) {
1520-
RemoveObserver(start_);
1521+
RemoveObserver(start_->tree_id());
15211522
}
15221523

15231524
start_ = std::move(new_start);
15241525

15251526
if (did_tree_change && !start_->IsNullPosition() &&
15261527
start_->tree_id() != end_->tree_id()) {
1527-
AddObserver(start_);
1528+
AddObserver(start_->tree_id());
15281529
}
15291530
}
15301531

@@ -1536,33 +1537,29 @@ void AXPlatformNodeTextRangeProviderWin::TextRangeEndpoints::SetEnd(
15361537
// IsNullPosition().
15371538
if (did_tree_change && end_->kind() != AXPositionKind::NULL_POSITION &&
15381539
end_->tree_id() != start_->tree_id()) {
1539-
RemoveObserver(end_);
1540+
RemoveObserver(end_->tree_id());
15401541
}
15411542

15421543
end_ = std::move(new_end);
15431544

15441545
if (did_tree_change && !end_->IsNullPosition() &&
15451546
start_->tree_id() != end_->tree_id()) {
1546-
AddObserver(end_);
1547+
AddObserver(end_->tree_id());
15471548
}
15481549
}
15491550

15501551
void AXPlatformNodeTextRangeProviderWin::TextRangeEndpoints::AddObserver(
1551-
const AXPositionInstance& position) {
1552-
auto tree = AXTreeManagerMap::GetInstance()
1553-
.GetManager(position->GetAnchor()->tree()->GetAXTreeID())
1554-
->GetTree();
1555-
if (tree)
1556-
tree->AddObserver(this);
1552+
const AXTreeID tree_id) {
1553+
AXTreeManager* ax_tree_manager = AXTreeManagerMap::GetInstance().GetManager(tree_id);
1554+
BASE_DCHECK(ax_tree_manager);
1555+
ax_tree_manager->GetTree()->AddObserver(this);
15571556
}
15581557

15591558
void AXPlatformNodeTextRangeProviderWin::TextRangeEndpoints::RemoveObserver(
1560-
const AXPositionInstance& position) {
1561-
auto tree = AXTreeManagerMap::GetInstance()
1562-
.GetManager(position->GetAnchor()->tree()->GetAXTreeID())
1563-
->GetTree();
1564-
if (tree)
1565-
tree->RemoveObserver(this);
1559+
const AXTreeID tree_id) {
1560+
AXTreeManager* ax_tree_manager = AXTreeManagerMap::GetInstance().GetManager(tree_id);
1561+
if (ax_tree_manager)
1562+
ax_tree_manager->GetTree()->RemoveObserver(this);
15661563
}
15671564

15681565
// Ensures that our endpoints are located on non-deleted nodes (step 1, case A

third_party/accessibility/ax/platform/ax_platform_node_textrangeprovider_win.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,8 @@ class AX_EXPORT __declspec(uuid("3071e40d-a10d-45ff-a59f-6e8e1138e2c1"))
256256
void SetStart(AXPositionInstance new_start);
257257
void SetEnd(AXPositionInstance new_end);
258258

259-
void AddObserver(const AXPositionInstance& position);
260-
void RemoveObserver(const AXPositionInstance& position);
259+
void AddObserver(const AXTreeID tree_id);
260+
void RemoveObserver(const AXTreeID tree_id);
261261
void OnSubtreeWillBeDeleted(AXTree* tree, AXNode* node) override;
262262
void OnNodeDeleted(AXTree* tree, AXNode::AXID node_id) override;
263263

0 commit comments

Comments
 (0)