• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 #define private public
17 #define protected public
18 #include "core/components_ng/pattern/web/transitional_node_info.h"
19 #include "test/mock/base/mock_task_executor.h"
20 #include "test/mock/core/common/mock_container.h"
21 #include "test/mock/core/pipeline/mock_pipeline_context.h"
22 #include "adapter/ohos/osal/js_accessibility_manager.h"
23 #ifdef WEB_SUPPORTED
24 #include "nweb_accessibility_node_info.h"
25 #endif
26 
27 using namespace OHOS::Accessibility;
28 using namespace testing;
29 using namespace testing::ext;
30 
31 namespace OHOS::Ace::NG {
32 
33 class JsAccessibilityManagerWebTest : public testing::Test {
34 public:
35     static void SetUpTestCase();
36     static void TearDownTestCase();
37 };
38 
SetUpTestCase()39 void JsAccessibilityManagerWebTest::SetUpTestCase()
40 {
41     MockPipelineContext::SetUp();
42     MockContainer::SetUp();
43     MockContainer::Current()->taskExecutor_ = AceType::MakeRefPtr<MockTaskExecutor>();
44     MockContainer::Current()->pipelineContext_ = MockPipelineContext::GetCurrentContext();
45     MockContainer::Current()->pipelineContext_->taskExecutor_ = MockContainer::Current()->taskExecutor_;
46 
47     std::unique_ptr<std::ostream> ostream = std::make_unique<std::ostringstream>();
48     ASSERT_NE(ostream, nullptr);
49     DumpLog::GetInstance().SetDumpFile(std::move(ostream));
50 }
51 
TearDownTestCase()52 void JsAccessibilityManagerWebTest::TearDownTestCase()
53 {
54     MockPipelineContext::TearDown();
55     MockContainer::TearDown();
56 }
57 
58 #ifdef WEB_SUPPORTED
59 class MockNWebAccessibilityNodeInfo : public NWeb::NWebAccessibilityNodeInfo {
60     public:
GetHint()61     std::string GetHint() override
62     {
63         return "";
64     }
GetError()65     std::string GetError() override
66     {
67         return "";
68     }
GetRectX()69     int32_t GetRectX()
70     {
71         return 0;
72     }
GetRectY()73     int32_t GetRectY()
74     {
75         return 0;
76     }
SetPageId(int32_t pageId)77     void SetPageId(int32_t pageId) override {}
GetPageId()78     int32_t GetPageId() override
79     {
80         return 0;
81     }
GetActions()82     std::vector<uint32_t> GetActions() override
83     {
84         return {};
85     }
GetContent()86     std::string GetContent() override
87     {
88         return "";
89     }
GetChildIds()90     std::vector<int64_t> GetChildIds() override
91     {
92         return {};
93     }
SetParentId(int64_t parentId)94     void SetParentId(int64_t parentId) override {}
GetParentId()95     int64_t GetParentId() override
96     {
97         return 0;
98     }
GetIsHeading()99     bool GetIsHeading() override
100     {
101         return false;
102     }
GetIsChecked()103     bool GetIsChecked() override
104     {
105         return false;
106     }
GetIsEnabled()107     bool GetIsEnabled() override
108     {
109         return false;
110     }
GetIsFocused()111     bool GetIsFocused() override
112     {
113         return false;
114     }
GetRectWidth()115     int32_t GetRectWidth()
116     {
117         return 0;
118     }
GetRectHeight()119     int32_t GetRectHeight()
120     {
121         return 0;
122     }
GetIsVisible()123     bool GetIsVisible() override
124     {
125         return true;
126     }
GetIsHinting()127     bool GetIsHinting() override
128     {
129         return false;
130     }
GetIsEditable()131     bool GetIsEditable() override
132     {
133         return false;
134     }
GetIsSelected()135     bool GetIsSelected() override
136     {
137         return false;
138     }
GetItemCounts()139     size_t GetItemCounts() override
140     {
141         return 0;
142     }
GetLiveRegion()143     int32_t GetLiveRegion() override
144     {
145         return 0;
146     }
GetIsPassword()147     bool GetIsPassword() override
148     {
149         return false;
150     }
GetIsCheckable()151     bool GetIsCheckable() override
152     {
153         return false;
154     }
GetIsClickable()155     bool GetIsClickable() override
156     {
157         return false;
158     }
GetIsFocusable()159     bool GetIsFocusable() override
160     {
161         return false;
162     }
GetIsScrollable()163     bool GetIsScrollable() override
164     {
165         return false;
166     }
GetIsDeletable()167     bool GetIsDeletable() override
168     {
169         return false;
170     }
GetAccessibilityId()171     int64_t GetAccessibilityId() override
172     {
173         return 0;
174     }
GetIsPopupSupported()175     bool GetIsPopupSupported() override
176     {
177         return false;
178     }
GetIsContentInvalid()179     bool GetIsContentInvalid() override
180     {
181         return false;
182     }
GetSelectionEnd()183     int32_t GetSelectionEnd() override
184     {
185         return 0;
186     }
GetSelectionStart()187     int32_t GetSelectionStart() override
188     {
189         return 0;
190     }
GetRangeInfoMin()191     float GetRangeInfoMin() override
192     {
193         return 0.0f;
194     }
GetRangeInfoMax()195     float GetRangeInfoMax() override
196     {
197         return 0.0f;
198     }
GetRangeInfoCurrent()199     float GetRangeInfoCurrent() override
200     {
201         return 0.0f;
202     }
GetInputType()203     int32_t GetInputType() override
204     {
205         return 0;
206     }
GetComponentType()207     std::string GetComponentType() override
208     {
209         return "";
210     }
GetDescriptionInfo()211     std::string GetDescriptionInfo() override
212     {
213         return "";
214     }
GetGridRows()215     int32_t GetGridRows() override
216     {
217         return 0;
218     }
GetGridItemRow()219     int32_t GetGridItemRow() override
220     {
221         return 0;
222     }
GetGridColumns()223     int32_t GetGridColumns() override
224     {
225         return 0;
226     }
GetGridItemColumn()227     int32_t GetGridItemColumn() override
228     {
229         return 0;
230     }
GetGridItemRowSpan()231     int32_t GetGridItemRowSpan() override
232     {
233         return 0;
234     }
GetGridSelectedMode()235     int32_t GetGridSelectedMode() override
236     {
237         return 0;
238     }
GetGridItemColumnSpan()239     int32_t GetGridItemColumnSpan() override
240     {
241         return 0;
242     }
GetIsAccessibilityFocus()243     bool GetIsAccessibilityFocus() override
244     {
245         return false;
246     }
GetIsPluralLineSupported()247     bool GetIsPluralLineSupported() override
248     {
249         return false;
250     }
251 };
252 
253 /**
254  * @tc.name: WebSetScreenRect001
255  * @tc.desc: WebSetScreenRect degree = 90 / degree = 0
256  * @tc.type: FUNC
257  */
258 HWTEST_F(JsAccessibilityManagerWebTest, WebSetScreenRect001, TestSize.Level1)
259 {
260     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
261     Framework::CommonProperty commonProperty;
262     commonProperty.rotateTransform.rotateDegree = 90;
263     auto nWebAccessibilityNodeInfoPtr = std::make_shared<MockNWebAccessibilityNodeInfo>();
264     auto nodePtr = std::make_shared<NG::TransitionalNodeInfo>(nWebAccessibilityNodeInfoPtr);
265     AccessibilityElementInfo nodeInfo;
266 
267     jsAccessibilityManager->WebSetScreenRect(nodePtr, commonProperty, nodeInfo);
268     auto rect = nodeInfo.GetRectInScreen();
269     EXPECT_EQ(rect.GetLeftTopXScreenPostion(), 0);
270     EXPECT_EQ(rect.GetLeftTopYScreenPostion(), 0);
271     EXPECT_EQ(rect.GetRightBottomXScreenPostion(), 0);
272     EXPECT_EQ(rect.GetRightBottomYScreenPostion(), 0);
273 
274     commonProperty.rotateTransform.rotateDegree = 0;
275     jsAccessibilityManager->WebSetScreenRect(nodePtr, commonProperty, nodeInfo);
276     rect = nodeInfo.GetRectInScreen();
277     EXPECT_EQ(rect.GetLeftTopXScreenPostion(), 0);
278     EXPECT_EQ(rect.GetLeftTopYScreenPostion(), 0);
279     EXPECT_EQ(rect.GetRightBottomXScreenPostion(), 0);
280     EXPECT_EQ(rect.GetRightBottomYScreenPostion(), 0);
281 }
282 
283 /**
284  * @tc.name: WebSetScreenRect002
285  * @tc.desc: WebSetScreenRect degree = 0, scaleX != 0, scaleY = 0
286  * @tc.type: FUNC
287  */
288 HWTEST_F(JsAccessibilityManagerWebTest, WebSetScreenRect002, TestSize.Level1)
289 {
290     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
291     Framework::CommonProperty commonProperty;
292     commonProperty.rotateTransform.rotateDegree = 0;
293     commonProperty.scaleX = 3.0f;
294     commonProperty.scaleY = 0.0f;
295     auto nWebAccessibilityNodeInfoPtr = std::make_shared<MockNWebAccessibilityNodeInfo>();
296     auto nodePtr = std::make_shared<NG::TransitionalNodeInfo>(nWebAccessibilityNodeInfoPtr);
297     AccessibilityElementInfo nodeInfo;
298 
299     jsAccessibilityManager->WebSetScreenRect(nodePtr, commonProperty, nodeInfo);
300     auto rect = nodeInfo.GetRectInScreen();
301     EXPECT_EQ(rect.GetLeftTopXScreenPostion(), 0);
302     EXPECT_EQ(rect.GetLeftTopYScreenPostion(), 0);
303     EXPECT_EQ(rect.GetRightBottomXScreenPostion(), 0);
304     EXPECT_EQ(rect.GetRightBottomYScreenPostion(), 0);
305 }
306 
307 /**
308  * @tc.name: WebSetScreenRect003
309  * @tc.desc: WebSetScreenRect degree = 0, scaleX = 0, scaleY != 0
310  * @tc.type: FUNC
311  */
312 HWTEST_F(JsAccessibilityManagerWebTest, WebSetScreenRect003, TestSize.Level1)
313 {
314     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
315     Framework::CommonProperty commonProperty;
316     commonProperty.rotateTransform.rotateDegree = 0;
317     commonProperty.scaleX = 0.0f;
318     commonProperty.scaleY = 3.0f;
319     auto nWebAccessibilityNodeInfoPtr = std::make_shared<MockNWebAccessibilityNodeInfo>();
320     auto nodePtr = std::make_shared<NG::TransitionalNodeInfo>(nWebAccessibilityNodeInfoPtr);
321     AccessibilityElementInfo nodeInfo;
322 
323     jsAccessibilityManager->WebSetScreenRect(nodePtr, commonProperty, nodeInfo);
324     auto rect = nodeInfo.GetRectInScreen();
325     EXPECT_EQ(rect.GetLeftTopXScreenPostion(), 0);
326     EXPECT_EQ(rect.GetLeftTopYScreenPostion(), 0);
327     EXPECT_EQ(rect.GetRightBottomXScreenPostion(), 0);
328     EXPECT_EQ(rect.GetRightBottomYScreenPostion(), 0);
329 }
330 
331 /**
332  * @tc.name: WebSetScreenRect004
333  * @tc.desc: WebSetScreenRect degree = 0, scaleX != 0, scaleY != 0
334  * @tc.type: FUNC
335  */
336 HWTEST_F(JsAccessibilityManagerWebTest, WebSetScreenRect004, TestSize.Level1)
337 {
338     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
339     Framework::CommonProperty commonProperty;
340     commonProperty.rotateTransform.rotateDegree = 0;
341     commonProperty.scaleX = 3.0f;
342     commonProperty.scaleY = 3.0f;
343     auto nWebAccessibilityNodeInfoPtr = std::make_shared<MockNWebAccessibilityNodeInfo>();
344     auto nodePtr = std::make_shared<NG::TransitionalNodeInfo>(nWebAccessibilityNodeInfoPtr);
345     AccessibilityElementInfo nodeInfo;
346 
347     jsAccessibilityManager->WebSetScreenRect(nodePtr, commonProperty, nodeInfo);
348     auto rect = nodeInfo.GetRectInScreen();
349     EXPECT_EQ(rect.GetLeftTopXScreenPostion(), 0);
350     EXPECT_EQ(rect.GetLeftTopYScreenPostion(), 0);
351     EXPECT_EQ(rect.GetRightBottomXScreenPostion(), 0);
352     EXPECT_EQ(rect.GetRightBottomYScreenPostion(), 0);
353 }
354 
355 /**
356  * @tc.name: WebSetScreenRect005
357  * @tc.desc: WebSetScreenRect degree = 0, scaleX = 0, scaleY = 0
358  * @tc.type: FUNC
359  */
360 HWTEST_F(JsAccessibilityManagerWebTest, WebSetScreenRect005, TestSize.Level1)
361 {
362     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
363     Framework::CommonProperty commonProperty;
364     commonProperty.rotateTransform.rotateDegree = 0;
365     commonProperty.scaleX = 0.0f;
366     commonProperty.scaleY = 0.0f;
367     auto nWebAccessibilityNodeInfoPtr = std::make_shared<MockNWebAccessibilityNodeInfo>();
368     auto nodePtr = std::make_shared<NG::TransitionalNodeInfo>(nWebAccessibilityNodeInfoPtr);
369     AccessibilityElementInfo nodeInfo;
370 
371     jsAccessibilityManager->WebSetScreenRect(nodePtr, commonProperty, nodeInfo);
372     auto rect = nodeInfo.GetRectInScreen();
373     EXPECT_EQ(rect.GetLeftTopXScreenPostion(), 0);
374     EXPECT_EQ(rect.GetLeftTopYScreenPostion(), 0);
375     EXPECT_EQ(rect.GetRightBottomXScreenPostion(), 0);
376     EXPECT_EQ(rect.GetRightBottomYScreenPostion(), 0);
377 }
378 #endif //WEB_SUPPORTED
379 } // namespace OHOS::Ace::NG