• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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