1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3e0dac50fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e0dac50fSopenharmony_ci * you may not use this file except in compliance with the License. 5e0dac50fSopenharmony_ci * You may obtain a copy of the License at 6e0dac50fSopenharmony_ci * 7e0dac50fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e0dac50fSopenharmony_ci * 9e0dac50fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e0dac50fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e0dac50fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e0dac50fSopenharmony_ci * See the License for the specific language governing permissions and 13e0dac50fSopenharmony_ci * limitations under the License. 14e0dac50fSopenharmony_ci */ 15e0dac50fSopenharmony_ci 16e0dac50fSopenharmony_ci#include "zidl/window_proxy.h" 17e0dac50fSopenharmony_ci#include <ipc_types.h> 18e0dac50fSopenharmony_ci#include <key_event.h> 19e0dac50fSopenharmony_ci#include "pointer_event.h" 20e0dac50fSopenharmony_ci#include "message_option.h" 21e0dac50fSopenharmony_ci#include "window_manager_hilog.h" 22e0dac50fSopenharmony_ci#include "wm_common.h" 23e0dac50fSopenharmony_ci 24e0dac50fSopenharmony_cinamespace OHOS { 25e0dac50fSopenharmony_cinamespace Rosen { 26e0dac50fSopenharmony_cinamespace { 27e0dac50fSopenharmony_ciconstexpr HiviewDFX::HiLogLabel LABEL = {LOG_CORE, HILOG_DOMAIN_WINDOW, "WindowProxy"}; 28e0dac50fSopenharmony_ci} 29e0dac50fSopenharmony_ci 30e0dac50fSopenharmony_ciWMError WindowProxy::UpdateWindowRect(const struct Rect& rect, bool decoStatus, WindowSizeChangeReason reason, 31e0dac50fSopenharmony_ci const std::shared_ptr<RSTransaction>& rsTransaction) 32e0dac50fSopenharmony_ci{ 33e0dac50fSopenharmony_ci MessageParcel data; 34e0dac50fSopenharmony_ci MessageParcel reply; 35e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 36e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 37e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 38e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 39e0dac50fSopenharmony_ci } 40e0dac50fSopenharmony_ci if (!(data.WriteInt32(rect.posX_) && data.WriteInt32(rect.posY_) && 41e0dac50fSopenharmony_ci data.WriteUint32(rect.width_) && data.WriteUint32(rect.height_))) { 42e0dac50fSopenharmony_ci WLOGFE("Write WindowRect failed"); 43e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 44e0dac50fSopenharmony_ci } 45e0dac50fSopenharmony_ci if (!data.WriteBool(decoStatus)) { 46e0dac50fSopenharmony_ci WLOGFE("Write deco status failed"); 47e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 48e0dac50fSopenharmony_ci } 49e0dac50fSopenharmony_ci if (!data.WriteUint32(static_cast<uint32_t>(reason))) { 50e0dac50fSopenharmony_ci WLOGFE("Write WindowSizeChangeReason failed"); 51e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 52e0dac50fSopenharmony_ci } 53e0dac50fSopenharmony_ci 54e0dac50fSopenharmony_ci bool hasRSTransaction = rsTransaction != nullptr; 55e0dac50fSopenharmony_ci if (!data.WriteBool(hasRSTransaction)) { 56e0dac50fSopenharmony_ci WLOGFE("Write transaction sync Id failed"); 57e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 58e0dac50fSopenharmony_ci } 59e0dac50fSopenharmony_ci if (hasRSTransaction) { 60e0dac50fSopenharmony_ci if (!data.WriteParcelable(rsTransaction.get())) { 61e0dac50fSopenharmony_ci WLOGFE("Write transaction sync Id failed"); 62e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 63e0dac50fSopenharmony_ci } 64e0dac50fSopenharmony_ci } 65e0dac50fSopenharmony_ci 66e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 67e0dac50fSopenharmony_ci if (remote == nullptr) { 68e0dac50fSopenharmony_ci WLOGFE("remote is null"); 69e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 70e0dac50fSopenharmony_ci } 71e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_UPDATE_WINDOW_RECT), 72e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 73e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 74e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 75e0dac50fSopenharmony_ci } 76e0dac50fSopenharmony_ci return WMError::WM_OK; 77e0dac50fSopenharmony_ci} 78e0dac50fSopenharmony_ci 79e0dac50fSopenharmony_ciWMError WindowProxy::UpdateWindowMode(WindowMode mode) 80e0dac50fSopenharmony_ci{ 81e0dac50fSopenharmony_ci MessageParcel data; 82e0dac50fSopenharmony_ci MessageParcel reply; 83e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 84e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 85e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 86e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 87e0dac50fSopenharmony_ci } 88e0dac50fSopenharmony_ci if (!data.WriteUint32(static_cast<uint32_t>(mode))) { 89e0dac50fSopenharmony_ci WLOGFE("Write WindowMode failed"); 90e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 91e0dac50fSopenharmony_ci } 92e0dac50fSopenharmony_ci 93e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 94e0dac50fSopenharmony_ci if (remote == nullptr) { 95e0dac50fSopenharmony_ci WLOGFE("remote is null"); 96e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 97e0dac50fSopenharmony_ci } 98e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_UPDATE_WINDOW_MODE), 99e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 100e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 101e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 102e0dac50fSopenharmony_ci } 103e0dac50fSopenharmony_ci return WMError::WM_OK; 104e0dac50fSopenharmony_ci} 105e0dac50fSopenharmony_ci 106e0dac50fSopenharmony_ciWMError WindowProxy::UpdateWindowModeSupportInfo(uint32_t modeSupportInfo) 107e0dac50fSopenharmony_ci{ 108e0dac50fSopenharmony_ci MessageParcel data; 109e0dac50fSopenharmony_ci MessageParcel reply; 110e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 111e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 112e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 113e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 114e0dac50fSopenharmony_ci } 115e0dac50fSopenharmony_ci if (!data.WriteUint32(modeSupportInfo)) { 116e0dac50fSopenharmony_ci WLOGFE("Write WindowMode failed"); 117e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 118e0dac50fSopenharmony_ci } 119e0dac50fSopenharmony_ci 120e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 121e0dac50fSopenharmony_ci if (remote == nullptr) { 122e0dac50fSopenharmony_ci WLOGFE("remote is null"); 123e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 124e0dac50fSopenharmony_ci } 125e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_UPDATE_MODE_SUPPORT_INFO), 126e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 127e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 128e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 129e0dac50fSopenharmony_ci } 130e0dac50fSopenharmony_ci return WMError::WM_OK; 131e0dac50fSopenharmony_ci} 132e0dac50fSopenharmony_ci 133e0dac50fSopenharmony_ciWMError WindowProxy::UpdateFocusStatus(bool focused) 134e0dac50fSopenharmony_ci{ 135e0dac50fSopenharmony_ci MessageParcel data; 136e0dac50fSopenharmony_ci MessageParcel reply; 137e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 138e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 139e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 140e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 141e0dac50fSopenharmony_ci } 142e0dac50fSopenharmony_ci if (!data.WriteBool(focused)) { 143e0dac50fSopenharmony_ci WLOGFE("Write Focus failed"); 144e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 145e0dac50fSopenharmony_ci } 146e0dac50fSopenharmony_ci 147e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 148e0dac50fSopenharmony_ci if (remote == nullptr) { 149e0dac50fSopenharmony_ci WLOGFE("remote is null"); 150e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 151e0dac50fSopenharmony_ci } 152e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_UPDATE_FOCUS_STATUS), 153e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 154e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 155e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 156e0dac50fSopenharmony_ci } 157e0dac50fSopenharmony_ci return WMError::WM_OK; 158e0dac50fSopenharmony_ci} 159e0dac50fSopenharmony_ci 160e0dac50fSopenharmony_ciWMError WindowProxy::UpdateAvoidArea(const sptr<AvoidArea>& avoidArea, AvoidAreaType type) 161e0dac50fSopenharmony_ci{ 162e0dac50fSopenharmony_ci MessageParcel data; 163e0dac50fSopenharmony_ci MessageParcel reply; 164e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 165e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 166e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 167e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 168e0dac50fSopenharmony_ci } 169e0dac50fSopenharmony_ci if (!data.WriteStrongParcelable(avoidArea)) { 170e0dac50fSopenharmony_ci WLOGFE("Write WindowRect failed"); 171e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 172e0dac50fSopenharmony_ci } 173e0dac50fSopenharmony_ci if (!data.WriteUint32(static_cast<uint32_t>(type))) { 174e0dac50fSopenharmony_ci WLOGFE("Write AvoidAreaType failed"); 175e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 176e0dac50fSopenharmony_ci } 177e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 178e0dac50fSopenharmony_ci if (remote == nullptr) { 179e0dac50fSopenharmony_ci WLOGFE("remote is null"); 180e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 181e0dac50fSopenharmony_ci } 182e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_UPDATE_AVOID_AREA), 183e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 184e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 185e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 186e0dac50fSopenharmony_ci } 187e0dac50fSopenharmony_ci return WMError::WM_OK; 188e0dac50fSopenharmony_ci} 189e0dac50fSopenharmony_ci 190e0dac50fSopenharmony_ciWMError WindowProxy::UpdateWindowState(WindowState state) 191e0dac50fSopenharmony_ci{ 192e0dac50fSopenharmony_ci MessageParcel data; 193e0dac50fSopenharmony_ci MessageParcel reply; 194e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 195e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 196e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 197e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 198e0dac50fSopenharmony_ci } 199e0dac50fSopenharmony_ci 200e0dac50fSopenharmony_ci if (!data.WriteUint32(static_cast<uint32_t>(state))) { 201e0dac50fSopenharmony_ci WLOGFE("Write isStopped"); 202e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 203e0dac50fSopenharmony_ci } 204e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 205e0dac50fSopenharmony_ci if (remote == nullptr) { 206e0dac50fSopenharmony_ci WLOGFE("remote is null"); 207e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 208e0dac50fSopenharmony_ci } 209e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_UPDATE_WINDOW_STATE), 210e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 211e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 212e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 213e0dac50fSopenharmony_ci } 214e0dac50fSopenharmony_ci return WMError::WM_OK; 215e0dac50fSopenharmony_ci} 216e0dac50fSopenharmony_ci 217e0dac50fSopenharmony_ciWMError WindowProxy::UpdateWindowDragInfo(const PointInfo& point, DragEvent event) 218e0dac50fSopenharmony_ci{ 219e0dac50fSopenharmony_ci MessageParcel data; 220e0dac50fSopenharmony_ci MessageParcel reply; 221e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 222e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 223e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 224e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 225e0dac50fSopenharmony_ci } 226e0dac50fSopenharmony_ci if (!(data.WriteInt32(point.x) and data.WriteInt32(point.y))) { 227e0dac50fSopenharmony_ci WLOGFE("Write pos failed"); 228e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 229e0dac50fSopenharmony_ci } 230e0dac50fSopenharmony_ci if (!data.WriteInt32(static_cast<uint32_t>(event))) { 231e0dac50fSopenharmony_ci WLOGFE("Write event failed"); 232e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 233e0dac50fSopenharmony_ci } 234e0dac50fSopenharmony_ci 235e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 236e0dac50fSopenharmony_ci if (remote == nullptr) { 237e0dac50fSopenharmony_ci WLOGFE("remote is null"); 238e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 239e0dac50fSopenharmony_ci } 240e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_UPDATE_DRAG_EVENT), 241e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 242e0dac50fSopenharmony_ci WLOGFE("SendRequest TRANS_ID_UPDATE_DRAG_EVENT failed"); 243e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 244e0dac50fSopenharmony_ci } 245e0dac50fSopenharmony_ci return WMError::WM_OK; 246e0dac50fSopenharmony_ci} 247e0dac50fSopenharmony_ci 248e0dac50fSopenharmony_ciWMError WindowProxy::UpdateDisplayId(DisplayId from, DisplayId to) 249e0dac50fSopenharmony_ci{ 250e0dac50fSopenharmony_ci MessageParcel data; 251e0dac50fSopenharmony_ci MessageParcel reply; 252e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 253e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 254e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 255e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 256e0dac50fSopenharmony_ci } 257e0dac50fSopenharmony_ci if (!(data.WriteUint64(from) and data.WriteUint64(to))) { 258e0dac50fSopenharmony_ci WLOGFE("Write displayid failed"); 259e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 260e0dac50fSopenharmony_ci } 261e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 262e0dac50fSopenharmony_ci if (remote == nullptr) { 263e0dac50fSopenharmony_ci WLOGFE("remote is null"); 264e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 265e0dac50fSopenharmony_ci } 266e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_UPDATE_DISPLAY_ID), 267e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 268e0dac50fSopenharmony_ci WLOGFE("SendRequest TRANS_ID_UPDATE_DISPLAY_ID failed"); 269e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 270e0dac50fSopenharmony_ci } 271e0dac50fSopenharmony_ci return WMError::WM_OK; 272e0dac50fSopenharmony_ci} 273e0dac50fSopenharmony_ci 274e0dac50fSopenharmony_ciWMError WindowProxy::UpdateOccupiedAreaChangeInfo(const sptr<OccupiedAreaChangeInfo>& info, 275e0dac50fSopenharmony_ci const std::shared_ptr<RSTransaction>& rsTransaction) 276e0dac50fSopenharmony_ci{ 277e0dac50fSopenharmony_ci MessageParcel data; 278e0dac50fSopenharmony_ci MessageParcel reply; 279e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 280e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 281e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 282e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 283e0dac50fSopenharmony_ci } 284e0dac50fSopenharmony_ci if (!data.WriteParcelable(info)) { 285e0dac50fSopenharmony_ci WLOGFE("Write OccupiedAreaChangeInfo failed"); 286e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 287e0dac50fSopenharmony_ci } 288e0dac50fSopenharmony_ci 289e0dac50fSopenharmony_ci bool hasRSTransaction = rsTransaction != nullptr; 290e0dac50fSopenharmony_ci if (!data.WriteBool(hasRSTransaction)) { 291e0dac50fSopenharmony_ci WLOGFE("Write transaction sync Id failed"); 292e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 293e0dac50fSopenharmony_ci } 294e0dac50fSopenharmony_ci if (hasRSTransaction) { 295e0dac50fSopenharmony_ci if (!data.WriteParcelable(rsTransaction.get())) { 296e0dac50fSopenharmony_ci WLOGFE("Write transaction sync Id failed"); 297e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 298e0dac50fSopenharmony_ci } 299e0dac50fSopenharmony_ci } 300e0dac50fSopenharmony_ci 301e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 302e0dac50fSopenharmony_ci if (remote == nullptr) { 303e0dac50fSopenharmony_ci WLOGFE("remote is null"); 304e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 305e0dac50fSopenharmony_ci } 306e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_UPDATE_OCCUPIED_AREA), 307e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 308e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 309e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 310e0dac50fSopenharmony_ci } 311e0dac50fSopenharmony_ci return WMError::WM_OK; 312e0dac50fSopenharmony_ci} 313e0dac50fSopenharmony_ci 314e0dac50fSopenharmony_ciWMError WindowProxy::UpdateOccupiedAreaAndRect(const sptr<OccupiedAreaChangeInfo>& info, const Rect& rect, 315e0dac50fSopenharmony_ci const std::shared_ptr<RSTransaction>& rsTransaction) 316e0dac50fSopenharmony_ci{ 317e0dac50fSopenharmony_ci MessageParcel data; 318e0dac50fSopenharmony_ci MessageParcel reply; 319e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 320e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 321e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 322e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 323e0dac50fSopenharmony_ci } 324e0dac50fSopenharmony_ci if (!data.WriteParcelable(info)) { 325e0dac50fSopenharmony_ci WLOGFE("Write OccupiedAreaChangeInfo failed"); 326e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 327e0dac50fSopenharmony_ci } 328e0dac50fSopenharmony_ci 329e0dac50fSopenharmony_ci if (!(data.WriteInt32(rect.posX_) && data.WriteInt32(rect.posY_) && 330e0dac50fSopenharmony_ci data.WriteUint32(rect.width_) && data.WriteUint32(rect.height_))) { 331e0dac50fSopenharmony_ci WLOGFE("Write WindowRect failed"); 332e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 333e0dac50fSopenharmony_ci } 334e0dac50fSopenharmony_ci 335e0dac50fSopenharmony_ci bool hasRSTransaction = rsTransaction != nullptr; 336e0dac50fSopenharmony_ci if (!data.WriteBool(hasRSTransaction)) { 337e0dac50fSopenharmony_ci WLOGFE("Write transaction sync Id failed"); 338e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 339e0dac50fSopenharmony_ci } 340e0dac50fSopenharmony_ci if (hasRSTransaction) { 341e0dac50fSopenharmony_ci if (!data.WriteParcelable(rsTransaction.get())) { 342e0dac50fSopenharmony_ci WLOGFE("Write transaction sync Id failed"); 343e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 344e0dac50fSopenharmony_ci } 345e0dac50fSopenharmony_ci } 346e0dac50fSopenharmony_ci 347e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 348e0dac50fSopenharmony_ci if (remote == nullptr) { 349e0dac50fSopenharmony_ci WLOGFE("remote is null"); 350e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 351e0dac50fSopenharmony_ci } 352e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_UPDATE_OCCUPIED_AREA_AND_RECT), 353e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 354e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 355e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 356e0dac50fSopenharmony_ci } 357e0dac50fSopenharmony_ci return WMError::WM_OK; 358e0dac50fSopenharmony_ci} 359e0dac50fSopenharmony_ci 360e0dac50fSopenharmony_ciWMError WindowProxy::UpdateActiveStatus(bool isActive) 361e0dac50fSopenharmony_ci{ 362e0dac50fSopenharmony_ci MessageParcel data; 363e0dac50fSopenharmony_ci MessageParcel reply; 364e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 365e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 366e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 367e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 368e0dac50fSopenharmony_ci } 369e0dac50fSopenharmony_ci if (!data.WriteBool(isActive)) { 370e0dac50fSopenharmony_ci WLOGFE("Write Focus failed"); 371e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 372e0dac50fSopenharmony_ci } 373e0dac50fSopenharmony_ci 374e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 375e0dac50fSopenharmony_ci if (remote == nullptr) { 376e0dac50fSopenharmony_ci WLOGFE("remote is null"); 377e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 378e0dac50fSopenharmony_ci } 379e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_UPDATE_ACTIVE_STATUS), 380e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 381e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 382e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 383e0dac50fSopenharmony_ci } 384e0dac50fSopenharmony_ci return WMError::WM_OK; 385e0dac50fSopenharmony_ci} 386e0dac50fSopenharmony_ci 387e0dac50fSopenharmony_cisptr<WindowProperty> WindowProxy::GetWindowProperty() 388e0dac50fSopenharmony_ci{ 389e0dac50fSopenharmony_ci MessageParcel data; 390e0dac50fSopenharmony_ci MessageParcel reply; 391e0dac50fSopenharmony_ci MessageOption option; 392e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 393e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 394e0dac50fSopenharmony_ci return nullptr; 395e0dac50fSopenharmony_ci } 396e0dac50fSopenharmony_ci uint32_t requestCode = static_cast<uint32_t>(WindowMessage::TRANS_ID_GET_WINDOW_PROPERTY); 397e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 398e0dac50fSopenharmony_ci if (remote == nullptr) { 399e0dac50fSopenharmony_ci WLOGFE("remote is null"); 400e0dac50fSopenharmony_ci return nullptr; 401e0dac50fSopenharmony_ci } 402e0dac50fSopenharmony_ci if (remote->SendRequest(requestCode, data, reply, option) != ERR_NONE) { 403e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 404e0dac50fSopenharmony_ci return nullptr; 405e0dac50fSopenharmony_ci } 406e0dac50fSopenharmony_ci sptr<WindowProperty> property = reply.ReadParcelable<WindowProperty>(); 407e0dac50fSopenharmony_ci return property; 408e0dac50fSopenharmony_ci} 409e0dac50fSopenharmony_ci 410e0dac50fSopenharmony_ciWMError WindowProxy::NotifyTouchOutside() 411e0dac50fSopenharmony_ci{ 412e0dac50fSopenharmony_ci MessageParcel data; 413e0dac50fSopenharmony_ci MessageParcel reply; 414e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 415e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 416e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 417e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 418e0dac50fSopenharmony_ci } 419e0dac50fSopenharmony_ci 420e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 421e0dac50fSopenharmony_ci if (remote == nullptr) { 422e0dac50fSopenharmony_ci WLOGFE("remote is null"); 423e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 424e0dac50fSopenharmony_ci } 425e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_NOTIFY_OUTSIDE_PRESSED), 426e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 427e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 428e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 429e0dac50fSopenharmony_ci } 430e0dac50fSopenharmony_ci return WMError::WM_OK; 431e0dac50fSopenharmony_ci} 432e0dac50fSopenharmony_ci 433e0dac50fSopenharmony_ciWMError WindowProxy::NotifyScreenshot() 434e0dac50fSopenharmony_ci{ 435e0dac50fSopenharmony_ci MessageParcel data; 436e0dac50fSopenharmony_ci MessageParcel reply; 437e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 438e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 439e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 440e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 441e0dac50fSopenharmony_ci } 442e0dac50fSopenharmony_ci 443e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 444e0dac50fSopenharmony_ci if (remote == nullptr) { 445e0dac50fSopenharmony_ci WLOGFE("remote is null"); 446e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 447e0dac50fSopenharmony_ci } 448e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_NOTIFY_SCREEN_SHOT), 449e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 450e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 451e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 452e0dac50fSopenharmony_ci } 453e0dac50fSopenharmony_ci return WMError::WM_OK; 454e0dac50fSopenharmony_ci} 455e0dac50fSopenharmony_ci 456e0dac50fSopenharmony_ciWMError WindowProxy::DumpInfo(const std::vector<std::string>& params) 457e0dac50fSopenharmony_ci{ 458e0dac50fSopenharmony_ci MessageParcel data; 459e0dac50fSopenharmony_ci MessageParcel reply; 460e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 461e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 462e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 463e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 464e0dac50fSopenharmony_ci } 465e0dac50fSopenharmony_ci if (!data.WriteStringVector(params)) { 466e0dac50fSopenharmony_ci WLOGFE("Write params failed"); 467e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 468e0dac50fSopenharmony_ci } 469e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 470e0dac50fSopenharmony_ci if (remote == nullptr) { 471e0dac50fSopenharmony_ci WLOGFE("remote is null"); 472e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 473e0dac50fSopenharmony_ci } 474e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_DUMP_INFO), 475e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 476e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 477e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 478e0dac50fSopenharmony_ci } 479e0dac50fSopenharmony_ci return WMError::WM_OK; 480e0dac50fSopenharmony_ci} 481e0dac50fSopenharmony_ci 482e0dac50fSopenharmony_ciWMError WindowProxy::UpdateZoomTransform(const Transform& trans, bool isDisplayZoomOn) 483e0dac50fSopenharmony_ci{ 484e0dac50fSopenharmony_ci MessageParcel data; 485e0dac50fSopenharmony_ci MessageParcel reply; 486e0dac50fSopenharmony_ci MessageOption option; 487e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 488e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 489e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 490e0dac50fSopenharmony_ci } 491e0dac50fSopenharmony_ci if (!trans.Marshalling(data)) { 492e0dac50fSopenharmony_ci WLOGFE("Write params failed"); 493e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 494e0dac50fSopenharmony_ci } 495e0dac50fSopenharmony_ci if (!data.WriteBool(isDisplayZoomOn)) { 496e0dac50fSopenharmony_ci WLOGFE("Write params failed"); 497e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 498e0dac50fSopenharmony_ci } 499e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 500e0dac50fSopenharmony_ci if (remote == nullptr) { 501e0dac50fSopenharmony_ci WLOGFE("remote is null"); 502e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 503e0dac50fSopenharmony_ci } 504e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_UPDATE_ZOOM_TRANSFORM), 505e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 506e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 507e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 508e0dac50fSopenharmony_ci } 509e0dac50fSopenharmony_ci return WMError::WM_OK; 510e0dac50fSopenharmony_ci} 511e0dac50fSopenharmony_ci 512e0dac50fSopenharmony_ciWMError WindowProxy::NotifyDestroy(void) 513e0dac50fSopenharmony_ci{ 514e0dac50fSopenharmony_ci MessageParcel data; 515e0dac50fSopenharmony_ci MessageParcel replay; 516e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 517e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 518e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 519e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 520e0dac50fSopenharmony_ci } 521e0dac50fSopenharmony_ci 522e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 523e0dac50fSopenharmony_ci if (remote == nullptr) { 524e0dac50fSopenharmony_ci WLOGFE("remote is null"); 525e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 526e0dac50fSopenharmony_ci } 527e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_NOTIFY_DESTROY), 528e0dac50fSopenharmony_ci data, replay, option) != ERR_NONE) { 529e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 530e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 531e0dac50fSopenharmony_ci } 532e0dac50fSopenharmony_ci return WMError::WM_OK; 533e0dac50fSopenharmony_ci} 534e0dac50fSopenharmony_ci 535e0dac50fSopenharmony_ciWMError WindowProxy::NotifyForeground(void) 536e0dac50fSopenharmony_ci{ 537e0dac50fSopenharmony_ci MessageParcel data; 538e0dac50fSopenharmony_ci MessageParcel replay; 539e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 540e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 541e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 542e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 543e0dac50fSopenharmony_ci } 544e0dac50fSopenharmony_ci 545e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 546e0dac50fSopenharmony_ci if (remote == nullptr) { 547e0dac50fSopenharmony_ci WLOGFE("remote is null"); 548e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 549e0dac50fSopenharmony_ci } 550e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_NOTIFY_FOREGROUND), 551e0dac50fSopenharmony_ci data, replay, option) != ERR_NONE) { 552e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 553e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 554e0dac50fSopenharmony_ci } 555e0dac50fSopenharmony_ci return WMError::WM_OK; 556e0dac50fSopenharmony_ci} 557e0dac50fSopenharmony_ci 558e0dac50fSopenharmony_ciWMError WindowProxy::NotifyBackground(void) 559e0dac50fSopenharmony_ci{ 560e0dac50fSopenharmony_ci MessageParcel data; 561e0dac50fSopenharmony_ci MessageParcel replay; 562e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 563e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 564e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 565e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 566e0dac50fSopenharmony_ci } 567e0dac50fSopenharmony_ci 568e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 569e0dac50fSopenharmony_ci if (remote == nullptr) { 570e0dac50fSopenharmony_ci WLOGFE("remote is null"); 571e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 572e0dac50fSopenharmony_ci } 573e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_NOTIFY_BACKGROUND), 574e0dac50fSopenharmony_ci data, replay, option) != ERR_NONE) { 575e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 576e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 577e0dac50fSopenharmony_ci } 578e0dac50fSopenharmony_ci return WMError::WM_OK; 579e0dac50fSopenharmony_ci} 580e0dac50fSopenharmony_ci 581e0dac50fSopenharmony_ciWMError WindowProxy::NotifyWindowClientPointUp(const std::shared_ptr<MMI::PointerEvent>& pointerEvent) 582e0dac50fSopenharmony_ci{ 583e0dac50fSopenharmony_ci if (!pointerEvent) { 584e0dac50fSopenharmony_ci WLOGFE("pointerEvent is nullptr"); 585e0dac50fSopenharmony_ci return WMError::WM_ERROR_NULLPTR; 586e0dac50fSopenharmony_ci } 587e0dac50fSopenharmony_ci MessageParcel data; 588e0dac50fSopenharmony_ci MessageParcel reply; 589e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 590e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 591e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 592e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 593e0dac50fSopenharmony_ci } 594e0dac50fSopenharmony_ci if (!pointerEvent->WriteToParcel(data)) { 595e0dac50fSopenharmony_ci WLOGFE("Failed to write point event"); 596e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 597e0dac50fSopenharmony_ci } 598e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 599e0dac50fSopenharmony_ci if (remote == nullptr) { 600e0dac50fSopenharmony_ci WLOGFE("remote is null"); 601e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 602e0dac50fSopenharmony_ci } 603e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_NOTIFY_CLIENT_POINT_UP), 604e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 605e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 606e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 607e0dac50fSopenharmony_ci } 608e0dac50fSopenharmony_ci return WMError::WM_OK; 609e0dac50fSopenharmony_ci} 610e0dac50fSopenharmony_ci 611e0dac50fSopenharmony_ciWMError WindowProxy::RestoreSplitWindowMode(uint32_t mode) 612e0dac50fSopenharmony_ci{ 613e0dac50fSopenharmony_ci MessageParcel data; 614e0dac50fSopenharmony_ci MessageParcel reply; 615e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 616e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 617e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 618e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 619e0dac50fSopenharmony_ci } 620e0dac50fSopenharmony_ci if (!data.WriteUint32(mode)) { 621e0dac50fSopenharmony_ci WLOGFE("mode failed"); 622e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 623e0dac50fSopenharmony_ci } 624e0dac50fSopenharmony_ci uint32_t requestCode = static_cast<uint32_t>(WindowMessage::TRANS_ID_RESTORE_SPLIT_WINDOW_MODE); 625e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 626e0dac50fSopenharmony_ci if (remote == nullptr) { 627e0dac50fSopenharmony_ci WLOGFE("remote is null"); 628e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 629e0dac50fSopenharmony_ci } 630e0dac50fSopenharmony_ci if (remote->SendRequest(requestCode, data, reply, option) != ERR_NONE) { 631e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 632e0dac50fSopenharmony_ci return WMError::WM_ERROR_IPC_FAILED; 633e0dac50fSopenharmony_ci } 634e0dac50fSopenharmony_ci return WMError::WM_OK; 635e0dac50fSopenharmony_ci} 636e0dac50fSopenharmony_ci 637e0dac50fSopenharmony_civoid WindowProxy::ConsumeKeyEvent(std::shared_ptr<MMI::KeyEvent> event) 638e0dac50fSopenharmony_ci{ 639e0dac50fSopenharmony_ci MessageParcel data; 640e0dac50fSopenharmony_ci MessageParcel reply; 641e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 642e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 643e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 644e0dac50fSopenharmony_ci return; 645e0dac50fSopenharmony_ci } 646e0dac50fSopenharmony_ci if (!event->WriteToParcel(data)) { 647e0dac50fSopenharmony_ci WLOGFE("Write point event failed"); 648e0dac50fSopenharmony_ci return; 649e0dac50fSopenharmony_ci } 650e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 651e0dac50fSopenharmony_ci if (remote == nullptr) { 652e0dac50fSopenharmony_ci WLOGFE("remote is null"); 653e0dac50fSopenharmony_ci return; 654e0dac50fSopenharmony_ci } 655e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_CONSUME_KEY_EVENT), 656e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 657e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 658e0dac50fSopenharmony_ci return; 659e0dac50fSopenharmony_ci } 660e0dac50fSopenharmony_ci} 661e0dac50fSopenharmony_ci 662e0dac50fSopenharmony_civoid WindowProxy::NotifyForegroundInteractiveStatus(bool interactive) 663e0dac50fSopenharmony_ci{ 664e0dac50fSopenharmony_ci MessageParcel data; 665e0dac50fSopenharmony_ci MessageParcel reply; 666e0dac50fSopenharmony_ci MessageOption option(MessageOption::TF_ASYNC); 667e0dac50fSopenharmony_ci if (!data.WriteInterfaceToken(GetDescriptor())) { 668e0dac50fSopenharmony_ci WLOGFE("WriteInterfaceToken failed"); 669e0dac50fSopenharmony_ci return; 670e0dac50fSopenharmony_ci } 671e0dac50fSopenharmony_ci if (!data.WriteBool(interactive)) { 672e0dac50fSopenharmony_ci WLOGFE("Write Focus failed"); 673e0dac50fSopenharmony_ci return; 674e0dac50fSopenharmony_ci } 675e0dac50fSopenharmony_ci 676e0dac50fSopenharmony_ci sptr<IRemoteObject> remote = Remote(); 677e0dac50fSopenharmony_ci if (remote == nullptr) { 678e0dac50fSopenharmony_ci WLOGFE("remote is null"); 679e0dac50fSopenharmony_ci return; 680e0dac50fSopenharmony_ci } 681e0dac50fSopenharmony_ci if (remote->SendRequest(static_cast<uint32_t>(WindowMessage::TRANS_ID_NOTIFY_FOREGROUND_INTERACTIVE_STATUS), 682e0dac50fSopenharmony_ci data, reply, option) != ERR_NONE) { 683e0dac50fSopenharmony_ci WLOGFE("SendRequest failed"); 684e0dac50fSopenharmony_ci } 685e0dac50fSopenharmony_ci} 686e0dac50fSopenharmony_ci 687e0dac50fSopenharmony_ci} // namespace Rosen 688e0dac50fSopenharmony_ci} // namespace OHOS 689e0dac50fSopenharmony_ci 690