1a69a01cdSopenharmony_ci/* 2a69a01cdSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3a69a01cdSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4a69a01cdSopenharmony_ci * you may not use this file except in compliance with the License. 5a69a01cdSopenharmony_ci * You may obtain a copy of the License at 6a69a01cdSopenharmony_ci * 7a69a01cdSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8a69a01cdSopenharmony_ci * 9a69a01cdSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10a69a01cdSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11a69a01cdSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12a69a01cdSopenharmony_ci * See the License for the specific language governing permissions and 13a69a01cdSopenharmony_ci * limitations under the License. 14a69a01cdSopenharmony_ci */ 15a69a01cdSopenharmony_ci 16a69a01cdSopenharmony_ci#ifndef TEST_WUKONG_COMPONENT_TREE_H 17a69a01cdSopenharmony_ci#define TEST_WUKONG_COMPONENT_TREE_H 18a69a01cdSopenharmony_ci 19a69a01cdSopenharmony_ci#include <map> 20a69a01cdSopenharmony_ci 21a69a01cdSopenharmony_ci#include "accessibility_element_info.h" 22a69a01cdSopenharmony_ci#include "wukong_define.h" 23a69a01cdSopenharmony_ci#include "wukong_tree.h" 24a69a01cdSopenharmony_ci 25a69a01cdSopenharmony_cinamespace OHOS { 26a69a01cdSopenharmony_cinamespace WuKong { 27a69a01cdSopenharmony_ciclass ComponentTree : public WuKongTree { 28a69a01cdSopenharmony_cipublic: 29a69a01cdSopenharmony_ci ComponentTree() : WuKongTree(), expectedInputCount_(0) 30a69a01cdSopenharmony_ci { 31a69a01cdSopenharmony_ci type_.clear(); 32a69a01cdSopenharmony_ci inputTypeCountMap_.clear(); 33a69a01cdSopenharmony_ci } 34a69a01cdSopenharmony_ci virtual ~ComponentTree() 35a69a01cdSopenharmony_ci { 36a69a01cdSopenharmony_ci } 37a69a01cdSopenharmony_ci 38a69a01cdSopenharmony_ci const std::string& GetType() 39a69a01cdSopenharmony_ci { 40a69a01cdSopenharmony_ci return type_; 41a69a01cdSopenharmony_ci } 42a69a01cdSopenharmony_ci 43a69a01cdSopenharmony_ci bool IsVisible() 44a69a01cdSopenharmony_ci { 45a69a01cdSopenharmony_ci return isVisible_; 46a69a01cdSopenharmony_ci } 47a69a01cdSopenharmony_ci 48a69a01cdSopenharmony_ci OHOS::Accessibility::Rect GetPosition() 49a69a01cdSopenharmony_ci { 50a69a01cdSopenharmony_ci return rect_; 51a69a01cdSopenharmony_ci } 52a69a01cdSopenharmony_ci 53a69a01cdSopenharmony_ci const std::string& GetInspectorKey() 54a69a01cdSopenharmony_ci { 55a69a01cdSopenharmony_ci return inspectorKey_; 56a69a01cdSopenharmony_ci } 57a69a01cdSopenharmony_ci 58a69a01cdSopenharmony_ci void SetInspectorKey(const std::string& inspectorKey) 59a69a01cdSopenharmony_ci { 60a69a01cdSopenharmony_ci inspectorKey_ = inspectorKey; 61a69a01cdSopenharmony_ci } 62a69a01cdSopenharmony_ci 63a69a01cdSopenharmony_ci bool IsTopComponent() 64a69a01cdSopenharmony_ci { 65a69a01cdSopenharmony_ci return isTopComponent_; 66a69a01cdSopenharmony_ci } 67a69a01cdSopenharmony_ci 68a69a01cdSopenharmony_ci void SetTopComponent() 69a69a01cdSopenharmony_ci { 70a69a01cdSopenharmony_ci isTopComponent_ = true; 71a69a01cdSopenharmony_ci } 72a69a01cdSopenharmony_ci 73a69a01cdSopenharmony_ciprivate: 74a69a01cdSopenharmony_ci friend class TreeManager; 75a69a01cdSopenharmony_ci virtual bool SetNodeId() override; 76a69a01cdSopenharmony_ci virtual bool RecursUpdateInfo(const std::shared_ptr<ComponentTree>& source); 77a69a01cdSopenharmony_ci void AddTypeInputCount(uint32_t type) 78a69a01cdSopenharmony_ci { 79a69a01cdSopenharmony_ci auto it = inputTypeCountMap_.find(type); 80a69a01cdSopenharmony_ci if (it != inputTypeCountMap_.end()) { 81a69a01cdSopenharmony_ci it->second++; 82a69a01cdSopenharmony_ci } else { 83a69a01cdSopenharmony_ci inputTypeCountMap_[type] = 1; 84a69a01cdSopenharmony_ci } 85a69a01cdSopenharmony_ci } 86a69a01cdSopenharmony_ci OHOS::Accessibility::Rect rect_ {}; 87a69a01cdSopenharmony_ci bool isVisible_ = false; 88a69a01cdSopenharmony_ci std::string type_; 89a69a01cdSopenharmony_ci uint32_t expectedInputCount_; 90a69a01cdSopenharmony_ci std::map<uint32_t, uint32_t> inputTypeCountMap_; 91a69a01cdSopenharmony_ci std::string inspectorKey_; 92a69a01cdSopenharmony_ci bool isTopComponent_ = false; 93a69a01cdSopenharmony_ci}; 94a69a01cdSopenharmony_ci} // namespace WuKong 95a69a01cdSopenharmony_ci} // namespace OHOS 96a69a01cdSopenharmony_ci#endif // TEST_WUKONG_COMPONENT_TREE_H 97