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