• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 
18 #include "display_manager.h"
19 #include "display_manager_config.h"
20 #include "future.h"
21 #include "wm_math.h"
22 #include "window_node.h"
23 #include "window_node_container.h"
24 
25 using namespace testing;
26 using namespace testing::ext;
27 
28 namespace OHOS {
29 namespace Rosen {
30 class WindowNodeTest : public testing::Test {
31 public:
32     static void SetUpTestCase();
33     static void TearDownTestCase();
34     virtual void SetUp() override;
35     virtual void TearDown() override;
36 };
37 
SetUpTestCase()38 void WindowNodeTest::SetUpTestCase()
39 {
40 }
41 
TearDownTestCase()42 void WindowNodeTest::TearDownTestCase()
43 {
44 }
45 
SetUp()46 void WindowNodeTest::SetUp()
47 {
48 }
49 
TearDown()50 void WindowNodeTest::TearDown()
51 {
52 }
53 class WindowListener : public IWindow {
54 public:
UpdateWindowRect(const struct Rect & rect,bool decoStatus,WindowSizeChangeReason reason,const std::shared_ptr<RSTransaction> & rsTransaction=nullptr)55     virtual WMError UpdateWindowRect(const struct Rect& rect, bool decoStatus, WindowSizeChangeReason reason,
56         const std::shared_ptr<RSTransaction>& rsTransaction = nullptr) override
57     {
58         return WMError::WM_OK;
59     };
UpdateWindowMode(WindowMode mode)60     virtual WMError UpdateWindowMode(WindowMode mode) override
61     {
62         return WMError::WM_OK;
63     };
UpdateWindowModeSupportType(uint32_t windowModeSupportType)64     virtual WMError UpdateWindowModeSupportType(uint32_t windowModeSupportType) override
65     {
66         return WMError::WM_OK;
67     };
UpdateFocusStatus(bool focused)68     virtual WMError UpdateFocusStatus(bool focused) override
69     {
70         return WMError::WM_OK;
71     };
UpdateAvoidArea(const sptr<AvoidArea> & avoidArea,AvoidAreaType type)72     virtual WMError UpdateAvoidArea(const sptr<AvoidArea>& avoidArea, AvoidAreaType type) override
73     {
74         return WMError::WM_OK;
75     };
UpdateWindowState(WindowState state)76     virtual WMError UpdateWindowState(WindowState state) override
77     {
78         return WMError::WM_OK;
79     };
UpdateWindowDragInfo(const PointInfo & point,DragEvent event)80     virtual WMError UpdateWindowDragInfo(const PointInfo& point, DragEvent event) override
81     {
82         return WMError::WM_OK;
83     };
UpdateDisplayId(DisplayId from,DisplayId to)84     virtual WMError UpdateDisplayId(DisplayId from, DisplayId to) override
85     {
86         return WMError::WM_OK;
87     };
UpdateOccupiedAreaChangeInfo(const sptr<OccupiedAreaChangeInfo> & info,const std::shared_ptr<RSTransaction> & rsTransaction=nullptr)88     virtual WMError UpdateOccupiedAreaChangeInfo(const sptr<OccupiedAreaChangeInfo>& info,
89         const std::shared_ptr<RSTransaction>& rsTransaction = nullptr) override
90     {
91         return WMError::WM_OK;
92     };
UpdateOccupiedAreaAndRect(const sptr<OccupiedAreaChangeInfo> & info,const Rect & rect,const std::shared_ptr<RSTransaction> & rsTransaction=nullptr)93     virtual WMError UpdateOccupiedAreaAndRect(const sptr<OccupiedAreaChangeInfo>& info, const Rect& rect,
94         const std::shared_ptr<RSTransaction>& rsTransaction = nullptr) override
95     {
96         return WMError::WM_OK;
97     };
UpdateActiveStatus(bool isActive)98     virtual WMError UpdateActiveStatus(bool isActive) override
99     {
100         return WMError::WM_OK;
101     };
GetWindowProperty()102     virtual sptr<WindowProperty> GetWindowProperty() override
103     {
104         return nullptr;
105     };
NotifyTouchOutside()106     virtual WMError NotifyTouchOutside() override
107     {
108         return WMError::WM_OK;
109     };
NotifyScreenshot()110     virtual WMError NotifyScreenshot() override
111     {
112         return WMError::WM_OK;
113     };
DumpInfo(const std::vector<std::string> & params)114     virtual WMError DumpInfo(const std::vector<std::string>& params) override
115     {
116         return WMError::WM_OK;
117     };
NotifyDestroy(void)118     virtual WMError NotifyDestroy(void) override
119     {
120         return WMError::WM_OK;
121     };
NotifyForeground(void)122     WMError NotifyForeground(void) override
123     {
124         return WMError::WM_OK;
125     };
NotifyBackground(void)126     WMError NotifyBackground(void) override
127     {
128         return WMError::WM_OK;
129     };
NotifyWindowClientPointUp(const std::shared_ptr<MMI::PointerEvent> & pointerEvent)130     virtual WMError NotifyWindowClientPointUp(const std::shared_ptr<MMI::PointerEvent>& pointerEvent) override
131     {
132         return WMError::WM_OK;
133     };
UpdateZoomTransform(const Transform & trans,bool isDisplayZoomOn)134     WMError UpdateZoomTransform(const Transform& trans, bool isDisplayZoomOn) override
135     {
136         return WMError::WM_OK;
137     };
RestoreSplitWindowMode(uint32_t mode)138     virtual WMError RestoreSplitWindowMode(uint32_t mode) override
139     {
140         return WMError::WM_OK;
141     };
142 
AsObject()143     virtual sptr<IRemoteObject> AsObject() override
144     {
145         return nullptr;
146     };
ConsumeKeyEvent(std::shared_ptr<MMI::KeyEvent> event)147     void ConsumeKeyEvent(std::shared_ptr<MMI::KeyEvent> event) override {}
NotifyForegroundInteractiveStatus(bool interactive)148     void NotifyForegroundInteractiveStatus(bool interactive) override {}
149 };
150 
CreateWindowProperty(uint32_t windowId,const std::string & windowName)151 sptr<WindowProperty> CreateWindowProperty(uint32_t windowId, const std::string& windowName)
152 {
153     sptr<WindowProperty> property = new WindowProperty();
154     property->SetWindowId(windowId);
155     property->SetWindowName(windowName);
156     return property;
157 }
158 
CreateRSSurfaceNode(std::string windowNode)159 RSSurfaceNode::SharedPtr CreateRSSurfaceNode(std::string windowNode)
160 {
161     struct RSSurfaceNodeConfig rsSurfaceNodeConfig;
162     rsSurfaceNodeConfig.SurfaceNodeName = windowNode;
163     auto surfaceNode = RSSurfaceNode::Create(rsSurfaceNodeConfig);
164     return surfaceNode;
165 }
166 namespace {
167 /**
168  * @tc.name: NewWindowNode01
169  * @tc.desc: new window node with WindowProperty
170  * @tc.type: FUNC
171  */
172 HWTEST_F(WindowNodeTest, NewWindowNode01, Function | SmallTest | Level3)
173 {
174     std::string windowName = "WindowNode01";
175     auto property = CreateWindowProperty(1, windowName);
176     ASSERT_NE(nullptr, property);
177 
178     sptr<WindowNode> windowNode2 = new WindowNode(property);
179     windowNode2->SetWindowProperty(property);
180     ASSERT_NE(nullptr, windowNode2);
181     ASSERT_EQ(windowName, windowNode2->GetWindowName());
182 }
183 
184 /**
185  * @tc.name: NewWindowNode02
186  * @tc.desc: new window node with WindowProperty, RSSurfaceNode, IWindow
187  * @tc.type: FUNC
188  */
189 HWTEST_F(WindowNodeTest, NewWindowNode02, Function | SmallTest | Level1)
190 {
191     std::string windowName = "WindowNode02";
192     auto property = CreateWindowProperty(2, windowName);
193     ASSERT_NE(nullptr, property);
194 
195     auto surfaceNode = CreateRSSurfaceNode(windowName);
196     ASSERT_NE(nullptr, surfaceNode);
197 
198     WindowListener* iWindow = new WindowListener();
199     ASSERT_NE(nullptr, iWindow);
200 
201     sptr<WindowNode> windowNode = new WindowNode(property, iWindow, surfaceNode);
202     ASSERT_NE(nullptr, windowNode);
203     windowNode->SetWindowProperty(property);
204     ASSERT_EQ(windowName, windowNode->GetWindowName());
205 }
206 
207 /**
208  * @tc.name: NewWindowNode03
209  * @tc.desc: new window node with WindowProperty, RSSurfaceNode, IWindow, pid , uid
210  * @tc.type: FUNC
211  */
212 HWTEST_F(WindowNodeTest, NewWindowNode03, Function | SmallTest | Level1)
213 {
214     std::string windowName = "WindowNode03";
215     auto property = CreateWindowProperty(3, windowName);
216     ASSERT_NE(nullptr, property);
217     auto surfaceNode = CreateRSSurfaceNode(windowName);
218     ASSERT_NE(nullptr, surfaceNode);
219     sptr<WindowListener> iWindow = new Rosen::WindowListener();
220     ASSERT_NE(nullptr, iWindow);
221 
222     int32_t pid = 1;
223     int32_t uid = 2;
224     WindowNode* windowNode = new WindowNode(property, iWindow, surfaceNode, pid, uid);
225     windowNode->SetWindowProperty(property);
226     ASSERT_NE(nullptr, windowNode);
227 
228     ASSERT_EQ(0, windowNode->GetInputEventCallingPid());
229     ASSERT_EQ(2, windowNode->GetCallingPid());
230     ASSERT_EQ(0, windowNode->GetCallingUid());
231 }
232 
233 /**
234  * @tc.name: SetDisplayId01
235  * @tc.desc: SetDisplayId & GetDisplayId
236  * @tc.type: FUNC
237  */
238 HWTEST_F(WindowNodeTest, SetDisplayId01, Function | SmallTest | Level1)
239 {
240     std::string windowName = "WindowNode04";
241     auto property = CreateWindowProperty(4, windowName);
242     ASSERT_NE(nullptr, property);
243 
244     WindowNode* windowNode = new WindowNode(property);
245     windowNode->SetWindowProperty(property);
246     ASSERT_NE(nullptr, windowNode);
247     ASSERT_EQ(0, windowNode->GetDisplayId());
248 
249     windowNode->SetDisplayId(1);
250     ASSERT_EQ(1, windowNode->GetDisplayId());
251 }
252 
253 /**
254  * @tc.name: SetEntireWindowTouchHotArea01
255  * @tc.desc: SetEntireWindowTouchHotArea & GetEntireWindowTouchHotArea
256  * @tc.type: FUNC
257  */
258 HWTEST_F(WindowNodeTest, SetEntireWindowTouchHotArea01, Function | SmallTest | Level1)
259 {
260     std::string windowName = "WindowNode05";
261     auto property = CreateWindowProperty(5, windowName);
262     ASSERT_NE(nullptr, property);
263 
264     sptr<WindowNode> windowNode = new WindowNode(property);
265     ASSERT_NE(nullptr, windowNode);
266     windowNode->SetWindowProperty(property);
267 
268     ASSERT_EQ(0, windowNode->GetEntireWindowTouchHotArea().posX_);
269     ASSERT_EQ(0, windowNode->GetEntireWindowTouchHotArea().posY_);
270     ASSERT_EQ(0, windowNode->GetEntireWindowTouchHotArea().width_);
271     ASSERT_EQ(0, windowNode->GetEntireWindowTouchHotArea().height_);
272 
273     Rect testValue = { 10, 10, 255, 255 };
274     windowNode->SetEntireWindowTouchHotArea(testValue);
275     ASSERT_EQ(testValue.posX_, windowNode->GetEntireWindowTouchHotArea().posX_);
276     ASSERT_EQ(testValue.posY_, windowNode->GetEntireWindowTouchHotArea().posY_);
277     ASSERT_EQ(testValue.width_, windowNode->GetEntireWindowTouchHotArea().width_);
278     ASSERT_EQ(testValue.height_, windowNode->GetEntireWindowTouchHotArea().height_);
279 }
280 
281 /**
282  * @tc.name: SetEntireWindowPointerHotArea01
283  * @tc.desc: SetEntireWindowPointerHotArea & GetEntireWindowPointerHotArea
284  * @tc.type: FUNC
285  */
286 HWTEST_F(WindowNodeTest, SetEntireWindowPointerHotArea01, Function | SmallTest | Level1)
287 {
288     std::string windowName = "WindowNode06";
289     auto property = CreateWindowProperty(6, windowName);
290     ASSERT_NE(nullptr, property);
291 
292     sptr<WindowNode> windowNode = new WindowNode(property);
293     ASSERT_NE(nullptr, windowNode);
294     windowNode->SetWindowProperty(property);
295 
296     Rect rect1 = {0, 0, 0, 0};
297     windowNode->SetEntireWindowPointerHotArea(rect1);
298     ASSERT_EQ(0, windowNode->GetEntireWindowPointerHotArea().posX_);
299     ASSERT_EQ(0, windowNode->GetEntireWindowPointerHotArea().posY_);
300     ASSERT_EQ(0, windowNode->GetEntireWindowPointerHotArea().width_);
301     ASSERT_EQ(0, windowNode->GetEntireWindowPointerHotArea().height_);
302 
303     Rect rect2 = {10, 10, 255, 255};
304     windowNode->SetEntireWindowPointerHotArea(rect2);
305     ASSERT_EQ(10, windowNode->GetEntireWindowPointerHotArea().posX_);
306     ASSERT_EQ(10, windowNode->GetEntireWindowPointerHotArea().posY_);
307     ASSERT_EQ(255, windowNode->GetEntireWindowPointerHotArea().width_);
308     ASSERT_EQ(255, windowNode->GetEntireWindowPointerHotArea().height_);
309 }
310 
311 /**
312  * @tc.name: SetWindowRect01
313  * @tc.desc: SetWindowRect & GetWindowRect
314  * @tc.type: FUNC
315  */
316 HWTEST_F(WindowNodeTest, SetWindowRect01, Function | SmallTest | Level1)
317 {
318     std::string windowName = "WindowNode07";
319     auto property = CreateWindowProperty(7, windowName);
320     ASSERT_NE(nullptr, property);
321 
322     sptr<WindowNode> windowNode = new WindowNode(property);
323     ASSERT_NE(nullptr, windowNode);
324 
325     Rect rect1 = {0, 0, 0, 0};
326     windowNode->SetWindowProperty(property);
327     windowNode->SetWindowRect(rect1);
328     ASSERT_EQ(0, windowNode->GetWindowRect().posX_);
329     ASSERT_EQ(0, windowNode->GetWindowRect().posY_);
330     ASSERT_EQ(0, windowNode->GetWindowRect().width_);
331     ASSERT_EQ(0, windowNode->GetWindowRect().height_);
332 
333     Rect rect2 = {10, 10, 255, 255};
334     windowNode->SetWindowRect(rect2);
335     ASSERT_EQ(10, windowNode->GetWindowRect().posX_);
336     ASSERT_EQ(10, windowNode->GetWindowRect().posY_);
337     ASSERT_EQ(255, windowNode->GetWindowRect().width_);
338     ASSERT_EQ(255, windowNode->GetWindowRect().height_);
339 }
340 
341 /**
342  * @tc.name: SetDecoStatus01
343  * @tc.desc: SetDecoStatus & GetDecoStatus
344  * @tc.type: FUNC
345  */
346 HWTEST_F(WindowNodeTest, SetDecoStatus01, Function | SmallTest | Level1)
347 {
348     std::string windowName = "WindowNode08";
349     auto property = CreateWindowProperty(8, windowName);
350     ASSERT_NE(nullptr, property);
351     sptr<WindowNode> windowNode = new WindowNode(property);
352     ASSERT_NE(nullptr, windowNode);
353 
354     windowNode->SetWindowProperty(property);
355     windowNode->SetDecoStatus(true);
356     ASSERT_EQ(true, windowNode->GetDecoStatus());
357     windowNode->SetDecoStatus(false);
358     ASSERT_EQ(false, windowNode->GetDecoStatus());
359 
360     windowNode->SetDecorEnable(true);
361     ASSERT_EQ(true, windowNode->GetWindowProperty()->GetDecorEnable());
362     windowNode->SetDecorEnable(false);
363     ASSERT_EQ(false, windowNode->GetWindowProperty()->GetDecorEnable());
364 }
365 
366 /**
367  * @tc.name: SetRequestRect01
368  * @tc.desc: SetRequestRect & GetRequestRect
369  * @tc.type: FUNC
370  */
371 HWTEST_F(WindowNodeTest, SetRequestRect01, Function | SmallTest | Level1)
372 {
373     std::string windowName = "WindowNode09";
374     auto property = CreateWindowProperty(9, windowName);
375     ASSERT_NE(nullptr, property);
376     sptr<WindowNode> windowNode = new WindowNode(property);
377     ASSERT_NE(nullptr, windowNode);
378 
379     windowNode->SetWindowProperty(property);
380     Rect rect1 = { 0, 0, 0, 0 };
381     windowNode->SetRequestRect(rect1);
382     ASSERT_EQ(0, windowNode->GetRequestRect().posX_);
383     ASSERT_EQ(0, windowNode->GetRequestRect().posY_);
384     ASSERT_EQ(0, windowNode->GetRequestRect().width_);
385     ASSERT_EQ(0, windowNode->GetRequestRect().height_);
386 
387     Rect rect2 = { 10, 10, 255, 255 };
388     windowNode->SetRequestRect(rect2);
389     ASSERT_EQ(10, windowNode->GetRequestRect().posX_);
390     ASSERT_EQ(10, windowNode->GetRequestRect().posY_);
391     ASSERT_EQ(255, windowNode->GetRequestRect().width_);
392     ASSERT_EQ(255, windowNode->GetRequestRect().height_);
393 }
394 
395 /**
396  * @tc.name: SetWindowProperty01
397  * @tc.desc: SetWindowProperty & GetWindowProperty
398  * @tc.type: FUNC
399  */
400 HWTEST_F(WindowNodeTest, SetWindowProperty01, Function | SmallTest | Level1)
401 {
402     std::string windowName = "WindowNode09";
403     auto property = CreateWindowProperty(9, windowName);
404     ASSERT_NE(nullptr, property);
405     sptr<WindowNode> windowNode = new WindowNode(property);
406     ASSERT_NE(nullptr, windowNode);
407     windowNode->SetWindowProperty(property);
408     ASSERT_EQ(property, windowNode->GetWindowProperty());
409 
410     auto property2 = CreateWindowProperty(10, windowName);
411     ASSERT_NE(nullptr, property2);
412     windowNode->SetWindowProperty(property2);
413     ASSERT_EQ(property2, windowNode->GetWindowProperty());
414 }
415 
416 /**
417  * @tc.name: SetSystemBarProperty01
418  * @tc.desc: SetSystemBarProperty & GetSystemBarProperty
419  * @tc.type: FUNC
420  */
421 HWTEST_F(WindowNodeTest, SetSystemBarProperty01, Function | SmallTest | Level1)
422 {
423     std::string windowName = "WindowNode10";
424     auto property = CreateWindowProperty(10, windowName);
425     ASSERT_NE(nullptr, property);
426     sptr<WindowNode> windowNode = new WindowNode(property);
427     ASSERT_NE(nullptr, windowNode);
428 
429     windowNode->SetWindowProperty(property);
430     SystemBarProperty systemBarProperty1;
431     SystemBarProperty systemBarProperty2;
432     SystemBarProperty systemBarProperty3;
433     windowNode->SetSystemBarProperty(WindowType::WINDOW_TYPE_STATUS_BAR, systemBarProperty1);
434     windowNode->SetSystemBarProperty(WindowType::WINDOW_TYPE_NAVIGATION_BAR, systemBarProperty2);
435     windowNode->SetSystemBarProperty(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW, systemBarProperty3);
436 
437     auto systemBarProperties = windowNode->GetSystemBarProperty();
438     ASSERT_EQ(systemBarProperty1, systemBarProperties.find(WindowType::WINDOW_TYPE_STATUS_BAR)->second);
439     ASSERT_EQ(systemBarProperty2, systemBarProperties.find(WindowType::WINDOW_TYPE_NAVIGATION_BAR)->second);
440     ASSERT_EQ(systemBarProperties.end(), systemBarProperties.find(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW));
441 }
442 
443 /**
444  * @tc.name: SetWindowMode01
445  * @tc.desc: SetWindowMode & GetWindowMode
446  * @tc.type: FUNC
447  */
448 HWTEST_F(WindowNodeTest, SetWindowMode01, Function | SmallTest | Level1)
449 {
450     std::string windowName = "WindowNode11";
451     auto property = CreateWindowProperty(11, windowName);
452     ASSERT_NE(nullptr, property);
453     sptr<WindowNode> windowNode = new WindowNode(property);
454     ASSERT_NE(nullptr, windowNode);
455 
456     windowNode->SetWindowProperty(property);
457     ASSERT_EQ(WindowMode::WINDOW_MODE_UNDEFINED, windowNode->GetWindowMode());
458 
459     windowNode->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN);
460     ASSERT_EQ(WindowMode::WINDOW_MODE_FULLSCREEN, windowNode->GetWindowMode());
461 }
462 
463 /**
464  * @tc.name: SetBrightness01
465  * @tc.desc: SetBrightness & GetBrightness
466  * @tc.type: FUNC
467  */
468 HWTEST_F(WindowNodeTest, SetBrightness01, Function | SmallTest | Level1)
469 {
470     std::string windowName = "WindowNode12";
471     auto property = CreateWindowProperty(12, windowName);
472     ASSERT_NE(nullptr, property);
473     sptr<WindowNode> windowNode = new WindowNode(property);
474     ASSERT_NE(nullptr, windowNode);
475 
476     windowNode->SetWindowProperty(property);
477     ASSERT_EQ(UNDEFINED_BRIGHTNESS, windowNode->GetBrightness());
478 
479     windowNode->SetBrightness(0.5f);
480     ASSERT_EQ(0.5f, windowNode->GetBrightness());
481     windowNode->SetBrightness(1.1f);
482     ASSERT_EQ(1.1f, windowNode->GetBrightness());
483 }
484 
485 /**
486  * @tc.name: SetTurnScreenOn01
487  * @tc.desc: SetTurnScreenOn & IsTurnScreenOn
488  * @tc.type: FUNC
489  */
490 HWTEST_F(WindowNodeTest, SetTurnScreenOn01, Function | SmallTest | Level1)
491 {
492     std::string windowName = "WindowNode13";
493     auto property = CreateWindowProperty(13, windowName);
494     ASSERT_NE(nullptr, property);
495     sptr<WindowNode> windowNode = new WindowNode(property);
496     ASSERT_NE(nullptr, windowNode);
497     windowNode->SetWindowProperty(property);
498     ASSERT_EQ(false, windowNode->IsTurnScreenOn());
499     windowNode->SetTurnScreenOn(true);
500     ASSERT_EQ(true, windowNode->IsTurnScreenOn());
501 }
502 
503 /**
504  * @tc.name: SetKeepScreenOn01
505  * @tc.desc: SetKeepScreenOn & IsKeepScreenOn
506  * @tc.type: FUNC
507  */
508 HWTEST_F(WindowNodeTest, SetKeepScreenOn01, Function | SmallTest | Level1)
509 {
510     std::string windowName = "WindowNode14";
511     auto property = CreateWindowProperty(14, windowName);
512     ASSERT_NE(nullptr, property);
513     sptr<WindowNode> windowNode = new WindowNode(property);
514     ASSERT_NE(nullptr, windowNode);
515     windowNode->SetWindowProperty(property);
516     ASSERT_EQ(false, windowNode->IsKeepScreenOn());
517     windowNode->SetKeepScreenOn(true);
518     ASSERT_EQ(true, windowNode->IsKeepScreenOn());
519 }
520 
521 /**
522  * @tc.name: SetCallingWindow01
523  * @tc.desc: SetCallingWindow & GetCallingWindow
524  * @tc.type: FUNC
525  */
526 HWTEST_F(WindowNodeTest, SetCallingWindow01, Function | SmallTest | Level1)
527 {
528     std::string windowName = "WindowNode15";
529     auto property = CreateWindowProperty(15, windowName);
530     ASSERT_NE(nullptr, property);
531     sptr<WindowNode> windowNode = new WindowNode(property);
532     ASSERT_NE(nullptr, windowNode);
533     windowNode->SetWindowProperty(property);
534     ASSERT_EQ(INVALID_WINDOW_ID, windowNode->GetCallingWindow());
535     windowNode->SetCallingWindow(100);
536     ASSERT_EQ(100, windowNode->GetCallingWindow());
537 }
538 
539 /**
540  * @tc.name: SetCallingPid01
541  * @tc.desc: SetCallingPid & GetCallingPid, SetInputEventCallingPid & GetInputEventCallingPid
542  * @tc.type: FUNC
543  */
544 HWTEST_F(WindowNodeTest, SetCallingPid01, Function | SmallTest | Level1)
545 {
546     std::string windowName = "WindowNode16";
547     auto property = CreateWindowProperty(16, windowName);
548     ASSERT_NE(nullptr, property);
549     sptr<WindowNode> windowNode = new WindowNode(property);
550     ASSERT_NE(nullptr, windowNode);
551     windowNode->SetWindowProperty(property);
552     ASSERT_EQ(0, windowNode->GetCallingPid());
553     ASSERT_EQ(0, windowNode->GetInputEventCallingPid());
554 
555     windowNode->SetCallingPid(1);
556     ASSERT_EQ(1, windowNode->GetCallingPid());
557     ASSERT_EQ(1, windowNode->GetInputEventCallingPid());
558 
559     windowNode->SetInputEventCallingPid(2);
560     ASSERT_EQ(1, windowNode->GetCallingPid());
561     ASSERT_EQ(2, windowNode->GetInputEventCallingPid());
562 }
563 
564 /**
565  * @tc.name: SetCallingUid01
566  * @tc.desc: SetCallingUid & GetCallingUid
567  * @tc.type: FUNC
568  */
569 HWTEST_F(WindowNodeTest, SetCallingUid01, Function | SmallTest | Level1)
570 {
571     std::string windowName = "WindowNode17";
572     auto property = CreateWindowProperty(17, windowName);
573     ASSERT_NE(nullptr, property);
574     sptr<WindowNode> windowNode = new WindowNode(property);
575     ASSERT_NE(nullptr, windowNode);
576     windowNode->SetWindowProperty(property);
577 
578     ASSERT_EQ(0, windowNode->GetCallingUid());
579 
580     windowNode->SetCallingUid(1);
581     ASSERT_EQ(1, windowNode->GetCallingUid());
582 }
583 
584 /**
585  * @tc.name: SetWindowSizeChangeReason01
586  * @tc.desc: SetWindowSizeChangeReason & GetWindowSizeChangeReason & ResetWindowSizeChangeReason
587  * @tc.type: FUNC
588  */
589 HWTEST_F(WindowNodeTest, SetWindowSizeChangeReason01, Function | SmallTest | Level1)
590 {
591     std::string windowName = "WindowNode19";
592     auto property = CreateWindowProperty(19, windowName);
593     ASSERT_NE(nullptr, property);
594     sptr<WindowNode> windowNode = new WindowNode(property);
595     ASSERT_NE(nullptr, windowNode);
596     windowNode->SetWindowProperty(property);
597 
598     ASSERT_EQ(WindowSizeChangeReason::UNDEFINED, windowNode->GetWindowSizeChangeReason());
599     windowNode->SetWindowSizeChangeReason(WindowSizeChangeReason::MAXIMIZE);
600     ASSERT_EQ(WindowSizeChangeReason::MAXIMIZE, windowNode->GetWindowSizeChangeReason());
601     windowNode->ResetWindowSizeChangeReason();
602     ASSERT_EQ(WindowSizeChangeReason::UNDEFINED, windowNode->GetWindowSizeChangeReason());
603 }
604 
605 /**
606  * @tc.name: SetRequestedOrientation01
607  * @tc.desc: SetRequestedOrientation & GetRequestedOrientation
608  * @tc.type: FUNC
609  */
610 HWTEST_F(WindowNodeTest, SetRequestedOrientation01, Function | SmallTest | Level1)
611 {
612     std::string windowName = "WindowNode20";
613     auto property = CreateWindowProperty(20, windowName);
614     ASSERT_NE(nullptr, property);
615     sptr<WindowNode> windowNode = new WindowNode(property);
616     ASSERT_NE(nullptr, windowNode);
617     windowNode->SetWindowProperty(property);
618     ASSERT_EQ(Orientation::UNSPECIFIED, windowNode->GetRequestedOrientation());
619     windowNode->SetRequestedOrientation(Orientation::REVERSE_VERTICAL);
620     ASSERT_EQ(Orientation::REVERSE_VERTICAL, windowNode->GetRequestedOrientation());
621 }
622 
623 /**
624  * @tc.name: SetShowingDisplays01
625  * @tc.desc: SetShowingDisplays & GetShowingDisplays
626  * @tc.type: FUNC
627  */
628 HWTEST_F(WindowNodeTest, SetShowingDisplays01, Function | SmallTest | Level1)
629 {
630     std::string windowName = "WindowNode21";
631     auto property = CreateWindowProperty(21, windowName);
632     ASSERT_NE(nullptr, property);
633     sptr<WindowNode> windowNode = new WindowNode(property);
634     ASSERT_NE(nullptr, windowNode);
635     windowNode->SetWindowProperty(property);
636 
637     auto displays = windowNode->GetShowingDisplays();
638     ASSERT_EQ(true, displays.empty());
639 
640     std::vector<DisplayId> emptyDisplayIds;
641     windowNode->SetShowingDisplays(emptyDisplayIds);
642     ASSERT_EQ(true, windowNode->GetShowingDisplays().empty());
643 
644     displays.push_back(static_cast<DisplayId>(0));
645     windowNode->SetShowingDisplays(displays);
646     ASSERT_EQ(1, windowNode->GetShowingDisplays().size());
647 }
648 
649 /**
650  * @tc.name: SetWindowModeSupportType01
651  * @tc.desc: SetWindowModeSupportType & GetWindowModeSupportType
652  * @tc.type: FUNC
653  */
654 HWTEST_F(WindowNodeTest, SetWindowModeSupportType01, Function | SmallTest | Level1)
655 {
656     std::string windowName = "WindowNode22";
657     auto property = CreateWindowProperty(22, windowName);
658     ASSERT_NE(nullptr, property);
659     sptr<WindowNode> windowNode = new WindowNode(property);
660     ASSERT_NE(nullptr, windowNode);
661     windowNode->SetWindowProperty(property);
662     ASSERT_EQ(WindowModeSupport::WINDOW_MODE_SUPPORT_ALL, windowNode->GetWindowModeSupportType());
663     windowNode->SetWindowModeSupportType(WindowModeSupport::WINDOW_MODE_SUPPORT_FULLSCREEN);
664     ASSERT_EQ(WindowModeSupport::WINDOW_MODE_SUPPORT_FULLSCREEN, windowNode->GetWindowModeSupportType());
665 }
666 
667 /**
668  * @tc.name: SetDragType01
669  * @tc.desc: SetDragType & GetDragType
670  * @tc.type: FUNC
671  */
672 HWTEST_F(WindowNodeTest, SetDragType01, Function | SmallTest | Level1)
673 {
674     std::string windowName = "WindowNode23";
675     auto property = CreateWindowProperty(23, windowName);
676     ASSERT_NE(nullptr, property);
677     sptr<WindowNode> windowNode = new WindowNode(property);
678     ASSERT_NE(nullptr, windowNode);
679     windowNode->SetWindowProperty(property);
680     ASSERT_EQ(DragType::DRAG_UNDEFINED, windowNode->GetDragType());
681     windowNode->SetDragType(DragType::DRAG_BOTTOM_OR_TOP);
682     ASSERT_EQ(DragType::DRAG_BOTTOM_OR_TOP, windowNode->GetDragType());
683 }
684 
685 /**
686  * @tc.name: SetOriginRect01
687  * @tc.desc: SetOriginRect & GetOriginRect
688  * @tc.type: FUNC
689  */
690 HWTEST_F(WindowNodeTest, SetOriginRect01, Function | SmallTest | Level1)
691 {
692     std::string windowName = "WindowNode24";
693     auto property = CreateWindowProperty(24, windowName);
694     ASSERT_NE(nullptr, property);
695     sptr<WindowNode> windowNode = new WindowNode(property);
696     ASSERT_NE(nullptr, windowNode);
697     windowNode->SetWindowProperty(property);
698     auto defaultRect = windowNode->GetOriginRect();
699     ASSERT_EQ(0, defaultRect.posX_);
700     ASSERT_EQ(0, defaultRect.posX_);
701     ASSERT_EQ(0, defaultRect.width_);
702     ASSERT_EQ(0, defaultRect.height_);
703 
704     Rect testRect = { 10, 10, 150, 150 };
705     windowNode->SetOriginRect(testRect);
706     auto resultRect = windowNode->GetOriginRect();
707     ASSERT_EQ(testRect, resultRect);
708 }
709 
710 /**
711  * @tc.name: SetTouchHotAreas01
712  * @tc.desc: SetTouchHotAreas & GetTouchHotAreas
713  * @tc.type: FUNC
714  */
715 HWTEST_F(WindowNodeTest, SetTouchHotAreas01, Function | SmallTest | Level1)
716 {
717     std::string windowName = "WindowNode25";
718     auto property = CreateWindowProperty(25, windowName);
719     ASSERT_NE(nullptr, property);
720     sptr<WindowNode> windowNode = new WindowNode(property);
721     ASSERT_NE(nullptr, windowNode);
722     windowNode->SetWindowProperty(property);
723     std::vector<Rect> testRects;
724     windowNode->GetTouchHotAreas(testRects);
725     ASSERT_EQ(true, testRects.empty());
726 
727     Rect rect1 = { 10, 10, 10, 10 };
728     testRects.push_back(rect1);
729     windowNode->SetTouchHotAreas(testRects);
730 
731     std::vector<Rect> resultRect;
732     windowNode->GetTouchHotAreas(resultRect);
733     ASSERT_EQ(1, resultRect.size());
734     ASSERT_EQ(rect1, resultRect[0]);
735 }
736 
737 /**
738  * @tc.name: SetPointerHotAreas01
739  * @tc.desc: SetPointerHotAreas & GetPointerHotAreas
740  * @tc.type: FUNC
741  */
742 HWTEST_F(WindowNodeTest, SetPointerHotAreas01, Function | SmallTest | Level1)
743 {
744     std::string windowName = "WindowNode26";
745     auto property = CreateWindowProperty(26, windowName);
746     ASSERT_NE(nullptr, property);
747     sptr<WindowNode> windowNode = new WindowNode(property);
748     ASSERT_NE(nullptr, windowNode);
749     windowNode->SetWindowProperty(property);
750 
751     std::vector<Rect> testRects;
752     windowNode->GetPointerHotAreas(testRects);
753     ASSERT_EQ(true, testRects.empty());
754 
755     Rect rect1 = { 10, 10, 10, 10 };
756     testRects.push_back(rect1);
757     windowNode->SetPointerHotAreas(testRects);
758     std::vector<Rect> resultRect;
759     windowNode->GetPointerHotAreas(resultRect);
760     ASSERT_EQ(1, resultRect.size());
761     ASSERT_EQ(rect1, resultRect[0]);
762 }
763 
764 /**
765  * @tc.name: SetPointerHotAreas01
766  * @tc.desc: SetWindowSizeLimits & GetWindowSizeLimits
767  * @tc.type: FUNC
768  */
769 HWTEST_F(WindowNodeTest, SetWindowSizeLimits01, Function | SmallTest | Level1)
770 {
771     std::string windowName = "WindowNode27";
772     auto property = CreateWindowProperty(27, windowName);
773     ASSERT_NE(nullptr, property);
774     sptr<WindowNode> windowNode = new WindowNode(property);
775     ASSERT_NE(nullptr, windowNode);
776     windowNode->SetWindowProperty(property);
777     auto defaultValue = windowNode->GetWindowSizeLimits();
778     ASSERT_EQ(0, defaultValue.minWidth_);
779     ASSERT_EQ(0, defaultValue.minHeight_);
780     ASSERT_EQ(0.0f, defaultValue.minRatio_);
781     ASSERT_EQ(UINT32_MAX, defaultValue.maxWidth_);
782     ASSERT_EQ(UINT32_MAX, defaultValue.maxHeight_);
783     ASSERT_EQ(FLT_MAX, defaultValue.maxRatio_);
784 
785     WindowLimits testValue = { 200, 200, 50, 50, 2.0f, 2.0f };
786     windowNode->SetWindowSizeLimits(testValue);
787 
788     auto resultValue = windowNode->GetWindowSizeLimits();
789     ASSERT_EQ(testValue.minWidth_, resultValue.minWidth_);
790     ASSERT_EQ(testValue.minHeight_, resultValue.minHeight_);
791     ASSERT_EQ(testValue.minRatio_, resultValue.minRatio_);
792     ASSERT_EQ(testValue.maxWidth_, resultValue.maxWidth_);
793     ASSERT_EQ(testValue.maxHeight_, resultValue.maxHeight_);
794     ASSERT_EQ(testValue.maxRatio_, resultValue.maxRatio_);
795 }
796 
797 /**
798  * @tc.name: SetWindowUpdatedSizeLimits01
799  * @tc.desc: SetWindowUpdatedSizeLimits & GetWindowUpdatedSizeLimits
800  * @tc.type: FUNC
801  */
802 HWTEST_F(WindowNodeTest, SetWindowUpdatedSizeLimits01, Function | SmallTest | Level1)
803 {
804     std::string windowName = "WindowNode28";
805     auto property = CreateWindowProperty(28, windowName);
806     ASSERT_NE(nullptr, property);
807     sptr<WindowNode> windowNode = new WindowNode(property);
808     ASSERT_NE(nullptr, windowNode);
809     windowNode->SetWindowProperty(property);
810     auto defaultValue = windowNode->GetWindowUpdatedSizeLimits();
811     ASSERT_EQ(0, defaultValue.minWidth_);
812     ASSERT_EQ(0, defaultValue.minHeight_);
813     ASSERT_EQ(0.0f, defaultValue.minRatio_);
814     ASSERT_EQ(UINT32_MAX, defaultValue.maxWidth_);
815     ASSERT_EQ(UINT32_MAX, defaultValue.maxHeight_);
816     ASSERT_EQ(FLT_MAX, defaultValue.maxRatio_);
817 
818     WindowLimits testValue = { 200, 200, 50, 50, 2.0f, 2.0f };
819     windowNode->SetWindowUpdatedSizeLimits(testValue);
820 
821     auto resultValue = windowNode->GetWindowUpdatedSizeLimits();
822     ASSERT_EQ(testValue.minWidth_, resultValue.minWidth_);
823     ASSERT_EQ(testValue.minHeight_, resultValue.minHeight_);
824     ASSERT_EQ(testValue.minRatio_, resultValue.minRatio_);
825     ASSERT_EQ(testValue.maxWidth_, resultValue.maxWidth_);
826     ASSERT_EQ(testValue.maxHeight_, resultValue.maxHeight_);
827     ASSERT_EQ(testValue.maxRatio_, resultValue.maxRatio_);
828 }
829 
830 /**
831  * @tc.name: SetSnapshot01
832  * @tc.desc: SetSnapshot & GetSnapshot
833  * @tc.type: FUNC
834  */
835 HWTEST_F(WindowNodeTest, SetSnapshot01, Function | SmallTest | Level1)
836 {
837     std::string windowName = "WindowNode29";
838     auto property = CreateWindowProperty(29, windowName);
839     ASSERT_NE(nullptr, property);
840     sptr<WindowNode> windowNode = new WindowNode(property);
841     ASSERT_NE(nullptr, windowNode);
842     windowNode->SetWindowProperty(property);
843 
844     auto defaultValue = windowNode->GetSnapshot();
845     ASSERT_EQ(0, defaultValue.use_count());
846 
847     Media::InitializationOptions opts;
848     opts.size.width = 200;  // 200: test width
849     opts.size.height = 300; // 300: test height
850     opts.pixelFormat = Media::PixelFormat::ARGB_8888;
851     opts.alphaType = Media::AlphaType::IMAGE_ALPHA_TYPE_OPAQUE;
852     std::unique_ptr<Media::PixelMap> pixelMapPtr = Media::PixelMap::Create(opts);
853     std::shared_ptr<Media::PixelMap> pixelMap(pixelMapPtr.release());
854     windowNode->SetSnapshot(pixelMap);
855 
856     auto resultValue = windowNode->GetSnapshot();
857     ASSERT_EQ(3, resultValue.use_count());
858 }
859 
860 /**
861  * @tc.name: UpdateZoomTransform01
862  * @tc.desc: UpdateZoomTransform & GetZoomTransform
863  * @tc.type: FUNC
864  */
865 HWTEST_F(WindowNodeTest, UpdateZoomTransform01, Function | SmallTest | Level1)
866 {
867     std::string windowName = "WindowNode30";
868     auto property = CreateWindowProperty(30, windowName);
869     ASSERT_NE(nullptr, property);
870     sptr<WindowNode> windowNode = new WindowNode(property);
871     ASSERT_NE(nullptr, windowNode);
872     windowNode->SetWindowProperty(property);
873     Transform transformData;
874     auto defaultValue = windowNode->GetZoomTransform();
875     ASSERT_EQ(transformData, defaultValue);
876 
877     transformData.pivotX_ = 1.0f;
878     transformData.pivotY_ = 1.0f;
879     windowNode->UpdateZoomTransform(transformData, false);
880 
881     auto resultValue = windowNode->GetZoomTransform();
882     ASSERT_EQ(1.0f, resultValue.pivotX_);
883     ASSERT_EQ(1.0f, resultValue.pivotY_);
884 }
885 
886 /**
887  * @tc.name: SetTransform01
888  * @tc.desc: SetTransform & ComputeTransform
889  * @tc.type: FUNC
890  */
891 HWTEST_F(WindowNodeTest, SetTransform01, Function | SmallTest | Level1)
892 {
893     std::string windowName = "WindowNode31";
894     auto property = CreateWindowProperty(31, windowName);
895     ASSERT_NE(nullptr, property);
896     sptr<WindowNode> windowNode = new WindowNode(property);
897     ASSERT_NE(nullptr, windowNode);
898     windowNode->SetWindowProperty(property);
__anon872e836c0202(TransformHelper::Matrix4 expectVal, TransformHelper::Matrix4 checkValue) 899     auto isSameValueMat4 = [](TransformHelper::Matrix4 expectVal, TransformHelper::Matrix4 checkValue) -> bool {
900         uint32_t m = 0, n = 0;
901         for (uint32_t i = 0; i < 16; i++) {
902             m = i / 4;
903             n = i % 4;
904             if (m > 4 || n > 4 || (expectVal.mat_[m][n] != checkValue.mat_[m][n])) {
905                 return false;
906             }
907         }
908         return true;
909     };
910 
911     Transform transformData;
912     auto defaultTrans = windowNode->property_->trans_;
913     auto defaultWorldTransformMat4 = windowNode->property_->worldTransformMat_;
914     ASSERT_EQ(transformData, defaultTrans);
915     ASSERT_EQ(true, isSameValueMat4(TransformHelper::Matrix4::Identity, defaultWorldTransformMat4));
916 
917     transformData.pivotX_ = 1.0f;
918     transformData.pivotY_ = 1.0f;
919     transformData.translateX_ = 1.0f;
920     transformData.translateY_ = 1.0f;
921     windowNode->SetTransform(transformData);
922     windowNode->ComputeTransform();
923 
924     auto resultTrans = windowNode->property_->trans_;
925     auto resultWorldTransformMat4 = windowNode->property_->worldTransformMat_;
926     ASSERT_EQ(1.0f, resultTrans.pivotX_);
927     ASSERT_EQ(1.0f, resultTrans.pivotY_);
928 
929     ASSERT_EQ(1.0f, resultWorldTransformMat4.mat_[3][0]);
930     ASSERT_EQ(1.0f, resultWorldTransformMat4.mat_[3][1]);
931 }
932 
933 /**
934  * @tc.name: GetVisibilityState001
935  * @tc.desc: SetVisibilityState & GetVisibilityState
936  * @tc.type: FUNC
937  */
938 HWTEST_F(WindowNodeTest, GetVisibilityState001, Function | SmallTest | Level1)
939 {
940     std::string windowName = "WindowNode32";
941     auto property = CreateWindowProperty(7, windowName);
942     ASSERT_NE(nullptr, property);
943 
944     sptr<WindowNode> windowNode = new WindowNode(property);
945     ASSERT_NE(nullptr, windowNode);
946     windowNode->SetWindowProperty(property);
947 
948     ASSERT_EQ(windowNode->GetVisibilityState(), WINDOW_VISIBILITY_STATE_NO_OCCLUSION);
949     windowNode->SetVisibilityState(WINDOW_VISIBILITY_STATE_PARTICALLY_OCCLUSION);
950     ASSERT_EQ(windowNode->GetVisibilityState(), WINDOW_VISIBILITY_STATE_PARTICALLY_OCCLUSION);
951 }
952 
953 /**
954  * @tc.name: GetTouchable01
955  * @tc.desc: SetTouchable & GetTouchable
956  * @tc.type: FUNC
957  */
958 HWTEST_F(WindowNodeTest, GetTouchable01, Function | SmallTest | Level1)
959 {
960     std::string windowName = "WindowNode33";
961     auto property = CreateWindowProperty(33, windowName);
962     ASSERT_NE(nullptr, property);
963     sptr<WindowNode> windowNode = new WindowNode(property);
964     ASSERT_NE(nullptr, windowNode);
965 
966     windowNode->SetTouchable(false);
967     ASSERT_EQ(false, windowNode->GetTouchable());
968     windowNode->SetTouchable(true);
969     ASSERT_EQ(true, windowNode->GetTouchable());
970 }
971 }
972 }
973 }