1 /*
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <gtest/gtest.h>
17 #include "accessibility_connection.h"
18 #include "wm_common.h"
19 #include "dm_common.h"
20 #include "common_test_utils.h"
21
22 using namespace testing;
23 using namespace testing::ext;
24
25 namespace OHOS {
26 namespace Rosen {
27 class AccessibilityConnectionTest : public testing::Test {
28 public:
29 static void SetUpTestCase();
30 static void TearDownTestCase();
31 void SetUp() override;
32 void TearDown() override;
33 sptr<AccessibilityConnection> accessibilityConnection_;
34 };
35
SetUpTestCase()36 void AccessibilityConnectionTest::SetUpTestCase()
37 {
38 }
39
TearDownTestCase()40 void AccessibilityConnectionTest::TearDownTestCase()
41 {
42 }
43
SetUp()44 void AccessibilityConnectionTest::SetUp()
45 {
46 sptr<WindowRoot> windowRoot_ = new WindowRoot([](Event event, const sptr<IRemoteObject>& remoteObject) {});
47 accessibilityConnection_ = new AccessibilityConnection(windowRoot_);
48 }
49
TearDown()50 void AccessibilityConnectionTest::TearDown()
51 {
52 }
53
54 namespace {
55 /**
56 * @tc.name: FillAccessibilityWindowInfo01
57 * @tc.desc: normal function
58 * @tc.type: FUNC
59 */
60 HWTEST_F(AccessibilityConnectionTest, FillAccessibilityWindowInfo01, Function | SmallTest | Level2)
61 {
62 uint32_t focusedWindow = 1;
63 sptr<WindowProperty> windowProperty1 = new WindowProperty();
64 windowProperty1->SetWindowId(focusedWindow);
65 windowProperty1->SetDecorEnable(true);
66 sptr<WindowNode> windowNode1 = new WindowNode(windowProperty1);
67 sptr<WindowNode> windowNode2 = new WindowNode();
68 sptr<WindowNode> windowNode3 = nullptr;
69 std::vector<sptr<WindowNode>> nodes;
70 nodes.emplace_back(windowNode1);
71 nodes.emplace_back(windowNode2);
72 nodes.emplace_back(windowNode3);
73 std::vector<sptr<AccessibilityWindowInfo>> infos;
74 accessibilityConnection_->FillAccessibilityWindowInfo(nodes, focusedWindow, infos);
75 ASSERT_EQ(2, infos.size());
76 ASSERT_TRUE(infos[0]->isDecorEnable_);
77 ASSERT_TRUE(infos[0]->focused_);
78 ASSERT_FALSE(infos[1]->isDecorEnable_);
79 ASSERT_FALSE(infos[1]->focused_);
80 }
81
82 /**
83 * @tc.name: GetAccessibilityWindowInfo01
84 * @tc.desc: normal function
85 * @tc.type: FUNC
86 */
87 HWTEST_F(AccessibilityConnectionTest, GetAccessibilityWindowInfo01, Function | SmallTest | Level2)
88 {
89 std::vector<sptr<AccessibilityWindowInfo>> infos;
90 accessibilityConnection_->GetAccessibilityWindowInfo(infos);
91 ASSERT_EQ(0, infos.size());
92 }
93
94 /**
95 * @tc.name: UpdateFocusChangeEvent01
96 * @tc.desc: normal function
97 * @tc.type: FUNC
98 */
99 HWTEST_F(AccessibilityConnectionTest, UpdateFocusChangeEvent01, Function | SmallTest | Level2)
100 {
101 sptr<DisplayInfo> displayInfo = new DisplayInfo();
102 ScreenId displayGroupId = 0;
103 sptr<WindowNodeContainer> container = new WindowNodeContainer(displayInfo, displayGroupId);
104 accessibilityConnection_->UpdateFocusChangeEvent(container);
105 ASSERT_EQ(1, accessibilityConnection_->focusedWindowMap_.size());
106 }
107
108 /**
109 * @tc.name: UpdateFocusChangeEvent02
110 * @tc.desc: normal function
111 * @tc.type: FUNC
112 */
113 HWTEST_F(AccessibilityConnectionTest, UpdateFocusChangeEvent02, Function | SmallTest | Level2)
114 {
115 sptr<DisplayInfo> displayInfo = new DisplayInfo();
116 ScreenId displayGroupId = 0;
117 sptr<WindowNodeContainer> container = new WindowNodeContainer(displayInfo, displayGroupId);
118 uint32_t newFocusWindow = 1;
119 container->SetFocusWindow(newFocusWindow);
120 uint32_t oldFocusWindow = 1;
121 accessibilityConnection_->focusedWindowMap_.insert(std::make_pair(container, oldFocusWindow));
122 accessibilityConnection_->UpdateFocusChangeEvent(container);
123 ASSERT_EQ(1, accessibilityConnection_->focusedWindowMap_.size());
124 ASSERT_EQ(1, accessibilityConnection_->focusedWindowMap_[container]);
125 }
126
127 /**
128 * @tc.name: UpdateFocusChangeEvent03
129 * @tc.desc: normal function
130 * @tc.type: FUNC
131 */
132 HWTEST_F(AccessibilityConnectionTest, UpdateFocusChangeEvent03, Function | SmallTest | Level2)
133 {
134 sptr<DisplayInfo> displayInfo = new DisplayInfo();
135 ScreenId displayGroupId = 0;
136 sptr<WindowNodeContainer> container = new WindowNodeContainer(displayInfo, displayGroupId);
137 uint32_t newFocusWindow = 2;
138 container->SetFocusWindow(newFocusWindow);
139 uint32_t oldFocusWindow = 1;
140 accessibilityConnection_->focusedWindowMap_.insert(std::make_pair(container, oldFocusWindow));
141 accessibilityConnection_->UpdateFocusChangeEvent(container);
142 ASSERT_EQ(1, accessibilityConnection_->focusedWindowMap_.size());
143 ASSERT_EQ(2, accessibilityConnection_->focusedWindowMap_[container]);
144 }
145 }
146 }
147 }