• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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 "gmock/gmock.h"
17 #include "gtest/gtest.h"
18 
19 #define private public
20 #define protected public
21 #include "accessibility_system_ability_client.h"
22 #include "core/components_ng/base/observer_handler.h"
23 #include "core/components_ng/pattern/node_container/node_container_pattern.h"
24 #include "test/mock/base/mock_task_executor.h"
25 #include "test/mock/core/common/mock_container.h"
26 #include "test/mock/core/pipeline/mock_pipeline_context.h"
27 
28 #include "base/log/dump_log.h"
29 #include "adapter/ohos/osal/js_accessibility_manager.h"
30 #include "frameworks/core/accessibility/accessibility_node.h"
31 #include "adapter/ohos/entrance/ace_container.h"
32 
33 using namespace OHOS::Accessibility;
34 using namespace testing;
35 using namespace testing::ext;
36 
37 namespace OHOS::Ace {
38 } // namespace OHOS::Ace
39 
40 namespace OHOS::Ace::NG {
41 namespace {
42     const int32_t NUMTWO = 2;
43 } // namespace
44 
45 class MockAccessibilityChildTreeCallback : public AccessibilityChildTreeCallback {
46 public:
MockAccessibilityChildTreeCallback(int64_t accessibilityId)47     explicit MockAccessibilityChildTreeCallback(int64_t accessibilityId)
48         : AccessibilityChildTreeCallback(accessibilityId)
49     {}
50 
51     ~MockAccessibilityChildTreeCallback() override = default;
52 
OnRegister(uint32_t windowId,int32_t treeId)53     bool OnRegister(uint32_t windowId, int32_t treeId) override
54     {
55         return true;
56     }
57 
OnDeregister()58     bool OnDeregister() override
59     {
60         return true;
61     }
62 
OnSetChildTree(int32_t childWindowId,int32_t childTreeId)63     bool OnSetChildTree(int32_t childWindowId, int32_t childTreeId) override
64     {
65         return true;
66     }
67 
OnDumpChildInfo(const std::vector<std::string> & params,std::vector<std::string> & info)68     bool OnDumpChildInfo(const std::vector<std::string>& params, std::vector<std::string>& info) override
69     {
70         return true;
71     }
72 
OnClearRegisterFlag()73     void OnClearRegisterFlag() override
74     {
75         isReg_ = false;
76     }
77 
78 private:
79     bool isReg_ = false;
80 };
81 
82 class MockAccessibilitySAObserverCallback : public AccessibilitySAObserverCallback {
83 public:
MockAccessibilitySAObserverCallback(int64_t accessibilityId)84     explicit MockAccessibilitySAObserverCallback(int64_t accessibilityId)
85         : AccessibilitySAObserverCallback(accessibilityId)
86     {}
87 
88     ~MockAccessibilitySAObserverCallback() override = default;
89 
OnState(bool state)90     bool OnState(bool state) override
91     {
92         return true;
93     }
94 };
95 
96 class MockStageManager : public StageManager {
97 public:
MockStageManager(const RefPtr<FrameNode> & stage)98     explicit MockStageManager(const RefPtr<FrameNode>& stage)
99         : StageManager(stage)
100     {}
101 
102     ~MockStageManager() override = default;
103 
104     MOCK_METHOD(bool, IsSplitMode, (), (const));
105     MOCK_METHOD(std::vector<RefPtr<FrameNode>>, GetTopPagesWithTransition, (), (const));
106     MOCK_METHOD(std::vector<std::string>, GetTopPagePaths, (), (const));
107     MOCK_METHOD(RefPtr<FrameNode>, GetLastPageWithTransition, (), (const));
108 };
109 
110 class MockUiExtensionPattern : public Pattern {
111 public:
GetUiExtensionId()112     int32_t GetUiExtensionId()
113     {
114         return NUMTWO;
115     }
116 };
117 
118 class JsAccessibilityManagerTest : public testing::Test {
119 public:
120     static void SetUpTestCase();
121     static void TearDownTestCase();
122 };
123 
SetUpTestCase()124 void JsAccessibilityManagerTest::SetUpTestCase()
125 {
126     MockPipelineContext::SetUp();
127     MockContainer::SetUp();
128     MockContainer::Current()->taskExecutor_ = AceType::MakeRefPtr<MockTaskExecutor>();
129     MockContainer::Current()->pipelineContext_ = MockPipelineContext::GetCurrentContext();
130     MockContainer::Current()->pipelineContext_->taskExecutor_ = MockContainer::Current()->taskExecutor_;
131 
132     std::unique_ptr<std::ostream> ostream = std::make_unique<std::ostringstream>();
133     ASSERT_NE(ostream, nullptr);
134     DumpLog::GetInstance().SetDumpFile(std::move(ostream));
135 }
136 
TearDownTestCase()137 void JsAccessibilityManagerTest::TearDownTestCase()
138 {
139     MockPipelineContext::TearDown();
140     MockContainer::TearDown();
141 }
142 
143 class MockJsAccessibilityManager : public Framework::JsAccessibilityManager {
144 public:
145     MOCK_METHOD3(SendEventToAccessibilityWithNode,
146         void(const AccessibilityEvent& accessibilityEvent,
147             const RefPtr<AceType>& node, const RefPtr<PipelineBase>& context));
148     MOCK_METHOD0(GenerateAccessibilityWorkMode, AccessibilityWorkMode());
149     MOCK_METHOD1(HandleWillClickAccept, void(RefPtr<NG::FrameNode>& frameNode));
150     MOCK_METHOD1(HandleDidClickAccept, void(RefPtr<NG::FrameNode>& frameNode));
151     MOCK_METHOD1(ActClick, bool(RefPtr<NG::FrameNode>& frameNode));
152 };
153 
154 /**
155  * @tc.name: JsAccessibilityManager001
156  * @tc.desc: UpdateAccessibilityElementInfo
157  * @tc.type: FUNC
158  */
159 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager001, TestSize.Level1)
160 {
161     /**
162      * @tc.steps: step1. construct JsAccessibilityManager
163      */
164     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
165     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
166     Accessibility::AccessibilityElementInfo nodeInfo;
167     auto accessibilityProperty = frameNode->GetAccessibilityProperty<NG::AccessibilityProperty>();
168     accessibilityProperty->SetAccessibilityRole("test");
169     accessibilityProperty->SetAccessibilityCustomRole("test");
170     accessibilityProperty->SetUserRangeCurrentValue(5);
171     accessibilityProperty->SetUserRangeMinValue(1);
172     accessibilityProperty->SetUserRangeMaxValue(10);
173     accessibilityProperty->SetAccessibilityLevel("yes");
174     accessibilityProperty->SetUserCurrentValue(5);
175     accessibilityProperty->SetUserMinValue(1);
176     accessibilityProperty->SetUserMaxValue(10);
177     jsAccessibilityManager->UpdateAccessibilityElementInfo(frameNode, nodeInfo);
178 
179     /**
180     * @tc.steps: step2. init accessibilityProperty and set level yes.
181     * @tc.expected: UpdateAccessibilityElementInfo nodeInfo level is yes.
182     */
183     EXPECT_EQ(nodeInfo.GetAccessibilityLevel(), "yes");
184 }
185 
186 /**
187  * @tc.name: JsAccessibilityManager002
188  * @tc.desc: UpdateElementInfoTreeId
189  * @tc.type: FUNC
190  */
191 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager002, TestSize.Level1)
192 {
193     /**
194      * @tc.steps: step1. construct JsAccessibilityManager
195      */
196     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
197     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
198     Accessibility::AccessibilityElementInfo info;
199     info.SetPageId(1);
200     info.SetParent(0);
201     info.SetBelongTreeId(10);
202     info.SetAccessibilityId(11);
203     jsAccessibilityManager->UpdateElementInfoTreeId(info);
204 
205     /**
206     * @tc.steps: step2. init AccessibilityElementInfo and SetBelongTreeId 10, pageid 1, parent 0.
207     * @tc.expected: UpdateElementInfoTreeId nodeInfo pageid is not equal 1.
208     */
209     EXPECT_NE(info.GetPageId(), 1);
210 
211     info.SetBelongTreeId(0);
212     info.SetPageId(1);
213     jsAccessibilityManager->UpdateElementInfoTreeId(info);
214 
215     /**
216     * @tc.steps: step3. AccessibilityElementInfo and SetBelongTreeId 0
217     * @tc.expected: UpdateElementInfoTreeId nodeInfo pageid is 1.
218     */
219     EXPECT_EQ(info.GetPageId(), 1);
220 }
221 
222 /**
223  * @tc.name: JsAccessibilityManager003
224  * @tc.desc: UpdateAccessibilityVisible
225  * @tc.type: FUNC
226  */
227 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager003, TestSize.Level1)
228 {
229     /**
230      * @tc.steps: step1. construct JsAccessibilityManager
231      */
232     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), false);
233     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
234 
235     /**
236      * @tc.steps: step2. test UpdateAccessibilityVisible
237      */
238     Accessibility::AccessibilityElementInfo nodeInfo;
239     // without parent node return visiable false
240     jsAccessibilityManager->UpdateAccessibilityVisible(frameNode, nodeInfo);
241     EXPECT_EQ(nodeInfo.GetAccessibilityVisible(), false);
242 
243     nodeInfo.SetParent(0);
244     jsAccessibilityManager->UpdateAccessibilityVisible(frameNode, nodeInfo);
245     EXPECT_EQ(nodeInfo.GetAccessibilityVisible(), false);
246 
247     /**
248      * @tc.steps: step3. test with page_node
249      */
250     Accessibility::AccessibilityElementInfo nodeInfoNew;
251     auto pageNode = FrameNode::CreateFrameNode(V2::PAGE_ETS_TAG, 1,
252         AceType::MakeRefPtr<Pattern>(), false);
253     jsAccessibilityManager->UpdateAccessibilityVisible(pageNode, nodeInfoNew);
254 }
255 
256 /**
257  * @tc.name: JsAccessibilityManager004
258  * @tc.desc: GenerateCommonProperty
259  * @tc.type: FUNC
260  */
261 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager004, TestSize.Level1)
262 {
263     /**
264      * @tc.steps: step1. construct JsAccessibilityManager
265      */
266     auto rootNode = FrameNode::CreateFrameNode(V2::WINDOW_SCENE_ETS_TAG,
267         ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>(), true);
268     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
269         AceType::MakeRefPtr<Pattern>(), false);
270     rootNode->AddChild(frameNode);
271     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
272     auto context = NG::PipelineContext::GetCurrentContext();
273     jsAccessibilityManager->SetPipelineContext(context);
274     jsAccessibilityManager->Register(true);
275     jsAccessibilityManager->SetWindowId(1);
276 
277     /**
278      * @tc.steps: step2. test GenerateCommonProperty
279      */
280     auto mainContext = context;
281     Framework::CommonProperty commonProperty;
282     jsAccessibilityManager->GenerateCommonProperty(context, commonProperty, mainContext, frameNode);
283     EXPECT_EQ(commonProperty.innerWindowId, -1);
284 
285     jsAccessibilityManager->DumpTreeNodeCommonInfoNg(frameNode, commonProperty);
286     jsAccessibilityManager->DumpTreeNodeSimplifyInfoNG(frameNode, 1, commonProperty, 1);
287     jsAccessibilityManager->DumpTreeNG(frameNode, 1, frameNode->GetId(), true);
288     jsAccessibilityManager->DumpTree(1, 1, true);
289 
290     jsAccessibilityManager->UpdateViewScale();
291     EXPECT_EQ(jsAccessibilityManager->scaleX_, 1.0f);
292 }
293 
294 /**
295  * @tc.name: JsAccessibilityManager005
296  * @tc.desc: dump func
297  * @tc.type: FUNC
298  */
299 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager005, TestSize.Level1)
300 {
301     /**
302      * @tc.steps: step1. construct JsAccessibilityManager
303      */
304     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
305         AceType::MakeRefPtr<Pattern>(), false);
306     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
307     Accessibility::AccessibilityElementInfo nodeInfo;
308     nodeInfo.SetAccessibilityId(1);
309     jsAccessibilityManager->DumpAccessibilityPropertyNG(nodeInfo);
310     jsAccessibilityManager->DumpCommonPropertyNG(nodeInfo, 1);
311 
312     /**
313      * @tc.steps: step2. test DumpTreeNG
314      */
315     bool useWindowId = false;
316     uint32_t windowId = 1;
317     int64_t rootId = -1;
318     bool isDumpSimplify = false;
319     jsAccessibilityManager->DumpTreeNG(useWindowId, windowId, rootId, isDumpSimplify);
320 
321     rootId = 1;
322     jsAccessibilityManager->SetWindowId(0);
323     jsAccessibilityManager->DumpTreeNG(useWindowId, windowId, rootId, isDumpSimplify);
324 
325     jsAccessibilityManager->SetWindowId(1);
326     jsAccessibilityManager->DumpTreeNG(useWindowId, windowId, rootId, isDumpSimplify);
327 
328     /**
329      * @tc.steps: step3. test DumpHoverTestNG/DumpTreeNodeSafeAreaInfoNg
330      */
331     bool verbose = false;
332     jsAccessibilityManager->DumpHoverTestNG(windowId, rootId, 100, 100, verbose);
333     jsAccessibilityManager->DumpTreeNodeSafeAreaInfoNg(frameNode);
334     EXPECT_EQ(nodeInfo.GetAccessibilityId(), 1);
335 }
336 
337 /**
338  * @tc.name: JsAccessibilityManager006
339  * @tc.desc: UpdateVirtualNodeFocus
340  * @tc.type: FUNC
341  */
342 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager006, TestSize.Level1)
343 {
344     /**
345      * @tc.steps: step1. construct JsAccessibilityManager
346      */
347     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
348         AceType::MakeRefPtr<Pattern>(), false);
349     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
350 
351     /**
352      * @tc.steps: step2. test UpdateVirtualNodeFocus
353      */
354     Accessibility::AccessibilityElementInfo nodeInfo;
355     RefPtr<GeometryNode> geometryNode = AceType::MakeRefPtr<GeometryNode>();
356     ASSERT_NE(geometryNode, nullptr);
357     frameNode->SetGeometryNode(geometryNode);
358     jsAccessibilityManager->SaveLast(0, frameNode);
359     jsAccessibilityManager->UpdateVirtualNodeFocus();
360     auto accessibilityProperty = frameNode->GetAccessibilityProperty<NG::AccessibilityProperty>();
361     ASSERT_NE(accessibilityProperty, nullptr);
362     EXPECT_EQ(accessibilityProperty->GetAccessibilityFocusState(), false);
363 }
364 
365 /**
366  * @tc.name: JsAccessibilityManager007
367  * @tc.desc: stateObserver
368  * @tc.type: FUNC
369  */
370 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager007, TestSize.Level1)
371 {
372     /**
373      * @tc.steps: step1. construct JsAccessibilityManager
374      */
375     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
376 
377     /**
378      * @tc.steps: step2. test SubscribeToastObserver
379      */
380     auto ret = jsAccessibilityManager->SubscribeToastObserver();
381     EXPECT_EQ(ret, true);
382 
383     /**
384      * @tc.steps: step3. test UnsubscribeToastObserver
385      */
386     ret = jsAccessibilityManager->UnsubscribeToastObserver();
387     EXPECT_EQ(ret, true);
388 
389     /**
390      * @tc.steps: step4. test SubscribeStateObserver
391      */
392     ret = jsAccessibilityManager->SubscribeStateObserver(16);
393     EXPECT_EQ(ret, false);
394 
395     /**
396      * @tc.steps: step5. test UnsubscribeStateObserver
397      */
398     ret = jsAccessibilityManager->UnsubscribeStateObserver(16);
399     EXPECT_EQ(ret, false);
400 }
401 
402 /**
403  * @tc.name: JsAccessibilityManager008
404  * @tc.desc: SendAccessibilitySyncEvent, TransferAccessibilityAsyncEvent
405  * @tc.type: FUNC
406  */
407 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager008, TestSize.Level1)
408 {
409     /**
410      * @tc.steps: step1. construct JsAccessibilityManager
411      */
412     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
413     auto context = NG::PipelineContext::GetCurrentContext();
414     jsAccessibilityManager->SetPipelineContext(context);
415     jsAccessibilityManager->Register(true);
416     auto client = Accessibility::AccessibilitySystemAbilityClient::GetInstance();
417 
418     /**
419      * @tc.steps: step2. test SendAccessibilitySyncEvent with register true
420      */
421     AccessibilityEvent accessibilityEvent;
422     Accessibility::AccessibilityEventInfo eventInfo;
423     auto ret = jsAccessibilityManager->SendAccessibilitySyncEvent(accessibilityEvent, eventInfo);
424     if (client) {
425         bool isEnabled = false;
426         client->IsEnabled(isEnabled);
427         EXPECT_EQ(ret, isEnabled);
428     } else {
429         EXPECT_EQ(ret, false);
430     }
431 
432     /**
433      * @tc.steps: step3. test TransferAccessibilityAsyncEvent with register true
434      */
435     int64_t uiExtensionOffset = 1000;
436     ret = jsAccessibilityManager->TransferAccessibilityAsyncEvent(eventInfo, uiExtensionOffset);
437     if (client) {
438         bool isEnabled = false;
439         client->IsEnabled(isEnabled);
440         EXPECT_EQ(ret, isEnabled);
441     } else {
442         EXPECT_EQ(ret, false);
443     }
444 
445     /**
446      * @tc.steps: step4. test SendAccessibilitySyncEvent with register false
447      */
448     jsAccessibilityManager->Register(false);
449     ret = jsAccessibilityManager->SendAccessibilitySyncEvent(accessibilityEvent, eventInfo);
450     EXPECT_EQ(ret, false);
451     /**
452      * @tc.steps: step5. test TransferAccessibilityAsyncEvent with register false
453      */
454     ret = jsAccessibilityManager->TransferAccessibilityAsyncEvent(eventInfo, uiExtensionOffset);
455     EXPECT_EQ(ret, false);
456 }
457 
458 /**
459  * @tc.name: JsAccessibilityManager009
460  * @tc.desc: GetDelayTimeBeforeSendEvent
461  * @tc.type: FUNC
462  */
463 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager009, TestSize.Level1)
464 {
465     /**
466      * @tc.steps: step1. construct JsAccessibilityManager
467      */
468     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
469         AceType::MakeRefPtr<Pattern>(), false);
470     auto accessibilityProperty = frameNode->GetAccessibilityProperty<NG::AccessibilityProperty>();
471     accessibilityProperty->SetAccessibilityLevel("yes");
472     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
473     auto context = NG::PipelineContext::GetCurrentContext();
474     jsAccessibilityManager->SetPipelineContext(context);
475     jsAccessibilityManager->Register(true);
476 
477     /**
478      * @tc.steps: step2. test GetPipelineByWindowId
479      */
480     AccessibilityEvent event;
481     int64_t ret;
482     ret = jsAccessibilityManager->GetDelayTimeBeforeSendEvent(event, frameNode);
483     EXPECT_EQ(ret, 0);
484     // test GetDelayTimeBeforeSendEvent with node selected, event type click, return 0
485     event.type = AccessibilityEventType::CLICK;
486     accessibilityProperty->SetUserSelected(true);
487     ret = jsAccessibilityManager->GetDelayTimeBeforeSendEvent(event, frameNode);
488     EXPECT_EQ(ret, 20);
489     // test GetDelayTimeBeforeSendEvent with node not selected, return 0
490     accessibilityProperty->SetUserSelected(false);
491     ret = jsAccessibilityManager->GetDelayTimeBeforeSendEvent(event, frameNode);
492     EXPECT_EQ(ret, 20);
493 
494     ret = jsAccessibilityManager->GetDelayTimeBeforeSendEvent(event, nullptr);
495     EXPECT_EQ(ret, 0);
496 }
497 
498 /**
499  * @tc.name: JsAccessibilityManager010
500  * @tc.desc: GetPipelineByWindowId
501  * @tc.type: FUNC
502  */
503 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager010, TestSize.Level1)
504 {
505     /**
506      * @tc.steps: step1. construct JsAccessibilityManager
507      */
508     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
509     auto context = NG::PipelineContext::GetCurrentContext();
510     jsAccessibilityManager->SetPipelineContext(context);
511     jsAccessibilityManager->Register(true);
512     jsAccessibilityManager->SetWindowId(1);
513 
514     /**
515      * @tc.steps: step2. test GetPipelineByWindowId
516      */
517     auto pattern = jsAccessibilityManager->GetPipelineByWindowId(1);
518     EXPECT_NE(pattern, nullptr);
519 
520     pattern = jsAccessibilityManager->GetPipelineByWindowId(2);
521     EXPECT_EQ(pattern, nullptr);
522 }
523 
524 /**
525  * @tc.name: GetPipelineByWindowId002
526  * @tc.desc: GetPipelineByWindowId
527  * @tc.type: FUNC
528  */
529 HWTEST_F(JsAccessibilityManagerTest, GetPipelineByWindowId002, TestSize.Level1)
530 {
531     /**
532      * @tc.steps: step1. construct JsAccessibilityManager
533      */
534     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
535     auto context = NG::PipelineContext::GetCurrentContext();
536     jsAccessibilityManager->SetPipelineContext(context);
537     jsAccessibilityManager->Register(true);
538     jsAccessibilityManager->SetWindowId(1);
539 
540     RefPtr<NG::PipelineContext> context1 = nullptr;
541     jsAccessibilityManager->AddSubPipelineContext(context1);
542 
543     auto context2 = AceType::MakeRefPtr<NG::PipelineContext>();
544     context2->SetWindowId(2);
545     jsAccessibilityManager->AddSubPipelineContext(context2);
546     /**
547      * @tc.steps: step2. test GetSubPipelineContext in GetPipelineByWindowId
548      */
549     auto pattern = jsAccessibilityManager->GetPipelineByWindowId(1);
550     EXPECT_NE(pattern, nullptr);
551 
552     pattern = jsAccessibilityManager->GetPipelineByWindowId(2);
553     EXPECT_NE(pattern, nullptr);
554 }
555 
556 /**
557  * @tc.name: AccessibilityDfxTest003
558  * @tc.desc: inject SecurityClickAction normal
559  * @tc.type: FUNC
560  */
561 HWTEST_F(JsAccessibilityManagerTest, AccessibilityHidumperTest001, TestSize.Level1)
562 {
563     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
564     ASSERT_NE(jsAccessibilityManager, nullptr);
565     auto context = NG::PipelineContext::GetCurrentContext();
566     ASSERT_NE(context, nullptr);
567     jsAccessibilityManager->SetPipelineContext(context);
568     jsAccessibilityManager->Register(true);
569     jsAccessibilityManager->SetWindowId(1);
570     auto root = context->GetRootElement();
571     ASSERT_NE(root, nullptr);
572     auto rootId = root->GetAccessibilityId();
573     std::string idStr = std::to_string(rootId);
574     auto accessibilityProperty = root->GetAccessibilityProperty<NG::AccessibilityProperty>();
575     ASSERT_NE(accessibilityProperty, nullptr);
576     // not SecurityClickAction
577     std::vector<std::string> params = {"-inspector", "--inject-action", idStr, "--SecurityClickAction"};
578     // suppose to parse inject-action normal
579     jsAccessibilityManager->DumpInjectActionTest(params);
580     ASSERT_NE(accessibilityProperty->GetSecurityClickActionFunc(), nullptr);
581 
582     // reset
583     accessibilityProperty->SetSecurityClickAction(nullptr);
584 }
585 
586 /**
587  * @tc.name: AccessibilityDfxTest003
588  * @tc.desc: inject SecurityClickAction abnormal
589  * @tc.type: FUNC
590  */
591 HWTEST_F(JsAccessibilityManagerTest, AccessibilityHidumperTest002, TestSize.Level1)
592 {
593     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
594     ASSERT_NE(jsAccessibilityManager, nullptr);
595     auto context = NG::PipelineContext::GetCurrentContext();
596     ASSERT_NE(context, nullptr);
597     jsAccessibilityManager->SetPipelineContext(context);
598     jsAccessibilityManager->Register(true);
599     jsAccessibilityManager->SetWindowId(1);
600     auto root = context->GetRootElement();
601     ASSERT_NE(root, nullptr);
602     auto rootId = root->GetAccessibilityId();
603     std::string idStr = std::to_string(rootId);
604     auto accessibilityProperty = root->GetAccessibilityProperty<NG::AccessibilityProperty>();
605     ASSERT_NE(accessibilityProperty, nullptr);
606     std::vector<std::string> params = {"-inspector", "--inject-action", idStr, "--NotSecurityClickAction"};
607     // suppose to parse inject-action normal
608     jsAccessibilityManager->DumpInjectActionTest(params);
609     ASSERT_EQ(accessibilityProperty->GetSecurityClickActionFunc(), nullptr);
610 
611     // NotifyChildAction
612     params = {"-inspector", "--inject-action", idStr, "--NotifyChildAction", "5"};
613     jsAccessibilityManager->DumpInjectActionTest(params);
614     ASSERT_EQ(accessibilityProperty->GetSecurityClickActionFunc(), nullptr);
615     ASSERT_NE(accessibilityProperty->GetNotifyChildActionFunc(), nullptr);
616     // reset
617     accessibilityProperty->SetSecurityClickAction(nullptr);
618     accessibilityProperty->SetNotifyChildAction(nullptr);
619 }
620 /**
621  * @tc.name: JsAccessibilityManager011
622  * @tc.desc: CheckDumpInfoParams,OnDumpInfoNG,CheckDumpHandleEventParams,DumpProperty
623  * @tc.type: FUNC
624  */
625 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager011, TestSize.Level1)
626 {
627     /**
628      * @tc.steps: step1. construct JsAccessibilityManager
629      */
630     std::vector<std::string> params = {};
631     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
632 
633     /**
634      * @tc.steps: step2. test CheckDumpInfoParams
635      */
636     auto ret = jsAccessibilityManager->CheckDumpInfoParams(params);
637     EXPECT_EQ(ret, false);
638 
639     params = { "-inspector", "-accessibility", "-simplify"};
640     ret = jsAccessibilityManager->CheckDumpInfoParams(params);
641     EXPECT_EQ(ret, true);
642 
643     params = { "-inspector", "-accessibility"};
644     ret = jsAccessibilityManager->CheckDumpInfoParams(params);
645     EXPECT_EQ(ret, true);
646 
647     /**
648      * @tc.steps: step3. test OnDumpInfoNG
649      */
650     params = { "-inspector", "-accessibility", "-simplify", "-w", "1"};
651     jsAccessibilityManager->OnDumpInfoNG(params, 1, false);
652 
653     /**
654      * @tc.steps: step4. test CheckDumpHandleEventParams
655      */
656     ret = jsAccessibilityManager->CheckDumpHandleEventParams(params);
657     EXPECT_EQ(ret, true);
658 
659     /**
660      * @tc.steps: step5. test DumpProperty
661      */
662     jsAccessibilityManager->DumpProperty(params);
663 }
664 
665 /**
666  * @tc.name: JsAccessibilityManager012
667  * @tc.desc: Test UIExtensionManager ConvertActionTypeToBoolen
668  * @tc.type: FUNC
669  */
670 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager012, TestSize.Level1)
671 {
672     /**
673      * @tc.steps: step1. construct JsAccessibilityManager
674      */
675     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
676     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
677     auto context = NG::PipelineContext::GetCurrentContext();
678     int64_t elementId = 0;
679     std::map<std::string, std::string> actionArguments;
680     /**
681      * @tc.steps: step2. test ConvertActionTypeToBoolen
682      */
683     auto ret = jsAccessibilityManager->ConvertActionTypeToBoolen(ActionType::ACCESSIBILITY_ACTION_FOCUS,
684         frameNode, elementId, context, actionArguments);
685     EXPECT_EQ(ret, false);
686 
687     ret = jsAccessibilityManager->ConvertActionTypeToBoolen(ActionType::ACCESSIBILITY_ACTION_CLEAR_FOCUS,
688         frameNode, elementId, context, actionArguments);
689     EXPECT_EQ(ret, false);
690 
691     ret = jsAccessibilityManager->ConvertActionTypeToBoolen(ActionType::ACCESSIBILITY_ACTION_CLICK,
692         frameNode, elementId, context, actionArguments);
693     EXPECT_EQ(ret, false);
694 
695     ret = jsAccessibilityManager->ConvertActionTypeToBoolen(ActionType::ACCESSIBILITY_ACTION_LONG_CLICK,
696         frameNode, elementId, context, actionArguments);
697     EXPECT_EQ(ret, false);
698 
699     ret = jsAccessibilityManager->ConvertActionTypeToBoolen(ActionType::ACCESSIBILITY_ACTION_ACCESSIBILITY_FOCUS,
700         frameNode, elementId, context, actionArguments);
701     EXPECT_EQ(ret, true);
702 
703     ret = jsAccessibilityManager->ConvertActionTypeToBoolen(ActionType::ACCESSIBILITY_ACTION_CLEAR_ACCESSIBILITY_FOCUS,
704         frameNode, elementId, context, actionArguments);
705     EXPECT_EQ(ret, false);
706 }
707 
708 /**
709  * @tc.name: JsAccessibilityManager013
710  * @tc.desc: Test UIExtensionManager SendEventToAccessibilityWithNode/SendEventToAccessibilityWithNodeInner
711  * @tc.type: FUNC
712  */
713 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager013, TestSize.Level1)
714 {
715     /**
716      * @tc.steps: step1. construct JsAccessibilityManager
717      */
718     auto rootNode = FrameNode::CreateFrameNode(V2::WINDOW_SCENE_ETS_TAG,
719         ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>(), true);
720     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
721         AceType::MakeRefPtr<Pattern>(), false);
722     rootNode->AddChild(frameNode);
723     auto accessibilityProperty = frameNode->GetAccessibilityProperty<NG::AccessibilityProperty>();
724     accessibilityProperty->SetAccessibilityLevel("yes");
725     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
726 
727     /**
728      * @tc.steps: step2. test SendEventToAccessibilityWithNode
729      */
730     AccessibilityEvent accessibilityEvent;
731     auto context = NG::PipelineContext::GetCurrentContext();
732     EXPECT_EQ(jsAccessibilityManager->context_.Upgrade(), nullptr);
733     jsAccessibilityManager->SetPipelineContext(context);
734     EXPECT_NE(jsAccessibilityManager->context_.Upgrade(), nullptr);
735     jsAccessibilityManager->SendEventToAccessibilityWithNode(accessibilityEvent, frameNode, context);
736 
737     /**
738      * @tc.steps: step2. test SendEventToAccessibilityWithNodeInner
739      */
740     jsAccessibilityManager->SendEventToAccessibilityWithNodeInner(accessibilityEvent, frameNode, context);
741 }
742 
743 /**
744  * @tc.name: JsAccessibilityManager014
745  * @tc.desc: Test UIExtensionManager RegisterSubWindowInteractionOperation/CanAccessibilityFocused
746  * @tc.type: FUNC
747  */
748 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager014, TestSize.Level1)
749 {
750     /**
751      * @tc.steps: step1. construct JsAccessibilityManager
752      */
753     auto rootNode = FrameNode::CreateFrameNode(V2::WINDOW_SCENE_ETS_TAG,
754         ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>(), true);
755     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
756         AceType::MakeRefPtr<Pattern>(), false);
757     rootNode->AddChild(frameNode);
758     auto accessibilityProperty = frameNode->GetAccessibilityProperty<NG::AccessibilityProperty>();
759     accessibilityProperty->SetAccessibilityLevel("yes");
760     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
761 
762     /**
763      * @tc.steps: step2. test RegisterSubWindowInteractionOperation
764      */
765     jsAccessibilityManager->RegisterSubWindowInteractionOperation(0);
766 
767     /**
768      * @tc.steps: step3. test CanAccessibilityFocused
769      */
770     auto node = jsAccessibilityManager->GetAccessibilityNodeFromPage(0);
771     EXPECT_FALSE(jsAccessibilityManager->CanAccessibilityFocused(node));
772 }
773 
774 /**
775  * @tc.name: JsAccessibilityManager015
776  * @tc.desc: Test UIExtensionManager NeedRegisterChildTree
777  * @tc.type: FUNC
778  */
779 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager015, TestSize.Level1)
780 {
781     /**
782      * @tc.steps: step1. construct JsAccessibilityManager
783      */
784     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
785 
786     /**
787      * @tc.steps: step2. test NeedRegisterChildTree
788      */
789     uint32_t parentWindowId = 0;
790     int32_t parentTreeId = 0;
791     int64_t parentElementId = 0;
792     jsAccessibilityManager->parentWindowId_ = parentWindowId;
793     jsAccessibilityManager->parentTreeId_ = parentTreeId;
794     jsAccessibilityManager->parentElementId_ = parentElementId;
795     EXPECT_TRUE(jsAccessibilityManager->NeedRegisterChildTree(parentWindowId, parentTreeId, parentElementId));
796 
797     jsAccessibilityManager->Register(true);
798     EXPECT_FALSE(jsAccessibilityManager->NeedRegisterChildTree(parentWindowId, parentTreeId, parentElementId));
799 
800     jsAccessibilityManager->parentWindowId_ = 1;
801     EXPECT_TRUE(jsAccessibilityManager->NeedRegisterChildTree(parentWindowId, parentTreeId, parentElementId));
802     jsAccessibilityManager->parentTreeId_ = 1;
803     EXPECT_TRUE(jsAccessibilityManager->NeedRegisterChildTree(parentWindowId, parentTreeId, parentElementId));
804     jsAccessibilityManager->parentElementId_ = 1;
805     EXPECT_TRUE(jsAccessibilityManager->NeedRegisterChildTree(parentWindowId, parentTreeId, parentElementId));
806 }
807 
808 /**
809  * @tc.name: JsAccessibilityManager016
810  * @tc.desc: Test UIExtensionManager OnDumpChildInfoForThird/CheckIsChildElement
811  * @tc.type: FUNC
812  */
813 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager016, TestSize.Level1)
814 {
815     /**
816      * @tc.steps: step1. construct JsAccessibilityManager
817      */
818     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
819     std::vector<std::string> params = {};
820     std::vector<std::string> info = {};
821 
822     /**
823      * @tc.steps: step2. test CheckIsChildElement
824      */
825     int64_t elementId = 0;
826     int64_t rootId = 0;
827     EXPECT_FALSE(
828         jsAccessibilityManager->CheckIsChildElement(elementId, params, info, DumpMode::TREE, rootId));
829     EXPECT_FALSE(
830         jsAccessibilityManager->CheckIsChildElement(elementId, params, info, DumpMode::NODE, rootId));
831 }
832 
833 /**
834  * @tc.name: JsAccessibilityManager017
835  * @tc.desc: Test UIExtensionManager RegisterInteractionOperation
836  * @tc.type: FUNC
837  */
838 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager017, TestSize.Level1)
839 {
840     /**
841      * @tc.steps: step1. construct JsAccessibilityManager
842      */
843     auto rootNode = FrameNode::CreateFrameNode(V2::WINDOW_SCENE_ETS_TAG,
844         ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>(), true);
845     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
846         AceType::MakeRefPtr<Pattern>(), false);
847     rootNode->AddChild(frameNode);
848     auto accessibilityProperty = frameNode->GetAccessibilityProperty<NG::AccessibilityProperty>();
849     accessibilityProperty->SetAccessibilityLevel("yes");
850     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
851     std::vector<std::string> params = {};
852     std::vector<std::string> info = {};
853 
854     /**
855      * @tc.steps: step2. test RegisterInteractionOperation
856      */
857     auto ret = jsAccessibilityManager->RegisterInteractionOperation(0);
858     EXPECT_EQ(ret, false);
859 }
860 
861 /**
862  * @tc.name: JsAccessibilityManager018
863  * @tc.desc: Test UIExtensionManager RegisterAccessibilityChildTreeCallback/DeregisterAccessibilityChildTreeCallback
864  * @tc.type: FUNC
865  */
866 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager018, TestSize.Level1)
867 {
868     /**
869      * @tc.steps: step1. construct JsAccessibilityManager
870      */
871     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
872     EXPECT_EQ(0, jsAccessibilityManager->childTreeCallbackMap_.size());
873 
874     /**
875      * @tc.steps: step2. test RegisterAccessibilityChildTreeCallback
876      */
877     int64_t elementId0 = 0;
878     auto callback0 = std::make_shared<MockAccessibilityChildTreeCallback>(0);
879     jsAccessibilityManager->RegisterAccessibilityChildTreeCallback(elementId0, callback0);
880     EXPECT_EQ(1, jsAccessibilityManager->childTreeCallbackMap_.size());
881     EXPECT_EQ(callback0, jsAccessibilityManager->childTreeCallbackMap_[elementId0]);
882     int64_t elementId1 = 1;
883     auto callback1 = std::make_shared<MockAccessibilityChildTreeCallback>(1);
884     jsAccessibilityManager->RegisterAccessibilityChildTreeCallback(elementId1, callback1);
885     EXPECT_EQ(2, jsAccessibilityManager->childTreeCallbackMap_.size());
886     EXPECT_EQ(callback1, jsAccessibilityManager->childTreeCallbackMap_[elementId1]);
887 
888     /**
889      * @tc.steps: step3. test DeregisterAccessibilityChildTreeCallback
890      */
891     jsAccessibilityManager->DeregisterAccessibilityChildTreeCallback(elementId1);
892     EXPECT_EQ(1, jsAccessibilityManager->childTreeCallbackMap_.size());
893     EXPECT_EQ(callback0, jsAccessibilityManager->childTreeCallbackMap_[elementId0]);
894     jsAccessibilityManager->DeregisterAccessibilityChildTreeCallback(elementId0);
895     EXPECT_EQ(0, jsAccessibilityManager->childTreeCallbackMap_.size());
896 }
897 
898 /**
899  * @tc.name: JsAccessibilityManager019
900  * @tc.desc: Test UIExtensionManager RegisterAccessibilitySAObserverCallback/DeregisterAccessibilitySAObserverCallback
901  * @tc.type: FUNC
902  */
903 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager019, TestSize.Level1)
904 {
905     /**
906      * @tc.steps: step1. construct JsAccessibilityManager
907      */
908     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
909     EXPECT_EQ(0, jsAccessibilityManager->componentSACallbackMap_.size());
910 
911     /**
912      * @tc.steps: step2. test RegisterAccessibilitySAObserverCallback
913      */
914     int64_t elementId0 = 0;
915     auto callback0 = std::make_shared<MockAccessibilitySAObserverCallback>(0);
916     jsAccessibilityManager->RegisterAccessibilitySAObserverCallback(elementId0, callback0);
917     EXPECT_EQ(1, jsAccessibilityManager->componentSACallbackMap_.size());
918     EXPECT_EQ(callback0, jsAccessibilityManager->componentSACallbackMap_[elementId0]);
919     int64_t elementId1 = 1;
920     auto callback1 = std::make_shared<MockAccessibilitySAObserverCallback>(1);
921     jsAccessibilityManager->RegisterAccessibilitySAObserverCallback(elementId1, callback1);
922     EXPECT_EQ(2, jsAccessibilityManager->componentSACallbackMap_.size());
923     EXPECT_EQ(callback1, jsAccessibilityManager->componentSACallbackMap_[elementId1]);
924 
925     /**
926      * @tc.steps: step3. test DeregisterAccessibilitySAObserverCallback
927      */
928     jsAccessibilityManager->DeregisterAccessibilitySAObserverCallback(elementId1);
929     EXPECT_EQ(1, jsAccessibilityManager->componentSACallbackMap_.size());
930     EXPECT_EQ(callback0, jsAccessibilityManager->componentSACallbackMap_[elementId0]);
931     jsAccessibilityManager->DeregisterAccessibilitySAObserverCallback(elementId0);
932     EXPECT_EQ(0, jsAccessibilityManager->componentSACallbackMap_.size());
933 }
934 /**
935  * @tc.name: UpdateWindowInfo001
936  * @tc.desc: UpdateWindowInfo
937  * @tc.type: FUNC
938  */
939 HWTEST_F(JsAccessibilityManagerTest, UpdateWindowInfo001, TestSize.Level1)
940 {
941     /**
942      * @tc.steps: step1. construct jsAccessibilityManager
943      */
944     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
945     ASSERT_NE(jsAccessibilityManager, nullptr);
946     auto pipelineContext = MockContainer::Current()->GetPipelineContext();
947     ASSERT_NE(pipelineContext, nullptr);
948     jsAccessibilityManager->context_ = pipelineContext;
949 
950     /**
951      * @tc.steps: step2. construct windowInfo
952      */
953     AccessibilityWindowInfo windowInfo;
954     windowInfo.left = 10;
955     windowInfo.top = 10;
956     windowInfo.scaleX = 1.0f;
957     windowInfo.scaleY = 1.0f;
958 
959     /**
960      * @tc.steps: step3. call and test UpdateWindowInfo method
961      */
962     jsAccessibilityManager->UpdateWindowInfo(windowInfo, pipelineContext);
963     EXPECT_EQ(windowInfo.left, 10);
964     EXPECT_EQ(windowInfo.top, 10);
965     EXPECT_EQ(windowInfo.scaleX, 1.0f);
966     EXPECT_EQ(windowInfo.scaleY, 1.0f);
967 
968     auto container = Platform::AceContainer::GetContainer(pipelineContext->GetInstanceId());
969     ASSERT_NE(container, nullptr);
970     container->SetSingleHandTransform(Platform::SingleHandTransform(100.0f, 200.0f, 0.7f, 0.6f));
971 
972     jsAccessibilityManager->UpdateWindowInfo(windowInfo, pipelineContext);
973     EXPECT_EQ(windowInfo.left, 107.0f);
974     EXPECT_EQ(windowInfo.top, 206.0f);
975     EXPECT_EQ(windowInfo.scaleX, 0.7f);
976     EXPECT_EQ(windowInfo.scaleY, 0.6f);
977 }
978 
979 /**
980  * @tc.name: GenerateWindowInfo001
981  * @tc.desc: GenerateWindowInfo
982  * @tc.type: FUNC
983  */
984 HWTEST_F(JsAccessibilityManagerTest, GenerateWindowInfo001, TestSize.Level1)
985 {
986     /**
987      * @tc.steps: step1. construct jsAccessibilityManager
988      */
989     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
990     ASSERT_NE(jsAccessibilityManager, nullptr);
991 
992     /**
993      * @tc.steps: step3. call and test GenerateWindowInfo method
994      */
995     auto windowInfo = jsAccessibilityManager->GenerateWindowInfo(nullptr, nullptr);
996     EXPECT_EQ(windowInfo.left, 0);
997     EXPECT_EQ(windowInfo.top, 0);
998     EXPECT_EQ(windowInfo.scaleX, 1.0f);
999     EXPECT_EQ(windowInfo.scaleY, 1.0f);
1000 
1001     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
1002         AceType::MakeRefPtr<Pattern>(), false);
1003     windowInfo = jsAccessibilityManager->GenerateWindowInfo(frameNode, nullptr);
1004 
1005     auto pipelineContext = MockContainer::Current()->GetPipelineContext();
1006     ASSERT_NE(pipelineContext, nullptr);
1007     jsAccessibilityManager->context_ = pipelineContext;
1008     auto container = Platform::AceContainer::GetContainer(pipelineContext->GetInstanceId());
1009     ASSERT_NE(container, nullptr);
1010     auto singleHandTransform = container->GetSingleHandTransform();
1011     container->SetSingleHandTransform(Platform::SingleHandTransform(0.0f, 0.0f, 1.0f, 1.0f));
1012 
1013     auto context = NG::PipelineContext::GetCurrentContext();
1014     ASSERT_NE(context, nullptr);
1015     jsAccessibilityManager->getParentRectHandler_ = nullptr;
1016     jsAccessibilityManager->getParentRectHandlerNew_ = nullptr;
1017     windowInfo = jsAccessibilityManager->GenerateWindowInfo(nullptr, context);
1018 
1019     EXPECT_EQ(windowInfo.left, 0);
1020     EXPECT_EQ(windowInfo.top, 0);
1021     EXPECT_EQ(windowInfo.scaleX, 1.0f);
1022     EXPECT_EQ(windowInfo.scaleY, 1.0f);
1023 
1024     /**
1025      * @tc.steps: step4. mock IsReentrantLimit, and then test GenerateWindowInfo method again
1026      */
1027     jsAccessibilityManager->RegisterGetParentRectHandler();
1028     EXPECT_NE(jsAccessibilityManager->getParentRectHandlerNew_, nullptr);
1029     jsAccessibilityManager->SetReentrantLimit(true);
1030     windowInfo = jsAccessibilityManager->GenerateWindowInfo(frameNode, context);
1031 
1032     EXPECT_EQ(windowInfo.left, 0);
1033     EXPECT_EQ(windowInfo.top, 0);
1034     EXPECT_EQ(windowInfo.scaleX, 1.0f);
1035     EXPECT_EQ(windowInfo.scaleY, 1.0f);
1036 
1037     /**
1038      * @tc.steps: step5. mock SingleHandTransform, and then test GenerateWindowInfo method again
1039      */
1040     container->SetSingleHandTransform(Platform::SingleHandTransform(100.0f, 200.0f, 0.7f, 0.7f));
1041 
1042     jsAccessibilityManager->UpdateWindowInfo(windowInfo, pipelineContext);
1043     EXPECT_EQ(windowInfo.left, 100.0f);
1044     EXPECT_EQ(windowInfo.top, 200.0f);
1045     EXPECT_EQ(windowInfo.scaleX, 0.7f);
1046     EXPECT_EQ(windowInfo.scaleY, 0.7f);
1047 }
1048 
1049 /**
1050  * @tc.name: SingleHandTransformTest001
1051  * @tc.desc: SetSingleHandTransform & GetSingleHandTransform
1052  * @tc.type: FUNC
1053  */
1054 HWTEST_F(JsAccessibilityManagerTest, SingleHandTransformTest001, TestSize.Level1)
1055 {
1056     /**
1057      * @tc.steps: step1. construct AceContainer
1058      */
1059     auto pipelineContext = MockContainer::Current()->GetPipelineContext();
1060     ASSERT_NE(pipelineContext, nullptr);
1061     auto container = Platform::AceContainer::GetContainer(pipelineContext->GetInstanceId());
1062     ASSERT_NE(container, nullptr);
1063     container->uIContentType_ = UIContentType::PREVIEW_UI_EXTENSION;
1064 
1065     /**
1066      * @tc.steps: step2. test SetSingleHandTransform & GetSingleHandTransform
1067      */
1068     container->SetSingleHandTransform(Platform::SingleHandTransform(100.0f, 200.0f, 0.7f, 0.6f));
1069     auto singleHandTransform = container->GetSingleHandTransform();
1070     EXPECT_EQ(singleHandTransform.x_, 100.0f);
1071     EXPECT_EQ(singleHandTransform.y_, 200.0f);
1072     EXPECT_EQ(singleHandTransform.scaleX_, 0.7f);
1073     EXPECT_EQ(singleHandTransform.scaleY_, 0.6f);
1074 }
1075 
1076 /**
1077  * @tc.name: JsAccessibilityManager020
1078  * @tc.desc: dump event test  DumpProcessEventParameters
1079  * @tc.type: FUNC
1080  */
1081 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager020, TestSize.Level1)
1082 {
1083     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
1084     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
1085     auto context = NG::PipelineContext::GetCurrentContext();
1086     jsAccessibilityManager->SetPipelineContext(context);
1087     jsAccessibilityManager->Register(true);
1088     bool ret;
1089     AccessibilityEvent accessibilityEvent;
1090     accessibilityEvent.nodeId = 1;
1091     accessibilityEvent.windowChangeTypes = WindowUpdateType::WINDOW_UPDATE_ACTIVE;
1092     accessibilityEvent.type = AccessibilityEventType::PAGE_CHANGE;
1093     // 1. parameter stackNodeId
1094     std::vector<std::string> params;
1095     params.push_back("-inspector");
1096     params.push_back("1");
1097 
1098     params.push_back("--stackNodeId");
1099 
1100     ret = jsAccessibilityManager->DumpProcessEventParameters(accessibilityEvent, params);
1101     EXPECT_EQ(ret, false);
1102 
1103     int64_t testStackId = 2;
1104     params.push_back(std::to_string(testStackId));
1105     ret = jsAccessibilityManager->DumpProcessEventParameters(accessibilityEvent, params);
1106     EXPECT_EQ(ret, true);
1107     EXPECT_EQ(accessibilityEvent.stackNodeId, testStackId);
1108 
1109     // 2. parameter beforeText
1110     params.push_back("--beforeText");
1111     ret = jsAccessibilityManager->DumpProcessEventParameters(accessibilityEvent, params);
1112     EXPECT_EQ(ret, false);
1113 
1114     std::string beforeText = "teststr1";
1115     params.push_back(beforeText);
1116     ret = jsAccessibilityManager->DumpProcessEventParameters(accessibilityEvent, params);
1117     EXPECT_EQ(ret, true);
1118     EXPECT_EQ(accessibilityEvent.beforeText, beforeText);
1119 }
1120 
1121 /**
1122  * @tc.name: JsAccessibilityManager020
1123  * @tc.desc: dump event test  DumpProcessEventParameters
1124  * @tc.type: FUNC
1125  */
1126 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager0201, TestSize.Level1)
1127 {
1128     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
1129     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
1130     auto context = NG::PipelineContext::GetCurrentContext();
1131     jsAccessibilityManager->SetPipelineContext(context);
1132     jsAccessibilityManager->Register(true);
1133     bool ret;
1134     AccessibilityEvent accessibilityEvent;
1135     accessibilityEvent.nodeId = 1;
1136     accessibilityEvent.windowChangeTypes = WindowUpdateType::WINDOW_UPDATE_ACTIVE;
1137     accessibilityEvent.type = AccessibilityEventType::PAGE_CHANGE;
1138     std::vector<std::string> params;
1139     params.push_back("-inspector");
1140     params.push_back("1");
1141 
1142     // 3. parameter latestContent
1143     params.push_back("--latestContent");
1144     ret = jsAccessibilityManager->DumpProcessEventParameters(accessibilityEvent, params);
1145     EXPECT_EQ(ret, false);
1146 
1147     std::string latestContent = "teststr2";
1148     params.push_back(latestContent);
1149     ret = jsAccessibilityManager->DumpProcessEventParameters(accessibilityEvent, params);
1150     EXPECT_EQ(ret, true);
1151     EXPECT_EQ(accessibilityEvent.latestContent, latestContent);
1152 
1153     // 4. parameter latestContent
1154     params.push_back("--textAnnounced");
1155     ret = jsAccessibilityManager->DumpProcessEventParameters(accessibilityEvent, params);
1156     EXPECT_EQ(ret, false);
1157 
1158     std::string textAnnounced = "teststr3";
1159     params.push_back(textAnnounced);
1160     ret = jsAccessibilityManager->DumpProcessEventParameters(accessibilityEvent, params);
1161     EXPECT_EQ(ret, true);
1162     EXPECT_EQ(accessibilityEvent.textAnnouncedForAccessibility, textAnnounced);
1163 }
1164 
1165 /**
1166  * @tc.name: JsAccessibilityManager021
1167  * @tc.desc: dump event test  DumpProcessEventParameters
1168  * @tc.type: FUNC
1169  */
1170 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager021, TestSize.Level1)
1171 {
1172     auto context = NG::PipelineContext::GetCurrentContext();
1173     CHECK_NULL_VOID(context);
1174     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
1175     CHECK_NULL_VOID(frameNode);
1176     auto root = context->GetRootElement();
1177     CHECK_NULL_VOID(root);
1178     root->AddChild(frameNode);
1179 
1180 
1181     MockJsAccessibilityManager mockJsManger;
1182     mockJsManger.SetPipelineContext(context);
1183     mockJsManger.Register(true);
1184 
1185     int64_t nodeId = frameNode->GetAccessibilityId();
1186     int32_t eventId = 2;
1187     // 1. check parameter fail
1188     std::vector<std::string> params;
1189     params.push_back("-inspector");
1190     params.push_back("1");
1191     params.push_back("--stackNodeId");
1192     EXPECT_CALL(mockJsManger, SendEventToAccessibilityWithNode(_, _, _))
1193         .Times(0);
1194 
1195     mockJsManger.DumpSendEventTest(nodeId, eventId, params);
1196 
1197     // 2. check parameter success
1198     int64_t testStackId = 2;
1199     params.push_back(std::to_string(testStackId));
1200 
1201     EXPECT_CALL(mockJsManger, SendEventToAccessibilityWithNode(_, _, _))
1202         .Times(1);
1203 
1204     mockJsManger.DumpSendEventTest(nodeId, eventId, params);
1205 }
1206 
1207 /**
1208  * @tc.name: JsAccessibilityManager022
1209  * @tc.desc: dump event test  OnDumpInfoNG
1210  * @tc.type: FUNC
1211  */
1212 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager022, TestSize.Level1)
1213 {
1214     auto context = NG::PipelineContext::GetCurrentContext();
1215     CHECK_NULL_VOID(context);
1216     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
1217     CHECK_NULL_VOID(frameNode);
1218     auto root = context->GetRootElement();
1219     CHECK_NULL_VOID(root);
1220     root->AddChild(frameNode);
1221     MockJsAccessibilityManager mockJsManger;
1222     mockJsManger.SetPipelineContext(context);
1223     mockJsManger.Register(true);
1224 
1225     std::vector<std::string> params;
1226 
1227     // 1.  dump event
1228     params.push_back("-inspector");
1229     params.push_back("--event-test");
1230     params.push_back(std::to_string(frameNode->GetAccessibilityId()).c_str());
1231     params.push_back("2");
1232 
1233     EXPECT_CALL(mockJsManger, SendEventToAccessibilityWithNode(_, _, _))
1234         .Times(1);
1235     mockJsManger.OnDumpInfoNG(params, 1, false);
1236 }
1237 
1238 /**
1239  * @tc.name: JsAccessibilityManager023
1240  * @tc.desc: UpdateAccessibilityElementInfo ScrollTriggerable
1241  * @tc.type: FUNC
1242  */
1243 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager023, TestSize.Level1)
1244 {
1245     /**
1246      * @tc.steps: step1. construct JsAccessibilityManager
1247      * @tc.desc: Create a FrameNode object and initialize the JsAccessibilityManager object.
1248      */
1249     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
1250     CHECK_NULL_VOID(frameNode);
1251     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
1252     Accessibility::AccessibilityElementInfo nodeInfo;
1253 
1254     // Update information in nodeInfo and verify that its default scrollable is true
1255     jsAccessibilityManager->UpdateAccessibilityElementInfo(frameNode, nodeInfo);
1256     CHECK_NULL_VOID(jsAccessibilityManager);
1257     EXPECT_EQ(nodeInfo.GetAccessibilityScrollable(), true);
1258 
1259     /**
1260     * @tc.steps: step2. Initialize accessibilityProperty and set ScrollTriggerable to false.
1261     * @tc.expected: The updated nodeInfo's ScrollTriggerable property should be false.
1262     */
1263     auto accessibilityProperty = frameNode->GetAccessibilityProperty<NG::AccessibilityProperty>();
1264     CHECK_NULL_VOID(accessibilityProperty);
1265     accessibilityProperty->SetUserScrollTriggerable(false);
1266     jsAccessibilityManager->UpdateAccessibilityElementInfo(frameNode, nodeInfo);
1267     EXPECT_EQ(nodeInfo.GetAccessibilityScrollable(), false);
1268 
1269     /**
1270     * @tc.steps: step3. Reset the ScrollTriggerable property of accessibilityProperty.
1271     * @tc.expected: The updated nodeInfo's ScrollTriggerable property should be true.
1272     */
1273     accessibilityProperty->ResetUserScrollTriggerable();
1274     jsAccessibilityManager->UpdateAccessibilityElementInfo(frameNode, nodeInfo);
1275     EXPECT_EQ(nodeInfo.GetAccessibilityScrollable(), true);
1276 }
1277 
1278 class MockRenderContextTest : public RenderContext {
1279 public:
GetPaintRectWithoutTransform()1280     RectF GetPaintRectWithoutTransform() override
1281     {
1282         return *retf;
1283     }
1284     std::shared_ptr<RectF> retf;
1285 };
1286 
1287 /**
1288  * @tc.name: FrameNodeAccessibilityVisible02
1289  * @tc.desc: Test the function accessibilityVisible
1290  * @tc.type: FUNC
1291  */
1292 HWTEST_F(JsAccessibilityManagerTest, FrameNodeAccessibilityVisible02, TestSize.Level1)
1293 {
1294     //@tc.steps: step1. create parent frameNode and set up its rect.
1295     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
1296     CHECK_NULL_VOID(frameNode);
1297     EXPECT_NE(frameNode->pattern_, nullptr);
1298     frameNode->isActive_ = true;
1299     auto pipeline = frameNode->GetContext();
1300     auto parentRender = AceType::MakeRefPtr<MockRenderContextTest>();
1301     CHECK_NULL_VOID(parentRender);
1302     auto parentRec = std::make_shared<RectF>(10.0, 10.0, 10.0, 5.0);
1303     parentRender->retf = parentRec;
1304     frameNode->renderContext_ = parentRender;
1305     //@tc.steps: step2. create child frameNode and set up its rect.
1306     auto childNode = FrameNode::CreateFrameNode(
1307     "child", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>());
1308     childNode->isActive_ = true;
1309     auto childRender = AceType::MakeRefPtr<MockRenderContextTest>();
1310     CHECK_NULL_VOID(childRender);
1311     auto childRec = std::make_shared<RectF>(10.0, 10.0, 10.0, 10.0);
1312     childRender->retf = childRec;
1313     childNode->renderContext_ = childRender;
1314     auto accessibilityProperty = childNode->GetAccessibilityProperty<NG::AccessibilityProperty>();
1315     accessibilityProperty->SetAccessibilityNextFocusInspectorKey("test_inspector_id");
1316     //@tc.steps: step3. create next child frameNode and set up its rect.
1317     auto nextChildNode = FrameNode::CreateFrameNode(
1318     "child", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>());
1319     nextChildNode->isActive_ = true;
1320     nextChildNode->UpdateInspectorId("test_inspector_id");
1321     auto nextChildAccessibilityId = nextChildNode->GetAccessibilityId();
1322     AccessibilitySystemAbilityClient::SetSplicElementIdTreeId(1, nextChildAccessibilityId);
1323     //@tc.steps: step4. add parent and child node to the pipeline context.
1324     auto context = NG::PipelineContext::GetCurrentContext();
1325     context->GetRootElement()->AddChild(frameNode);
1326     frameNode->AddChild(childNode);
1327     frameNode->AddChild(nextChildNode);
1328     //@tc.steps: step5. verify the child node's accessibilityVisible is true.
1329     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
1330     CHECK_NULL_VOID(jsAccessibilityManager);
1331     jsAccessibilityManager->SetPipelineContext(context);
1332     jsAccessibilityManager->Register(true);
1333     RefPtr<NG::PipelineContext> ngPipeline;
1334     ngPipeline = AceType::DynamicCast<NG::PipelineContext>(pipeline);
1335     std::list<AccessibilityElementInfo> extensionElementInfos;
1336     jsAccessibilityManager->treeId_ = 1;
1337     jsAccessibilityManager->SearchElementInfoByAccessibilityIdNG(
1338         childNode->GetAccessibilityId(), 1, extensionElementInfos, ngPipeline, 1);
1339     for (auto& extensionElementInfo : extensionElementInfos) {
1340         if (childNode->GetAccessibilityId() == extensionElementInfo.GetAccessibilityId()) {
1341             EXPECT_TRUE(extensionElementInfo.GetAccessibilityVisible());
1342             EXPECT_EQ(extensionElementInfo.GetAccessibilityNextFocusId(), nextChildAccessibilityId);
1343         }
1344     }
1345 }
1346 
1347 /**
1348  * @tc.name: FrameNodeAccessibilityVisible03
1349  * @tc.desc: Test searching root element info when elementId is -1
1350  * @tc.type: FUNC
1351  */
1352 HWTEST_F(JsAccessibilityManagerTest, FrameNodeAccessibilityVisible03, TestSize.Level1)
1353 {
1354     /**
1355      * @tc.steps: step1. create a pipeline context and set it as the current context.
1356      */
1357     auto context = NG::PipelineContext::GetCurrentContext();
1358 
1359     /**
1360      * @tc.steps: step2. create an instance of JsAccessibilityManager and set the pipeline context.
1361      */
1362     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
1363     CHECK_NULL_VOID(jsAccessibilityManager);
1364     jsAccessibilityManager->SetPipelineContext(context);
1365     jsAccessibilityManager->Register(true);
1366 
1367     /**
1368      * @tc.steps: step3. call the function SearchElementInfoByAccessibilityIdNG with an invalid elementId.
1369      */
1370     std::list<AccessibilityElementInfo> infos;
1371     jsAccessibilityManager->SearchElementInfoByAccessibilityIdNG(-1, 1, infos, context, 0);
1372 
1373     /**
1374      * @tc.steps: step4. verify that the infos list contains elements with specific properties.
1375      */
1376     EXPECT_FALSE(infos.empty());
1377     for (auto& info : infos) {
1378         EXPECT_FALSE(info.GetAccessibilityVisible());
1379     }
1380 }
1381 
1382 /**
1383  * @tc.name: JsAccessibilityManager024
1384  * @tc.desc: RegisterGetParentRectHandler
1385  * @tc.type: FUNC
1386  */
1387 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager024, TestSize.Level1)
1388 {
1389     /**
1390     * @tc.steps: step1. construct JsAccessibilityManager
1391     */
1392     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
1393     ASSERT_NE(jsAccessibilityManager, nullptr);
1394     /**
1395     * @tc.steps: step2. test RegisterGetParentRectHandler
1396     */
1397     jsAccessibilityManager->uecRectInfo_.isChanged = false;
1398     jsAccessibilityManager->RegisterGetParentRectHandler();
1399     EXPECT_NE(jsAccessibilityManager->getParentRectHandlerNew_, nullptr);
1400 }
1401 
1402 /**
1403 * @tc.name: JsAccessibilityManager025
1404 * @tc.desc: GetTransformRectInfoRelativeToWindow
1405 * @tc.type: FUNC
1406 */
1407 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager025, TestSize.Level1)
1408 {
1409     /**
1410     * @tc.steps: step1. construct JsAccessibilityManager
1411     */
1412     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
1413     auto context = NG::PipelineContext::GetCurrentContext();
1414     jsAccessibilityManager->SetPipelineContext(context);
1415     ASSERT_NE(jsAccessibilityManager, nullptr);
1416     auto frameNode = FrameNode::CreateFrameNode(
1417         "frameNode", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>());
1418     ASSERT_NE(frameNode, nullptr);
1419     /**
1420      * @tc.steps: step2. test GetTransformRectInfoRelativeToWindow
1421      */
1422     auto rectInfo = jsAccessibilityManager->GetTransformRectInfoRelativeToWindow(frameNode, context);
1423     EXPECT_EQ(rectInfo.left, 100);
1424     EXPECT_EQ(rectInfo.top, 200);
1425 }
1426 
1427 /**
1428 * @tc.name: JsAccessibilityManager026
1429 * @tc.desc: GetTransformRectInfoRelativeToWindow
1430 * @tc.type: FUNC
1431 */
1432 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager026, TestSize.Level1) {
1433     /**
1434     * @tc.steps: step1. construct JsAccessibilityManager
1435     */
1436     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
1437     auto context = NG::PipelineContext::GetCurrentContext();
1438     jsAccessibilityManager->SetPipelineContext(context);
1439     ASSERT_NE(jsAccessibilityManager, nullptr);
1440 
1441     auto result = jsAccessibilityManager->GetTransformRectInfoRelativeToWindow(nullptr, context);
1442     // Verify that the result is default constructed when node is null
1443     EXPECT_EQ(result.left, 0);
1444     EXPECT_EQ(result.top, 0);
1445     EXPECT_EQ(result.scaleX, 1.0f);  // Assuming default scaleX is 1.0
1446     EXPECT_EQ(result.scaleY, 1.0f);  // Assuming default scaleY is 1.0
1447 }
1448 
1449 /**
1450 * @tc.name: JsAccessibilityManager027
1451 * @tc.desc: GetTransformRectInfoRelativeToWindow
1452 * @tc.type: FUNC
1453 */
1454 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager027, TestSize.Level1) {
1455     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
1456     auto context = NG::PipelineContext::GetCurrentContext();
1457     jsAccessibilityManager->SetPipelineContext(context);
1458     ASSERT_NE(jsAccessibilityManager, nullptr);
1459     auto frameNode = FrameNode::CreateFrameNode(
1460         "frameNode", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>());
1461     ASSERT_NE(frameNode, nullptr);
1462 
1463     auto result = jsAccessibilityManager->GetTransformRectInfoRelativeToWindow(frameNode, nullptr);
1464 
1465     // Verify that the result is default constructed when context is null
1466     EXPECT_EQ(result.left, 0);
1467     EXPECT_EQ(result.top, 0);
1468     EXPECT_EQ(result.scaleX, 1.0f);
1469     EXPECT_EQ(result.scaleY, 1.0f);
1470 }
1471 
1472 /**
1473 * @tc.name: JsAccessibilityManager028
1474 * @tc.desc: GetPagePathInPageNodes
1475 * @tc.type: FUNC
1476 */
1477 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager028, TestSize.Level1)
1478 {
1479     /**
1480      * @tc.steps: step1. create jsAccessibilityManager and create test data.
1481      */
1482     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
1483     auto frameNode1 = FrameNode::CreateFrameNode(
1484         "frameNode1", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>());
1485     frameNode1->SetHostPageId(1);
1486     auto frameNode2 = FrameNode::CreateFrameNode(
1487         "frameNode2", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>());
1488     frameNode2->SetHostPageId(2);
1489     std::vector<RefPtr<NG::FrameNode>> pageNodes = {frameNode1, frameNode2};
1490     /**
1491      * @tc.steps: step2. test Empty pagePaths
1492      */
1493     std::vector<std::string> pagePaths = {};
1494     EXPECT_EQ(jsAccessibilityManager->GetPagePathInPageNodes(1, pageNodes, pagePaths),
1495     jsAccessibilityManager->GetPagePath());
1496     /**
1497      * @tc.steps: step3. test Mismatched sizes of pageNodes and pagePaths
1498      */
1499     pagePaths = {"path1"};
1500     EXPECT_EQ(jsAccessibilityManager->GetPagePathInPageNodes(1, pageNodes, pagePaths),
1501         jsAccessibilityManager->GetPagePath());
1502     /**
1503      * @tc.steps: step4. test PageId not found in pageNodes
1504      */
1505     pagePaths = {"path1", "path2"};
1506     EXPECT_EQ(jsAccessibilityManager->GetPagePathInPageNodes(3, pageNodes, pagePaths),
1507         jsAccessibilityManager->GetPagePath());
1508     /**
1509      * @tc.steps: step5. test PageId found in pageNodes
1510      */
1511     pagePaths = {"path1", "path2"};
1512     EXPECT_EQ(jsAccessibilityManager->GetPagePathInPageNodes(2, pageNodes, pagePaths), "path2");
1513 }
1514 
1515 /**
1516 * @tc.name: JsAccessibilityManager029
1517 * @tc.desc: GetCurrentWindowPages
1518 * @tc.type: FUNC
1519 */
1520 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager029, TestSize.Level1)
1521 {
1522     /**
1523      * @tc.steps: step1. create jsAccessibilityManager and create test data.
1524      */
1525     auto stageNode = FrameNode::CreateFrameNode(
1526         V2::STAGE_ETS_TAG, ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>());
1527     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
1528     std::vector<RefPtr<FrameNode>> pageNodes;
1529     std::vector<std::string> pagePaths;
1530     auto context = MockPipelineContext::GetCurrentContext();
1531     RefPtr<MockStageManager> stageManager = AceType::MakeRefPtr<MockStageManager>(stageNode);
1532     auto stageManagerBackup = context->stageManager_;
1533     context->stageManager_ = stageManager;
1534     ASSERT_NE(context->stageManager_, nullptr);
1535 
1536     auto frameNode1 = FrameNode::CreateFrameNode(
1537         "frameNode1", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>());
1538     frameNode1->SetHostPageId(1);
1539     auto frameNode2 = FrameNode::CreateFrameNode(
1540         "frameNode2", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>());
1541     frameNode2->SetHostPageId(2);
1542     auto frameNode3 = FrameNode::CreateFrameNode(
1543         "frameNode3", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>());
1544     frameNode3->SetHostPageId(3);
1545     /**
1546      * @tc.steps: step2. test GetCurrentWindowPages get data empty
1547      */
1548     EXPECT_CALL(*stageManager, IsSplitMode()).Times(2).WillRepeatedly(Return(true));
1549     EXPECT_CALL(*stageManager, GetTopPagesWithTransition()).Times(2)
1550         .WillRepeatedly(Return(std::vector<RefPtr<FrameNode>>{}));
1551     jsAccessibilityManager->GetCurrentWindowPages(context, pageNodes, pagePaths);
1552     ASSERT_EQ(pageNodes.size(), 0);
1553     ASSERT_EQ(pagePaths.size(), 0);
1554 
1555     /**
1556      * @tc.steps: step3. test GetCurrentWindowPages get data size 2
1557      */
1558     EXPECT_CALL(*stageManager, GetTopPagesWithTransition()).Times(2)
1559         .WillRepeatedly(Return(std::vector<RefPtr<FrameNode>>{frameNode1, frameNode2}));
1560     jsAccessibilityManager->GetCurrentWindowPages(context, pageNodes, pagePaths);
1561     ASSERT_EQ(pageNodes.size(), 2);
1562     ASSERT_EQ(pagePaths.size(), 2);
1563 
1564     /**
1565      * @tc.steps: step4. test GetCurrentWindowPages with IsSplitMode false
1566      */
1567     EXPECT_CALL(*stageManager, IsSplitMode()).WillOnce(Return(false));
1568     EXPECT_CALL(*stageManager, GetLastPageWithTransition()).WillOnce(Return(frameNode3));
1569     jsAccessibilityManager->GetCurrentWindowPages(context, pageNodes, pagePaths);
1570     ASSERT_EQ(pageNodes.size(), 3);
1571     context->stageManager_ = stageManagerBackup;
1572 }
1573 
1574 /**
1575 * @tc.name: JsAccessibilityManager030
1576 * @tc.desc: IsEventIgnoredByWorkMode
1577 * @tc.type: FUNC
1578 */
1579 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager030, TestSize.Level1)
1580 {
1581     /**
1582      * @tc.steps: step1. create jsAccessibilityManager and create test data.
1583      */
1584     auto context = NG::PipelineContext::GetCurrentContext();
1585     MockJsAccessibilityManager mockJsManger;
1586     mockJsManger.SetPipelineContext(context);
1587     mockJsManger.Register(true);
1588 
1589     AccessibilityEvent event;
1590     event.nodeId = 1;
1591     AccessibilityWorkMode accessibilityWorkMode;
1592     accessibilityWorkMode.isTouchExplorationEnabled = false;
1593     /**
1594      * @tc.steps: step2. test IsEventIgnoredByWorkMode return true
1595      */
1596     event.type = AccessibilityEventType::FOCUS;
1597     EXPECT_CALL(mockJsManger, GenerateAccessibilityWorkMode())
1598         .WillRepeatedly(Return(accessibilityWorkMode));
1599     EXPECT_TRUE(mockJsManger.IsEventIgnoredByWorkMode(event));
1600 
1601     event.type = AccessibilityEventType::ELEMENT_INFO_CHANGE;
1602     EXPECT_TRUE(mockJsManger.IsEventIgnoredByWorkMode(event));
1603 
1604     event.type = AccessibilityEventType::TEXT_CHANGE;
1605     EXPECT_TRUE(mockJsManger.IsEventIgnoredByWorkMode(event));
1606 
1607     /**
1608      * @tc.steps: step3. test IsEventIgnoredByWorkMode return false
1609      */
1610     event.type = AccessibilityEventType::CLICK;
1611     EXPECT_FALSE(mockJsManger.IsEventIgnoredByWorkMode(event));
1612 
1613     accessibilityWorkMode.isTouchExplorationEnabled = true;
1614     EXPECT_CALL(mockJsManger, GenerateAccessibilityWorkMode())
1615         .WillOnce(Return(accessibilityWorkMode));
1616     EXPECT_FALSE(mockJsManger.IsEventIgnoredByWorkMode(event));
1617 }
1618 
1619 /**
1620  * @tc.name: ConvertActionTypeToBoolen001
1621  * @tc.desc: ConvertActionTypeToBoolen
1622  * @tc.type: FUNC
1623  */
1624  HWTEST_F(JsAccessibilityManagerTest, ConvertActionTypeToBoolen001, TestSize.Level1)
1625  {
1626     /**
1627     * @tc.steps: step1. construct JsAccessibilityManager
1628     */
1629     auto jsAccessibilityManager = AceType::MakeRefPtr<MockJsAccessibilityManager>();
1630     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
1631     auto context = NG::PipelineContext::GetCurrentContext();
1632     int64_t elementId = 0;
1633     auto eventHub = frameNode->GetOrCreateEventHub<NG::EventHub>();
1634     ASSERT_NE(eventHub, nullptr);
1635     eventHub->GetOrCreateGestureEventHub();
1636     auto gesture = eventHub->GetGestureEventHub();
1637     ASSERT_NE(gesture, nullptr);
1638     std::string nodeName = "Click";
1639     frameNode->SetNodeName(nodeName);
1640     std::map<std::string, std::string> actionArguments;
1641     /**
1642     * @tc.steps: step2. test do without any willClick or didClick, expect return nodeName Click
1643     */
1644     jsAccessibilityManager->ConvertActionTypeToBoolen(ActionType::ACCESSIBILITY_ACTION_CLICK,
1645         frameNode, elementId, context, actionArguments);
1646     EXPECT_EQ(frameNode->GetNodeName(), nodeName);
1647     /**
1648     * @tc.steps: step3. test do with willClick or didClick, expect return nodeName WillClick_Click_DidClick
1649     */
1650     NG::UIObserverHandler::WillClickHandleFunc willClickHandleFunc = [](
1651         AbilityContextInfo&, const GestureEvent&, const ClickInfo&,
__anon15955db80202( AbilityContextInfo&, const GestureEvent&, const ClickInfo&, const RefPtr<FrameNode>& frameNode) 1652         const RefPtr<FrameNode>& frameNode) -> void {
1653             if (frameNode) {
1654                 std::string willClick = "WillClick_" + frameNode->GetNodeName();
1655                 frameNode->SetNodeName(willClick);
1656             }
1657         };
1658     ASSERT_NE(willClickHandleFunc, nullptr);
1659     NG::UIObserverHandler::GetInstance().SetWillClickFunc(willClickHandleFunc);
1660 
1661     NG::UIObserverHandler::DidClickHandleFunc didClickHandleFunc = [](
1662         AbilityContextInfo&, const GestureEvent&, const ClickInfo&,
__anon15955db80302( AbilityContextInfo&, const GestureEvent&, const ClickInfo&, const RefPtr<FrameNode>& frameNode) 1663         const RefPtr<FrameNode>& frameNode) -> void {
1664             if (frameNode) {
1665                 std::string didClick = frameNode->GetNodeName() + "_DidClick";
1666                 frameNode->SetNodeName(didClick);
1667             }
1668         };
1669     ASSERT_NE(didClickHandleFunc, nullptr);
1670     NG::UIObserverHandler::GetInstance().SetDidClickFunc(didClickHandleFunc);
1671     jsAccessibilityManager->ConvertActionTypeToBoolen(ActionType::ACCESSIBILITY_ACTION_CLICK,
1672         frameNode, elementId, context, actionArguments);
1673     EXPECT_EQ(frameNode->GetNodeName(), "WillClick_Click_DidClick");
1674 }
1675 
1676 /**
1677  * @tc.name: ConvertActionTypeToBoolen002
1678  * @tc.desc: ConvertActionTypeToBoolen
1679  * @tc.type: FUNC
1680  */
1681  HWTEST_F(JsAccessibilityManagerTest, ConvertActionTypeToBoolen002, TestSize.Level1)
1682  {
1683     /**
1684     * @tc.steps: step1. construct JsAccessibilityManager
1685     */
1686     auto jsAccessibilityManager = AceType::MakeRefPtr<MockJsAccessibilityManager>();
1687     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
1688     auto context = NG::PipelineContext::GetCurrentContext();
1689     int64_t elementId = 0;
1690     auto eventHub = frameNode->GetOrCreateEventHub<NG::EventHub>();
1691     ASSERT_NE(eventHub, nullptr);
1692     eventHub->GetOrCreateGestureEventHub();
1693     auto gesture = eventHub->GetGestureEventHub();
1694     ASSERT_NE(gesture, nullptr);
1695     std::string nodeName = "Click";
1696     frameNode->SetNodeName(nodeName);
1697     std::map<std::string, std::string> actionArguments;
1698     /**
1699     * @tc.steps: step2. test only with willClick, expect return nodeName WillClick_Click
1700     */
1701     NG::UIObserverHandler::WillClickHandleFunc willClickHandleFunc = [](
1702         AbilityContextInfo&, const GestureEvent&, const ClickInfo&,
__anon15955db80402( AbilityContextInfo&, const GestureEvent&, const ClickInfo&, const RefPtr<FrameNode>& frameNode) 1703         const RefPtr<FrameNode>& frameNode) -> void {
1704             if (frameNode) {
1705                 std::string willClick = "WillClick_" + frameNode->GetNodeName();
1706                 frameNode->SetNodeName(willClick);
1707             }
1708         };
1709     ASSERT_NE(willClickHandleFunc, nullptr);
1710     NG::UIObserverHandler::GetInstance().SetWillClickFunc(willClickHandleFunc);
1711 
1712     NG::UIObserverHandler::DidClickHandleFunc didClickHandleFunc = [](
1713         AbilityContextInfo&, const GestureEvent&, const ClickInfo&,
__anon15955db80502( AbilityContextInfo&, const GestureEvent&, const ClickInfo&, const RefPtr<FrameNode>& frameNode) 1714         const RefPtr<FrameNode>& frameNode) -> void {};
1715     ASSERT_NE(didClickHandleFunc, nullptr);
1716     NG::UIObserverHandler::GetInstance().SetDidClickFunc(didClickHandleFunc);
1717     jsAccessibilityManager->ConvertActionTypeToBoolen(ActionType::ACCESSIBILITY_ACTION_CLICK,
1718         frameNode, elementId, context, actionArguments);
1719     EXPECT_EQ(frameNode->GetNodeName(), "WillClick_Click");
1720 }
1721 
1722 /**
1723  * @tc.name: ConvertActionTypeToBoolen003
1724  * @tc.desc: ConvertActionTypeToBoolen
1725  * @tc.type: FUNC
1726  */
1727  HWTEST_F(JsAccessibilityManagerTest, ConvertActionTypeToBoolen003, TestSize.Level1)
1728  {
1729     /**
1730     * @tc.steps: step1. construct JsAccessibilityManager
1731     */
1732     auto jsAccessibilityManager = AceType::MakeRefPtr<MockJsAccessibilityManager>();
1733     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
1734     auto context = NG::PipelineContext::GetCurrentContext();
1735     int64_t elementId = 0;
1736     auto eventHub = frameNode->GetOrCreateEventHub<NG::EventHub>();
1737     ASSERT_NE(eventHub, nullptr);
1738     eventHub->GetOrCreateGestureEventHub();
1739     auto gesture = eventHub->GetGestureEventHub();
1740     ASSERT_NE(gesture, nullptr);
1741     std::string nodeName = "Click";
1742     frameNode->SetNodeName(nodeName);
1743     std::map<std::string, std::string> actionArguments;
1744     /**
1745     * @tc.steps: step3. test do with didClick, expect return nodeName Click_DidClick
1746     */
1747     NG::UIObserverHandler::WillClickHandleFunc willClickHandleFunc = [](
1748         AbilityContextInfo&, const GestureEvent&, const ClickInfo&,
__anon15955db80602( AbilityContextInfo&, const GestureEvent&, const ClickInfo&, const RefPtr<FrameNode>& frameNode) 1749         const RefPtr<FrameNode>& frameNode) -> void {};
1750     ASSERT_NE(willClickHandleFunc, nullptr);
1751     NG::UIObserverHandler::GetInstance().SetWillClickFunc(willClickHandleFunc);
1752 
1753     NG::UIObserverHandler::DidClickHandleFunc didClickHandleFunc = [](
1754         AbilityContextInfo&, const GestureEvent&, const ClickInfo&,
__anon15955db80702( AbilityContextInfo&, const GestureEvent&, const ClickInfo&, const RefPtr<FrameNode>& frameNode) 1755         const RefPtr<FrameNode>& frameNode) -> void {
1756             if (frameNode) {
1757                 std::string didClick = frameNode->GetNodeName() + "_DidClick";
1758                 frameNode->SetNodeName(didClick);
1759             }
1760         };
1761     ASSERT_NE(didClickHandleFunc, nullptr);
1762     NG::UIObserverHandler::GetInstance().SetDidClickFunc(didClickHandleFunc);
1763     jsAccessibilityManager->ConvertActionTypeToBoolen(ActionType::ACCESSIBILITY_ACTION_CLICK,
1764         frameNode, elementId, context, actionArguments);
1765     EXPECT_EQ(frameNode->GetNodeName(), "Click_DidClick");
1766     NG::UIObserverHandler::GetInstance().SetWillClickFunc(nullptr);
1767     NG::UIObserverHandler::GetInstance().SetDidClickFunc(nullptr);
1768 }
1769 
1770 /**
1771  * @tc.name: ConvertActionTypeToBoolen004
1772  * @tc.desc: Test clear currentFocusNodeId when elementId equals to currentFocusNodeId
1773  * @tc.type: FUNC
1774  */
1775 HWTEST_F(JsAccessibilityManagerTest, ConvertActionTypeToBoolen004, TestSize.Level1)
1776 {
1777     int64_t elementId = 2LL;
1778     auto context = NG::PipelineContext::GetCurrentContext();
1779     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
1780     ASSERT_NE(frameNode, nullptr);
1781     ASSERT_NE(frameNode->GetRenderContext(), nullptr);
1782 
1783     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
1784     ASSERT_NE(jsAccessibilityManager, nullptr);
1785     jsAccessibilityManager->currentFocusNodeId_ = 2LL;
1786     jsAccessibilityManager->currentFocusVirtualNodeParentId_ = 3LL;
1787     std::map<std::string, std::string> actionArguments;
1788     bool ret = jsAccessibilityManager->ConvertActionTypeToBoolen(
1789         ActionType::ACCESSIBILITY_ACTION_CLEAR_ACCESSIBILITY_FOCUS, frameNode, elementId, context, actionArguments);
1790     EXPECT_EQ(jsAccessibilityManager->currentFocusNodeId_, -1LL);
1791     EXPECT_EQ(jsAccessibilityManager->currentFocusVirtualNodeParentId_, 3LL);
1792     EXPECT_TRUE(ret);
1793 }
1794 
1795 /**
1796  * @tc.name: ConvertActionTypeToBoolen005
1797  * @tc.desc: Test clear currentFocusNodeId when elementId not equals to currentFocusNodeId
1798  * @tc.type: FUNC
1799  */
1800 HWTEST_F(JsAccessibilityManagerTest, ConvertActionTypeToBoolen005, TestSize.Level1)
1801 {
1802     int64_t elementId = 6LL;
1803     auto context = NG::PipelineContext::GetCurrentContext();
1804     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
1805     ASSERT_NE(frameNode, nullptr);
1806     ASSERT_NE(frameNode->GetRenderContext(), nullptr);
1807 
1808     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
1809     ASSERT_NE(jsAccessibilityManager, nullptr);
1810     jsAccessibilityManager->currentFocusNodeId_ = 4LL;
1811     jsAccessibilityManager->currentFocusVirtualNodeParentId_ = 5LL;
1812     std::map<std::string, std::string> actionArguments;
1813     bool ret = jsAccessibilityManager->ConvertActionTypeToBoolen(
1814         ActionType::ACCESSIBILITY_ACTION_CLEAR_ACCESSIBILITY_FOCUS, frameNode, elementId, context, actionArguments);
1815     EXPECT_EQ(jsAccessibilityManager->currentFocusNodeId_, 4LL);
1816     EXPECT_EQ(jsAccessibilityManager->currentFocusVirtualNodeParentId_, 5LL);
1817     EXPECT_FALSE(ret);
1818 }
1819 
1820 /**
1821  * @tc.name: ConvertActionTypeToBoolen006
1822  * @tc.desc: Test focusing action
1823  * @tc.type: FUNC
1824  */
1825 HWTEST_F(JsAccessibilityManagerTest, ConvertActionTypeToBoolen006, TestSize.Level1)
1826 {
1827     /**
1828     * @tc.steps: step1. construct JsAccessibilityManager
1829     */
1830     int64_t elementId = 0;
1831     auto jsAccessibilityManager = AceType::MakeRefPtr<MockJsAccessibilityManager>();
1832     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
1833     auto context = NG::PipelineContext::GetCurrentContext();
1834     auto eventHub = frameNode->GetOrCreateEventHub<NG::EventHub>();
1835     ASSERT_NE(eventHub, nullptr);
1836     eventHub->GetOrCreateGestureEventHub();
1837     auto gesture = eventHub->GetGestureEventHub();
1838     ASSERT_NE(gesture, nullptr);
1839     std::string nodeName = "Click";
1840     frameNode->SetNodeName(nodeName);
1841     std::map<std::string, std::string> actionArguments;
1842     /**
1843     * @tc.steps: step2. test with nothing, expect return nodeName Click
1844     */
1845     NG::UIObserverHandler::WillClickHandleFunc willClickHandleFunc = [](
1846         AbilityContextInfo&, const GestureEvent&, const ClickInfo&,
__anon15955db80802( AbilityContextInfo&, const GestureEvent&, const ClickInfo&, const RefPtr<FrameNode>& frameNode) 1847         const RefPtr<FrameNode>& frameNode) -> void {};
1848     ASSERT_NE(willClickHandleFunc, nullptr);
1849     NG::UIObserverHandler::GetInstance().SetWillClickFunc(willClickHandleFunc);
1850 
1851     NG::UIObserverHandler::DidClickHandleFunc didClickHandleFunc = [](
1852         AbilityContextInfo&, const GestureEvent&, const ClickInfo&,
__anon15955db80902( AbilityContextInfo&, const GestureEvent&, const ClickInfo&, const RefPtr<FrameNode>& frameNode) 1853         const RefPtr<FrameNode>& frameNode) -> void {};
1854     ASSERT_NE(didClickHandleFunc, nullptr);
1855     NG::UIObserverHandler::GetInstance().SetDidClickFunc(didClickHandleFunc);
1856     jsAccessibilityManager->ConvertActionTypeToBoolen(ActionType::ACCESSIBILITY_ACTION_CLICK,
1857         frameNode, elementId, context, actionArguments);
1858     EXPECT_EQ(frameNode->GetNodeName(), "Click");
1859     NG::UIObserverHandler::GetInstance().SetWillClickFunc(nullptr);
1860     NG::UIObserverHandler::GetInstance().SetDidClickFunc(nullptr);
1861 }
1862 
1863 /**
1864  * @tc.name: HandleClickBySecComp001
1865  * @tc.desc: HandleClickBySecComp
1866  * @tc.type: FUNC
1867  */
1868 HWTEST_F(JsAccessibilityManagerTest, HandleClickBySecComp001, TestSize.Level1)
1869 {
1870     /**
1871      * @tc.steps: step1. construct JsAccessibilityManager
1872      */
1873     int64_t elementId = 0;
1874     auto jsAccessibilityManager = AceType::MakeRefPtr<MockJsAccessibilityManager>();
1875     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
1876     auto context = NG::PipelineContext::GetCurrentContext();
1877     auto accessibilityProperty = frameNode->GetAccessibilityProperty<NG::AccessibilityProperty>();
1878     ASSERT_NE(accessibilityProperty, nullptr);
1879 
1880     std::map<std::string, std::string> actionArguments;
1881 
1882     /**
1883      * @tc.steps: step2. test only with willClick, expect return nodeName WillClick_Click
1884      */
1885     bool processFlag1 = false;
1886     bool processFlag2 = false;
1887     SecCompEnhanceEvent testEvent;
1888     std::string hmacTest = "test";
1889     uint64_t timeTest = 123456;
1890     actionArguments[ACTION_ARGU_CLICK_ENHANCE_DATA] = hmacTest;
1891     actionArguments[ACTION_ARGU_CLICK_TIMESTAMP] = std::to_string(timeTest);
1892 
1893     accessibilityProperty->SetAccessibilityActionIntercept (
__anon15955db80a02(AccessibilityInterfaceAction accessibilityInterfaceAction) 1894         [&] (AccessibilityInterfaceAction accessibilityInterfaceAction) {
1895             processFlag2 = true;
1896             return AccessibilityActionInterceptResult::ACTION_INTERCEPT;
1897         }
1898     );
1899 
1900     jsAccessibilityManager->ConvertActionTypeToBoolen(ActionType::ACCESSIBILITY_ACTION_CLICK,
1901         frameNode, elementId, context, actionArguments);
1902     EXPECT_EQ(processFlag1, false);
1903     EXPECT_EQ(processFlag2, true);
1904 
1905     processFlag2 = false;
1906     accessibilityProperty->SetSecurityClickAction (
__anon15955db80b02(const SecCompEnhanceEvent& event) 1907         [&] (const SecCompEnhanceEvent& event) {
1908             processFlag1 = true;
1909             testEvent = event;
1910         }
1911     );
1912 
1913     jsAccessibilityManager->ConvertActionTypeToBoolen(ActionType::ACCESSIBILITY_ACTION_CLICK,
1914         frameNode, elementId, context, actionArguments);
1915     EXPECT_EQ(processFlag1, true);
1916     EXPECT_EQ(processFlag2, false);
1917 }
1918 
1919 /**
1920  * @tc.name: HandleClickBySecComp002
1921  * @tc.desc: HandleClickBySecComp
1922  * @tc.type: FUNC
1923  */
1924 HWTEST_F(JsAccessibilityManagerTest, HandleClickBySecComp002, TestSize.Level1)
1925 {
1926     /**
1927      * @tc.steps: step1. construct JsAccessibilityManager
1928      */
1929     int64_t elementId = 0;
1930     auto jsAccessibilityManager = AceType::MakeRefPtr<MockJsAccessibilityManager>();
1931     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
1932     auto context = NG::PipelineContext::GetCurrentContext();
1933     auto accessibilityProperty = frameNode->GetAccessibilityProperty<NG::AccessibilityProperty>();
1934     ASSERT_NE(accessibilityProperty, nullptr);
1935 
1936     std::map<std::string, std::string> actionArguments;
1937 
1938     /**
1939      * @tc.steps: step2. test only with willClick, expect return nodeName WillClick_Click
1940      */
1941     bool processFlag1 = false;
1942     bool processFlag2 = false;
1943     SecCompEnhanceEvent testEvent;
1944     std::string hmacTest = "test";
1945     uint64_t timeTest = 123456;
1946     actionArguments[ACTION_ARGU_CLICK_ENHANCE_DATA] = hmacTest;
1947     actionArguments[ACTION_ARGU_CLICK_TIMESTAMP] = std::to_string(timeTest);
1948 
1949     accessibilityProperty->SetAccessibilityActionIntercept (
__anon15955db80c02(AccessibilityInterfaceAction accessibilityInterfaceAction) 1950         [&] (AccessibilityInterfaceAction accessibilityInterfaceAction) {
1951             processFlag2 = true;
1952             return AccessibilityActionInterceptResult::ACTION_INTERCEPT;
1953         }
1954     );
1955 
1956     accessibilityProperty->SetSecurityClickAction (
__anon15955db80d02(const SecCompEnhanceEvent& event) 1957         [&] (const SecCompEnhanceEvent& event) {
1958             processFlag1 = true;
1959             testEvent = event;
1960         }
1961     );
1962 
1963     jsAccessibilityManager->ConvertActionTypeToBoolen(ActionType::ACCESSIBILITY_ACTION_CLICK,
1964         frameNode, elementId, context, actionArguments);
1965     EXPECT_EQ(processFlag1, true);
1966     EXPECT_EQ(processFlag2, false);
1967 
1968     std::vector<uint8_t> dataBuffer;
1969     dataBuffer.assign(hmacTest.begin(), hmacTest.end());
1970     std::chrono::microseconds microseconds(timeTest);
1971     auto testTime = TimeStamp { microseconds };
1972 
1973     EXPECT_EQ(testEvent.dataBuffer, dataBuffer);
1974     EXPECT_EQ(testEvent.time, testTime);
1975 }
1976 /**
1977 * @tc.name: JsAccessibilityManager031
1978 * @tc.desc: IsUpdateWindowSceneInfo
1979 * @tc.type: FUNC
1980 */
1981 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager031, TestSize.Level1)
1982 {
1983     /**
1984      * @tc.steps: step1. construct jsAccessibilityManager
1985      */
1986     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
1987     ASSERT_NE(jsAccessibilityManager, nullptr);
1988 
1989     /**
1990      * @tc.steps: step2. node is nullptr, expect return false
1991      */
1992     RefPtr<FrameNode> node = nullptr;
1993     NG::WindowSceneInfo windowSceneInfo;
1994     bool ret = jsAccessibilityManager->IsUpdateWindowSceneInfo(node, windowSceneInfo);
1995     EXPECT_FALSE(ret);
1996 }
1997 
1998 /**
1999 * @tc.name: JsAccessibilityManager032
2000 * @tc.desc: IsUpdateWindowSceneInfo
2001 * @tc.type: FUNC
2002 */
2003 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager032, TestSize.Level1)
2004 {
2005     /**
2006      * @tc.steps: step1. construct jsAccessibilityManager, test node
2007      */
2008     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2009     ASSERT_NE(jsAccessibilityManager, nullptr);
2010 
2011     auto rootNode = FrameNode::CreateFrameNode(V2::WINDOW_SCENE_ETS_TAG,
2012         ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>(), true);
2013     auto frameNode1 = FrameNode::CreateFrameNode(V2::WINDOW_SCENE_ETS_TAG,
2014         ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>(), false);
2015     rootNode->AddChild(frameNode1);
2016     auto frameNode2 = FrameNode::CreateFrameNode("frameNode",
2017         ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>(), false);
2018     frameNode1->AddChild(frameNode2);
2019     NG::WindowSceneInfo windowSceneInfo;
2020     /**
2021      * @tc.steps: step2. check root node, expect return false
2022      */
2023     bool ret1 = jsAccessibilityManager->IsUpdateWindowSceneInfo(rootNode, windowSceneInfo);
2024     EXPECT_FALSE(ret1);
2025 
2026     bool ret2 = jsAccessibilityManager->IsUpdateWindowSceneInfo(frameNode2, windowSceneInfo);
2027     EXPECT_FALSE(ret2);
2028 }
2029 
2030 /**
2031 * @tc.name: JsAccessibilityManager033
2032 * @tc.desc: IsUpdateWindowSceneInfo
2033 * @tc.type: FUNC
2034 */
2035 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager033, TestSize.Level1)
2036 {
2037     /**
2038      * @tc.steps: step1. construct jsAccessibilityManager, test node
2039      */
2040     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2041     ASSERT_NE(jsAccessibilityManager, nullptr);
2042 
2043     auto rootNode = FrameNode::CreateFrameNode("frameNode0",
2044         ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>(), true);
2045     auto frameNode1 = FrameNode::CreateFrameNode("frameNode1",
2046         ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>(), false);
2047     rootNode->AddChild(frameNode1);
2048     NG::WindowSceneInfo windowSceneInfo;
2049     /**
2050      * @tc.steps: step2. check frameNode1, expect return false
2051      */
2052     bool ret1 = jsAccessibilityManager->IsUpdateWindowSceneInfo(frameNode1, windowSceneInfo);
2053     EXPECT_FALSE(ret1);
2054 }
2055 
2056 /**
2057 * @tc.name: JsAccessibilityManager034
2058 * @tc.desc: UpdateElementInfosTreeId
2059 * @tc.type: FUNC
2060 */
2061 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager034, TestSize.Level1)
2062 {
2063     /**
2064      * @tc.steps: step1. construct jsAccessibilityManager, test node
2065      */
2066     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2067     ASSERT_NE(jsAccessibilityManager, nullptr);
2068     /**
2069      * @tc.steps: step2. check empty infos
2070      */
2071     std::list<Accessibility::AccessibilityElementInfo> infos;
2072     jsAccessibilityManager->UpdateElementInfosTreeId(infos);
2073     EXPECT_TRUE(infos.empty());
2074 
2075     /**
2076      * @tc.steps: step3. check info with treeId < 0
2077      */
2078     Accessibility::AccessibilityElementInfo info;
2079     info.SetBelongTreeId(0);
2080     info.SetAccessibilityId(100);
2081     infos.push_back(info);
2082     jsAccessibilityManager->UpdateElementInfosTreeId(infos);
2083 
2084     /**
2085      * @tc.steps: step4. check info with treeId > 0
2086      */
2087     infos.clear();
2088     info.SetBelongTreeId(1);
2089     info.SetAccessibilityId(100);
2090     info.SetParent(10);
2091     infos.push_back(info);
2092     jsAccessibilityManager->UpdateElementInfosTreeId(infos);
2093 }
2094 /**
2095 * @tc.name: JsAccessibilityManager035
2096 * @tc.desc: UpdateVirtualNodeChildAccessibilityElementInfo
2097 * @tc.type: FUNC
2098 */
2099 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager035, TestSize.Level1)
2100 {
2101     /**
2102      * @tc.steps: step1. construct jsAccessibilityManager, test node
2103      */
2104     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2105     ASSERT_NE(jsAccessibilityManager, nullptr);
2106     auto context = NG::PipelineContext::GetCurrentContext();
2107     jsAccessibilityManager->SetPipelineContext(context);
2108     jsAccessibilityManager->Register(true);
2109 
2110     Framework::CommonProperty commonProperty;
2111     commonProperty.innerWindowId = 10;
2112     AccessibilityElementInfo nodeParentInfo;
2113     AccessibilityElementInfo nodeInfo;
2114     auto frameNode = FrameNode::CreateFrameNode("frameNode",
2115         ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>(), false);
2116 
2117     /**
2118      * @tc.steps: step2. test with frameNode nullptr
2119      */
2120     jsAccessibilityManager->UpdateVirtualNodeChildAccessibilityElementInfo(nullptr,
2121         commonProperty, nodeParentInfo, nodeInfo, context);
2122 
2123     /**
2124      * @tc.steps: step3. test with frameNode
2125      */
2126     jsAccessibilityManager->UpdateVirtualNodeChildAccessibilityElementInfo(frameNode,
2127         commonProperty, nodeParentInfo, nodeInfo, context);
2128     EXPECT_EQ(nodeInfo.GetInnerWindowId(), 10);
2129 
2130     /**
2131      * @tc.steps: step3. test UpdateVirtualNodeAccessibilityElementInfo
2132      */;
2133     AccessibilityElementInfo nodeInfoNew;
2134     auto rootNode = FrameNode::CreateFrameNode("rootNode",
2135     ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>(), true);
2136     rootNode->AddChild(frameNode);
2137     jsAccessibilityManager->UpdateVirtualNodeAccessibilityElementInfo(nullptr, nullptr,
2138         commonProperty, nodeInfoNew, context);
2139     jsAccessibilityManager->UpdateVirtualNodeAccessibilityElementInfo(rootNode, nullptr,
2140         commonProperty, nodeInfoNew, context);
2141     jsAccessibilityManager->UpdateVirtualNodeAccessibilityElementInfo(rootNode, frameNode,
2142         commonProperty, nodeInfoNew, context);
2143     EXPECT_EQ(nodeInfoNew.GetInnerWindowId(), 10);
2144 }
2145 
2146 /**
2147  * @tc.name: JsAccessibilityManager036
2148  * @tc.desc: UpdateVirtualNodeFocus
2149  * @tc.type: FUNC
2150  */
2151  HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager036, TestSize.Level1)
2152  {
2153     /**
2154     * @tc.steps: step1. construct JsAccessibilityManager
2155     */
2156     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2157         AceType::MakeRefPtr<Pattern>(), false);
2158     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2159 
2160     /**
2161     * @tc.steps: step2. test UpdateVirtualNodeFocus
2162     */
2163     Accessibility::AccessibilityElementInfo nodeInfo;
2164     RefPtr<GeometryNode> geometryNode = AceType::MakeRefPtr<GeometryNode>();
2165     ASSERT_NE(geometryNode, nullptr);
2166     frameNode->SetGeometryNode(geometryNode);
2167     frameNode->SetAccessibilityNodeVirtual();
2168     jsAccessibilityManager->SaveLast(0, frameNode);
2169     /**
2170     * @tc.steps: step3. expect GetAccessibilityFocusState true.
2171     */
2172     jsAccessibilityManager->UpdateVirtualNodeFocus();
2173     auto accessibilityProperty = frameNode->GetAccessibilityProperty<NG::AccessibilityProperty>();
2174     ASSERT_NE(accessibilityProperty, nullptr);
2175     EXPECT_FALSE(accessibilityProperty->GetAccessibilityFocusState());
2176  }
2177 
2178 /**
2179  * @tc.name: JsAccessibilityManager037
2180  * @tc.desc: UpdateAccessibilityNextFocusIdMap
2181  * @tc.type: FUNC
2182  */
2183 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager037, TestSize.Level1)
2184 {
2185     /**
2186     * @tc.steps: step1. construct JsAccessibilityManager
2187     */
2188     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2189     /**
2190     * @tc.steps: step2. test UpdateAccessibilityNextFocusIdMap expect update success
2191     */
2192     const int32_t containerIdA = 1;
2193     const std::string nextFocusKeyA = "test_key";
2194     const int64_t preAccessibilityIdA = 100;
2195     jsAccessibilityManager->UpdateAccessibilityNextFocusIdMap(containerIdA, nextFocusKeyA, preAccessibilityIdA);
2196     EXPECT_EQ(jsAccessibilityManager->nextFocusMapWithSubWindow_.size(), 1);
2197     /**
2198     * @tc.steps: step3. test UpdateAccessibilityNextFocusIdMap expect update fail
2199     */
2200     const int32_t containerIdB = 2;
2201     const std::string nextFocusKeyB = "";
2202     const int64_t preAccessibilityIdB = 200;
2203     jsAccessibilityManager->UpdateAccessibilityNextFocusIdMap(containerIdA, nextFocusKeyA, preAccessibilityIdA);
2204     EXPECT_EQ(jsAccessibilityManager->nextFocusMapWithSubWindow_.size(), 1);
2205     /**
2206     * @tc.steps: step4. test UpdateAccessibilityNextFocusIdMap expect update contained data
2207     */
2208     const int32_t containerIdC = 3;
2209     const std::string nextFocusKeyC = "key3";
2210     const int64_t preAccessibilityIdC = 301;
2211     jsAccessibilityManager->UpdateAccessibilityNextFocusIdMap(containerIdC, "key1", 300);
2212     jsAccessibilityManager->UpdateAccessibilityNextFocusIdMap(containerIdC, nextFocusKeyC, preAccessibilityIdC);
2213     EXPECT_EQ(jsAccessibilityManager->nextFocusMapWithSubWindow_[containerIdC][nextFocusKeyC], preAccessibilityIdC);
2214     EXPECT_EQ(jsAccessibilityManager->nextFocusMapWithSubWindow_.size(), 2);
2215 }
2216 
2217 /**
2218  * @tc.name: JsAccessibilityManager038
2219  * @tc.desc: IsSendAccessibilityEvent
2220  * @tc.type: FUNC
2221  */
2222 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager038, TestSize.Level1)
2223 {
2224     /**
2225     * @tc.steps: step1. construct JsAccessibilityManager
2226     */
2227     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2228     auto pipelineContext = MockContainer::Current()->GetPipelineContext();
2229     ASSERT_NE(pipelineContext, nullptr);
2230     jsAccessibilityManager->SetPipelineContext(pipelineContext);
2231     /**
2232     * @tc.steps: step2. test IsSendAccessibilityEvent accessibilityEvent type with default value
2233     */
2234     AccessibilityEvent accessibilityEvent;
2235     EXPECT_TRUE(jsAccessibilityManager->IsSendAccessibilityEvent(accessibilityEvent));
2236 }
2237 
2238 /**
2239 * @tc.name: AddHoverTransparentCallbackTest001
2240 * @tc.desc: AddHoverTransparentCallback
2241 * @tc.type: FUNC
2242 */
2243 HWTEST_F(JsAccessibilityManagerTest, AddHoverTransparentCallbackTest001, TestSize.Level1)
2244 {
2245     /**
2246      * @tc.steps: step1. create jsAccessibilityManager.
2247      */
2248     MockJsAccessibilityManager mockJsManger;
2249 
2250     /**
2251      * @tc.steps: step2. create frameNode and add to list.
2252      */
2253     auto frameNode = FrameNode::CreateFrameNode("framenode1", 1, AceType::MakeRefPtr<Pattern>(), true);
2254     auto context = AceType::MakeRefPtr<NG::PipelineContext>();
2255     ASSERT_NE(context, nullptr);
2256     context->instanceId_ = 1;
2257     frameNode->AttachContext(AceType::RawPtr(context), false);
2258 
2259     /**
2260      * @tc.steps: step3. test CheckHoverTransparentCallbackListEmpty return true.
2261      */
2262     EXPECT_TRUE(mockJsManger.CheckHoverTransparentCallbackListEmpty(1));
2263 
2264     /**
2265      * @tc.steps: step4. test CheckHoverTransparentCallbackListEmpty return false.
2266      */
2267     mockJsManger.AddHoverTransparentCallback(frameNode);
2268     EXPECT_FALSE(mockJsManger.CheckHoverTransparentCallbackListEmpty(1));
2269 
2270     /**
2271      * @tc.steps: step5. test CheckHoverTransparentCallbackListEmpty return true.
2272      */
2273     frameNode = nullptr;
2274     EXPECT_TRUE(mockJsManger.CheckHoverTransparentCallbackListEmpty(1));
2275 }
2276 
2277 /**
2278 * @tc.name: GetComponentTypeAndPageIdByNodeIdTest001
2279 * @tc.desc: GetComponentTypeAndPageIdByNodeId
2280 * @tc.type: FUNC
2281 */
2282 HWTEST_F(JsAccessibilityManagerTest, GetComponentTypeAndPageIdByNodeIdTest001, TestSize.Level1)
2283 {
2284     /**
2285      * @tc.steps: step1. construct jsAccessibilityManager, test node
2286      */
2287     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2288     ASSERT_NE(jsAccessibilityManager, nullptr);
2289     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2290         AceType::MakeRefPtr<Pattern>(), false);
2291     auto context = NG::PipelineContext::GetCurrentContext();
2292     CHECK_NULL_VOID(context);
2293     auto root = context->GetRootElement();
2294     CHECK_NULL_VOID(root);
2295 
2296     jsAccessibilityManager->SetPipelineContext(context);
2297 
2298     Framework::GetInfoByNodeId infoOfNode;
2299     /**
2300      * @tc.steps: step2. check get infos by nodeId
2301      */
2302     jsAccessibilityManager->GetComponentTypeAndPageIdByNodeId(root->GetAccessibilityId(), root->GetContextRefPtr(), infoOfNode);
2303 
2304     EXPECT_EQ(infoOfNode.componentType, root->GetTag());
2305 }
2306 
2307 /**
2308 * @tc.name: IsSendAccessibilityEventTest001
2309 * @tc.desc: IsSendAccessibilityEvent in UIExtensionWindow
2310 * @tc.type: FUNC
2311 */
2312 HWTEST_F(JsAccessibilityManagerTest, IsSendAccessibilityEventTest001, TestSize.Level1)
2313 {
2314     /**
2315      * @tc.steps: step1. construct jsAccessibilityManager, test node
2316      */
2317     auto jsAccessibilityManager = AceType::MakeRefPtr<MockJsAccessibilityManager>();
2318     ASSERT_NE(jsAccessibilityManager, nullptr);
2319     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2320         AceType::MakeRefPtr<Pattern>(), false);
2321     auto context = NG::PipelineContext::GetCurrentContext();
2322     ASSERT_NE(context, nullptr);
2323     auto root = context->GetRootElement();
2324     ASSERT_NE(root, nullptr);
2325 
2326     jsAccessibilityManager->SetPipelineContext(context);
2327     auto container = Platform::AceContainer::GetContainer(context->GetInstanceId());
2328     ASSERT_NE(container, nullptr);
2329 
2330     AccessibilityEvent accessibilityEvent {
2331         .nodeId = root->GetAccessibilityId(),
2332         .type = AccessibilityEventType::PAGE_CHANGE
2333     };
2334 
2335     // mock conntainer will return isUIexentionwindow by SetUIExtensionSubWindow
2336     container->SetUIExtensionSubWindow(true);
2337     jsAccessibilityManager->AddToPageEventController(root);
2338     jsAccessibilityManager->UpdatePageMode(std::string(""));
2339     /**
2340      * @tc.steps: step2. save pages when in UIExtensionWindow
2341      */
2342     AccessibilityWorkMode accessibilityWorkMode { .isTouchExplorationEnabled = true };
2343     EXPECT_CALL(*jsAccessibilityManager,
2344         GenerateAccessibilityWorkMode()).WillOnce(::testing::Return(accessibilityWorkMode));
2345     auto result = jsAccessibilityManager->IsSendAccessibilityEvent(accessibilityEvent);
2346     EXPECT_EQ(result, false);
2347 
2348     container->SetUIExtensionSubWindow(false);
2349 }
2350 
2351 /**
2352 * @tc.name: IsSendAccessibilityEventTest002
2353 * @tc.desc: IsSendAccessibilityEvent in UIExtensionWindow
2354 * @tc.type: FUNC
2355 */
2356 HWTEST_F(JsAccessibilityManagerTest, IsSendAccessibilityEventTest002, TestSize.Level1)
2357 {
2358     /**
2359      * @tc.steps: step1. construct jsAccessibilityManager, test node
2360      */
2361     auto jsAccessibilityManager = AceType::MakeRefPtr<MockJsAccessibilityManager>();
2362     ASSERT_NE(jsAccessibilityManager, nullptr);
2363     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2364         AceType::MakeRefPtr<Pattern>(), false);
2365     auto context = NG::PipelineContext::GetCurrentContext();
2366     ASSERT_NE(context, nullptr);
2367     auto root = context->GetRootElement();
2368     ASSERT_NE(root, nullptr);
2369 
2370     jsAccessibilityManager->SetPipelineContext(context);
2371     auto container = Platform::AceContainer::GetContainer(context->GetInstanceId());
2372     ASSERT_NE(container, nullptr);
2373 
2374     AccessibilityEvent accessibilityEvent {
2375         .nodeId = root->GetAccessibilityId(),
2376         .type = AccessibilityEventType::PAGE_CHANGE
2377     };
2378 
2379     // mock conntainer will return isUIexentionwindow by SetUIExtensionSubWindow
2380     container->SetUIExtensionSubWindow(true);
2381     jsAccessibilityManager->AddToPageEventController(root);
2382     jsAccessibilityManager->UpdatePageMode(std::string(""));
2383 
2384     /**
2385      * @tc.steps: step2. save pages when in UIExtensionWindow
2386      */
2387     AccessibilityWorkMode accessibilityWorkMode { .isTouchExplorationEnabled = false };
2388     EXPECT_CALL(*jsAccessibilityManager,
2389         GenerateAccessibilityWorkMode()).WillOnce(::testing::Return(accessibilityWorkMode));
2390     auto result = jsAccessibilityManager->IsSendAccessibilityEvent(accessibilityEvent);
2391     EXPECT_EQ(result, true);
2392 
2393     container->SetUIExtensionSubWindow(false);
2394 }
2395 
2396 /**
2397 * @tc.name: DeleteFromPageEventController001
2398 * @tc.desc: IsSendAccessibilityEvent in UIExtensionWindow
2399 * @tc.type: FUNC
2400 */
2401 HWTEST_F(JsAccessibilityManagerTest, DeleteFromPageEventController001, TestSize.Level1)
2402 {
2403     /**
2404      * @tc.steps: step1. construct jsAccessibilityManager, test node
2405      */
2406     auto jsAccessibilityManager = AceType::MakeRefPtr<MockJsAccessibilityManager>();
2407     ASSERT_NE(jsAccessibilityManager, nullptr);
2408     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2409         AceType::MakeRefPtr<Pattern>(), false);
2410     auto context = NG::PipelineContext::GetCurrentContext();
2411     ASSERT_NE(context, nullptr);
2412     auto root = context->GetRootElement();
2413     ASSERT_NE(root, nullptr);
2414 
2415     jsAccessibilityManager->SetPipelineContext(context);
2416     jsAccessibilityManager->AddToPageEventController(root);
2417     auto result = jsAccessibilityManager->DeleteFromPageEventController(root);
2418 
2419     /**
2420      * @tc.steps: step2. save pages when in UIExtensionWindow
2421      */
2422     EXPECT_EQ(result, true);
2423 }
2424 
2425 /**
2426 * @tc.name: IsSendAccessibilityEventTest003
2427 * @tc.desc: IsSendAccessibilityEvent
2428 * @tc.type: FUNC
2429 */
2430 HWTEST_F(JsAccessibilityManagerTest, IsSendAccessibilityEventTest003, TestSize.Level1)
2431 {
2432     /**
2433      * @tc.steps: step1. construct jsAccessibilityManager, test node
2434      */
2435     auto jsAccessibilityManager = AceType::MakeRefPtr<MockJsAccessibilityManager>();
2436     ASSERT_NE(jsAccessibilityManager, nullptr);
2437     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2438         AceType::MakeRefPtr<Pattern>(), false);
2439     auto context = NG::PipelineContext::GetCurrentContext();
2440     ASSERT_NE(context, nullptr);
2441     auto root = context->GetRootElement();
2442     ASSERT_NE(root, nullptr);
2443 
2444     jsAccessibilityManager->SetPipelineContext(context);
2445     auto container = Platform::AceContainer::GetContainer(context->GetInstanceId());
2446     ASSERT_NE(container, nullptr);
2447 
2448     AccessibilityEvent accessibilityEvent {
2449         .nodeId = root->GetAccessibilityId(),
2450         .type = AccessibilityEventType::PAGE_CHANGE
2451     };
2452 
2453     jsAccessibilityManager->AddToPageEventController(root);
2454     /**
2455      * @tc.steps: step2. save pages when in UIExtensionWindow
2456      */
2457     AccessibilityWorkMode accessibilityWorkMode { .isTouchExplorationEnabled = true };
2458     EXPECT_CALL(*jsAccessibilityManager,
2459         GenerateAccessibilityWorkMode()).WillOnce(::testing::Return(accessibilityWorkMode));
2460     auto result = jsAccessibilityManager->IsSendAccessibilityEvent(accessibilityEvent);
2461     EXPECT_EQ(result, false);
2462 }
2463 
2464 /**
2465 * @tc.name: IsSendAccessibilityEventForHostTest001
2466 * @tc.desc: IsSendAccessibilityEventForHost
2467 * @tc.type: FUNC
2468 */
2469 HWTEST_F(JsAccessibilityManagerTest, IsSendAccessibilityEventForHostTest001, TestSize.Level1)
2470 {
2471     /**
2472      * @tc.steps: step1. construct jsAccessibilityManager, test node
2473      */
2474     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2475     ASSERT_NE(jsAccessibilityManager, nullptr);
2476     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2477         AceType::MakeRefPtr<Pattern>(), false);
2478     auto context = NG::PipelineContext::GetCurrentContext();
2479     ASSERT_NE(context, nullptr);
2480     auto root = context->GetRootElement();
2481     ASSERT_NE(root, nullptr);
2482     auto accessibilityProperty = root->GetAccessibilityProperty<NG::AccessibilityProperty>();
2483     ASSERT_NE(accessibilityProperty, nullptr);
2484     accessibilityProperty->SetAccessibilitySamePage("FULL_SILENT");
2485 
2486     jsAccessibilityManager->SetPipelineContext(context);
2487     auto container = Platform::AceContainer::GetContainer(context->GetInstanceId());
2488     ASSERT_NE(container, nullptr);
2489     jsAccessibilityManager->AddDefaultFocusNode(root);
2490     jsAccessibilityManager->AddFrameNodeToUecStatusVec(root);
2491 
2492     AccessibilityEvent accessibilityEvent {
2493         .nodeId = root->GetAccessibilityId(),
2494         .type = AccessibilityEventType::PAGE_CHANGE
2495     };
2496     /**
2497      * @tc.steps: step2. save events when UIExtension not ready
2498      */
2499     auto result =
2500         jsAccessibilityManager->IsSendAccessibilityEventForHost(accessibilityEvent, "test", root->GetPageId());
2501     EXPECT_EQ(result, false);
2502 }
2503 
2504 
2505 /**
2506 * @tc.name: IsSendAccessibilityEventTestForHost004
2507 * @tc.desc: IsSendAccessibilityEvent
2508 * @tc.type: FUNC
2509 */
2510 HWTEST_F(JsAccessibilityManagerTest, IsSendAccessibilityEventTestForHost004, TestSize.Level1)
2511 {
2512     /**
2513      * @tc.steps: step1. construct jsAccessibilityManager, test node
2514      */
2515     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2516     ASSERT_NE(jsAccessibilityManager, nullptr);
2517     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2518         AceType::MakeRefPtr<Pattern>(), false);
2519     auto context = NG::PipelineContext::GetCurrentContext();
2520     ASSERT_NE(context, nullptr);
2521     auto root = context->GetRootElement();
2522     ASSERT_NE(root, nullptr);
2523 
2524     jsAccessibilityManager->SetPipelineContext(context);
2525 
2526     jsAccessibilityManager->AddFrameNodeToUecStatusVec(root);
2527     jsAccessibilityManager->AddDefaultFocusNode(root);
2528 
2529     AccessibilityEvent accessibilityEvent {
2530         .nodeId = root->GetAccessibilityId(),
2531         .type = AccessibilityEventType::PAGE_CHANGE
2532     };
2533 
2534     /**
2535      * @tc.steps: step2. save events when UIExtension not ready
2536      */
2537     auto result =
2538         jsAccessibilityManager->IsSendAccessibilityEventForHost(accessibilityEvent, "test", root->GetPageId() + 1);
2539     EXPECT_EQ(result, true);
2540 
2541     /**
2542      * @tc.steps: step2. save events when UIExtension not ready
2543      */
2544     jsAccessibilityManager->UpdateFrameNodeState(root->GetId());
2545     result =
2546         jsAccessibilityManager->IsSendAccessibilityEventForHost(accessibilityEvent, "test", root->GetPageId());
2547     EXPECT_EQ(result, true);
2548 }
2549 
2550 /**
2551  * @tc.name: SearchDefaultFocusByWindowIdNGTest001
2552  * @tc.desc: SearchDefaultFocusByWindowIdNG
2553  * @tc.type: FUNC
2554  */
2555 HWTEST_F(JsAccessibilityManagerTest, SearchDefaultFocusByWindowIdNGTest001, TestSize.Level1)
2556 {
2557     /**
2558      * @tc.steps: step1. construct jsAccessibilityManager, test node
2559      */
2560     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2561     ASSERT_NE(jsAccessibilityManager, nullptr);
2562     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2563         AceType::MakeRefPtr<Pattern>(), false);
2564     auto context = NG::PipelineContext::GetCurrentContext();
2565     ASSERT_NE(context, nullptr);
2566     jsAccessibilityManager->SetPipelineContext(context);
2567     jsAccessibilityManager->AddDefaultFocusNode(frameNode);
2568     /**
2569     * @tc.steps: step2. test
2570     */
2571     int32_t pageId = frameNode->GetPageId();
2572     std::list<Accessibility::AccessibilityElementInfo> infos;
2573 
2574     jsAccessibilityManager->SearchDefaultFocusByWindowIdNG(pageId + 1, infos, context);
2575     EXPECT_TRUE(infos.empty());
2576 
2577     jsAccessibilityManager->SearchDefaultFocusByWindowIdNG(pageId, infos, context);
2578     EXPECT_FALSE(infos.empty());
2579 
2580     infos.clear();
2581     frameNode.Reset();
2582     jsAccessibilityManager->SearchDefaultFocusByWindowIdNG(pageId, infos, context);
2583     EXPECT_TRUE(infos.empty());
2584 }
2585 
2586 /**
2587  * @tc.name: JsAccessibilityManager039
2588  * @tc.desc: ActClick
2589  * @tc.type: FUNC
2590  */
2591 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager039, TestSize.Level1)
2592 {
2593     /**
2594     * @tc.steps: step1. construct mockJsManger
2595     */
2596     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2597         AceType::MakeRefPtr<Pattern>(), false);
2598     ASSERT_NE(frameNode, nullptr);
2599     auto context = NG::PipelineContext::GetCurrentContext();
2600     ASSERT_NE(context, nullptr);
2601     MockJsAccessibilityManager mockJsManger;
2602     mockJsManger.SetPipelineContext(context);
2603     mockJsManger.Register(true);
2604    /**
2605     * @tc.steps: step2. test
2606     */
2607     auto eventHub = frameNode->GetOrCreateEventHub<NG::EventHub>();
2608     ASSERT_NE(eventHub, nullptr);
2609     eventHub->SetGestureEventHub(nullptr);
2610     EXPECT_CALL(mockJsManger, ActClick(_)).Times(0).WillOnce(Return(false));
2611 }
2612 
2613 /**
2614  * @tc.name: JsAccessibilityManager040
2615  * @tc.desc: Test GetFramenodeByAccessibilityId
2616  * @tc.type: FUNC
2617  */
2618 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager040, TestSize.Level1)
2619 {
2620     /**
2621      * @tc.steps: step1. construct JsAccessibilityManager
2622      */
2623     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2624         AceType::MakeRefPtr<Pattern>(), false);
2625     ASSERT_NE(frameNode, nullptr);
2626     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2627     ASSERT_NE(jsAccessibilityManager, nullptr);
2628 
2629     /**
2630      * @tc.steps: step2. test GetFramenodeByAccessibilityId by DumpTreeNG
2631      */
2632     frameNode->accessibilityId_ = frameNode->GetId() + 1;
2633     jsAccessibilityManager->DumpTreeNG(frameNode, 1, frameNode->GetId(), true);
2634 }
2635 
2636 /**
2637  * @tc.name: JsAccessibilityManager041
2638  * @tc.desc: CheckDumpInfoParams,OnDumpInfoNG
2639  * @tc.type: FUNC
2640  */
2641 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager041, TestSize.Level1)
2642 {
2643     /**
2644      * @tc.steps: step1. construct JsAccessibilityManager
2645      */
2646     std::vector<std::string> params = {};
2647     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2648 
2649     params = { "-inspector", "-accessibility", "-simplify", "--set-whitelist", "1"};
2650     auto ret = jsAccessibilityManager->CheckDumpInfoParams(params);
2651     EXPECT_EQ(ret, true);
2652     DumpInfoArgument argument;
2653     auto isSetList = jsAccessibilityManager->GetDumpInfoArgument(params, argument);
2654     EXPECT_EQ(isSetList, true);
2655     jsAccessibilityManager->OnDumpInfoNG(params, 1, false);
2656 }
2657 
2658 /**
2659  * @tc.name: JsAccessibilityManager042
2660  * @tc.desc: CheckDumpInfoParams,OnDumpInfoNG
2661  * @tc.type: FUNC
2662  */
2663 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager042, TestSize.Level1)
2664 {
2665     /**
2666      * @tc.steps: step1. construct JsAccessibilityManager
2667      */
2668     std::vector<std::string> params = {};
2669     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2670 
2671     params = { "-inspector", "-accessibility", "-simplify", "--get-whitelist", "1"};
2672     auto ret = jsAccessibilityManager->CheckDumpInfoParams(params);
2673     EXPECT_EQ(ret, true);
2674     DumpInfoArgument argument;
2675     auto isGetList = jsAccessibilityManager->GetDumpInfoArgument(params, argument);
2676     EXPECT_EQ(isGetList, true);
2677     jsAccessibilityManager->OnDumpInfoNG(params, 1, false);
2678 }
2679 
2680 /**
2681  * @tc.name: ShouldSkipAccessibilityStateChange001
2682  * @tc.desc: ShouldSkipAccessibilityStateChange
2683  * @tc.type: FUNC
2684  */
2685 HWTEST_F(JsAccessibilityManagerTest, ShouldSkipAccessibilityStateChange001, TestSize.Level1)
2686 {
2687     auto pipelineContext = MockContainer::Current()->GetPipelineContext();
2688     ASSERT_NE(pipelineContext, nullptr);
2689     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2690     auto container = Platform::AceContainer::GetContainer(pipelineContext->GetInstanceId());
2691     ASSERT_NE(container, nullptr);
2692     auto isState = jsAccessibilityManager->ShouldSkipAccessibilityStateChange(pipelineContext);
2693     ASSERT_FALSE(isState);
2694 }
2695 
2696 /**
2697  * @tc.name: InitializeCallback003
2698  * @tc.desc: InitializeCallback
2699  * @tc.type: FUNC
2700  */
2701 HWTEST_F(JsAccessibilityManagerTest, InitializeCallback003, TestSize.Level1)
2702 {
2703     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2704     ASSERT_NE(jsAccessibilityManager, nullptr);
2705     auto context = NG::PipelineContext::GetCurrentContext();
2706     ASSERT_NE(context, nullptr);
2707     context->SetWindowId(1);
2708     jsAccessibilityManager->SetPipelineContext(context);
2709     jsAccessibilityManager->Register(true);
2710     jsAccessibilityManager->InitializeCallback();
2711     EXPECT_EQ(jsAccessibilityManager->windowId_, 0);
2712 }
2713 
2714 /**
2715  * @tc.name: SendEventToAccessibilityWithNode001
2716  * @tc.desc: SendEventToAccessibilityWithNode
2717  * @tc.type: FUNC
2718  */
2719 HWTEST_F(JsAccessibilityManagerTest, SendEventToAccessibilityWithNode001, TestSize.Level1)
2720 {
2721     auto context = NG::PipelineContext::GetCurrentContext();
2722     CHECK_NULL_VOID(context);
2723     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
2724     CHECK_NULL_VOID(frameNode);
2725     auto root = context->GetRootElement();
2726     CHECK_NULL_VOID(root);
2727     root->AddChild(frameNode);
2728     MockJsAccessibilityManager mockJsManger;
2729     mockJsManger.SetPipelineContext(context);
2730     mockJsManger.Register(true);
2731     int64_t nodeId = frameNode->GetAccessibilityId();
2732     int32_t eventId = 2;
2733     std::vector<std::string> params;
2734     params.push_back("-inspector");
2735     params.push_back("1");
2736     params.push_back("--stackNodeId");
2737     int64_t testStackId = 2;
2738     params.push_back(std::to_string(testStackId));
2739     mockJsManger.UpdateEventWhiteList({0});
2740     EXPECT_CALL(mockJsManger, SendEventToAccessibilityWithNode(_, _, _))
2741         .Times(1);
2742     mockJsManger.DumpSendEventTest(nodeId, eventId, params);
2743 }
2744 
2745 /**
2746  * @tc.name: SendEventToAccessibilityWithNode002
2747  * @tc.desc: SendEventToAccessibilityWithNode
2748  * @tc.type: FUNC
2749  */
2750 HWTEST_F(JsAccessibilityManagerTest, SendEventToAccessibilityWithNode002, TestSize.Level1)
2751 {
2752     /**
2753      * @tc.steps: step1. construct JsAccessibilityManager
2754      */
2755     auto rootNode = FrameNode::CreateFrameNode(V2::WINDOW_SCENE_ETS_TAG,
2756         ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>(), true);
2757     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2758         AceType::MakeRefPtr<Pattern>(), false);
2759     rootNode->AddChild(frameNode);
2760     auto accessibilityProperty = frameNode->GetAccessibilityProperty<NG::AccessibilityProperty>();
2761     accessibilityProperty->SetAccessibilityLevel("yes");
2762     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2763 
2764     /**
2765      * @tc.steps: step2. test SendEventToAccessibilityWithNode
2766      */
2767     AccessibilityEvent accessibilityEvent;
2768     auto context = NG::PipelineContext::GetCurrentContext();
2769     EXPECT_EQ(jsAccessibilityManager->context_.Upgrade(), nullptr);
2770     jsAccessibilityManager->SetPipelineContext(context);
2771     EXPECT_NE(jsAccessibilityManager->context_.Upgrade(), nullptr);
2772     jsAccessibilityManager->UpdateEventWhiteList({0xFFFFFFFF});
2773     jsAccessibilityManager->SendEventToAccessibilityWithNode(accessibilityEvent, frameNode, context);
2774     EXPECT_TRUE(jsAccessibilityManager->CheckWhiteList(0));
2775 }
2776 
2777 /**
2778  * @tc.name: SendEventToAccessibilityWithNode003
2779  * @tc.desc: SendEventToAccessibilityWithNode
2780  * @tc.type: FUNC
2781  */
2782 HWTEST_F(JsAccessibilityManagerTest, SendEventToAccessibilityWithNode003, TestSize.Level1)
2783 {
2784     /**
2785      * @tc.steps: step1. construct JsAccessibilityManager
2786      */
2787     std::vector<std::string> params = {};
2788     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2789 
2790     params = { "-inspector", "--get-whitelist"};
2791     auto ret = jsAccessibilityManager->CheckDumpInfoParams(params);
2792     EXPECT_EQ(ret, true);
2793     std::vector<uint32_t> eventList = {1, 2};
2794     jsAccessibilityManager->UpdateEventWhiteList(eventList);
2795     jsAccessibilityManager->OnDumpInfoNG(params, 1, false);
2796 }
2797 
2798 /**
2799  * @tc.name: SendEventToAccessibilityWithNode004
2800  * @tc.desc: SendEventToAccessibilityWithNode
2801  * @tc.type: FUNC
2802  */
2803 HWTEST_F(JsAccessibilityManagerTest, SendEventToAccessibilityWithNode004, TestSize.Level1)
2804 {
2805     auto context = NG::PipelineContext::GetCurrentContext();
2806     CHECK_NULL_VOID(context);
2807     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), true);
2808     CHECK_NULL_VOID(frameNode);
2809     auto root = context->GetRootElement();
2810     CHECK_NULL_VOID(root);
2811     root->AddChild(frameNode);
2812     MockJsAccessibilityManager mockJsManger;
2813     mockJsManger.SetPipelineContext(context);
2814     mockJsManger.Register(true);
2815     int64_t nodeId = frameNode->GetAccessibilityId();
2816     int32_t eventId = 2;
2817     std::vector<std::string> params;
2818     params.push_back("-inspector");
2819     params.push_back("1");
2820     params.push_back("--stackNodeId");
2821     int64_t testStackId = 2;
2822     params.push_back(std::to_string(testStackId));
2823     mockJsManger.UpdateEventWhiteList({2});
2824     EXPECT_CALL(mockJsManger, SendEventToAccessibilityWithNode(_, _, _))
2825         .Times(1);
2826     mockJsManger.DumpSendEventTest(nodeId, eventId, params);
2827 }
2828 
2829 /**
2830  * @tc.name: GetTransformDegreeRelativeToWindow001
2831  * @tc.desc: Test GetTransformDegreeRelativeToWindow
2832  * @tc.type: FUNC
2833  */
2834 HWTEST_F(JsAccessibilityManagerTest, GetTransformDegreeRelativeToWindow001, TestSize.Level1)
2835 {
2836     auto frameNode = FrameNode::CreateFrameNode("framenode", 1, AceType::MakeRefPtr<Pattern>(), false);
2837     ASSERT_NE(frameNode, nullptr);
2838 
2839     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2840     ASSERT_NE(jsAccessibilityManager, nullptr);
2841 
2842     int32_t result = jsAccessibilityManager->GetTransformDegreeRelativeToWindow(frameNode, false);
2843     EXPECT_EQ(result, 0);
2844 }
2845 
2846 /**
2847  * @tc.name: JsAccessibilityManager043
2848  * @tc.desc: test UpdateVirtualNodeFocus
2849  * @tc.type: FUNC
2850  */
2851 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager043, TestSize.Level1)
2852 {
2853     /**
2854      * @tc.steps: step1. construct jsAccessibilityManager
2855      */
2856     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2857     ASSERT_NE(jsAccessibilityManager, nullptr);
2858     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2859         AceType::MakeRefPtr<Pattern>(), false);
2860     ASSERT_NE(frameNode, nullptr);
2861     frameNode->isAccessibilityVirtualNode_ = true;
2862     frameNode->accessibilityId_ = 1;
2863     jsAccessibilityManager->lastFrameNode_ = frameNode;
2864     jsAccessibilityManager->currentFocusNodeId_ = frameNode->accessibilityId_;
2865 
2866     /**
2867      * @tc.steps: step2. construct parentNode
2868      */
2869     auto rootNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2870         AceType::MakeRefPtr<Pattern>(), true);
2871     ASSERT_NE(rootNode, nullptr);
2872     rootNode->accessibilityId_ = 0;
2873     rootNode->children_.push_back(frameNode);
2874     frameNode->SetAccessibilityVirtualNodeParent(rootNode);
2875     EXPECT_EQ(rootNode->children_.size(), 1);
2876 
2877     /**
2878      * @tc.steps: step3. construct size
2879      */
2880     NG::SizeF size;
2881     size.width_ = 123.0f;
2882     size.height_ = 456.0f;
2883     jsAccessibilityManager->oldGeometrySize_ = size;
2884     frameNode->geometryNode_->SetFrameSize(size);
2885 
2886     /**
2887      * @tc.steps: step4. test UpdateVirtualNodeFocus
2888      */
2889     auto accessibilityProperty = frameNode->GetAccessibilityProperty<NG::AccessibilityProperty>();
2890     accessibilityProperty->SetAccessibilityFocusState(false);
2891     jsAccessibilityManager->UpdateVirtualNodeFocus();
2892     EXPECT_EQ(accessibilityProperty->isAccessibilityFocused_, true);
2893 }
2894 
2895 /**
2896  * @tc.name: JsAccessibilityManager044
2897  * @tc.desc: Test UpdateVirtualNodeInfo
2898  * @tc.type: FUNC
2899  */
2900 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager044, TestSize.Level1)
2901 {
2902     /**
2903      * @tc.steps: step1. construct JsAccessibilityManager
2904      */
2905     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2906         AceType::MakeRefPtr<Pattern>(), false);
2907     ASSERT_NE(frameNode, nullptr);
2908     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2909     ASSERT_NE(jsAccessibilityManager, nullptr);
2910     auto context = NG::PipelineContext::GetCurrentContext();
2911     ASSERT_NE(context, nullptr);
2912     jsAccessibilityManager->SetPipelineContext(context);
2913 
2914     std::list<AccessibilityElementInfo> infos;
2915     Accessibility::AccessibilityElementInfo nodeInfo;
2916     Framework::CommonProperty commonProperty;
2917     /**
2918      * @tc.steps: step2. test UpdateVirtualNodeInfo
2919      */
2920     jsAccessibilityManager->UpdateVirtualNodeInfo(infos, nodeInfo, frameNode, commonProperty, context);
2921     EXPECT_TRUE(infos.empty());
2922 }
2923 
2924 /**
2925  * @tc.name: JsAccessibilityManager045
2926  * @tc.desc: Test UpdateChildrenNodeInCache
2927  * @tc.type: FUNC
2928  */
2929 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager045, TestSize.Level1)
2930 {
2931     /**
2932      * @tc.steps: step1. construct JsAccessibilityManager
2933      */
2934     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
2935         AceType::MakeRefPtr<Pattern>(), false);
2936     ASSERT_NE(frameNode, nullptr);
2937     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2938     ASSERT_NE(jsAccessibilityManager, nullptr);
2939     auto context = NG::PipelineContext::GetCurrentContext();
2940     ASSERT_NE(context, nullptr);
2941     jsAccessibilityManager->SetPipelineContext(context);
2942 
2943     std::list<AccessibilityElementInfo> infos;
2944     Accessibility::AccessibilityElementInfo nodeInfo;
2945     Framework::CommonProperty commonProperty;
2946     /**
2947      * @tc.steps: step2. test UpdateChildrenNodeInCache
2948      */
2949     Framework::SearchParameter searchParam;
2950     std::list<AccessibilityElementInfo> infosSecond;
2951     std::list<RefPtr<NG::FrameNode>> children;
2952     jsAccessibilityManager->UpdateChildrenNodeInCache(infosSecond, commonProperty,
2953         context, searchParam, children);
2954     EXPECT_TRUE(infosSecond.empty());
2955 
2956     children.emplace_back(frameNode);
2957     jsAccessibilityManager->UpdateChildrenNodeInCache(infosSecond, commonProperty,
2958         context, searchParam, children);
2959     EXPECT_EQ(infosSecond.size(), 1);
2960 
2961     auto vNode = FrameNode::CreateFrameNode(V2::PAGE_ETS_TAG,
2962         ElementRegister::GetInstance()->MakeUniqueId(),
2963         AceType::MakeRefPtr<Pattern>());
2964     auto vChildNode = FrameNode::CreateFrameNode(V2::WINDOW_SCENE_ETS_TAG,
2965         ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>());
2966     vNode->AddChild(vChildNode);
2967     auto accessibilityProperty = frameNode->GetAccessibilityProperty<AccessibilityProperty>();
2968     accessibilityProperty->SetAccessibilityLevel("yes");
2969     accessibilityProperty->SetAccessibilityGroup(false);
2970     accessibilityProperty->SaveAccessibilityVirtualNode(vNode);
2971     commonProperty.isReduceMode = true;
2972     std::list<AccessibilityElementInfo> infosThird;
2973     jsAccessibilityManager->UpdateChildrenNodeInCache(infosThird, commonProperty,
2974         context, searchParam, children);
2975     EXPECT_EQ(infosSecond.size(), 1);
2976 }
2977 
2978 /**
2979  * @tc.name: JsAccessibilityManager046
2980  * @tc.desc: test OnDumpInfoNG
2981  * @tc.type: FUNC
2982  */
2983 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager046, TestSize.Level1)
2984 {
2985     std::vector<std::string> params;
2986     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
2987     params.push_back("-inspector");
2988     params.push_back("--specific-search");
2989     params.push_back("1");
2990     params.push_back("2");
2991     auto ret = jsAccessibilityManager->CheckDumpInfoParams(params);
2992     EXPECT_EQ(ret, true);
2993     jsAccessibilityManager->OnDumpInfoNG(params, 1, false);
2994 }
2995 
2996 /**
2997  * @tc.name: JsAccessibilityManager047
2998  * @tc.desc: test UpdateAccessibilityVisible nodeInfo
2999  * @tc.type: FUNC
3000  */
3001 HWTEST_F(JsAccessibilityManagerTest, JsAccessibilityManager047, TestSize.Level1)
3002 {
3003     /**
3004      * @tc.steps: step1. construct JsAccessibilityManager
3005      */
3006     auto frameNode1 = AceType::MakeRefPtr<NG::FrameNode>(V2::PAGE_ETS_TAG, 555, AceType::MakeRefPtr<NG::Pattern>());
3007     ASSERT_NE(frameNode1, nullptr);
3008     auto frameNode2 = AceType::MakeRefPtr<NG::FrameNode>(V2::PAGE_ETS_TAG, 666, AceType::MakeRefPtr<NG::Pattern>());
3009     ASSERT_NE(frameNode2, nullptr);
3010     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
3011     ASSERT_NE(jsAccessibilityManager, nullptr);
3012     AceApplicationInfo::GetInstance().SetAccessibilityScreenReadEnabled(true);
3013 
3014     /**
3015      * @tc.steps: step2. set accessibility visible
3016      */
3017     frameNode1->SetAccessibilityVisible(false);
3018     frameNode2->SetAccessibilityVisible(true);
3019 
3020     /**
3021      * @tc.steps: step3. test UpdateAccessibilityVisible
3022      */
3023     Accessibility::AccessibilityElementInfo info1;
3024     Accessibility::AccessibilityElementInfo info2;
3025     jsAccessibilityManager->UpdateAccessibilityVisible(frameNode1, info1);
3026     EXPECT_EQ(info1.GetAccessibilityVisible(), false);
3027     jsAccessibilityManager->UpdateAccessibilityVisible(frameNode2, info2);
3028     EXPECT_EQ(info2.GetAccessibilityVisible(), true);
3029 }
3030 
3031 #ifdef WEB_SUPPORTED
3032 /**
3033  * @tc.name: GetWebAccessibilityIdBySurfaceId
3034  * @tc.desc: Test GetWebAccessibilityIdBySurfaceId with valid and invalid surfaceId
3035  * @tc.type: FUNC
3036  */
3037 HWTEST_F(JsAccessibilityManagerTest, GetWebAccessibilityIdBySurfaceId001, TestSize.Level1)
3038 {
3039     auto mainFrameNode = FrameNode::CreateFrameNode(
3040         "main", 1, AceType::MakeRefPtr<NodeContainerPattern>(), true);
3041     ViewStackProcessor::GetInstance()->Push(mainFrameNode);
3042 
3043     auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
3044     ASSERT_NE(frameNode, nullptr);
3045     auto pattern = AceType::DynamicCast<NodeContainerPattern>(frameNode->GetPattern());
3046     ASSERT_NE(pattern, nullptr);    auto pipe = MockPipelineContext::GetCurrent();
3047     frameNode->context_ = AceType::RawPtr(pipe);
3048 
3049     pattern->surfaceId_ = 1U;
3050 
3051     auto exportNode = AceType::MakeRefPtr<FrameNode>("exportNode", -1, AceType::MakeRefPtr<Pattern>());
3052     ASSERT_NE(exportNode, nullptr);
3053     auto context = NG::PipelineContext::GetCurrentContext();
3054     ASSERT_NE(context, nullptr);
3055     exportNode->context_ = AceType::RawPtr(context);
3056 
3057     pattern->exportTextureNode_ = AceType::WeakClaim(AceType::RawPtr(exportNode));
3058     auto rootElement = context->GetRootElement();
3059     ASSERT_NE(rootElement, nullptr);
3060     rootElement->AddChild(exportNode);
3061 
3062     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
3063     ASSERT_NE(jsAccessibilityManager, nullptr);
3064     jsAccessibilityManager->SetPipelineContext(context);
3065     jsAccessibilityManager->Register(true);
3066 
3067     std::stringstream ss;
3068     ss << 1U;
3069     auto accessibilityId = jsAccessibilityManager->GetWebAccessibilityIdBySurfaceId(ss.str());
3070     EXPECT_EQ(accessibilityId, -1);
3071 
3072     auto accessibilityId2 = jsAccessibilityManager->GetWebAccessibilityIdBySurfaceId("not_exist_id");
3073     EXPECT_EQ(accessibilityId2, -1);
3074 }
3075 #endif
3076 
3077 /**
3078  * @tc.name: CheckAndGetEmbedFrameNode001
3079  * @tc.desc: Test CheckAndGetEmbedFrameNode with normal and nullptr node
3080  * @tc.type: FUNC
3081  */
3082 HWTEST_F(JsAccessibilityManagerTest, CheckAndGetEmbedFrameNode001, TestSize.Level1)
3083 {
3084     auto frameNode = FrameNode::CreateFrameNode(
3085         "embedNode", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>(), true);
3086     ASSERT_NE(frameNode, nullptr);
3087     auto context = NG::PipelineContext::GetCurrentContext();
3088     ASSERT_NE(context, nullptr);
3089     frameNode->context_ = AceType::RawPtr(context);
3090 
3091     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
3092     ASSERT_NE(jsAccessibilityManager, nullptr);
3093     jsAccessibilityManager->SetPipelineContext(context);
3094     jsAccessibilityManager->Register(true);
3095 
3096     int64_t ret = jsAccessibilityManager->CheckAndGetEmbedFrameNode(frameNode);
3097     EXPECT_EQ(ret, -1);
3098 
3099     RefPtr<NG::FrameNode> nullNode;
3100     ret = jsAccessibilityManager->CheckAndGetEmbedFrameNode(nullNode);
3101     EXPECT_EQ(ret, -1);
3102 }
3103 
3104 /**
3105  * @tc.name: SearchElementInfoBySurfaceId001
3106  * @tc.desc: Test SearchElementInfoBySurfaceId with valid surfaceId and different types
3107  * @tc.type: FUNC
3108  */
3109 HWTEST_F(JsAccessibilityManagerTest, SearchElementInfoBySurfaceId001, TestSize.Level1)
3110 {
3111     auto context = NG::PipelineContext::GetCurrentContext();
3112     ASSERT_NE(context, nullptr);
3113 
3114     auto embedNode = FrameNode::CreateFrameNode(
3115         "embedNode", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>());
3116     ASSERT_NE(embedNode, nullptr);
3117     embedNode->context_ = AceType::RawPtr(context);
3118     embedNode->isActive_ = true;
3119 
3120     uint64_t surfaceId = embedNode->GetId();
3121     ElementRegister::GetInstance()->RegisterEmbedNode(surfaceId, embedNode);
3122 
3123     auto rootElement = context->GetRootElement();
3124     ASSERT_NE(rootElement, nullptr);
3125     rootElement->AddChild(embedNode);
3126 
3127     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
3128     ASSERT_NE(jsAccessibilityManager, nullptr);
3129     jsAccessibilityManager->SetPipelineContext(context);
3130     jsAccessibilityManager->Register(true);
3131     jsAccessibilityManager->SetWindowId(1);
3132 
3133     std::list<AccessibilityElementInfo> infos;
3134     auto ret = jsAccessibilityManager->SearchElementInfoBySurfaceId(
3135         std::to_string(surfaceId), 1, Framework::SearchSurfaceIdType::SEARCH_ALL, infos);
3136     EXPECT_EQ(ret, Framework::SearchSurfaceIdRet::SEARCH_SUCCESS);
3137     EXPECT_FALSE(infos.empty());
3138 
3139     infos.clear();
3140     ret = jsAccessibilityManager->SearchElementInfoBySurfaceId(
3141         "not_exist_id", 1, Framework::SearchSurfaceIdType::SEARCH_ALL, infos);
3142     EXPECT_EQ(ret, Framework::SearchSurfaceIdRet::NO_MATCH_NODE);
3143     EXPECT_TRUE(infos.empty());
3144 
3145     rootElement->RemoveChild(embedNode);
3146 }
3147 
3148 /**
3149  * @tc.name: IsTagInEmbedComponent001
3150  * @tc.desc: Test IsTagInEmbedComponent with exist componentType
3151  * @tc.type: FUNC
3152  */
3153 HWTEST_F(JsAccessibilityManagerTest, IsTagInEmbedComponent001, TestSize.Level1)
3154 {
3155     std::string tag = "embeddedObject";
3156     bool result = OHOS::Ace::Framework::JsAccessibilityManager::IsTagInEmbedComponent(tag);
3157     EXPECT_TRUE(result);
3158 }
3159 
3160 /**
3161  * @tc.name: IsTagInEmbedComponent002
3162  * @tc.desc: Test IsTagInEmbedComponent with no exist componentType
3163  * @tc.type: FUNC
3164  */
3165 HWTEST_F(JsAccessibilityManagerTest, IsTagInEmbedComponent002, TestSize.Level1)
3166 {
3167     std::string tag = "noExist_embeddedObject";
3168     bool result = OHOS::Ace::Framework::JsAccessibilityManager::IsTagInEmbedComponent(tag);
3169     EXPECT_FALSE(result);
3170 }
3171 
3172 /**
3173  * @tc.name: IsTagInEmbedComponent003
3174  * @tc.desc: Test IsTagInEmbedComponent with null string
3175  * @tc.type: FUNC
3176  */
3177 HWTEST_F(JsAccessibilityManagerTest, IsTagInEmbedComponent003, TestSize.Level1)
3178 {
3179     std::string tag = "";
3180     bool result = OHOS::Ace::Framework::JsAccessibilityManager::IsTagInEmbedComponent(tag);
3181     EXPECT_FALSE(result);
3182 }
3183 
3184 /**
3185  * @tc.name: InitializeCallback001
3186  * @tc.desc: Test InitializeCallback with register false
3187  * @tc.type: FUNC
3188  */
3189 HWTEST_F(JsAccessibilityManagerTest, InitializeCallback001, TestSize.Level1)
3190 {
3191     /**
3192      * @tc.steps: step1. construct JsAccessibilityManager
3193      */
3194     MockPipelineContext::SetUp();
3195     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
3196     ASSERT_NE(jsAccessibilityManager, nullptr);
3197 
3198     auto context = MockPipelineContext::GetCurrentContext();
3199     ASSERT_NE(context, nullptr);
3200     context->SetWindowId(1);
3201     jsAccessibilityManager->SetPipelineContext(context);
3202 
3203     /**
3204      * @tc.steps: step2. test InitializeCallback with register false;
3205      */
3206     jsAccessibilityManager->Register(false);
3207     jsAccessibilityManager->InitializeCallback();
3208     EXPECT_EQ(jsAccessibilityManager->windowId_, 1);
3209     MockPipelineContext::TearDown();
3210 }
3211 
3212 /**
3213  * @tc.name: InitializeCallback002
3214  * @tc.desc: Test InitializeCallback with register true
3215  * @tc.type: FUNC
3216  */
3217 HWTEST_F(JsAccessibilityManagerTest, InitializeCallback002, TestSize.Level1)
3218 {
3219     /**
3220      * @tc.steps: step1. construct JsAccessibilityManager
3221      */
3222     MockPipelineContext::SetUp();
3223     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
3224     ASSERT_NE(jsAccessibilityManager, nullptr);
3225 
3226     auto context = MockPipelineContext::GetCurrentContext();
3227     ASSERT_NE(context, nullptr);
3228     context->SetWindowId(1);
3229     jsAccessibilityManager->SetPipelineContext(context);
3230 
3231     /**
3232      * @tc.steps: step2. test InitializeCallback with register true;
3233      */
3234     jsAccessibilityManager->Register(true);
3235     jsAccessibilityManager->InitializeCallback();
3236     EXPECT_EQ(jsAccessibilityManager->windowId_, 0);
3237     MockPipelineContext::TearDown();
3238 }
3239 
3240 /**
3241  * @tc.name: SearchElementInfoBySurfaceId002
3242  * @tc.desc: Test SearchElementInfoBySurfaceId with valid surfaceId and different types
3243  * @tc.type: FUNC
3244  */
3245 HWTEST_F(JsAccessibilityManagerTest, SearchElementInfoBySurfaceId002, TestSize.Level1)
3246 {
3247     MockPipelineContext::SetUp();
3248     auto context = NG::PipelineContext::GetCurrentContext();
3249     ASSERT_NE(context, nullptr);
3250 
3251     auto embedNode = FrameNode::CreateFrameNode(
3252         "embedNode", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>());
3253     ASSERT_NE(embedNode, nullptr);
3254     embedNode->context_ = AceType::RawPtr(context);
3255     embedNode->isActive_ = true;
3256 
3257     uint64_t surfaceId = embedNode->GetId();
3258     ElementRegister::GetInstance()->RegisterEmbedNode(surfaceId, embedNode);
3259 
3260     auto rootElement = context->GetRootElement();
3261     ASSERT_NE(rootElement, nullptr);
3262     rootElement->AddChild(embedNode);
3263 
3264     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
3265     ASSERT_NE(jsAccessibilityManager, nullptr);
3266     jsAccessibilityManager->SetPipelineContext(context);
3267     jsAccessibilityManager->Register(true);
3268     jsAccessibilityManager->SetWindowId(1);
3269 
3270     std::list<AccessibilityElementInfo> infos;
3271     auto ret = jsAccessibilityManager->SearchElementInfoBySurfaceId(
3272         std::to_string(surfaceId), 1, Framework::SearchSurfaceIdType::SEARCH_TAIL, infos);
3273     EXPECT_EQ(ret, Framework::SearchSurfaceIdRet::SEARCH_SUCCESS);
3274     EXPECT_EQ(infos.size(), 1);
3275 
3276     rootElement->RemoveChild(embedNode);
3277 }
3278 
3279 /**
3280  * @tc.name: UpdateChildrenNodeInCache001
3281  * @tc.desc: Test UpdateChildrenNodeInCache Func
3282  * @tc.type: FUNC
3283  */
3284 HWTEST_F(JsAccessibilityManagerTest, UpdateChildrenNodeInCache001, TestSize.Level1)
3285 {
3286     /**
3287      * @tc.steps: step1. create PipelineContext
3288      */
3289     MockPipelineContext::SetUp();
3290     auto context = NG::PipelineContext::GetCurrentContext();
3291     ASSERT_NE(context, nullptr);
3292 
3293     /**
3294      * @tc.steps: step2. create frameNode and add child
3295      */
3296     auto rootNode = FrameNode::CreateFrameNode(V2::WINDOW_SCENE_ETS_TAG,
3297         ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>(), true);
3298     ASSERT_NE(rootNode, nullptr);
3299     rootNode->context_ = AceType::RawPtr(context);
3300     rootNode->isActive_ = true;
3301     auto embedNode = FrameNode::CreateFrameNode(
3302         "embedNode", ElementRegister::GetInstance()->MakeUniqueId(), AceType::MakeRefPtr<Pattern>());
3303     ASSERT_NE(embedNode, nullptr);
3304     embedNode->context_ = AceType::RawPtr(context);
3305     embedNode->isActive_ = true;
3306     rootNode->AddChild(embedNode);
3307 
3308     /**
3309      * @tc.steps: step3. construct JsAccessibilityManager
3310      */
3311     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
3312     ASSERT_NE(jsAccessibilityManager, nullptr);
3313     jsAccessibilityManager->SetPipelineContext(context);
3314     jsAccessibilityManager->Register(true);
3315     jsAccessibilityManager->SetWindowId(1);
3316 
3317     /**
3318      * @tc.steps: step4. construct the parameters required to test the UpdateChildrenNodeInCache function.
3319      */
3320     std::list<AccessibilityElementInfo> infos;
3321     auto mainContext = context;
3322     Framework::CommonProperty commonProperty;
3323     jsAccessibilityManager->GenerateCommonProperty(context, commonProperty, mainContext, rootNode);
3324     auto mode = 1 << 3;
3325     Framework::SearchParameter param {-1, "", mode, NG::UI_EXTENSION_OFFSET_MAX};
3326     std::list<RefPtr<NG::FrameNode>> children {rootNode};
3327 
3328     /**
3329      * @tc.steps: step4. test UpdateChildrenNodeInCache
3330      */
3331     jsAccessibilityManager->UpdateChildrenNodeInCache(infos, commonProperty, context, param, children);
3332     EXPECT_EQ(infos.size(), 2);
3333 
3334     infos.clear();
3335     commonProperty.checkGetFunc = nullptr;
3336     commonProperty.checkEmbedNode = false;
3337     children = {rootNode};
3338     jsAccessibilityManager->UpdateChildrenNodeInCache(infos, commonProperty, context, param, children);
3339     EXPECT_EQ(infos.size(), 2);
3340 }
3341 
3342 /**
3343  * @tc.name: SearchElementInfoByAccessibilityIdNG001
3344  * @tc.desc: Test SearchElementInfoByAccessibilityIdNG
3345  * @tc.type: FUNC
3346  */
3347 HWTEST_F(JsAccessibilityManagerTest, SearchElementInfoByAccessibilityIdNG001, TestSize.Level1)
3348 {
3349     MockPipelineContext::SetUp();
3350     auto context = PipelineContext::GetCurrentContext();
3351     ASSERT_NE(context, nullptr);
3352 
3353     auto embedNode = FrameNode::CreateFrameNode(
3354         "embedNode", ElementRegister::GetInstance()->MakeUniqueId(),
3355         AceType::MakeRefPtr<Pattern>());
3356     ASSERT_NE(embedNode, nullptr);
3357     embedNode->context_ = AceType::RawPtr(context);
3358     embedNode->isActive_ = true;
3359 
3360     uint64_t surfaceId = embedNode->GetId();
3361     ElementRegister::GetInstance()->RegisterEmbedNode(surfaceId, embedNode);
3362 
3363     auto rootElement = context->GetRootElement();
3364     ASSERT_NE(rootElement, nullptr);
3365     rootElement->AddChild(embedNode);
3366 
3367     auto jsAccessibilityManager = AceType::MakeRefPtr<OHOS::Ace::Framework::JsAccessibilityManager>();
3368     ASSERT_NE(jsAccessibilityManager, nullptr);
3369     jsAccessibilityManager->SetPipelineContext(context);
3370     jsAccessibilityManager->Register(true);
3371 
3372     std::list<OHOS::Ace::Framework::AccessibilityElementInfo> infos;
3373     int64_t elementId = embedNode->GetAccessibilityId();
3374     jsAccessibilityManager->SearchElementInfoByAccessibilityIdNG(
3375         elementId, 0, infos, context, UI_EXTENSION_OFFSET_MAX);
3376 
3377     EXPECT_FALSE(infos.empty());
3378     EXPECT_NE(infos.front().GetParentNodeId(), -1);
3379 
3380     rootElement->RemoveChild(embedNode);
3381 }
3382 
3383 /**
3384  * @tc.name: UpdateElementInfoTreeId001
3385  * @tc.desc: Test UpdateElementInfoTreeId with different treeId, parentId, childIds
3386  * @tc.type: FUNC
3387  */
3388 HWTEST_F(JsAccessibilityManagerTest, UpdateElementInfoTreeId001, TestSize.Level1)
3389 {
3390     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
3391     Accessibility::AccessibilityElementInfo info;
3392 
3393     info.SetBelongTreeId(0);
3394     info.SetAccessibilityId(100);
3395     info.SetParent(200);
3396     jsAccessibilityManager->UpdateElementInfoTreeId(info);
3397     EXPECT_EQ(info.GetBelongTreeId(), 0);
3398     EXPECT_EQ(info.GetAccessibilityId(), 100);
3399     EXPECT_EQ(info.GetParentNodeId(), 200);
3400 
3401     info.SetBelongTreeId(10);
3402     info.SetAccessibilityId(101);
3403     info.SetParent(-1);
3404     jsAccessibilityManager->UpdateElementInfoTreeId(info);
3405     EXPECT_EQ(info.GetBelongTreeId(), 10);
3406     EXPECT_EQ(info.GetParentNodeId(), -1);
3407 
3408     info.SetBelongTreeId(20);
3409     info.SetAccessibilityId(102);
3410     int64_t parentId = 202;
3411     info.SetParent(parentId);
3412     jsAccessibilityManager->UpdateElementInfoTreeId(info);
3413     int64_t expectedParentId = parentId;
3414     AccessibilitySystemAbilityClient::SetSplicElementIdTreeId(20, expectedParentId);
3415     EXPECT_EQ(info.GetBelongTreeId(), 20);
3416     EXPECT_EQ(info.GetParentNodeId(), expectedParentId);
3417 
3418     info.SetBelongTreeId(30);
3419     info.SetAccessibilityId(103);
3420     info.SetParent(203);
3421     info.AddChild(301);
3422     info.AddChild(302);
3423     jsAccessibilityManager->UpdateElementInfoTreeId(info);
3424     EXPECT_EQ(info.GetBelongTreeId(), 30);
3425     auto childIds = info.GetChildIds();
3426     int64_t childId1 = 301;
3427     int64_t childId2 = 302;
3428     AccessibilitySystemAbilityClient::SetSplicElementIdTreeId(30, childId1);
3429     AccessibilitySystemAbilityClient::SetSplicElementIdTreeId(30, childId2);
3430     EXPECT_NE(std::find(childIds.begin(), childIds.end(), childId1), childIds.end());
3431     EXPECT_NE(std::find(childIds.begin(), childIds.end(), childId2), childIds.end());
3432 }
3433 
3434 /**
3435  * @tc.name: ExecuteActionNG001
3436  * @tc.desc: Test func ExecuteActionNG
3437  * @tc.type: FUNC
3438  */
3439 HWTEST_F(JsAccessibilityManagerTest, ExecuteActionNG001, TestSize.Level1)
3440 {
3441     /**
3442      * @tc.steps: step1. construct jsAccessibilityManager, test node
3443      */
3444     MockPipelineContext::SetUp();
3445     auto frameNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
3446         AceType::MakeRefPtr<Pattern>(), false);
3447     ASSERT_NE(frameNode, nullptr);
3448     auto context = NG::PipelineContext::GetCurrentContext();
3449     ASSERT_NE(context, nullptr);
3450     auto root = context->GetRootElement();
3451     ASSERT_NE(root, nullptr);
3452     root->focusHub_ = nullptr;
3453     root->accessibilityProperty_ = nullptr;
3454     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
3455     ASSERT_NE(jsAccessibilityManager, nullptr);
3456     jsAccessibilityManager->SetPipelineContext(context);
3457     jsAccessibilityManager->Register(true);
3458     jsAccessibilityManager->SetWindowId(1);
3459 
3460     /**
3461      * @tc.steps: step2. test func ExecuteActionNG
3462      */
3463     const std::map<std::string, std::string> actionArguments {};
3464     auto lhs = jsAccessibilityManager->ExecuteActionNG(
3465         root->GetAccessibilityId(), actionArguments, ActionType::ACCESSIBILITY_ACTION_CLICK, nullptr, -1);
3466     EXPECT_FALSE(lhs);
3467     jsAccessibilityManager->SetIsIgnoreAllAction(true);
3468     lhs = jsAccessibilityManager->ExecuteActionNG(
3469         root->GetAccessibilityId(), actionArguments, ActionType::ACCESSIBILITY_ACTION_CLICK, context, -1);
3470     EXPECT_FALSE(lhs);
3471     lhs = jsAccessibilityManager->ExecuteActionNG(
3472         root->GetAccessibilityId(), actionArguments, ActionType::ACCESSIBILITY_ACTION_FOCUS, context, -1);
3473     lhs = jsAccessibilityManager->ExecuteActionNG(
3474         root->GetAccessibilityId(), actionArguments, ActionType::ACCESSIBILITY_ACTION_CLEAR_FOCUS, context, -1);
3475     MockPipelineContext::TearDown();
3476 }
3477 
3478 /**
3479  * @tc.name: ReleaseCacheEvent001
3480  * @tc.desc: Test func ReleaseCacheEvent
3481  * @tc.type: FUNC
3482  */
3483 HWTEST_F(JsAccessibilityManagerTest, ReleaseCacheEvent001, TestSize.Level1)
3484 {
3485     /**
3486      * @tc.steps: step1. construct jsAccessibilityManager
3487      */
3488     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
3489     ASSERT_NE(jsAccessibilityManager, nullptr);
3490 
3491     /**
3492      * @tc.steps: step2. test func ReleaseCacheEvent
3493      */
3494     jsAccessibilityManager->ReleaseCacheEvent();
3495     EXPECT_TRUE(jsAccessibilityManager->eventQueue_.empty());
3496     AccessibilityEvent accessibilityEvent;
3497     jsAccessibilityManager->eventQueue_.push(accessibilityEvent);
3498     jsAccessibilityManager->ReleaseCacheEvent();
3499     EXPECT_TRUE(jsAccessibilityManager->eventQueue_.empty());
3500 }
3501 
3502 /**
3503  * @tc.name: IsSendAccessibilityEventForUEA001
3504  * @tc.desc: Test func IsSendAccessibilityEventForUEA
3505  * @tc.type: FUNC
3506  */
3507 HWTEST_F(JsAccessibilityManagerTest, IsSendAccessibilityEventForUEA001, TestSize.Level1)
3508 {
3509     /**
3510      * @tc.steps: step1. construct IsSendAccessibilityEventForUEA
3511      */
3512     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
3513     ASSERT_NE(jsAccessibilityManager, nullptr);
3514 
3515     /**
3516      * @tc.steps: step2. test func ReleaseCacheEvent
3517      */
3518     AccessibilityEvent accessibilityEvent;
3519     std::string componentType = V2::STAGE_ETS_TAG;
3520     int32_t pageId = 2;
3521 
3522     jsAccessibilityManager->UpdatePageMode(std::string(""));
3523     jsAccessibilityManager->treeId_ = -1;
3524     auto ret = jsAccessibilityManager->IsSendAccessibilityEventForUEA(accessibilityEvent, componentType, pageId);
3525     EXPECT_FALSE(ret);
3526     jsAccessibilityManager->treeId_ = 1;
3527     ret = jsAccessibilityManager->IsSendAccessibilityEventForUEA(accessibilityEvent, componentType, pageId);
3528     EXPECT_TRUE(ret);
3529 
3530     jsAccessibilityManager->UpdatePageMode(std::string("FULL_SILENT"));
3531     ret = jsAccessibilityManager->IsSendAccessibilityEventForUEA(accessibilityEvent, componentType, pageId);
3532     EXPECT_FALSE(ret);
3533     jsAccessibilityManager->UpdatePageMode(std::string("SEMI_SILENT"));
3534     ret = jsAccessibilityManager->IsSendAccessibilityEventForUEA(accessibilityEvent, componentType, pageId);
3535     EXPECT_TRUE(ret);
3536 }
3537 
3538 /**
3539  * @tc.name: FindUIExtensionAccessibilityElement001
3540  * @tc.desc: Test FindUIExtensionAccessibilityElement
3541  * @tc.type: FUNC
3542  */
3543 HWTEST_F(JsAccessibilityManagerTest, FindUIExtensionAccessibilityElement001, TestSize.Level1)
3544 {
3545     MockPipelineContext::SetUp();
3546     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
3547     auto checkNode = FrameNode::CreateFrameNode("framenode", ElementRegister::GetInstance()->MakeUniqueId(),
3548         AceType::MakeRefPtr<Pattern>(), false);
3549     ASSERT_NE(checkNode, nullptr);
3550     std::string customid = "testCustomId";
3551     Framework::CommonProperty commonProperty;
3552     std::list<AccessibilityElementInfo> infos;
3553     auto context = PipelineContext::GetCurrentContext();
3554     ASSERT_NE(context, nullptr);
3555     Accessibility::AccessibilityElementInfo elementInfo;
3556     elementInfo.SetInspectorKey(customid);
3557     infos.push_back(elementInfo);
3558     bool result = jsAccessibilityManager->FindUIExtensionAccessibilityElement(checkNode,
3559         customid, commonProperty, infos, context);
3560     EXPECT_FALSE(result);
3561     MockPipelineContext::TearDown();
3562 }
3563 
3564 /**
3565  * @tc.name: FindUIExtensionAccessibilityElement002
3566  * @tc.desc: Test FindUIExtensionAccessibilityElement
3567  * @tc.type: FUNC
3568  */
3569 HWTEST_F(JsAccessibilityManagerTest, FindUIExtensionAccessibilityElement002, TestSize.Level1)
3570 {
3571     MockPipelineContext::SetUp();
3572     auto jsAccessibilityManager = AceType::MakeRefPtr<Framework::JsAccessibilityManager>();
3573     auto uiExtensionNodeId = ElementRegister::GetInstance()->MakeUniqueId();
3574     auto uiExtensionNode = FrameNode::GetOrCreateFrameNode(
__anon15955db80e02() 3575         V2::UI_EXTENSION_COMPONENT_ETS_TAG, uiExtensionNodeId, []() {
3576         return AceType::MakeRefPtr<MockUiExtensionPattern>();
3577     });
3578     std::string customid = "testCustomId";
3579     Framework::CommonProperty commonProperty;
3580     std::list<AccessibilityElementInfo> infos;
3581     auto context = PipelineContext::GetCurrentContext();
3582     ASSERT_NE(context, nullptr);
3583     Accessibility::AccessibilityElementInfo elementInfo;
3584     elementInfo.SetInspectorKey(customid);
3585     infos.push_back(elementInfo);
3586     bool result = jsAccessibilityManager->FindUIExtensionAccessibilityElement(uiExtensionNode,
3587         customid, commonProperty, infos, context);
3588     EXPECT_TRUE(result);
3589     MockPipelineContext::TearDown();
3590 }
3591 } // namespace OHOS::Ace::NG