• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 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 "zidl/screen_session_manager_client_stub.h"
17 
18 #include "window_manager_hilog.h"
19 
20 namespace OHOS::Rosen {
21 
InitScreenChangeMap()22 void ScreenSessionManagerClientStub::InitScreenChangeMap()
23 {
24     if (HandleScreenChangeMap_.size() != 0) {
25         TLOGI(WmsLogTag::DMS, "screen change map has init!");
26         return;
27     }
28     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_SCREEN_CONNECTION_CHANGED] =
29         [this](MessageParcel& data, MessageParcel& reply) {
30             return HandleOnScreenConnectionChanged(data, reply);
31         };
32     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_PROPERTY_CHANGED] =
33         [this](MessageParcel& data, MessageParcel& reply) {
34         return HandleOnPropertyChanged(data, reply);
35     };
36     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_POWER_STATUS_CHANGED] =
37         [this](MessageParcel& data, MessageParcel& reply) {
38         return HandleOnPowerStatusChanged(data, reply);
39     };
40     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_SCREEN_EXTEND_CHANGED] =
41         [this](MessageParcel& data, MessageParcel& reply) {
42         return HandleOnScreenExtendChanged(data, reply);
43     };
44     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_SENSOR_ROTATION_CHANGED] =
45         [this](MessageParcel& data, MessageParcel& reply) {
46         return HandleOnSensorRotationChanged(data, reply);
47     };
48     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_HOVER_STATUS_CHANGED] =
49         [this](MessageParcel& data, MessageParcel& reply) {
50         return HandleOnHoverStatusChanged(data, reply);
51     };
52     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_SCREEN_ORIENTATION_CHANGED] =
53         [this](MessageParcel& data, MessageParcel& reply) {
54         return HandleOnScreenOrientationChanged(data, reply);
55     };
56     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_SCREEN_ROTATION_LOCKED_CHANGED] =
57         [this](MessageParcel& data, MessageParcel& reply) {
58         return HandleOnScreenRotationLockedChanged(data, reply);
59     };
60     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_DISPLAY_STATE_CHANGED] =
61         [this](MessageParcel& data, MessageParcel& reply) {
62         return HandleOnDisplayStateChanged(data, reply);
63     };
64     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_SCREEN_SHOT] =
65         [this](MessageParcel& data, MessageParcel& reply) {
66         return HandleOnScreenshot(data, reply);
67     };
68     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_IMMERSIVE_STATE_CHANGED] =
69         [this](MessageParcel& data, MessageParcel& reply) {
70         return HandleOnImmersiveStateChanged(data, reply);
71     };
72     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_SET_DISPLAY_NODE_SCREEN_ID] =
73         [this](MessageParcel& data, MessageParcel& reply) {
74         return HandleOnSetDisplayNodeScreenId(data, reply);
75     };
76     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_GET_SURFACENODEID_FROM_MISSIONID] =
77         [this](MessageParcel& data, MessageParcel& reply) {
78         return HandleOnGetSurfaceNodeIdsFromMissionIdsChanged(data, reply);
79     };
80     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_SET_SURFACENODEIDS] =
81         [this](MessageParcel& data, MessageParcel& reply) {
82         return HandleOnSetSurfaceNodeIdsChanged(data, reply);
83     };
84     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_VIRTUAL_SCREEN_DISCONNECTED] =
85         [this](MessageParcel& data, MessageParcel& reply) {
86         return HandleOnVirtualScreenDisconnected(data, reply);
87     };
88     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_SET_FOLD_DISPLAY_MODE] =
89         [this](MessageParcel& data, MessageParcel& reply) {
90         return HandleOnUpdateFoldDisplayMode(data, reply);
91     };
92     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_SWITCH_USER_CMD] =
93         [this](MessageParcel& data, MessageParcel& reply) {
94         return HandleSwitchUserCallback(data, reply);
95     };
96     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_SET_VIRTUAL_PIXEL_RATIO_SYSTEM] =
97         [this](MessageParcel& data, MessageParcel& reply) {
98         return HandleSetVirtualPixelRatioSystem(data, reply);
99     };
100     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_FOLDSTATUS_CHANGED_REPORT_UE] =
101         [this](MessageParcel& data, MessageParcel& reply) {
102         return HandleOnFoldStatusChangedReportUE(data, reply);
103     };
104     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_SCREEN_CAPTURE_NOTIFY] =
105         [this](MessageParcel& data, MessageParcel& reply) {
106         return HandleScreenCaptureNotify(data, reply);
107     };
108     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_SUPER_FOLD_STATUS_CHANGED] =
109         [this](MessageParcel& data, MessageParcel& reply) {
110         return HandleOnSuperFoldStatusChanged(data, reply);
111     };
112     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_SECONDARY_REFLEXION_CHANGED] =
113         [this](MessageParcel& data, MessageParcel& reply) {
114         return HandleOnSecondaryReflexionChanged(data, reply);
115     };
116     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_CAMERA_BACKSELFIE_CHANGED] =
117         [this](MessageParcel& data, MessageParcel& reply) {
118         return HandleOnCameraBackSelfieChanged(data, reply);
119     };
120     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_EXTEND_SCREEN_CONNECT_STATUS_CHANGED] =
121         [this](MessageParcel& data, MessageParcel& reply) {
122         return HandleOnExtendScreenConnectStatusChanged(data, reply);
123     };
124     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_EXTEND_CHANGED] =
125         [this](MessageParcel& data, MessageParcel& reply) {
126         return HandleOnExtendDisplayNodeChange(data, reply);
127     };
128     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_CREATE_SCREEN_SESSION_ONLY] =
129         [this](MessageParcel& data, MessageParcel& reply) {
130         return HandleOnCreateScreenSessionOnly(data, reply);
131     };
132     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_MAIN_CHANGED] =
133         [this](MessageParcel& data, MessageParcel& reply) {
134         return HandleOnMainDisplayNodeChange(data, reply);
135     };
136     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_SET_SCREEN_COMBINATION] =
137         [this](MessageParcel& data, MessageParcel& reply) {
138         return HandleSyncScreenCombination(data, reply);
139     };
140     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_DUMP_SCREEN_SESSION] =
141         [this](MessageParcel& data, MessageParcel& reply) {
142         return HandleOnDumperClientScreenSessions(data, reply);
143     };
144     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_BEFORE_PROPERTY_CHANGED] =
145         [this](MessageParcel& data, MessageParcel& reply) {
146         return HandleOnBeforeScreenPropertyChange(data, reply);
147     };
148     HandleScreenChangeMap_[ScreenSessionManagerClientMessage::TRANS_ID_ON_SCREEN_MODE_CHANGED] =
149         [this](MessageParcel& data, MessageParcel& reply) {
150         return HandleOnScreenModeChanged(data, reply);
151     };
152 }
153 
ScreenSessionManagerClientStub()154 ScreenSessionManagerClientStub::ScreenSessionManagerClientStub()
155 {
156     InitScreenChangeMap();
157 }
158 
OnRemoteRequest(uint32_t code,MessageParcel & data,MessageParcel & reply,MessageOption & option)159 int ScreenSessionManagerClientStub::OnRemoteRequest(uint32_t code, MessageParcel& data, MessageParcel& reply,
160     MessageOption& option)
161 {
162     int handleRet = ERR_INVALID_STATE;
163     if (data.ReadInterfaceToken() != GetDescriptor()) {
164         TLOGE(WmsLogTag::DMS, "Failed to check interface token!");
165         return handleRet;
166     }
167     ScreenSessionManagerClientMessage msgId = static_cast<ScreenSessionManagerClientMessage>(code);
168     auto handleCall = HandleScreenChangeMap_.find(msgId);
169     if (handleCall != HandleScreenChangeMap_.end() && handleCall->second != nullptr) {
170         auto handleFunc = handleCall->second;
171         handleRet = handleFunc(data, reply);
172     } else {
173         TLOGE(WmsLogTag::DMS, "Failed to find function handler!");
174         handleRet = IPCObjectStub::OnRemoteRequest(code, data, reply, option);
175     }
176     return handleRet;
177 }
178 
HandleSwitchUserCallback(MessageParcel & data,MessageParcel & reply)179 int ScreenSessionManagerClientStub::HandleSwitchUserCallback(MessageParcel& data, MessageParcel& reply)
180 {
181     TLOGD(WmsLogTag::DMS, "enter");
182     std::vector<int32_t> oldScbPids;
183     data.ReadInt32Vector(&oldScbPids);
184     int32_t currentScbPid = data.ReadInt32();
185     SwitchUserCallback(oldScbPids, currentScbPid);
186     return ERR_NONE;
187 }
188 
HandleOnScreenConnectionChanged(MessageParcel & data,MessageParcel & reply)189 int ScreenSessionManagerClientStub::HandleOnScreenConnectionChanged(MessageParcel& data, MessageParcel& reply)
190 {
191     TLOGD(WmsLogTag::DMS, "enter");
192     auto rsId = static_cast<ScreenId>(data.ReadUint64());
193     auto name = data.ReadString();
194     bool isExtend = data.ReadBool();
195     auto innerName = data.ReadString();
196     auto screenId = static_cast<ScreenId>(data.ReadUint64());
197     auto screenEvent = static_cast<ScreenEvent>(data.ReadUint8());
198     SessionOption option = {
199         .rsId_ = rsId,
200         .name_ = name,
201         .isExtend_ = isExtend,
202         .innerName_ = innerName,
203         .screenId_ = screenId,
204     };
205     OnScreenConnectionChanged(option, screenEvent);
206     return ERR_NONE;
207 }
208 
HandleOnPropertyChanged(MessageParcel & data,MessageParcel & reply)209 int ScreenSessionManagerClientStub::HandleOnPropertyChanged(MessageParcel& data, MessageParcel& reply)
210 {
211     TLOGD(WmsLogTag::DMS, "enter");
212     auto screenId = static_cast<ScreenId>(data.ReadUint64());
213     ScreenProperty property;
214     if (!RSMarshallingHelper::Unmarshalling(data, property)) {
215         TLOGE(WmsLogTag::DMS, "Read property failed");
216         return ERR_INVALID_DATA;
217     }
218     auto reason = static_cast<ScreenPropertyChangeReason>(data.ReadUint32());
219     OnPropertyChanged(screenId, property, reason);
220     return ERR_NONE;
221 }
222 
HandleOnPowerStatusChanged(MessageParcel & data,MessageParcel & reply)223 int ScreenSessionManagerClientStub::HandleOnPowerStatusChanged(MessageParcel& data, MessageParcel& reply)
224 {
225     TLOGD(WmsLogTag::DMS, "enter");
226     auto event = static_cast<DisplayPowerEvent>(data.ReadUint32());
227     auto status = static_cast<EventStatus>(data.ReadUint32());
228     auto reason = static_cast<PowerStateChangeReason>(data.ReadUint32());
229     OnPowerStatusChanged(event, status, reason);
230     return ERR_NONE;
231 }
232 
HandleOnSensorRotationChanged(MessageParcel & data,MessageParcel & reply)233 int ScreenSessionManagerClientStub::HandleOnSensorRotationChanged(MessageParcel& data, MessageParcel& reply)
234 {
235     TLOGD(WmsLogTag::DMS, "enter");
236     auto screenId = static_cast<ScreenId>(data.ReadUint64());
237     auto sensorRotation = data.ReadFloat();
238     OnSensorRotationChanged(screenId, sensorRotation);
239     return ERR_NONE;
240 }
241 
HandleOnScreenExtendChanged(MessageParcel & data,MessageParcel & reply)242 int ScreenSessionManagerClientStub::HandleOnScreenExtendChanged(MessageParcel& data, MessageParcel& reply)
243 {
244     auto mainScreenId = static_cast<ScreenId>(data.ReadUint64());
245     auto extendScreenId = static_cast<ScreenId>(data.ReadUint64());
246     TLOGI(WmsLogTag::DMS, "mainScreenId=%{public}" PRIu64" extendScreenId=%{public}" PRIu64, mainScreenId,
247         extendScreenId);
248     OnScreenExtendChanged(mainScreenId, extendScreenId);
249     return ERR_NONE;
250 }
251 
HandleOnScreenOrientationChanged(MessageParcel & data,MessageParcel & reply)252 int ScreenSessionManagerClientStub::HandleOnScreenOrientationChanged(MessageParcel& data, MessageParcel& reply)
253 {
254     TLOGD(WmsLogTag::DMS, "enter");
255     auto screenId = static_cast<ScreenId>(data.ReadUint64());
256     auto screenOrientation = data.ReadFloat();
257     OnScreenOrientationChanged(screenId, screenOrientation);
258     return ERR_NONE;
259 }
260 
HandleOnScreenRotationLockedChanged(MessageParcel & data,MessageParcel & reply)261 int ScreenSessionManagerClientStub::HandleOnScreenRotationLockedChanged(MessageParcel& data, MessageParcel& reply)
262 {
263     TLOGD(WmsLogTag::DMS, "enter");
264     auto screenId = static_cast<ScreenId>(data.ReadUint64());
265     auto isLocked = data.ReadBool();
266     OnScreenRotationLockedChanged(screenId, isLocked);
267     return ERR_NONE;
268 }
269 
HandleOnDisplayStateChanged(MessageParcel & data,MessageParcel & reply)270 int ScreenSessionManagerClientStub::HandleOnDisplayStateChanged(MessageParcel& data, MessageParcel& reply)
271 {
272     TLOGD(WmsLogTag::DMS, "enter");
273     auto defaultDisplayId = static_cast<DisplayId>(data.ReadUint64());
274     auto displayInfo = data.ReadStrongParcelable<DisplayInfo>();
275     auto mapSize = data.ReadUint32();
276     std::map<DisplayId, sptr<DisplayInfo>> displayInfoMap;
277     while (mapSize--) {
278         auto displayId = data.ReadUint64();
279         auto displayInfoValue = data.ReadStrongParcelable<DisplayInfo>();
280         displayInfoMap.emplace(displayId, displayInfoValue);
281     }
282     auto type = static_cast<DisplayStateChangeType>(data.ReadUint32());
283     OnDisplayStateChanged(defaultDisplayId, displayInfo, displayInfoMap, type);
284     return ERR_NONE;
285 }
286 
HandleOnUpdateFoldDisplayMode(MessageParcel & data,MessageParcel & reply)287 int ScreenSessionManagerClientStub::HandleOnUpdateFoldDisplayMode(MessageParcel& data, MessageParcel& reply)
288 {
289     TLOGD(WmsLogTag::DMS, "enter");
290     auto foldDisplayMode = static_cast<FoldDisplayMode>(data.ReadUint32());
291     OnUpdateFoldDisplayMode(foldDisplayMode);
292     return ERR_NONE;
293 }
294 
HandleOnGetSurfaceNodeIdsFromMissionIdsChanged(MessageParcel & data,MessageParcel & reply)295 int ScreenSessionManagerClientStub::HandleOnGetSurfaceNodeIdsFromMissionIdsChanged(MessageParcel& data,
296     MessageParcel& reply)
297 {
298     std::vector<uint64_t> missionIds;
299     data.ReadUInt64Vector(&missionIds);
300     std::vector<uint64_t> surfaceNodeIds;
301     data.ReadUInt64Vector(&surfaceNodeIds);
302     bool isBlackList = data.ReadBool();
303     OnGetSurfaceNodeIdsFromMissionIdsChanged(missionIds, surfaceNodeIds, isBlackList);
304     if (!reply.WriteUInt64Vector(surfaceNodeIds)) {
305         TLOGE(WmsLogTag::DMS, "Write surfaceNodeIds failed");
306         return ERR_TRANSACTION_FAILED;
307     }
308     return ERR_NONE;
309 }
310 
HandleOnSetSurfaceNodeIdsChanged(MessageParcel & data,MessageParcel & reply)311 int ScreenSessionManagerClientStub::HandleOnSetSurfaceNodeIdsChanged(MessageParcel& data, MessageParcel& reply)
312 {
313     auto displayId = static_cast<DisplayId>(data.ReadUint64());
314     std::vector<uint64_t> surfaceNodeIds;
315     data.ReadUInt64Vector(&surfaceNodeIds);
316     OnSetSurfaceNodeIdsChanged(displayId, surfaceNodeIds);
317     return ERR_NONE;
318 }
319 
HandleOnVirtualScreenDisconnected(MessageParcel & data,MessageParcel & reply)320 int ScreenSessionManagerClientStub::HandleOnVirtualScreenDisconnected(MessageParcel& data, MessageParcel& reply)
321 {
322     auto displayId = static_cast<DisplayId>(data.ReadUint64());
323     OnVirtualScreenDisconnected(displayId);
324     return ERR_NONE;
325 }
326 
HandleOnScreenshot(MessageParcel & data,MessageParcel & reply)327 int ScreenSessionManagerClientStub::HandleOnScreenshot(MessageParcel& data, MessageParcel& reply)
328 {
329     TLOGD(WmsLogTag::DMS, "enter");
330     auto displayId = static_cast<DisplayId>(data.ReadUint64());
331     OnScreenshot(displayId);
332     return ERR_NONE;
333 }
334 
HandleOnImmersiveStateChanged(MessageParcel & data,MessageParcel & reply)335 int ScreenSessionManagerClientStub::HandleOnImmersiveStateChanged(MessageParcel& data, MessageParcel& reply)
336 {
337     TLOGD(WmsLogTag::DMS, "enter");
338     auto screenId = static_cast<ScreenId>(data.ReadUint64());
339     bool immersive = false;
340     OnImmersiveStateChanged(screenId, immersive);
341     if (!reply.WriteBool(immersive)) {
342         TLOGE(WmsLogTag::DMS, "Write immersive failed");
343         return ERR_TRANSACTION_FAILED;
344     }
345     return ERR_NONE;
346 }
347 
HandleOnSetDisplayNodeScreenId(MessageParcel & data,MessageParcel & reply)348 int ScreenSessionManagerClientStub::HandleOnSetDisplayNodeScreenId(MessageParcel& data, MessageParcel& reply)
349 {
350     TLOGD(WmsLogTag::DMS, "enter");
351     auto screenId = static_cast<ScreenId>(data.ReadUint64());
352     auto displayNodeScreenId = static_cast<ScreenId>(data.ReadUint64());
353     SetDisplayNodeScreenId(screenId, displayNodeScreenId);
354     return ERR_NONE;
355 }
356 
HandleSetVirtualPixelRatioSystem(MessageParcel & data,MessageParcel & reply)357 int ScreenSessionManagerClientStub::HandleSetVirtualPixelRatioSystem(MessageParcel& data, MessageParcel& reply)
358 {
359     TLOGD(WmsLogTag::DMS, "enter");
360     auto screenId = static_cast<ScreenId>(data.ReadUint64());
361     float virtualPixelRatio = data.ReadFloat();
362     SetVirtualPixelRatioSystem(screenId, virtualPixelRatio);
363     return ERR_NONE;
364 }
365 
HandleOnFoldStatusChangedReportUE(MessageParcel & data,MessageParcel & reply)366 int ScreenSessionManagerClientStub::HandleOnFoldStatusChangedReportUE(MessageParcel& data, MessageParcel& reply)
367 {
368     std::vector<std::string> screenFoldInfo;
369     data.ReadStringVector(&screenFoldInfo);
370     OnFoldStatusChangedReportUE(screenFoldInfo);
371     return ERR_NONE;
372 }
373 
HandleOnHoverStatusChanged(MessageParcel & data,MessageParcel & reply)374 int ScreenSessionManagerClientStub::HandleOnHoverStatusChanged(MessageParcel& data, MessageParcel& reply)
375 {
376     TLOGD(WmsLogTag::DMS, "enter");
377     auto screenId = static_cast<ScreenId>(data.ReadUint64());
378     auto hoverStatus = data.ReadInt32();
379     auto needRotate = data.ReadBool();
380     OnHoverStatusChanged(screenId, hoverStatus, needRotate);
381     return ERR_NONE;
382 }
383 
HandleScreenCaptureNotify(MessageParcel & data,MessageParcel & reply)384 int ScreenSessionManagerClientStub::HandleScreenCaptureNotify(MessageParcel& data, MessageParcel& reply)
385 {
386     auto screenId = static_cast<ScreenId>(data.ReadUint64());
387     auto uid = data.ReadInt32();
388     auto clientName = data.ReadString();
389     TLOGI(WmsLogTag::DMS, "notify scb capture screenId=%{public}" PRIu64", uid=%{public}d.", screenId, uid);
390     ScreenCaptureNotify(screenId, uid, clientName);
391     return ERR_NONE;
392 }
393 
HandleOnCameraBackSelfieChanged(MessageParcel & data,MessageParcel & reply)394 int ScreenSessionManagerClientStub::HandleOnCameraBackSelfieChanged(MessageParcel& data, MessageParcel& reply)
395 {
396     TLOGD(WmsLogTag::DMS, "enter");
397     auto screenId = static_cast<ScreenId>(data.ReadUint64());
398     bool isCameraBackSelfie = data.ReadBool();
399     OnCameraBackSelfieChanged(screenId, isCameraBackSelfie);
400     return ERR_NONE;
401 }
402 
HandleOnSuperFoldStatusChanged(MessageParcel & data,MessageParcel & reply)403 int ScreenSessionManagerClientStub::HandleOnSuperFoldStatusChanged(MessageParcel& data, MessageParcel& reply)
404 {
405     auto screenId = static_cast<ScreenId>(data.ReadUint64());
406     auto superFoldStatus = static_cast<SuperFoldStatus>(data.ReadUint32());
407     TLOGI(WmsLogTag::DMS, "super fold status screenId=%{public}" PRIu64", superFoldStatus=%{public}d.",
408         screenId, static_cast<uint32_t>(superFoldStatus));
409     OnSuperFoldStatusChanged(screenId, superFoldStatus);
410     return ERR_NONE;
411 }
412 
HandleOnSecondaryReflexionChanged(MessageParcel & data,MessageParcel & reply)413 int ScreenSessionManagerClientStub::HandleOnSecondaryReflexionChanged(MessageParcel& data, MessageParcel& reply)
414 {
415     auto screenId = static_cast<ScreenId>(data.ReadUint64());
416     auto isSecondaryReflexion = static_cast<bool>(data.ReadUint32());
417     TLOGI(WmsLogTag::DMS, "secondary reflexion screenId=%{public}" PRIu64", isSecondaryReflexion=%{public}d.",
418         screenId, static_cast<uint32_t>(isSecondaryReflexion));
419     OnSecondaryReflexionChanged(screenId, isSecondaryReflexion);
420     return ERR_NONE;
421 }
422 
HandleOnExtendScreenConnectStatusChanged(MessageParcel & data,MessageParcel & reply)423 int ScreenSessionManagerClientStub::HandleOnExtendScreenConnectStatusChanged(MessageParcel& data, MessageParcel& reply)
424 {
425     auto screenId = static_cast<ScreenId>(data.ReadUint64());
426     auto extendScreenConnectStatus = static_cast<ExtendScreenConnectStatus>(data.ReadUint32());
427     TLOGI(WmsLogTag::DMS, "extendScreenConnectStatus screenId=%{public}" PRIu64", extendScreenConnectStatus"
428         "=%{public}d.", screenId, static_cast<uint32_t>(extendScreenConnectStatus));
429     OnExtendScreenConnectStatusChanged(screenId, extendScreenConnectStatus);
430     return ERR_NONE;
431 }
432 
HandleOnExtendDisplayNodeChange(MessageParcel & data,MessageParcel & reply)433 int ScreenSessionManagerClientStub::HandleOnExtendDisplayNodeChange(MessageParcel& data, MessageParcel& reply)
434 {
435     ScreenId mainScreenId = static_cast<ScreenId>(data.ReadUint64());
436     ScreenId extendScreenId = static_cast<ScreenId>(data.ReadUint64());
437     bool changeStatus = OnExtendDisplayNodeChange(mainScreenId, extendScreenId);
438     reply.WriteBool(changeStatus);
439     TLOGI(WmsLogTag::DMS, "extend display change status=%{public}d", changeStatus);
440     return ERR_NONE;
441 }
442 
HandleOnCreateScreenSessionOnly(MessageParcel & data,MessageParcel & reply)443 int ScreenSessionManagerClientStub::HandleOnCreateScreenSessionOnly(MessageParcel& data, MessageParcel& reply)
444 {
445     auto screenId = static_cast<ScreenId>(data.ReadUint64());
446     auto rsId = static_cast<ScreenId>(data.ReadUint64());
447     auto name = data.ReadString();
448     bool isExtend = data.ReadBool();
449     bool refreshStatus = OnCreateScreenSessionOnly(screenId, rsId, name, isExtend);
450     reply.WriteBool(refreshStatus);
451     return ERR_NONE;
452 }
453 
HandleOnMainDisplayNodeChange(MessageParcel & data,MessageParcel & reply)454 int ScreenSessionManagerClientStub::HandleOnMainDisplayNodeChange(MessageParcel& data, MessageParcel& reply)
455 {
456     ScreenId mainScreenId = static_cast<ScreenId>(data.ReadUint64());
457     ScreenId extendScreenId = static_cast<ScreenId>(data.ReadUint64());
458     ScreenId extendRSId = static_cast<ScreenId>(data.ReadUint64());
459     bool changeStatus = OnMainDisplayNodeChange(mainScreenId, extendScreenId, extendRSId);
460     reply.WriteBool(changeStatus);
461     TLOGI(WmsLogTag::DMS, "main node change status=%{public}d", changeStatus);
462     return ERR_NONE;
463 }
464 
HandleOnDumperClientScreenSessions(MessageParcel & data,MessageParcel & reply)465 int ScreenSessionManagerClientStub::HandleOnDumperClientScreenSessions(MessageParcel& data, MessageParcel& reply)
466 {
467     std::string screenInfos = OnDumperClientScreenSessions();
468     reply.WriteString(screenInfos);
469     return ERR_NONE;
470 }
471 
HandleSyncScreenCombination(MessageParcel & data,MessageParcel & reply)472 int ScreenSessionManagerClientStub::HandleSyncScreenCombination(MessageParcel& data, MessageParcel& reply)
473 {
474     auto mainScreenId = static_cast<ScreenId>(data.ReadUint64());
475     auto extendScreenId = static_cast<ScreenId>(data.ReadUint64());
476     auto extendCombination = static_cast<ScreenCombination>(data.ReadUint32());
477     SetScreenCombination(mainScreenId, extendScreenId, extendCombination);
478     return ERR_NONE;
479 }
480 
HandleOnBeforeScreenPropertyChange(MessageParcel & data,MessageParcel & reply)481 int ScreenSessionManagerClientStub::HandleOnBeforeScreenPropertyChange(MessageParcel& data, MessageParcel& reply)
482 {
483     uint32_t status = data.ReadUint32();
484     FoldStatus foldStatus = FoldStatus::UNKNOWN;
485     if (status > static_cast<uint32_t>(FoldStatus::HALF_FOLD)) {
486         return ERR_INVALID_VALUE;
487     }
488     foldStatus = static_cast<FoldStatus>(status);
489     TLOGI(WmsLogTag::DMS, "fold status %{public}d", foldStatus);
490     OnBeforeScreenPropertyChanged(foldStatus);
491     return ERR_NONE;
492 }
493 
HandleOnScreenModeChanged(MessageParcel & data,MessageParcel & reply)494 int ScreenSessionManagerClientStub::HandleOnScreenModeChanged(MessageParcel& data, MessageParcel& reply)
495 {
496     auto screenModeChangeEvent = static_cast<ScreenModeChangeEvent>(data.ReadUint32());
497     TLOGI(WmsLogTag::DMS, "screenModeChangeEvent: %{public}d", screenModeChangeEvent);
498     OnScreenModeChanged(screenModeChangeEvent);
499     return ERR_NONE;
500 }
501 } // namespace OHOS::Rosen
502