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 "window_property.h"
19 #include "wm_common_inner.h"
20
21 using namespace testing;
22 using namespace testing::ext;
23
24 namespace OHOS {
25 namespace Rosen {
26 class WindowPropertyTest : public testing::Test {
27 public:
28 static void SetUpTestCase();
29 static void TearDownTestCase();
30 virtual void SetUp() override;
31 virtual void TearDown() override;
32 };
33
SetUpTestCase()34 void WindowPropertyTest::SetUpTestCase()
35 {
36 }
37
TearDownTestCase()38 void WindowPropertyTest::TearDownTestCase()
39 {
40 }
41
SetUp()42 void WindowPropertyTest::SetUp()
43 {
44 }
45
TearDown()46 void WindowPropertyTest::TearDown()
47 {
48 }
49
50 namespace {
51 /**
52 * @tc.name: MarshallingUnmarshalling
53 * @tc.desc: Marshalling Unmarshalling test
54 * @tc.type: FUNC
55 */
56 HWTEST_F(WindowPropertyTest, MarshallingUnmarshalling, Function | SmallTest | Level2)
57 {
58 WindowProperty winPropSrc;
59 winPropSrc.SetPrivacyMode(true);
60 winPropSrc.SetTransparent(true);
61 winPropSrc.SetTransform(Transform::Identity());
62
63 Parcel parcel;
64 winPropSrc.Marshalling(parcel);
65 WindowProperty* winPropDst = winPropSrc.Unmarshalling(parcel);
66
67 ASSERT_EQ(winPropDst->GetPrivacyMode(), true);
68 ASSERT_EQ(winPropDst->GetTransparent(), true);
69 ASSERT_EQ(winPropDst->GetTransform(), Transform::Identity());
70 delete winPropDst;
71 }
72
73 /**
74 * @tc.name: CopyFrom
75 * @tc.desc: CopyFrom test
76 * @tc.type: FUNC
77 */
78 HWTEST_F(WindowPropertyTest, CopyFrom, Function | SmallTest | Level2)
79 {
80 const sptr<WindowProperty> winPropSrc = new(std::nothrow) WindowProperty();
81 winPropSrc->SetPrivacyMode(true);
82 winPropSrc->SetTransparent(true);
83 winPropSrc->SetTransform(Transform::Identity());
84
85 WindowProperty winPropDst(winPropSrc); // winPropDst.CopyFrom(winPropSrc);
86
87 ASSERT_EQ(winPropSrc->GetPrivacyMode(), winPropDst.GetPrivacyMode());
88 ASSERT_EQ(winPropSrc->GetTransparent(), winPropDst.GetTransparent());
89 ASSERT_EQ(winPropSrc->GetTransform(), winPropDst.GetTransform());
90 }
91
92 /**
93 * @tc.name: Read
94 * @tc.desc: Read test
95 * @tc.type: FUNC
96 */
97 HWTEST_F(WindowPropertyTest, Read, Function | SmallTest | Level2)
98 {
99 WindowProperty winPropSrc;
100 winPropSrc.SetPrivacyMode(true);
101 winPropSrc.SetTransparent(true);
102
103 Parcel parcel;
104 winPropSrc.Marshalling(parcel);
105
106 WindowProperty winPropDst;
107 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_RECT);
108 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_MODE);
109 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_FLAGS);
110 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_OTHER_PROPS);
111 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_FOCUSABLE);
112 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_TOUCHABLE);
113 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_CALLING_WINDOW);
114 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_ORIENTATION);
115 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_TURN_SCREEN_ON);
116 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_KEEP_SCREEN_ON);
117 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_SET_BRIGHTNESS);
118 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_MODE_SUPPORT_INFO);
119 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_TOUCH_HOT_AREA);
120 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_TRANSFORM_PROPERTY);
121 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_ANIMATION_FLAG);
122 winPropDst.Read(parcel, PropertyChangeAction::ACTION_UPDATE_PRIVACY_MODE);
123
124 ASSERT_EQ(true, winPropDst.GetPrivacyMode());
125 ASSERT_EQ(false, winPropDst.GetTransparent());
126 }
127
128 /**
129 * @tc.name: Write
130 * @tc.desc: Write test
131 * @tc.type: FUNC
132 */
133 HWTEST_F(WindowPropertyTest, Write, Function | SmallTest | Level2)
134 {
135 Parcel parcel;
136 WindowProperty winPropDst;
137 ASSERT_EQ(true, winPropDst.Write(parcel, PropertyChangeAction::ACTION_UPDATE_RECT));
138 ASSERT_EQ(true, winPropDst.Write(parcel, PropertyChangeAction::ACTION_UPDATE_MODE));
139 ASSERT_EQ(true, winPropDst.Write(parcel, PropertyChangeAction::ACTION_UPDATE_FLAGS));
140 ASSERT_EQ(true, winPropDst.Write(parcel, PropertyChangeAction::ACTION_UPDATE_OTHER_PROPS));
141 ASSERT_EQ(true, winPropDst.Write(parcel, PropertyChangeAction::ACTION_UPDATE_FOCUSABLE));
142 ASSERT_EQ(true, winPropDst.Write(parcel, PropertyChangeAction::ACTION_UPDATE_TOUCHABLE));
143 ASSERT_EQ(true, winPropDst.Write(parcel, PropertyChangeAction::ACTION_UPDATE_CALLING_WINDOW));
144 ASSERT_EQ(true, winPropDst.Write(parcel, PropertyChangeAction::ACTION_UPDATE_ORIENTATION));
145 ASSERT_EQ(true, winPropDst.Write(parcel, PropertyChangeAction::ACTION_UPDATE_TURN_SCREEN_ON));
146 ASSERT_EQ(true, winPropDst.Write(parcel, PropertyChangeAction::ACTION_UPDATE_KEEP_SCREEN_ON));
147 ASSERT_EQ(true, winPropDst.Write(parcel, PropertyChangeAction::ACTION_UPDATE_SET_BRIGHTNESS));
148 ASSERT_EQ(true, winPropDst.Write(parcel, PropertyChangeAction::ACTION_UPDATE_MODE_SUPPORT_INFO));
149 ASSERT_EQ(true, winPropDst.Write(parcel, PropertyChangeAction::ACTION_UPDATE_TOUCH_HOT_AREA));
150 ASSERT_EQ(true, winPropDst.Write(parcel, PropertyChangeAction::ACTION_UPDATE_TRANSFORM_PROPERTY));
151 ASSERT_EQ(true, winPropDst.Write(parcel, PropertyChangeAction::ACTION_UPDATE_ANIMATION_FLAG));
152 }
153
154 /**
155 * @tc.name: SetAbilityInfo
156 * @tc.desc: Test SetAbilityInfo and GetAbilityInfo
157 * @tc.type: FUNC
158 */
159 HWTEST_F(WindowPropertyTest, SetAbilityInfo, Function | SmallTest | Level2)
160 {
161 WindowProperty winPropDst;
162 AbilityInfo info;
163 info.bundleName_ = "testBundleName";
164 info.abilityName_ = "testAbilityName";
165 winPropDst.SetAbilityInfo(info);
166 ASSERT_EQ("testBundleName", winPropDst.GetAbilityInfo().bundleName_);
167 ASSERT_EQ("testAbilityName", winPropDst.GetAbilityInfo().abilityName_);
168 }
169
170 /**
171 * @tc.name: ResumeLastWindowMode
172 * @tc.desc: Test ResumeLastWindowMode
173 * @tc.type: FUNC
174 */
175 HWTEST_F(WindowPropertyTest, ResumeLastWindowMode, Function | SmallTest | Level2)
176 {
177 WindowProperty winPropDst;
178 winPropDst.modeSupportInfo_ = WindowModeSupport::WINDOW_MODE_SUPPORT_PIP;
179 winPropDst.lastMode_ = WindowMode::WINDOW_MODE_PIP;
180 winPropDst.mode_ = WindowMode::WINDOW_MODE_UNDEFINED;
181 winPropDst.ResumeLastWindowMode();
182 ASSERT_EQ(WindowMode::WINDOW_MODE_PIP, winPropDst.mode_);
183
184 winPropDst.modeSupportInfo_ = WindowModeSupport::WINDOW_MODE_SUPPORT_SPLIT_SECONDARY;
185 winPropDst.lastMode_ = WindowMode::WINDOW_MODE_PIP;
186 winPropDst.mode_ = WindowMode::WINDOW_MODE_UNDEFINED;
187 winPropDst.ResumeLastWindowMode();
188 ASSERT_EQ(WindowMode::WINDOW_MODE_UNDEFINED, winPropDst.mode_);
189
190 winPropDst.modeSupportInfo_ = WindowModeSupport::WINDOW_MODE_SUPPORT_FLOATING;
191 winPropDst.lastMode_ = WindowMode::WINDOW_MODE_PIP;
192 winPropDst.mode_ = WindowMode::WINDOW_MODE_UNDEFINED;
193 winPropDst.ResumeLastWindowMode();
194 ASSERT_EQ(WindowMode::WINDOW_MODE_FLOATING, winPropDst.mode_);
195 }
196 }
197 } // namespace Rosen
198 } // namespace OHOS