1 /*
2 * Copyright (c) 2025 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 "form_provider/form_provider_task_mgr.h"
17 #include "form_provider_interface.h"
18 #include "form_mgr/form_mgr_adapter.h"
19 #include "form_provider/form_supply_callback.h"
20 #include "form_provider/form_provider_queue.h"
21 #include "data_center/form_data_mgr.h"
22 #include "common/util/form_report.h"
23 #include "common/util/form_util.h"
24 #include "fms_log_wrapper.h"
25
26 namespace OHOS {
27 namespace AppExecFwk {
FormProviderTaskMgr()28 FormProviderTaskMgr::FormProviderTaskMgr() {}
29
~FormProviderTaskMgr()30 FormProviderTaskMgr::~FormProviderTaskMgr() {}
31
32 /**
33 * @brief Acquire form data from form provider(task).
34 * @param formId The Id of the form.
35 * @param want The want of the request.
36 * @param remoteObject Form provider proxy object.
37 */
PostAcquireTask(const int64_t formId,const Want & want,const sptr<IRemoteObject> & remoteObject)38 void FormProviderTaskMgr::PostAcquireTask(const int64_t formId, const Want &want,
39 const sptr<IRemoteObject> &remoteObject)
40 {
41 HILOG_DEBUG("call");
42
43 auto acquireProviderFormInfoFunc = [formId, want, remoteObject]() {
44 FormProviderTaskMgr::GetInstance().AcquireProviderFormInfo(formId, want, remoteObject);
45 };
46 FormProviderQueue::GetInstance().ScheduleTask(FORM_TASK_DELAY_TIME, acquireProviderFormInfoFunc);
47 }
48
49 /**
50 * @brief Refresh form location data from form provider(task).
51 *
52 * @param formId The Id of the form.
53 * @param want The want of the form.
54 * @param remoteObject Form provider proxy object.
55 * @return none.
56 */
PostRefreshLocationTask(const int64_t formId,const Want & want,const sptr<IRemoteObject> & remoteObject)57 void FormProviderTaskMgr::PostRefreshLocationTask(const int64_t formId, const Want &want,
58 const sptr<IRemoteObject> &remoteObject)
59 {
60 HILOG_DEBUG("Call.");
61 auto notifyFormLocationUpdateFunc = [formId, want, remoteObject]() {
62 FormProviderTaskMgr::GetInstance().NotifyFormLocationUpdate(formId, want, remoteObject);
63 };
64 FormProviderQueue::GetInstance().ScheduleTask(FORM_TASK_DELAY_TIME, notifyFormLocationUpdateFunc);
65 }
66
67 /**
68 * @brief Refresh form data from form provider(task).
69 *
70 * @param formId The Id of the form.
71 * @param want The want of the form.
72 * @param remoteObject Form provider proxy object.
73 * @return none.
74 */
PostRefreshTask(const int64_t formId,const Want & want,const sptr<IRemoteObject> & remoteObject)75 void FormProviderTaskMgr::PostRefreshTask(const int64_t formId, const Want &want,
76 const sptr<IRemoteObject> &remoteObject)
77 {
78 HILOG_INFO("call, formId:%{public}" PRId64, formId);
79
80 auto notifyFormUpdateFunc = [formId, want, remoteObject]() {
81 FormProviderTaskMgr::GetInstance().NotifyFormUpdate(formId, want, remoteObject);
82 };
83 FormProviderQueue::GetInstance().ScheduleTask(FORM_TASK_DELAY_TIME, notifyFormUpdateFunc);
84 }
85
86 /**
87 * @brief Delete form data from form provider(task).
88 * @param formId The Id of the form.
89 * @param want The want of the request.
90 * @param remoteObject Form provider proxy object.
91 */
PostDeleteTask(const int64_t formId,const Want & want,const sptr<IRemoteObject> & remoteObject)92 void FormProviderTaskMgr::PostDeleteTask(const int64_t formId, const Want &want,
93 const sptr<IRemoteObject> &remoteObject)
94 {
95 HILOG_DEBUG("call");
96
97 auto notifyFormDeleteFunc = [formId, want, remoteObject]() {
98 FormProviderTaskMgr::GetInstance().NotifyFormDelete(formId, want, remoteObject);
99 };
100 FormProviderQueue::GetInstance().ScheduleTask(FORM_TASK_DELAY_TIME, notifyFormDeleteFunc);
101 }
102
103 /**
104 * @brief Post provider batch delete.
105 * @param formIds The Id list.
106 * @param want The want of the request.
107 * @param remoteObject Form provider proxy object.
108 */
PostProviderBatchDeleteTask(std::set<int64_t> & formIds,const Want & want,const sptr<IRemoteObject> & remoteObject)109 void FormProviderTaskMgr::PostProviderBatchDeleteTask(std::set<int64_t> &formIds, const Want &want,
110 const sptr<IRemoteObject> &remoteObject)
111 {
112 HILOG_DEBUG("call");
113
114 auto batchDeleteFunc = [formIds, want, remoteObject]() {
115 FormProviderTaskMgr::GetInstance().ProviderBatchDelete(formIds, want, remoteObject);
116 };
117 FormProviderQueue::GetInstance().ScheduleTask(FORM_TASK_DELAY_TIME, batchDeleteFunc);
118 }
119
120 /**
121 * @brief Cast temp form data from form provider(task).
122 *
123 * @param formId The Id of the form.
124 * @param want The want of the form.
125 * @param remoteObject Form provider proxy object.
126 * @return none.
127 */
PostCastTempTask(const int64_t formId,const Want & want,const sptr<IRemoteObject> & remoteObject)128 void FormProviderTaskMgr::PostCastTempTask(const int64_t formId, const Want &want,
129 const sptr<IRemoteObject> &remoteObject)
130 {
131 HILOG_DEBUG("call");
132
133 auto notifyCastTempFunc = [formId, want, remoteObject]() {
134 FormProviderTaskMgr::GetInstance().NotifyCastTemp(formId, want, remoteObject);
135 };
136 FormProviderQueue::GetInstance().ScheduleTask(FORM_TASK_DELAY_TIME, notifyCastTempFunc);
137 }
138
139 /**
140 * @brief Post acquire state to form provider.
141 * @param wantArg The want of onAcquireFormState.
142 * @param provider The provider info.
143 * @param want The want of the request.
144 * @param remoteObject Form provider proxy object.
145 */
PostAcquireStateTask(const Want & wantArg,const std::string & provider,const Want & want,const sptr<IRemoteObject> & remoteObject)146 void FormProviderTaskMgr::PostAcquireStateTask(const Want &wantArg, const std::string &provider, const Want &want,
147 const sptr<IRemoteObject> &remoteObject)
148 {
149 HILOG_DEBUG("call");
150
151 auto acquireStateFunc = [wantArg, provider, want, remoteObject]() {
152 FormProviderTaskMgr::GetInstance().AcquireState(wantArg, provider, want, remoteObject);
153 };
154 FormProviderQueue::GetInstance().ScheduleTask(FORM_TASK_DELAY_TIME, acquireStateFunc);
155 }
156
157 /**
158 * @brief Post acquire data to form provider.
159 * @param formId The Id of the from.
160 * @param want The want of the request.
161 * @param remoteObject Form provider proxy object.
162 */
PostAcquireDataTask(const int64_t formId,const Want & want,const sptr<IRemoteObject> & remoteObject)163 void FormProviderTaskMgr::PostAcquireDataTask(const int64_t formId, const Want &want,
164 const sptr<IRemoteObject> &remoteObject)
165 {
166 HILOG_DEBUG("call");
167
168 auto acquireDataFunc = [formId, want, remoteObject]() {
169 FormProviderTaskMgr::GetInstance().AcquireFormData(formId, want, remoteObject);
170 };
171 FormProviderQueue::GetInstance().ScheduleTask(FORM_TASK_DELAY_TIME, acquireDataFunc);
172 }
173
174 /**
175 * @brief Post message event to form provider.
176 * @param formId The Id of the from.
177 * @param message Event message.
178 * @param want The want of the request.
179 * @param remoteObject Form provider proxy object.
180 */
PostFormEventTask(const int64_t formId,const std::string & message,const Want & want,const sptr<IRemoteObject> & remoteObject)181 void FormProviderTaskMgr::PostFormEventTask(const int64_t formId, const std::string &message,
182 const Want &want, const sptr<IRemoteObject> &remoteObject)
183 {
184 HILOG_DEBUG("call");
185
186 auto formEventFunc = [formId, message, want, remoteObject]() {
187 FormProviderTaskMgr::GetInstance().FireFormEvent(formId, message, want, remoteObject);
188 };
189 FormProviderQueue::GetInstance().ScheduleTask(FORM_TASK_DELAY_TIME, formEventFunc);
190 }
191
192 /**
193 * @brief Post event notify to form provider.
194 * @param formEvent The vector of form ids.
195 * @param formVisibleType The form visible type, including FORM_VISIBLE and FORM_INVISIBLE.
196 * @param want The want of the form.
197 * @param remoteObject The form provider proxy object.
198 */
PostEventNotifyTask(const std::vector<int64_t> & formEvent,const int32_t formVisibleType,const Want & want,const sptr<IRemoteObject> & remoteObject)199 void FormProviderTaskMgr::PostEventNotifyTask(const std::vector<int64_t> &formEvent, const int32_t formVisibleType,
200 const Want &want, const sptr<IRemoteObject> &remoteObject)
201 {
202 HILOG_DEBUG("call");
203
204 auto eventNotifyFunc = [formEvent, formVisibleType, want, remoteObject]() {
205 FormProviderTaskMgr::GetInstance().EventNotify(formEvent, formVisibleType, want, remoteObject);
206 };
207 FormProviderQueue::GetInstance().ScheduleTask(FORM_TASK_DELAY_TIME, eventNotifyFunc);
208 }
209
210 /**
211 * @brief Post size changed to form provider.
212 * @param formId The Id of the form to update.
213 * @param newDimension The dimension value to be updated.
214 * @param newRect The rect value to be updated.
215 * @param want The want of the form.
216 * @param remoteObject Form provider proxy object.
217 * @return none.
218 */
PostSizeChangedTask(const int64_t formId,const int32_t newDimension,const Rect & newRect,const Want & want,const sptr<IRemoteObject> & remoteObject)219 void FormProviderTaskMgr::PostSizeChangedTask(const int64_t formId, const int32_t newDimension,
220 const Rect &newRect, const Want &want, const sptr<IRemoteObject> &remoteObject)
221 {
222 HILOG_INFO("Call.");
223 auto sizeChangedFunc = [formId, newDimension, newRect, want, remoteObject]() {
224 FormProviderTaskMgr::GetInstance().NotifySizeChanged(formId, newDimension, newRect, want, remoteObject);
225 };
226 FormProviderQueue::GetInstance().ScheduleTask(FORM_TASK_DELAY_TIME, sizeChangedFunc);
227 }
228
229 /**
230 * @brief Acquire provider formInfo.
231 * @param formId The Id of the from.
232 * @param want The want of the form.
233 * @param remoteObject Form provider proxy object.
234 * @return none.
235 */
AcquireProviderFormInfo(const int64_t formId,const Want & want,const sptr<IRemoteObject> & remoteObject)236 void FormProviderTaskMgr::AcquireProviderFormInfo(const int64_t formId, const Want &want,
237 const sptr<IRemoteObject> &remoteObject)
238 {
239 HILOG_INFO("call");
240 auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0);
241 sptr<IFormProvider> formProviderProxy = iface_cast<IFormProvider>(remoteObject);
242 if (formProviderProxy == nullptr) {
243 RemoveConnection(connectId);
244 HILOG_ERROR("get formProviderProxy failed");
245 return;
246 }
247 FormRecord formRecord;
248 FormDataMgr::GetInstance().GetFormRecord(formId, formRecord);
249 FormJsInfo formJsInfo;
250 FormDataMgr::GetInstance().CreateFormJsInfo(formId, formRecord, formJsInfo);
251 int error = formProviderProxy->AcquireProviderFormInfo(formJsInfo, want, FormSupplyCallback::GetInstance());
252 if (error != ERR_OK) {
253 RemoveConnection(connectId);
254 HILOG_ERROR("fail acquire providerFormInfo");
255 }
256 FormReport::GetInstance().SetEndGetTime(formId, FormUtil::GetCurrentSteadyClockMillseconds());
257 }
258
259 /**
260 * @brief Notify form provider for updating form.
261 *
262 * @param formId The Id of the from.
263 * @param want The want of the form.
264 * @param remoteObject Form provider proxy object.
265 * @return none.
266 */
NotifyFormUpdate(const int64_t formId,const Want & want,const sptr<IRemoteObject> & remoteObject)267 void FormProviderTaskMgr::NotifyFormUpdate(const int64_t formId, const Want &want,
268 const sptr<IRemoteObject> &remoteObject)
269 {
270 HILOG_INFO("call, formId:%{public}" PRId64, formId);
271
272 auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0);
273 sptr<IFormProvider> formProviderProxy = iface_cast<IFormProvider>(remoteObject);
274 if (formProviderProxy == nullptr) {
275 RemoveConnection(connectId);
276 HILOG_ERROR("get formProviderProxy failed");
277 return;
278 }
279 int error = formProviderProxy->NotifyFormUpdate(formId, want, FormSupplyCallback::GetInstance());
280 if (error != ERR_OK) {
281 RemoveConnection(connectId);
282 HILOG_ERROR("fail notify form update");
283 }
284 }
285
286 /**
287 * @brief Post provider delete.
288 * @param formIds The Id list.
289 * @param want The want of the request.
290 * @param remoteObject Form provider proxy object.
291 */
NotifyFormDelete(const int64_t formId,const Want & want,const sptr<IRemoteObject> & remoteObject)292 void FormProviderTaskMgr::NotifyFormDelete(const int64_t formId, const Want &want,
293 const sptr<IRemoteObject> &remoteObject)
294 {
295 HILOG_INFO("call");
296
297 auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0);
298 sptr<IFormProvider> formProviderProxy = iface_cast<IFormProvider>(remoteObject);
299 if (formProviderProxy == nullptr) {
300 HILOG_ERROR("get formProviderProxy failed");
301 RemoveConnection(connectId);
302 return;
303 }
304 int error = formProviderProxy->NotifyFormDelete(formId, want, FormSupplyCallback::GetInstance());
305 if (error != ERR_OK) {
306 HILOG_ERROR("fail NotifyFormDelete");
307 RemoveConnection(connectId);
308 }
309 }
310
311 /**
312 * @brief Post provider batch delete.
313 * @param formIds The Id list.
314 * @param want The want of the request.
315 * @param remoteObject Form provider proxy object.
316 */
ProviderBatchDelete(std::set<int64_t> formIds,const Want & want,const sptr<IRemoteObject> & remoteObject)317 void FormProviderTaskMgr::ProviderBatchDelete(std::set<int64_t> formIds, const Want &want,
318 const sptr<IRemoteObject> &remoteObject)
319 {
320 HILOG_INFO("call");
321
322 if (formIds.empty()) {
323 HILOG_ERROR("FormIds is empty");
324 return;
325 }
326 auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0);
327 sptr<IFormProvider> formProviderProxy = iface_cast<IFormProvider>(remoteObject);
328 if (formProviderProxy == nullptr) {
329 RemoveConnection(connectId);
330 HILOG_ERROR("Failed to get formProviderProxy");
331 return;
332 }
333 std::vector<int64_t> vFormIds;
334 vFormIds.assign(formIds.begin(), formIds.end());
335 int error = formProviderProxy->NotifyFormsDelete(vFormIds, want, FormSupplyCallback::GetInstance());
336 if (error != ERR_OK) {
337 RemoveConnection(connectId);
338 HILOG_ERROR("fail");
339 }
340 }
341
342 /**
343 * @brief Notify form provider for cast temp form.
344 *
345 * @param formId The Id of the from.
346 * @param want The want of the form.
347 * @param remoteObject Form provider proxy object.
348 * @return none.
349 */
NotifyCastTemp(const int64_t formId,const Want & want,const sptr<IRemoteObject> & remoteObject)350 void FormProviderTaskMgr::NotifyCastTemp(const int64_t formId, const Want &want,
351 const sptr<IRemoteObject> &remoteObject)
352 {
353 HILOG_INFO("call");
354
355 auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0);
356 sptr<IFormProvider> formProviderProxy = iface_cast<IFormProvider>(remoteObject);
357 if (formProviderProxy == nullptr) {
358 RemoveConnection(connectId);
359 HILOG_ERROR("get formProviderProxy failed");
360 return;
361 }
362
363 int error = formProviderProxy->NotifyFormCastTempForm(formId, want, FormSupplyCallback::GetInstance());
364 if (error != ERR_OK) {
365 RemoveConnection(connectId);
366 HILOG_ERROR("acquire providerFormInfo failed");
367 }
368 }
369
370 /**
371 * @brief Acquire form state to form provider.
372 * @param wantArg The want of onAcquireFormState.
373 * @param provider The provider info.
374 * @param want The want of the request.
375 * @param remoteObject Form provider proxy object.
376 */
AcquireState(const Want & wantArg,const std::string & provider,const Want & want,const sptr<IRemoteObject> & remoteObject)377 void FormProviderTaskMgr::AcquireState(const Want &wantArg, const std::string &provider, const Want &want,
378 const sptr<IRemoteObject> &remoteObject)
379 {
380 HILOG_INFO("start");
381
382 auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0);
383 sptr<IFormProvider> formProviderProxy = iface_cast<IFormProvider>(remoteObject);
384 if (formProviderProxy == nullptr) {
385 RemoveConnection(connectId);
386 HILOG_ERROR("get formProviderProxy failed");
387 return;
388 }
389
390 int error = formProviderProxy->AcquireState(wantArg, provider, want, FormSupplyCallback::GetInstance());
391 if (error != ERR_OK) {
392 RemoveConnection(connectId);
393 HILOG_ERROR("acquire formState failed");
394 }
395 HILOG_INFO("end");
396 }
397
398 /**
399 * @brief Acquire form data to form provider.
400 * @param formId The Id of the form.
401 * @param want The want of the request.
402 * @param remoteObject Form provider proxy object.
403 */
AcquireFormData(const int64_t formId,const Want & want,const sptr<IRemoteObject> & remoteObject)404 void FormProviderTaskMgr::AcquireFormData(const int64_t formId, const Want &want,
405 const sptr<IRemoteObject> &remoteObject)
406 {
407 HILOG_INFO("start");
408
409 auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0);
410 int64_t requestCode = static_cast<int64_t>(want.GetLongParam(Constants::FORM_ACQUIRE_DATA_REQUEST_CODE, 0));
411 sptr<IFormProvider> formProviderProxy = iface_cast<IFormProvider>(remoteObject);
412 if (formProviderProxy == nullptr) {
413 RemoveConnection(connectId);
414 HILOG_ERROR("null formProviderProxy");
415 return;
416 }
417
418 int error = formProviderProxy->AcquireFormData(formId, FormSupplyCallback::GetInstance(), requestCode);
419 if (error != ERR_OK) {
420 RemoveConnection(connectId);
421 HILOG_ERROR("fail acquire formStateToFormProvider");
422 }
423 RemoveConnection(connectId);
424 HILOG_INFO("end");
425 }
426
427 /**
428 * @brief Fire message event to form provider.
429 * @param formId The Id of the from.
430 * @param message Event message.
431 * @param want The want of the request.
432 * @param remoteObject Form provider proxy object.
433 */
FireFormEvent(const int64_t formId,const std::string & message,const Want & want,const sptr<IRemoteObject> & remoteObject)434 void FormProviderTaskMgr::FireFormEvent(const int64_t formId, const std::string &message, const Want &want,
435 const sptr<IRemoteObject> &remoteObject)
436 {
437 HILOG_INFO("start");
438
439 auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0);
440 sptr<IFormProvider> formProviderProxy = iface_cast<IFormProvider>(remoteObject);
441 if (formProviderProxy == nullptr) {
442 RemoveConnection(connectId);
443 HILOG_ERROR("get formProviderProxy failed");
444 return;
445 }
446
447 int error = formProviderProxy->FireFormEvent(formId, message, want, FormSupplyCallback::GetInstance());
448 if (error != ERR_OK) {
449 RemoveConnection(connectId);
450 HILOG_ERROR("fire messageEvent to formProvider failed");
451 }
452 }
453
454 /**
455 * @brief Event notify to form provider.
456 * @param formEvents The vector of form ids.
457 * @param formVisibleType The form visible type, including FORM_VISIBLE and FORM_INVISIBLE.
458 * @param want The want of the form.
459 * @param remoteObject The form provider proxy object.
460 */
EventNotify(const std::vector<int64_t> & formEvents,const int32_t formVisibleType,const Want & want,const sptr<IRemoteObject> & remoteObject)461 void FormProviderTaskMgr::EventNotify(const std::vector<int64_t> &formEvents, const int32_t formVisibleType,
462 const Want &want, const sptr<IRemoteObject> &remoteObject)
463 {
464 HILOG_INFO("call");
465
466 auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0);
467 sptr<IFormProvider> formProviderProxy = iface_cast<IFormProvider>(remoteObject);
468 if (formProviderProxy == nullptr) {
469 RemoveConnection(connectId);
470 HILOG_ERROR("get formProviderProxy failed");
471 return;
472 }
473
474 int error = formProviderProxy->EventNotify(formEvents, formVisibleType, want, FormSupplyCallback::GetInstance());
475 if (error != ERR_OK) {
476 RemoveConnection(connectId);
477 HILOG_ERROR("fail send event notify");
478 }
479 }
480
RemoveConnection(int32_t connectId)481 void FormProviderTaskMgr::RemoveConnection(int32_t connectId)
482 {
483 auto formSupplyCallback = FormSupplyCallback::GetInstance();
484 if (formSupplyCallback == nullptr) {
485 HILOG_ERROR("formSupplyCallback is nullptr.");
486 return;
487 }
488 formSupplyCallback->RemoveConnection(connectId);
489 }
490
NotifyConfigurationUpdate(const AppExecFwk::Configuration & configuration,const Want & want,const sptr<IRemoteObject> & remoteObject)491 void FormProviderTaskMgr::NotifyConfigurationUpdate(const AppExecFwk::Configuration& configuration,
492 const Want &want, const sptr<IRemoteObject> &remoteObject)
493 {
494 HILOG_INFO("call");
495
496 auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0);
497 sptr<IFormProvider> formProviderProxy = iface_cast<IFormProvider>(remoteObject);
498 if (formProviderProxy == nullptr) {
499 RemoveConnection(connectId);
500 HILOG_ERROR("get formProviderProxy failed");
501 return;
502 }
503
504 int error = formProviderProxy->NotifyConfigurationUpdate(configuration, want, FormSupplyCallback::GetInstance());
505 if (error != ERR_OK) {
506 RemoveConnection(connectId);
507 HILOG_ERROR("acquire providerFormInfo failed");
508 }
509 }
510
PostBatchConfigurationUpdateForms(const AppExecFwk::Configuration & configuration)511 void FormProviderTaskMgr::PostBatchConfigurationUpdateForms(const AppExecFwk::Configuration& configuration)
512 {
513 HILOG_INFO("Call.");
514 auto batchConfigurationUpdate = [configuration]() {
515 return FormMgrAdapter::GetInstance().BatchNotifyFormsConfigurationUpdate(configuration);
516 };
517 HILOG_INFO("end");
518 }
519
NotifyFormLocationUpdate(const int64_t formId,const Want & want,const sptr<IRemoteObject> & remoteObject)520 void FormProviderTaskMgr::NotifyFormLocationUpdate(const int64_t formId, const Want &want,
521 const sptr<IRemoteObject> &remoteObject)
522 {
523 HILOG_INFO("call");
524 auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0);
525 sptr<IFormProvider> formProviderProxy = iface_cast<IFormProvider>(remoteObject);
526 if (formProviderProxy == nullptr) {
527 RemoveConnection(connectId);
528 HILOG_ERROR("get formProviderProxy failed");
529 return;
530 }
531 int error = formProviderProxy->NotifyFormLocationUpdate(formId, want, FormSupplyCallback::GetInstance());
532 if (error != ERR_OK) {
533 RemoveConnection(connectId);
534 HILOG_ERROR("fail notify form update");
535 }
536 }
537
NotifySizeChanged(const int64_t formId,const int32_t newDimension,const Rect & newRect,const Want & want,const sptr<IRemoteObject> & remoteObject)538 void FormProviderTaskMgr::NotifySizeChanged(const int64_t formId, const int32_t newDimension,
539 const Rect &newRect, const Want &want, const sptr<IRemoteObject> &remoteObject)
540 {
541 HILOG_INFO("call");
542 auto connectId = want.GetIntParam(Constants::FORM_CONNECT_ID, 0);
543 sptr<IFormProvider> formProviderProxy = iface_cast<IFormProvider>(remoteObject);
544 if (formProviderProxy == nullptr) {
545 RemoveConnection(connectId);
546 HILOG_ERROR("get formProviderProxy failed");
547 return;
548 }
549 int error = formProviderProxy->NotifySizeChanged(formId, newDimension, newRect,
550 want, FormSupplyCallback::GetInstance());
551 if (error != ERR_OK) {
552 RemoveConnection(connectId);
553 HILOG_ERROR("fail notify form update");
554 }
555 }
556 } // namespace AppExecFwk
557 } // namespace OHOS