• 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 "window_transition_info.h"
17 
18 namespace OHOS {
19 namespace Rosen {
WindowTransitionInfo(sptr<AAFwk::AbilityTransitionInfo> info)20 WindowTransitionInfo::WindowTransitionInfo(sptr<AAFwk::AbilityTransitionInfo> info)
21 {
22     bundleName_ = info->bundleName_;
23     abilityName_ = info->abilityName_;
24     mode_ = static_cast<WindowMode>(info->mode_);
25     abilityToken_ = info->abilityToken_;
26     displayId_ = info->displayId_;
27     isShowWhenLocked_ = info->isShowWhenLocked_;
28     isRecent_ = info->isRecent_;
29     missionId_ = info->missionId_;
30     if (info->windowModes_.empty()) {
31         supportWindowModes_ = {
32             AppExecFwk::SupportWindowMode::FULLSCREEN,
33             AppExecFwk::SupportWindowMode::SPLIT,
34             AppExecFwk::SupportWindowMode::FLOATING
35         };
36     } else {
37         supportWindowModes_.assign(info->windowModes_.begin(), info->windowModes_.end());
38     }
39 
40     sizeLimits_.maxRatio_ = static_cast<float>(info->maxWindowRatio_);
41     sizeLimits_.minRatio_ = static_cast<float>(info->minWindowRatio_);
42     sizeLimits_.maxWidth_ = info->maxWindowWidth_;
43     sizeLimits_.minWidth_ = info->minWindowWidth_;
44     sizeLimits_.maxHeight_ = info->maxWindowHeight_;
45     sizeLimits_.minHeight_ = info->minWindowHeight_;
46     reason_ = static_cast<TransitionReason>(info->reason_);
47 }
48 
SetBundleName(std::string name)49 void WindowTransitionInfo::SetBundleName(std::string name)
50 {
51     bundleName_ = name;
52 }
53 
GetBundleName()54 std::string WindowTransitionInfo::GetBundleName()
55 {
56     return bundleName_;
57 }
58 
SetAbilityName(std::string name)59 void WindowTransitionInfo::SetAbilityName(std::string name)
60 {
61     abilityName_ = name;
62 }
63 
GetAbilityName()64 std::string WindowTransitionInfo::GetAbilityName()
65 {
66     return abilityName_;
67 }
68 
SetWindowMode(WindowMode mode)69 void WindowTransitionInfo::SetWindowMode(WindowMode mode)
70 {
71     mode_ = mode;
72 }
73 
GetWindowMode()74 WindowMode WindowTransitionInfo::GetWindowMode()
75 {
76     return mode_;
77 }
78 
SetWindowRect(Rect rect)79 void WindowTransitionInfo::SetWindowRect(Rect rect)
80 {
81     windowRect_ = rect;
82 }
83 
GetWindowRect()84 Rect WindowTransitionInfo::GetWindowRect()
85 {
86     return windowRect_;
87 }
88 
SetAbilityToken(sptr<IRemoteObject> abilityToken)89 void WindowTransitionInfo::SetAbilityToken(sptr<IRemoteObject> abilityToken)
90 {
91     abilityToken_ = abilityToken;
92 }
93 
GetAbilityToken()94 sptr<IRemoteObject> WindowTransitionInfo::GetAbilityToken()
95 {
96     return abilityToken_;
97 }
98 
SetDisplayId(DisplayId displayId)99 void WindowTransitionInfo::SetDisplayId(DisplayId displayId)
100 {
101     displayId_ = displayId;
102 }
103 
GetDisplayId()104 DisplayId WindowTransitionInfo::GetDisplayId()
105 {
106     return displayId_;
107 }
108 
SetWindowType(WindowType windowType)109 void WindowTransitionInfo::SetWindowType(WindowType windowType)
110 {
111     windowType_ = windowType;
112 }
113 
GetWindowType()114 WindowType WindowTransitionInfo::GetWindowType()
115 {
116     return windowType_;
117 }
118 
SetShowFlagWhenLocked(bool isShow)119 void WindowTransitionInfo::SetShowFlagWhenLocked(bool isShow)
120 {
121     isShowWhenLocked_ = isShow;
122 }
123 
SetWindowSupportModes(const std::vector<AppExecFwk::SupportWindowMode> supportModes)124 void WindowTransitionInfo::SetWindowSupportModes(const std::vector<AppExecFwk::SupportWindowMode> supportModes)
125 {
126     supportWindowModes_.assign(supportModes.begin(), supportModes.end());
127 }
128 
GetWindowSupportModes()129 std::vector<AppExecFwk::SupportWindowMode> WindowTransitionInfo::GetWindowSupportModes()
130 {
131     return supportWindowModes_;
132 }
133 
GetWindowSizeLimits() const134 WindowSizeLimits WindowTransitionInfo::GetWindowSizeLimits() const
135 {
136     return sizeLimits_;
137 }
138 
GetShowFlagWhenLocked()139 bool WindowTransitionInfo::GetShowFlagWhenLocked()
140 {
141     return isShowWhenLocked_;
142 }
143 
SetTransitionReason(TransitionReason reason)144 void WindowTransitionInfo::SetTransitionReason(TransitionReason reason)
145 {
146     reason_ = reason;
147 }
148 
GetTransitionReason()149 TransitionReason WindowTransitionInfo::GetTransitionReason()
150 {
151     return reason_;
152 }
153 
SetIsRecent(bool isRecent)154 void WindowTransitionInfo::SetIsRecent(bool isRecent)
155 {
156     isRecent_ = isRecent;
157 }
158 
GetIsRecent() const159 bool WindowTransitionInfo::GetIsRecent() const
160 {
161     return isRecent_;
162 }
163 
SetMissionId(int32_t missionId)164 void WindowTransitionInfo::SetMissionId(int32_t missionId)
165 {
166     missionId_ = missionId;
167 }
168 
GetMissionId() const169 int32_t WindowTransitionInfo::GetMissionId() const
170 {
171     return missionId_;
172 }
173 
Marshalling(Parcel & parcel) const174 bool WindowTransitionInfo::Marshalling(Parcel& parcel) const
175 {
176     if (!parcel.WriteString(bundleName_) || !parcel.WriteString(abilityName_)) {
177         return false;
178     }
179 
180     if (!parcel.WriteUint32(static_cast<uint32_t>(mode_))) {
181         return false;
182     }
183 
184     if (!(parcel.WriteInt32(windowRect_.posX_) && parcel.WriteInt32(windowRect_.posY_) &&
185         parcel.WriteUint32(windowRect_.width_) && parcel.WriteUint32(windowRect_.height_))) {
186         return false;
187     }
188 
189     if (!abilityToken_) {
190         if (!parcel.WriteBool(false)) {
191             return false;
192         }
193     } else {
194         if (!parcel.WriteBool(true) || !parcel.WriteObject(abilityToken_)) {
195             return false;
196         }
197     }
198 
199     if (!parcel.WriteUint64(displayId_)) {
200         return false;
201     }
202 
203     if (!parcel.WriteUint32(static_cast<uint32_t>(windowType_))) {
204         return false;
205     }
206 
207     if (!parcel.WriteBool(isShowWhenLocked_)) {
208         return false;
209     }
210 
211     if (!parcel.WriteBool(isRecent_)) {
212         return false;
213     }
214 
215     if (!parcel.WriteUint32(static_cast<uint32_t>(reason_))) {
216         return false;
217     }
218 
219     if (!parcel.WriteInt32(missionId_)) {
220         return false;
221     }
222     return true;
223 }
224 
Unmarshalling(Parcel & parcel)225 WindowTransitionInfo* WindowTransitionInfo::Unmarshalling(Parcel& parcel)
226 {
227     auto windowTransitionInfo = new(std::nothrow) WindowTransitionInfo();
228     if (windowTransitionInfo == nullptr) {
229         return nullptr;
230     }
231     windowTransitionInfo->bundleName_ = parcel.ReadString();
232     windowTransitionInfo->abilityName_ = parcel.ReadString();
233     windowTransitionInfo->mode_ = static_cast<WindowMode>(parcel.ReadUint32());
234     windowTransitionInfo->windowRect_.posX_ = parcel.ReadInt32();
235     windowTransitionInfo->windowRect_.posY_  = parcel.ReadInt32();
236     windowTransitionInfo->windowRect_.width_  = parcel.ReadUint32();
237     windowTransitionInfo->windowRect_.height_  = parcel.ReadUint32();
238     if (parcel.ReadBool()) {
239         windowTransitionInfo->abilityToken_ = parcel.ReadObject<IRemoteObject>();
240     }
241     windowTransitionInfo->displayId_ = parcel.ReadUint64();
242     windowTransitionInfo->windowType_ = static_cast<WindowType>(parcel.ReadUint32());
243     windowTransitionInfo->isShowWhenLocked_ = parcel.ReadBool();
244     windowTransitionInfo->isRecent_ = parcel.ReadBool();
245     windowTransitionInfo->reason_ = static_cast<TransitionReason>(parcel.ReadUint32());
246     windowTransitionInfo->missionId_ = parcel.ReadInt32();
247     return windowTransitionInfo;
248 }
249 } // Rosen
250 } // OHOS
251