1 // Copyright 2020 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 #include "ui/views/test/ax_event_counter.h"
6 
7 namespace views {
8 namespace test {
9 
AXEventCounter(views::AXEventManager * event_manager)10 AXEventCounter::AXEventCounter(views::AXEventManager* event_manager)
11     : tree_observer_(this) {
12   tree_observer_.Add(event_manager);
13 }
14 
15 AXEventCounter::~AXEventCounter() = default;
16 
OnViewEvent(views::View *,ax::mojom::Event event_type)17 void AXEventCounter::OnViewEvent(views::View*, ax::mojom::Event event_type) {
18   ++event_counts_[event_type];
19   if (run_loop_ && event_type == wait_for_event_type_) {
20     wait_for_event_type_ = ax::mojom::Event::kNone;
21     run_loop_->Quit();
22   }
23 }
24 
GetCount(ax::mojom::Event event_type)25 int AXEventCounter::GetCount(ax::mojom::Event event_type) {
26   return event_counts_[event_type];
27 }
28 
WaitForEvent(ax::mojom::Event event_type)29 void AXEventCounter::WaitForEvent(ax::mojom::Event event_type) {
30   wait_for_event_type_ = event_type;
31   base::RunLoop run_loop;
32   run_loop_ = &run_loop;
33   run_loop_->Run();
34   run_loop_ = nullptr;
35 }
36 
37 }  // namespace test
38 }  // namespace views
39