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)10AXEventCounter::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)17void 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)25int AXEventCounter::GetCount(ax::mojom::Event event_type) { 26 return event_counts_[event_type]; 27 } 28 WaitForEvent(ax::mojom::Event event_type)29void 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