0

[views-ax] Rename AXEventManager and AXEventObserver (classes)

As part of the ViewsAX project, we will be serializing Views' a11y data
whenever it changes, rather than just when we fire an event.

In order to do this, we must make use of the AXEventManager/
AXEventObserver pipeline so we can notify observers (such as the
automation manager, or the ViewsAXManager) of when any views' a11y data
changes, rather than just when an event is fired. As such, we are
renaming these classes to align with this new functionality.

There is no behavior change.

Upcoming CLs will introduce the aforementioned functionality.

Change-Id: I1cf2defce3859a15b2dc421df1a9217067d298ab
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6265529
Reviewed-by: Dirk Pranke <dpranke@google.com>
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Reviewed-by: Hidehiko Abe <hidehiko@chromium.org>
Commit-Queue: Javier Contreras <javiercon@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1421453}
This commit is contained in:
Javier Contreras Tenorio (from Dev Box)
2025-02-18 09:50:14 -08:00
committed by Chromium LUCI CQ
parent 93d2e286d9
commit d7001defff
62 changed files with 142 additions and 139 deletions
ash
chrome/browser
ui

@ -1679,7 +1679,7 @@ TEST_P(SearchViewClamshellAndTabletTest, SearchResultA11y) {
ASSERT_EQ(static_cast<int>(result_containers.size()), kResultContainersCount);
EXPECT_TRUE(result_containers[1]->GetVisible());
views::test::AXEventCounter ax_counter(views::AXEventManager::Get());
views::test::AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
// Pressing down should not generate a selection accessibility event because
// A11Y announcements are delayed since the results list just changed.

@ -81,22 +81,22 @@ class FakeAuthFactorModel : public AuthFactorModel {
int do_handle_error_timeout_num_calls_ = 0;
};
class ScopedAXEventObserver : public views::AXEventObserver {
class ScopedAXEventObserver : public views::AXUpdateObserver {
public:
ScopedAXEventObserver(views::View* view, ax::mojom::Event event_type)
: view_(view), event_type_(event_type) {
views::AXEventManager::Get()->AddObserver(this);
views::AXUpdateNotifier::Get()->AddObserver(this);
}
ScopedAXEventObserver(const ScopedAXEventObserver&) = delete;
ScopedAXEventObserver& operator=(const ScopedAXEventObserver&) = delete;
~ScopedAXEventObserver() override {
views::AXEventManager::Get()->RemoveObserver(this);
views::AXUpdateNotifier::Get()->RemoveObserver(this);
}
bool event_called = false;
private:
// views::AXEventObserver:
// views::AXUpdateObserver:
void OnViewEvent(views::View* view, ax::mojom::Event event_type) override {
if (view == view_ && event_type == event_type_) {
event_called = true;

@ -444,7 +444,7 @@ TEST_F(QuickInsertSearchFieldViewTest,
view->RequestFocus();
views::View descendant;
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
view->SetTextfieldActiveDescendant(&descendant);
EXPECT_EQ(GetActiveDescendantId(*view->textfield()), 0);
@ -470,7 +470,7 @@ TEST_F(QuickInsertSearchFieldViewTest,
base::DoNothing(), base::DoNothing(), &key_event_handler, &metrics));
views::View descendant;
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
view->SetTextfieldActiveDescendant(&descendant);
EXPECT_EQ(GetActiveDescendantId(*view->textfield()), 0);
@ -491,7 +491,7 @@ TEST_F(QuickInsertSearchFieldViewTest,
views::View descendant;
view->SetTextfieldActiveDescendant(&descendant);
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
view->RequestFocus();
EXPECT_EQ(GetActiveDescendantId(*view->textfield()), 0);
@ -518,7 +518,7 @@ TEST_F(QuickInsertSearchFieldViewTest,
view->SetPlaceholderText(u"placeholder");
views::View descendant;
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
view->RequestFocus();
EXPECT_EQ(GetActiveDescendantId(*view->textfield()), 0);
@ -545,7 +545,7 @@ TEST_F(QuickInsertSearchFieldViewTest,
views::View descendant1, descendant2;
view->SetTextfieldActiveDescendant(&descendant1);
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
view->RequestFocus();
view->SetTextfieldActiveDescendant(&descendant2);
task_environment()->FastForwardBy(

@ -678,7 +678,7 @@ TEST_F(QuickInsertSearchResultsViewTest,
&mock_delegate, kQuickInsertWidth, /*asset_fetcher=*/nullptr,
/*submenu_controller=*/nullptr, /*preview_controller=*/nullptr));
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
view->AppendSearchResults(QuickInsertSearchResultsSection(
QuickInsertSectionType::kNone, {}, /*has_more_results=*/false));
view->SearchStopped(/*illustration=*/{}, u"");
@ -698,7 +698,7 @@ TEST_F(QuickInsertSearchResultsViewTest,
&mock_delegate, kQuickInsertWidth, /*asset_fetcher=*/nullptr,
/*submenu_controller=*/nullptr, /*preview_controller=*/nullptr));
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_TRUE(view->SearchStopped(/*illustration=*/{}, u""));
EXPECT_EQ(view->GetAccessibleName(),
@ -718,7 +718,7 @@ TEST_F(QuickInsertSearchResultsViewTest,
/*submenu_controller=*/nullptr, /*preview_controller=*/nullptr));
view->SetNumEmojiResultsForA11y(5);
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_TRUE(view->SearchStopped(/*illustration=*/{}, u""));
EXPECT_EQ(view->GetAccessibleName(), u"5 emojis. No other results.");
@ -736,7 +736,7 @@ TEST_F(QuickInsertSearchResultsViewTest,
&mock_delegate, kQuickInsertWidth, /*asset_fetcher=*/nullptr,
/*submenu_controller=*/nullptr, /*preview_controller=*/nullptr));
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
view->SearchStopped(/*illustration=*/{}, u"");
view->SearchStopped(/*illustration=*/{}, u"");
@ -756,7 +756,7 @@ TEST_F(QuickInsertSearchResultsViewTest,
&mock_delegate, kQuickInsertWidth, /*asset_fetcher=*/nullptr,
/*submenu_controller=*/nullptr, /*preview_controller=*/nullptr));
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
view->SearchStopped(/*illustration=*/{}, u"");
view->AppendSearchResults(QuickInsertSearchResultsSection(
QuickInsertSectionType::kNone, {}, /*has_more_results=*/false));
@ -778,7 +778,7 @@ TEST_F(QuickInsertSearchResultsViewTest, ClearingSearchResultsDoesNotAnnounce) {
&mock_delegate, kQuickInsertWidth, /*asset_fetcher=*/nullptr,
/*submenu_controller=*/nullptr, /*preview_controller=*/nullptr));
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
view->ClearSearchResults();
EXPECT_EQ(view->GetAccessibleName(), u"");

@ -1400,7 +1400,7 @@ TEST_F(QuickInsertViewTest, NoMainResultsAndNoEmojisIsAnnounced) {
widget->Show();
QuickInsertView* quick_insert_view = GetQuickInsertViewFromWidget(*widget);
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
PressAndReleaseKey(ui::KeyboardCode::VKEY_A, ui::EF_NONE);
future.Take().Run({});
@ -1427,7 +1427,7 @@ TEST_P(QuickInsertViewEmojiTest, NoMainResultsAndSomeEmojisIsAnnounced) {
widget->Show();
QuickInsertView* quick_insert_view = GetQuickInsertViewFromWidget(*widget);
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
PressAndReleaseKey(ui::KeyboardCode::VKEY_A, ui::EF_NONE);
future.Take().Run({});
@ -2950,7 +2950,7 @@ TEST_F(
});
auto widget = QuickInsertWidget::Create(&delegate, kDefaultAnchorBounds);
widget->Show();
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
PressAndReleaseKey(ui::KeyboardCode::VKEY_DOWN, ui::EF_NONE);
@ -2971,7 +2971,7 @@ TEST_F(
});
auto widget = QuickInsertWidget::Create(&delegate, kDefaultAnchorBounds);
widget->Show();
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
PressAndReleaseKey(ui::KeyboardCode::VKEY_DOWN, ui::EF_NONE);
task_environment()->FastForwardBy(

@ -920,7 +920,7 @@ TEST_F(CalendarViewTest, FocusReturnsToTodaysDate) {
}
TEST_F(CalendarViewTest, OpenListAndCloseListFireAccessibilityEvents) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
CreateCalendarView();
auto* focus_manager = calendar_view()->GetFocusManager();
const auto* todays_date_cell_view = focus_manager->GetFocusedView();

@ -142,7 +142,7 @@ TEST_F(TimeViewTest, Basics) {
// TODO(crbug.com/355355015): flaky test.
// Test accessibility events emitted by the time view's labels during updates.
TEST_F(TimeViewTest, DISABLED_TimeViewFiresAccessibilityEvents) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
CreateTimeView(TimeView::ClockLayout::HORIZONTAL_CLOCK);
@ -314,7 +314,7 @@ TEST_F(TimeViewTest, DateView) {
// Test accessibility events emitted by the date view's labels during updates.
TEST_F(TimeViewTest, DateViewFiresAccessibilityEvents) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
CreateTimeView(TimeView::ClockLayout::HORIZONTAL_CLOCK, TimeView::kDate);
// We shouldn't fire any events through the construction of the view with

@ -661,7 +661,7 @@ TEST_P(DateTrayTest, AccessibleName) {
base::kKeepAmPm)));
}
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
// Mock changing the current time, in order to test that the tray's accessible
// name will be updated.

@ -198,7 +198,7 @@ class TabAppKeyboardNavigationTest : public TabAppSelectionViewTest {
selector_view_ =
views::AsViewClass<TabAppSelectionView>(menu->GetContentsView());
ax_counter_ = std::make_unique<views::test::AXEventCounter>(
views::AXEventManager::Get());
views::AXUpdateNotifier::Get());
ax_counter_->ResetAllCounts();
}

@ -152,12 +152,12 @@ void MagnificationManager::SetProfileForTest(Profile* profile) {
MagnificationManager::MagnificationManager() {
session_observation_.Observe(session_manager::SessionManager::Get());
user_manager::UserManager::Get()->AddSessionStateObserver(this);
views::AXEventManager::Get()->AddObserver(this);
views::AXUpdateNotifier::Get()->AddObserver(this);
}
MagnificationManager::~MagnificationManager() {
CHECK(this == g_magnification_manager);
auto* event_manager = views::AXEventManager::Get();
auto* event_manager = views::AXUpdateNotifier::Get();
if (event_manager) {
event_manager->RemoveObserver(this);
}

@ -41,7 +41,7 @@ class MagnificationManager
public user_manager::UserManager::UserSessionStateObserver,
public ProfileObserver,
public ui::EventHandler,
public views::AXEventObserver {
public views::AXUpdateObserver {
public:
MagnificationManager(const MagnificationManager&) = delete;
MagnificationManager& operator=(const MagnificationManager&) = delete;
@ -85,7 +85,7 @@ class MagnificationManager
// ui::EventHandler overrides:
void OnMouseEvent(ui::MouseEvent* event) override;
// views::AXEventObserver:
// views::AXUpdateObserver:
void OnViewEvent(views::View* view, ax::mojom::Event event_type) override;
void SetProfileForTest(Profile* profile);

@ -114,7 +114,7 @@ class ContentAnalysisDialogBehaviorBrowserTest
std::tuple<bool, bool, base::TimeDelta>> {
public:
ContentAnalysisDialogBehaviorBrowserTest()
: ax_event_counter_(views::AXEventManager::Get()) {
: ax_event_counter_(views::AXUpdateNotifier::Get()) {
ContentAnalysisDialog::SetObserverForTesting(this);
expected_scan_result_ = dlp_success() && malware_success();

@ -37,7 +37,7 @@ class AnnouncementViewTest : public ChromeViewsTestBase {
};
TEST_F(AnnouncementViewTest, MakesAnnouncement) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kLiveRegionChanged));
announcement_view_->Announce(u"test");
task_environment()->FastForwardBy(base::Milliseconds(200));

@ -192,7 +192,7 @@ TEST_F(CandidateViewTest, SetEntryChangesAccessibleName) {
}
TEST_F(CandidateViewTest, SetEntryNotifiesAccessibilityEvent) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
CandidateView* view = GetCandidateAt(1);
// Calling SetEntry affects the accessible name, so it should notify twice:

@ -150,7 +150,7 @@ TEST_F(CandidateWindowViewTest, UpdateCandidatesTest_CursorVisibility) {
}
TEST_F(CandidateWindowViewTest, UpdateCandidatesSendsA11yEvents) {
views::test::AXEventCounter event_counter(views::AXEventManager::Get());
views::test::AXEventCounter event_counter(views::AXUpdateNotifier::Get());
// User is not selecting. (Simulates a state showing suggestions)
ui::CandidateWindow candidate_window;

@ -729,7 +729,7 @@ TEST_F(QuickInsertClientImplEditorTest, AnnounceSendsLiveRegionChanges) {
base::test::ScopedFeatureList features(chromeos::features::kOrcaDogfood);
ash::QuickInsertController controller;
QuickInsertClientImpl client(&controller, user_manager());
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
client.Announce(u"hello");

@ -10,7 +10,7 @@
class PostInstallAnnouncementTestBase : public InProcessBrowserTest {
protected:
views::test::AXEventCounter event_counter_{views::AXEventManager::Get()};
views::test::AXEventCounter event_counter_{views::AXUpdateNotifier::Get()};
};
IN_PROC_BROWSER_TEST_F(PostInstallAnnouncementTestBase, NormalLaunch) {

@ -898,7 +898,7 @@ class SaveCardBubbleViewsFullFormBrowserTestWithAutofillUpstream
IN_PROC_BROWSER_TEST_F(SaveCardBubbleViewsFullFormBrowserTest,
AlertAccessibleEvent) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kAlert));
FillForm();

@ -90,13 +90,13 @@ class SaveCardConfirmationBubbleViewsInteractiveUiTest
IN_PROC_BROWSER_TEST_F(SaveCardConfirmationBubbleViewsInteractiveUiTest,
ShowSuccessBubbleViewThenHideBubbleView) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kAlert));
ShowBubble(/*card_saved=*/true);
EXPECT_NE(BubbleView(), nullptr);
// Checks the count of accessibility event registered by AXEventManager when
// Checks the count of accessibility event registered by AXUpdateNotifier when
// bubble is shown.
EXPECT_EQ(1, counter.GetCount(ax::mojom::Event::kAlert));
@ -133,12 +133,12 @@ IN_PROC_BROWSER_TEST_F(SaveCardConfirmationBubbleViewsInteractiveUiTest,
IN_PROC_BROWSER_TEST_F(SaveCardConfirmationBubbleViewsInteractiveUiTest,
ShowFailureBubbleViewThenHideBubbleView) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kAlert));
ShowBubble(/*card_saved=*/false);
EXPECT_NE(BubbleView(), nullptr);
// Checks the count of accessibility event registered by AXEventManager when
// Checks the count of accessibility event registered by AXUpdateNotifier when
// bubble is shown.
EXPECT_EQ(1, counter.GetCount(ax::mojom::Event::kAlert));
@ -242,13 +242,13 @@ class VirtualCardEnrollConfirmationBubbleViewsInteractiveUiTest
IN_PROC_BROWSER_TEST_F(
VirtualCardEnrollConfirmationBubbleViewsInteractiveUiTest,
ShowSuccessBubbleViewThenHideBubbleView) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kAlert));
ShowBubble(/*is_vcn_enrolled=*/true);
EXPECT_NE(BubbleView(), nullptr);
// Checks the count of accessibility event registered by AXEventManager when
// Checks the count of accessibility event registered by AXUpdateNotifier when
// bubble is shown.
EXPECT_EQ(1, counter.GetCount(ax::mojom::Event::kAlert));
EXPECT_TRUE(BubbleView()->ShouldShowCloseButton());
@ -295,13 +295,13 @@ IN_PROC_BROWSER_TEST_F(
.SetUiModel(
std::make_unique<VirtualCardEnrollUiModel>(enrollment_fields));
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kAlert));
ShowBubble(/*is_vcn_enrolled=*/false);
EXPECT_NE(BubbleView(), nullptr);
// Checks the count of accessibility event registered by AXEventManager when
// Checks the count of accessibility event registered by AXUpdateNotifier when
// bubble is shown.
EXPECT_EQ(1, counter.GetCount(ax::mojom::Event::kAlert));
EXPECT_FALSE(BubbleView()->ShouldShowCloseButton());

@ -456,7 +456,7 @@ TEST_F(PopupViewViewsTest, ShowViewWithOnlyFooterItemsShouldNotCrash) {
}
TEST_F(PopupViewViewsTest, AccessibilitySelectedEvent) {
views::test::AXEventCounter ax_counter(views::AXEventManager::Get());
views::test::AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
CreateAndShowView({SuggestionType::kAutocompleteEntry,
SuggestionType::kSeparator,
SuggestionType::kManageAddress});
@ -1991,7 +1991,7 @@ TEST_F(PopupViewViewsTest, SearchBar_PressedKeysPassedToController) {
}
TEST_F(PopupViewViewsTest, AutofillAiLoadingOnShowA11yFocus) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
CreateAndShowView({SuggestionType::kAutofillAiLoadingState});
ASSERT_EQ(1u, test_api(view()).rows().size());
@ -2004,7 +2004,7 @@ TEST_F(PopupViewViewsTest, AutofillAiLoadingOnShowA11yFocus) {
}
TEST_F(PopupViewViewsTest, AutofillAiLoadingOnSuggestionsChangedA11yFocus) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
CreateAndShowView({SuggestionType::kFillAutofillAi});
UpdateSuggestions({SuggestionType::kAutofillAiLoadingState});
@ -2018,7 +2018,7 @@ TEST_F(PopupViewViewsTest, AutofillAiLoadingOnSuggestionsChangedA11yFocus) {
}
TEST_F(PopupViewViewsTest, WarningOnShowA11yFocus) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
CreateAndShowView({SuggestionType::kMixedFormMessage});
ASSERT_EQ(1u, test_api(view()).rows().size());

@ -422,7 +422,7 @@ TEST_F(ExtensionsMenuViewUnitTest, PinButtonUserActionWithAccessibility) {
InstallExtensionAndLayout("Test Extension");
ExtensionMenuItemView* menu_item = GetOnlyMenuItem();
ASSERT_NE(nullptr, menu_item);
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
constexpr char kPinButtonUserAction[] = "Extensions.Toolbar.PinButtonPressed";
// Verify behavior before pin, after pin, and after unpin.

@ -46,7 +46,7 @@ namespace {
class BrowserViewTest : public InProcessBrowserTest {
public:
BrowserViewTest() : ax_observer_(views::AXEventManager::Get()) {}
BrowserViewTest() : ax_observer_(views::AXUpdateNotifier::Get()) {}
~BrowserViewTest() override = default;
BrowserViewTest(const BrowserViewTest&) = delete;
BrowserViewTest& operator=(const BrowserViewTest&) = delete;

@ -96,7 +96,7 @@ class InfoBarViewTest : public BrowserWithTestWindowTest {
};
TEST_F(InfoBarViewTest, AlertAccessibleEvent) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kAlert));
TestInfoBarDelegate::Create(infobar_manager());
EXPECT_EQ(1, counter.GetCount(ax::mojom::Event::kAlert));

@ -74,7 +74,7 @@ class CookieControlsIconViewUnitTest
public testing::WithParamInterface<CookieBlocking3pcdStatus> {
protected:
CookieControlsIconViewUnitTest()
: a11y_counter_(views::AXEventManager::Get()) {}
: a11y_counter_(views::AXUpdateNotifier::Get()) {}
void SetUp() override {
TestWithBrowserView::SetUp();

@ -157,7 +157,7 @@ IN_PROC_BROWSER_TEST_F(MenuControllerUITest, DISABLED_TestMouseOverShownMenu) {
// SetupMenu leaves the mouse position where the first menu item will be
// when we run the menu.
AXEventCounter ax_counter(views::AXEventManager::Get());
AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(ax_counter.GetCount(ax::mojom::Event::kMenuStart), 0);
EXPECT_EQ(ax_counter.GetCount(ax::mojom::Event::kMenuPopupStart), 0);
EXPECT_EQ(ax_counter.GetCount(ax::mojom::Event::kMenuPopupEnd), 0);
@ -236,7 +236,7 @@ IN_PROC_BROWSER_TEST_F(MenuControllerUITest, FocusOnOrphanMenu) {
MenuDelegate menu_delegate;
auto menu_item_owning = std::make_unique<MenuItemView>(&menu_delegate);
MenuItemView* menu_item = menu_item_owning.get();
AXEventCounter ax_counter(views::AXEventManager::Get());
AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(ax_counter.GetCount(ax::mojom::Event::kMenuStart), 0);
EXPECT_EQ(ax_counter.GetCount(ax::mojom::Event::kMenuPopupStart), 0);
EXPECT_EQ(ax_counter.GetCount(ax::mojom::Event::kMenuPopupEnd), 0);

@ -20,11 +20,11 @@
MenuTestBase::MenuTestBase() : last_command_(0) {
ax_event_counts_.fill(0);
views::AXEventManager::Get()->AddObserver(this);
views::AXUpdateNotifier::Get()->AddObserver(this);
}
MenuTestBase::~MenuTestBase() {
views::AXEventManager::Get()->RemoveObserver(this);
views::AXUpdateNotifier::Get()->RemoveObserver(this);
}
void MenuTestBase::OnViewEvent(views::View*, ax::mojom::Event event_type) {

@ -35,7 +35,7 @@ class MenuRunner;
// MenuItemView prevents repeated activation of a menu by clicks too
// close in time.
class MenuTestBase : public ViewEventTestBase,
public views::AXEventObserver,
public views::AXUpdateObserver,
public views::MenuDelegate {
public:
MenuTestBase();
@ -45,7 +45,7 @@ class MenuTestBase : public ViewEventTestBase,
~MenuTestBase() override;
// AXEventObserver overrides.
// AXUpdateObserver overrides.
void OnViewEvent(views::View*, ax::mojom::Event event_type) override;
// Generate a mouse click and run |next| once the event has been processed.

@ -88,18 +88,18 @@ class ClickTrackingOverlayView : public views::View {
BEGIN_METADATA(ClickTrackingOverlayView)
END_METADATA
class TestAXEventObserver : public views::AXEventObserver {
class TestAXEventObserver : public views::AXUpdateObserver {
public:
TestAXEventObserver() { views::AXEventManager::Get()->AddObserver(this); }
TestAXEventObserver() { views::AXUpdateNotifier::Get()->AddObserver(this); }
TestAXEventObserver(const TestAXEventObserver&) = delete;
TestAXEventObserver& operator=(const TestAXEventObserver&) = delete;
~TestAXEventObserver() override {
views::AXEventManager::Get()->RemoveObserver(this);
views::AXUpdateNotifier::Get()->RemoveObserver(this);
}
// views::AXEventObserver:
// views::AXUpdateObserver:
void OnViewEvent(views::View* view, ax::mojom::Event event_type) override {
if (!view->GetWidget()) {
return;

@ -109,7 +109,7 @@ IN_PROC_BROWSER_TEST_P(PasswordBubbleBrowserTest,
}
IN_PROC_BROWSER_TEST_P(PasswordBubbleBrowserTest, AlertAccessibleEvent) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kAlert));
// This needs to show a password bubble that does not trigger as a user
// gesture in order to fire an alert event. See

@ -236,7 +236,7 @@ class PermissionPromptBubbleBaseViewBrowserTest : public DialogBrowserTest {
#endif
IN_PROC_BROWSER_TEST_F(PermissionPromptBubbleBaseViewBrowserTest,
MAYBE_AlertAccessibleEvent) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kAlert));
ShowUi("geolocation");

@ -210,7 +210,7 @@ IN_PROC_BROWSER_TEST_F(PluginVmInstallerViewBrowserTestWithFeatureEnabled,
IN_PROC_BROWSER_TEST_F(PluginVmInstallerViewBrowserTestWithFeatureEnabled,
SetupShouldFireAccessibilityEvents) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
AllowPluginVm();
plugin_vm::SetupConciergeForSuccessfulDiskImageImport(fake_concierge_client_);

@ -104,7 +104,7 @@ IN_PROC_BROWSER_TEST_F(SessionCrashedBubbleViewTest,
}
IN_PROC_BROWSER_TEST_F(SessionCrashedBubbleViewTest, AlertAccessibleEvent) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kAlert));
ShowUi("SessionCrashedBubble");
EXPECT_EQ(1, counter.GetCount(ax::mojom::Event::kAlert));

@ -1362,7 +1362,7 @@ IN_PROC_BROWSER_TEST_F(TabStripBrowsertest,
Tab* tab1 = tab_strip()->tab_at(1);
ui::AXNodeData ax_node_data_0;
ui::AXNodeData ax_node_data_1;
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
tab_strip()->SelectTab(tab_strip()->tab_at(0), GetDummyEvent());
tab0->GetViewAccessibility().GetAccessibleNodeData(&ax_node_data_0);

@ -254,7 +254,7 @@ TEST_P(TabStripTest, GetModelCount) {
}
TEST_P(TabStripTest, AccessibilityEvents) {
views::test::AXEventCounter ax_counter(views::AXEventManager::Get());
views::test::AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
controller_->AddTab(0, TabActive::kInactive);
controller_->AddTab(1, TabActive::kActive);

@ -178,7 +178,7 @@ IN_PROC_BROWSER_TEST_F(TranslateBubbleViewBrowserTest,
}
IN_PROC_BROWSER_TEST_F(TranslateBubbleViewBrowserTest, AlertAccessibleEvent) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kAlert));
GURL french_url = GURL(embedded_test_server()->GetURL("/french_page.html"));

@ -280,7 +280,7 @@ TEST_F(NotificationHeaderViewTest, AccessibleExpandAndCollapse) {
notification_header_view_->SetExpandButtonEnabled(true);
notification_header_view_->SetExpanded(false);
views::test::AXEventCounter ax_counter(views::AXEventManager::Get());
views::test::AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
ui::AXNodeData data;
// Initially the view is collapsed and there are no expanded-changed events.

@ -756,7 +756,7 @@ TEST_F(NotificationViewTest, TestAccentColorTextFlagAffectsActionButtons) {
}
TEST_F(NotificationViewTest, UpdateFiresAccessibilityEvents) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
std::unique_ptr<Notification> notification = CreateSimpleNotification();
// Setting the title does not result in a text-changed accessibility event

@ -314,10 +314,10 @@ class TestingWidgetDelegateView : public WidgetDelegateView {
raw_ptr<base::RunLoop> run_loop_;
};
class TestingAXEventObserver : public AXEventObserver {
class TestingAXEventObserver : public AXUpdateObserver {
public:
explicit TestingAXEventObserver(AXAuraObjCache* cache) : cache_(cache) {
observation_.Observe(AXEventManager::Get());
observation_.Observe(AXUpdateNotifier::Get());
}
~TestingAXEventObserver() override = default;
TestingAXEventObserver(const TestingAXEventObserver&) = delete;
@ -332,7 +332,8 @@ class TestingAXEventObserver : public AXEventObserver {
}
raw_ptr<AXAuraObjCache> cache_;
base::ScopedObservation<AXEventManager, AXEventObserver> observation_{this};
base::ScopedObservation<AXUpdateNotifier, AXUpdateObserver> observation_{
this};
};
TEST_F(AXAuraObjCacheTest, DoNotCreateWidgetWrapperOnDestroyed) {

@ -10,32 +10,33 @@
namespace views {
AXEventManager::AXEventManager() = default;
AXUpdateNotifier::AXUpdateNotifier() = default;
AXEventManager::~AXEventManager() = default;
AXUpdateNotifier::~AXUpdateNotifier() = default;
// static
AXEventManager* AXEventManager::Get() {
static base::NoDestructor<AXEventManager> instance;
AXUpdateNotifier* AXUpdateNotifier::Get() {
static base::NoDestructor<AXUpdateNotifier> instance;
return instance.get();
}
void AXEventManager::AddObserver(AXEventObserver* observer) {
void AXUpdateNotifier::AddObserver(AXUpdateObserver* observer) {
observers_.AddObserver(observer);
}
void AXEventManager::RemoveObserver(AXEventObserver* observer) {
void AXUpdateNotifier::RemoveObserver(AXUpdateObserver* observer) {
observers_.RemoveObserver(observer);
}
void AXEventManager::NotifyViewEvent(views::View* view,
ax::mojom::Event event_type) {
observers_.Notify(&AXEventObserver::OnViewEvent, view, event_type);
void AXUpdateNotifier::NotifyViewEvent(views::View* view,
ax::mojom::Event event_type) {
observers_.Notify(&AXUpdateObserver::OnViewEvent, view, event_type);
}
void AXEventManager::NotifyVirtualViewEvent(views::AXVirtualView* virtual_view,
ax::mojom::Event event_type) {
observers_.Notify(&AXEventObserver::OnVirtualViewEvent, virtual_view,
void AXUpdateNotifier::NotifyVirtualViewEvent(
views::AXVirtualView* virtual_view,
ax::mojom::Event event_type) {
observers_.Notify(&AXUpdateObserver::OnVirtualViewEvent, virtual_view,
event_type);
}

@ -11,23 +11,23 @@
namespace views {
class AXEventObserver;
class AXUpdateObserver;
class AXVirtualView;
class View;
// AXEventManager allows observation of accessibility events for all views.
class VIEWS_EXPORT AXEventManager {
// AXUpdateNotifier allows observation of accessibility events for all views.
class VIEWS_EXPORT AXUpdateNotifier {
public:
AXEventManager();
AXEventManager(const AXEventManager&) = delete;
AXEventManager& operator=(const AXEventManager&) = delete;
~AXEventManager();
AXUpdateNotifier();
AXUpdateNotifier(const AXUpdateNotifier&) = delete;
AXUpdateNotifier& operator=(const AXUpdateNotifier&) = delete;
~AXUpdateNotifier();
// Returns the singleton instance.
static AXEventManager* Get();
static AXUpdateNotifier* Get();
void AddObserver(AXEventObserver* observer);
void RemoveObserver(AXEventObserver* observer);
void AddObserver(AXUpdateObserver* observer);
void RemoveObserver(AXUpdateObserver* observer);
// Notifies observers of an accessibility event. |view| must not be null.
void NotifyViewEvent(views::View* view, ax::mojom::Event event_type);
@ -35,7 +35,7 @@ class VIEWS_EXPORT AXEventManager {
ax::mojom::Event event_type);
private:
base::ObserverList<AXEventObserver> observers_;
base::ObserverList<AXUpdateObserver> observers_;
};
} // namespace views

@ -6,8 +6,8 @@
namespace views {
AXEventObserver::AXEventObserver() = default;
AXUpdateObserver::AXUpdateObserver() = default;
AXEventObserver::~AXEventObserver() = default;
AXUpdateObserver::~AXUpdateObserver() = default;
} // namespace views

@ -14,16 +14,17 @@ namespace views {
class AXVirtualView;
class View;
// AXEventObserver is notified for accessibility events on all views.
class VIEWS_EXPORT AXEventObserver : public base::CheckedObserver {
// AXUpdateObserver is notified for accessibility events and data changes on all
// views.
class VIEWS_EXPORT AXUpdateObserver : public base::CheckedObserver {
public:
virtual void OnViewEvent(views::View* view, ax::mojom::Event event_type) = 0;
virtual void OnVirtualViewEvent(views::AXVirtualView* virtual_view,
ax::mojom::Event event_type) {}
protected:
AXEventObserver();
~AXEventObserver() override;
AXUpdateObserver();
~AXUpdateObserver() override;
};
} // namespace views

@ -246,7 +246,7 @@ void AXVirtualView::NotifyEvent(ax::mojom::Event event_type,
ax_platform_node_->NotifyAccessibilityEvent(event_type);
// This is used on platforms that don't have a native accessibility API.
AXEventManager::Get()->NotifyVirtualViewEvent(this, event_type);
AXUpdateNotifier::Get()->NotifyVirtualViewEvent(this, event_type);
}
// ui::AXPlatformNodeDelegate

@ -321,7 +321,7 @@ void ViewsAXManager::DispatchAccessibilityEvents(
ViewsAXManager::ViewsAXManager()
: cache_(std::make_unique<views::AXAuraObjCache>()) {
views::AXEventManager::Get()->AddObserver(this);
views::AXUpdateNotifier::Get()->AddObserver(this);
}
// Never runs because object is leaked.

@ -47,7 +47,7 @@ using AuraAXTreeSerializer = ui::AXTreeSerializer<
// modified to work with Views on macOS as well.
class VIEWS_EXPORT ViewsAXManager : public ui::AXActionHandler,
public views::AXAuraObjCache::Delegate,
public views::AXEventObserver {
public views::AXUpdateObserver {
public:
ViewsAXManager(const ViewsAXManager&) = delete;
ViewsAXManager& operator=(const ViewsAXManager&) = delete;
@ -75,7 +75,7 @@ class VIEWS_EXPORT ViewsAXManager : public ui::AXActionHandler,
void OnEvent(views::AXAuraObjWrapper* aura_obj,
ax::mojom::Event event_type) override;
// views::AXEventObserver:
// views::AXUpdateObserver:
void OnViewEvent(views::View* view, ax::mojom::Event event_type) override;
void OnVirtualViewEvent(views::AXVirtualView* virtual_view,
ax::mojom::Event event_type) override;

@ -217,7 +217,7 @@ void ViewAccessibility::NotifyEvent(ax::mojom::Event event_type,
return;
}
AXEventManager::Get()->NotifyViewEvent(view_, event_type);
AXUpdateNotifier::Get()->NotifyViewEvent(view_, event_type);
if (send_native_event && widget) {
FireNativeEvent(event_type);

@ -64,18 +64,18 @@ BEGIN_METADATA(TestButton)
END_METADATA
#if defined(USE_AURA)
class TestAXEventObserver : public AXEventObserver {
class TestAXEventObserver : public AXUpdateObserver {
public:
explicit TestAXEventObserver(AXAuraObjCache* cache) : cache_(cache) {
AXEventManager::Get()->AddObserver(this);
AXUpdateNotifier::Get()->AddObserver(this);
}
TestAXEventObserver(const TestAXEventObserver&) = delete;
TestAXEventObserver& operator=(const TestAXEventObserver&) = delete;
~TestAXEventObserver() override {
AXEventManager::Get()->RemoveObserver(this);
AXUpdateNotifier::Get()->RemoveObserver(this);
}
// AXEventObserver:
// AXUpdateObserver:
void OnViewEvent(View* view, ax::mojom::Event event_type) override {
std::vector<raw_ptr<AXAuraObjWrapper, VectorExperimental>> out_children;
AXAuraObjWrapper* ax_obj = cache_->GetOrCreate(view->GetWidget());

@ -1054,7 +1054,7 @@ TEST_F(BubbleDialogDelegateViewTest, WithoutClientLayerTest) {
}
TEST_F(BubbleDialogDelegateViewTest, AlertAccessibleEvent) {
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
std::unique_ptr<Widget> anchor_widget = CreateTestWidget(
Widget::InitParams::CLIENT_OWNS_WIDGET, Widget::InitParams::TYPE_WINDOW);
auto bubble_delegate = std::make_unique<TestBubbleDialogDelegateView>(

@ -985,7 +985,7 @@ TEST_F(ButtonTest, SetStateNotifiesObserver) {
// Verifies setting the tooltip text will call NotifyAccessibilityEvent.
TEST_F(ButtonTest, SetTooltipTextNotifiesAccessibilityEvent) {
std::u16string test_tooltip_text = u"Test Tooltip Text";
test::AXEventCounter counter(views::AXEventManager::Get());
test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kTextChanged));
button()->SetTooltipText(test_tooltip_text);
EXPECT_EQ(1, counter.GetCount(ax::mojom::Event::kTextChanged));

@ -152,7 +152,7 @@ TEST_F(ToggleButtonTest, AcceptEvents) {
}
TEST_F(ToggleButtonTest, AccessibleCheckedStateChange) {
views::test::AXEventCounter ax_counter(views::AXEventManager::Get());
views::test::AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
ui::AXNodeData data;
EXPECT_EQ(
ax_counter.GetCount(ax::mojom::Event::kCheckedStateChanged, button()), 0);

@ -1017,7 +1017,7 @@ TEST_F(ComboboxTest, MenuModel) {
// Verifies SetTooltipTextAndAccessibleName will call NotifyAccessibilityEvent.
TEST_F(ComboboxTest, SetTooltipTextNotifiesAccessibilityEvent) {
test::AXEventCounter counter(AXEventManager::Get());
test::AXEventCounter counter(AXUpdateNotifier::Get());
InitCombobox(nullptr);
std::u16string test_tooltip_text = u"Test Tooltip Text";
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kTextChanged));

@ -154,7 +154,7 @@ TEST_P(ImageViewTest, ImageOriginForCustomViewBounds) {
// Verifies setting the accessible name will be call NotifyAccessibilityEvent.
TEST_P(ImageViewTest, SetAccessibleNameNotifiesAccessibilityEvent) {
std::u16string test_tooltip_text = u"Test Tooltip Text";
test::AXEventCounter counter(views::AXEventManager::Get());
test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kTextChanged));
image_view()->GetViewAccessibility().SetName(test_tooltip_text);
EXPECT_EQ(1, counter.GetCount(ax::mojom::Event::kTextChanged));

@ -804,7 +804,7 @@ TEST_F(LabelTest, Accessibility) {
}
TEST_F(LabelTest, SetTextNotifiesAccessibilityEvent) {
test::AXEventCounter counter(views::AXEventManager::Get());
test::AXEventCounter counter(views::AXUpdateNotifier::Get());
// Changing the text affects the accessible name, so it should notify.
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kTextChanged));

@ -3181,7 +3181,7 @@ TEST_F(MenuControllerTest, AccessibilityDoDefaultCallsAccept) {
// Test that the kSelectedChildrenChanged event is emitted on
// the root menu item when the selected menu item changes.
TEST_F(MenuControllerTest, AccessibilityEmitsSelectChildrenChanged) {
const test::AXEventCounter ax_counter(views::AXEventManager::Get());
const test::AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
menu_controller()->Run(owner(), nullptr, menu_item(), gfx::Rect(),
MenuAnchorPosition::kTopLeft);
EXPECT_EQ(ax_counter.GetCount(ax::mojom::Event::kSelectedChildrenChanged), 0);
@ -3195,7 +3195,7 @@ TEST_F(MenuControllerTest, AccessibilityEmitsSelectChildrenChanged) {
}
TEST_F(MenuControllerTest, AccessibilityEmitsMenuOpenedClosedEvents) {
const test::AXEventCounter ax_counter(views::AXEventManager::Get());
const test::AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, ax_counter.GetCount(ax::mojom::Event::kMenuStart));
EXPECT_EQ(0, ax_counter.GetCount(ax::mojom::Event::kMenuEnd));
EXPECT_EQ(0, ax_counter.GetCount(ax::mojom::Event::kMenuPopupStart));

@ -69,7 +69,7 @@ TEST_F(ProgressBarTest, AccessibleNodeData) {
// Verifies the correct a11y events are raised for an accessible progress bar.
TEST_F(ProgressBarTest, AccessibilityEvents) {
test::AXEventCounter ax_counter(views::AXEventManager::Get());
test::AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, ax_counter.GetCount(ax::mojom::Event::kValueChanged));
bar()->SetValue(0.50);

@ -310,7 +310,7 @@ TEST_P(SliderTest, AccessibleValue) {
// Checks the pending value update when the slider is invisible and becomes
// visible again.
TEST_P(SliderTest, SliderPendingValueUpdate) {
test::AXEventCounter ax_counter(views::AXEventManager::Get());
test::AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, ax_counter.GetCount(ax::mojom::Event::kValueChanged));
// Initially, the slider should be visible.
@ -486,7 +486,7 @@ TEST_P(SliderTest, SliderListenerEventsForMultiFingerScrollGesture) {
// Verifies the correct SliderListener events are raised for an accessible
// slider.
TEST_P(SliderTest, SliderRaisesA11yEvents) {
test::AXEventCounter ax_counter(views::AXEventManager::Get());
test::AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, ax_counter.GetCount(ax::mojom::Event::kValueChanged));
// First, detach/reattach the slider without setting value.

@ -383,7 +383,7 @@ TEST_F(TabbedPaneWithWidgetTest, AccessiblePaneContentsRoleIsTabPanel) {
TEST_F(TabbedPaneWithWidgetTest, AccessibleEvents) {
tabbed_pane_->AddTab(u"Tab1", std::make_unique<View>());
tabbed_pane_->AddTab(u"Tab2", std::make_unique<View>());
test::AXEventCounter counter(views::AXEventManager::Get());
test::AXEventCounter counter(views::AXUpdateNotifier::Get());
// This is needed for FocusManager::SetFocusedViewWithReason to notify
// observers observers of focus changes.

@ -4292,7 +4292,7 @@ TEST_F(TextfieldTest, InitialAccessibilityProperties) {
TEST_F(TextfieldTest, SetAccessibleNameNotifiesAccessibilityEvent) {
InitTextfield();
std::u16string test_tooltip_text = u"Test Accessible Name";
test::AXEventCounter counter(views::AXEventManager::Get());
test::AXEventCounter counter(views::AXUpdateNotifier::Get());
EXPECT_EQ(0, counter.GetCount(ax::mojom::Event::kTextChanged));
textfield_->GetViewAccessibility().SetName(test_tooltip_text);
EXPECT_EQ(1, counter.GetCount(ax::mojom::Event::kTextChanged));

@ -12,7 +12,7 @@
namespace views::test {
AXEventCounter::AXEventCounter(views::AXEventManager* event_manager) {
AXEventCounter::AXEventCounter(views::AXUpdateNotifier* event_manager) {
tree_observation_.Observe(event_manager);
}

@ -18,27 +18,27 @@
namespace views::test {
// AXEventCounter provides a convenient way to count events registered by the
// AXEventManager by their event type, and wait for events of a specific type.
class AXEventCounter : public views::AXEventObserver {
// AXUpdateNotifier by their event type, and wait for events of a specific type.
class AXEventCounter : public views::AXUpdateObserver {
public:
explicit AXEventCounter(views::AXEventManager* event_manager);
explicit AXEventCounter(views::AXUpdateNotifier* event_manager);
~AXEventCounter() override;
AXEventCounter(const AXEventCounter&) = delete;
AXEventCounter& operator=(const AXEventCounter&) = delete;
// Returns the number of events of a certain type registered since the
// creation of this AXEventManager object and prior to the count being
// creation of this AXUpdateNotifier object and prior to the count being
// manually reset.
int GetCount(ax::mojom::Event event_type) const;
// Returns the number of events of a certain type on a certain role registered
// since the creation of this AXEventManager object and prior to the count
// since the creation of this AXUpdateNotifier object and prior to the count
// being manually reset.
int GetCount(ax::mojom::Event event_type, ax::mojom::Role role) const;
// Returns the number of events of a certain type on a specific view since the
// creation of this AXEventManager object and prior to the count being
// creation of this AXUpdateNotifier object and prior to the count being
// manually reset.
int GetCount(ax::mojom::Event event_type, views::View* view) const;
@ -48,7 +48,7 @@ class AXEventCounter : public views::AXEventObserver {
// Blocks until an event of the specified type is received.
void WaitForEvent(ax::mojom::Event event_type);
// views::AXEventObserver
// views::AXUpdateObserver
void OnViewEvent(views::View* view, ax::mojom::Event event_type) override;
private:
@ -59,7 +59,7 @@ class AXEventCounter : public views::AXEventObserver {
event_counts_for_view_;
ax::mojom::Event wait_for_event_type_ = ax::mojom::Event::kNone;
raw_ptr<base::RunLoop> run_loop_ = nullptr;
base::ScopedObservation<views::AXEventManager, views::AXEventObserver>
base::ScopedObservation<views::AXUpdateNotifier, views::AXUpdateObserver>
tree_observation_{this};
};

@ -568,7 +568,7 @@ TEST_F(ViewTest, ViewAccessibilityReadyToNotifyEvents) {
}
TEST_F(ViewTest, ReadyToSendAccessibilityEvents) {
views::test::AXEventCounter ax_counter(views::AXEventManager::Get());
views::test::AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
auto view1 = std::make_unique<TestView>();
view1->SetBoundsRect(gfx::Rect(0, 0, 300, 300));
view1->GetViewAccessibility().SetRole(ax::mojom::Role::kButton);
@ -986,7 +986,7 @@ TEST_F(ViewTest, InisibleLeafInVisibleSubtreeTurnedVisible) {
}
TEST_F(ViewTest, SetAccessibilityPropertiesRoleNameDescription) {
views::test::AXEventCounter ax_counter(views::AXEventManager::Get());
views::test::AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
auto v = std::make_unique<A11yTestView>(ax::mojom::Role::kButton, u"Name",
u"Description");
ui::AXNodeData data = ui::AXNodeData();
@ -1029,7 +1029,7 @@ TEST_F(ViewTest, SetAccessibilityPropertiesRoleNameDescription) {
}
TEST_F(ViewTest, SetAccessibilityPropertiesRoleNameDescriptionDetailed) {
views::test::AXEventCounter ax_counter(views::AXEventManager::Get());
views::test::AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
auto v = std::make_unique<A11yTestView>(
ax::mojom::Role::kButton, u"Name", u"Description",
/*role_description*/ u"", ax::mojom::NameFrom::kContents,
@ -1073,7 +1073,7 @@ TEST_F(ViewTest, SetAccessibilityPropertiesRoleNameDescriptionDetailed) {
}
TEST_F(ViewTest, SetAccessibilityPropertiesRoleRolenameNameDescription) {
views::test::AXEventCounter ax_counter(views::AXEventManager::Get());
views::test::AXEventCounter ax_counter(views::AXUpdateNotifier::Get());
auto v = std::make_unique<A11yTestView>(ax::mojom::Role::kButton, u"Name",
u"Description", u"Super Button");
ui::AXNodeData data = ui::AXNodeData();

@ -1135,7 +1135,7 @@ TEST_F(RootViewTest, AccessibleNameChangeEvent) {
::features::kBlockRootWindowAccessibleNameChangeEvent};
#endif
views::test::AXEventCounter counter(views::AXEventManager::Get());
views::test::AXEventCounter counter(views::AXUpdateNotifier::Get());
state.widget()->widget_delegate()->SetTitle(u"Sample Title");
#if BUILDFLAG(IS_MAC)