• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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 "adapter/ohos/entrance/pa_engine/pa_backend.h"
17 
18 #include "napi_remote_object.h"
19 
20 #include "adapter/ohos/entrance/pa_engine/engine/common/js_backend_engine_loader.h"
21 #include "base/log/dump_log.h"
22 #include "base/log/event_report.h"
23 #include "base/utils/utils.h"
24 
25 namespace OHOS::Ace {
26 
Create()27 RefPtr<Backend> Backend::Create()
28 {
29     return AceType::MakeRefPtr<PaBackend>();
30 }
31 
~PaBackend()32 PaBackend::~PaBackend() noexcept
33 {
34     // To guarantee the jsBackendEngine_ and delegate_ released in js thread
35     auto jsTaskExecutor = delegate_->GetAnimationJsTask();
36     RefPtr<JsBackendEngine> jsBackendEngine;
37     jsBackendEngine.Swap(jsBackendEngine_);
38     RefPtr<BackendDelegateImpl> delegate;
39     delegate.Swap(delegate_);
40     jsTaskExecutor.PostTask([jsBackendEngine, delegate] {});
41 }
42 
Initialize(BackendType type,const RefPtr<TaskExecutor> & taskExecutor)43 bool PaBackend::Initialize(BackendType type, const RefPtr<TaskExecutor>& taskExecutor)
44 {
45     LOGI("PaBackend initialize begin.");
46     type_ = type;
47     InitializeBackendDelegate(taskExecutor);
48 
49     taskExecutor->PostTask(
50         [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_), delegate = delegate_] {
51             auto jsBackendEngine = weakEngine.Upgrade();
52             CHECK_NULL_VOID_NOLOG(jsBackendEngine);
53             jsBackendEngine->Initialize(delegate);
54         },
55         TaskExecutor::TaskType::JS);
56 
57     LOGI("PaBackend initialize end.");
58     return true;
59 }
60 
LoadEngine(const char * libName,int32_t instanceId)61 void PaBackend::LoadEngine(const char* libName, int32_t instanceId)
62 {
63     auto& loader = JsBackendEngineLoader::Get(libName);
64     SetJsEngine(loader.CreateJsBackendEngine(instanceId));
65 }
66 
InitializeBackendDelegate(const RefPtr<TaskExecutor> & taskExecutor)67 void PaBackend::InitializeBackendDelegate(const RefPtr<TaskExecutor>& taskExecutor)
68 {
69     // builder callback
70     BackendDelegateImplBuilder builder;
71     builder.loadCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
72                                const std::string& url, const OHOS::AAFwk::Want& want) {
73         auto jsBackendEngine = weakEngine.Upgrade();
74         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
75         jsBackendEngine->LoadJs(url, want);
76     };
77 
78     builder.transferCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
79                                    const RefPtr<JsMessageDispatcher>& dispatcher) {
80         auto jsBackendEngine = weakEngine.Upgrade();
81         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
82         jsBackendEngine->SetJsMessageDispatcher(dispatcher);
83     };
84 
85     builder.asyncEventCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
86                                      const std::string& eventId, const std::string& param) {
87         auto jsBackendEngine = weakEngine.Upgrade();
88         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
89         jsBackendEngine->FireAsyncEvent(eventId, param);
90     };
91 
92     builder.syncEventCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
93                                     const std::string& eventId, const std::string& param) {
94         auto jsBackendEngine = weakEngine.Upgrade();
95         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
96         jsBackendEngine->FireSyncEvent(eventId, param);
97     };
98 
99     builder.insertCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](const Uri& uri,
100                                  const OHOS::NativeRdb::ValuesBucket& value,
101                                  const CallingInfo& callingInfo) -> int32_t {
102         auto jsBackendEngine = weakEngine.Upgrade();
103         CHECK_NULL_RETURN_NOLOG(jsBackendEngine, 0);
104         return jsBackendEngine->Insert(uri, value, callingInfo);
105     };
106 
107     builder.callCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](const std::string& method,
108                                const std::string& arg, const AppExecFwk::PacMap& pacMap,
109                                const CallingInfo& callingInfo) -> std::shared_ptr<AppExecFwk::PacMap> {
110         auto jsBackendEngine = weakEngine.Upgrade();
111         CHECK_NULL_RETURN_NOLOG(jsBackendEngine, nullptr);
112         return jsBackendEngine->Call(method, arg, pacMap, callingInfo);
113     };
114 
115     builder.queryCallback =
116         [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](const Uri& uri,
117             const std::vector<std::string>& columns, const OHOS::NativeRdb::DataAbilityPredicates& predicates,
118             const CallingInfo& callingInfo) -> std::shared_ptr<OHOS::NativeRdb::AbsSharedResultSet> {
119         auto jsBackendEngine = weakEngine.Upgrade();
120         CHECK_NULL_RETURN_NOLOG(jsBackendEngine, nullptr);
121         return jsBackendEngine->Query(uri, columns, predicates, callingInfo);
122     };
123 
124     builder.updateCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](const Uri& uri,
125                                  const OHOS::NativeRdb::ValuesBucket& value,
126                                  const OHOS::NativeRdb::DataAbilityPredicates& predicates,
127                                  const CallingInfo& callingInfo) -> int32_t {
128         auto jsBackendEngine = weakEngine.Upgrade();
129         CHECK_NULL_RETURN_NOLOG(jsBackendEngine, 0);
130         return jsBackendEngine->Update(uri, value, predicates, callingInfo);
131     };
132 
133     builder.deleteCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](const Uri& uri,
134                                  const OHOS::NativeRdb::DataAbilityPredicates& predicates,
135                                  const CallingInfo& callingInfo) -> int32_t {
136         auto jsBackendEngine = weakEngine.Upgrade();
137         CHECK_NULL_RETURN_NOLOG(jsBackendEngine, 0);
138         return jsBackendEngine->Delete(uri, predicates, callingInfo);
139     };
140 
141     builder.batchInsertCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](const Uri& uri,
142                                       const std::vector<OHOS::NativeRdb::ValuesBucket>& values,
143                                       const CallingInfo& callingInfo) -> int32_t {
144         auto jsBackendEngine = weakEngine.Upgrade();
145         CHECK_NULL_RETURN_NOLOG(jsBackendEngine, 0);
146         return jsBackendEngine->BatchInsert(uri, values, callingInfo);
147     };
148 
149     builder.getTypeCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
150                                   const Uri& uri, const CallingInfo& callingInfo) -> std::string {
151         auto jsBackendEngine = weakEngine.Upgrade();
152         CHECK_NULL_RETURN_NOLOG(jsBackendEngine, std::string());
153         return jsBackendEngine->GetType(uri, callingInfo);
154     };
155 
156     builder.getFileTypesCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](const Uri& uri,
157                                        const std::string& mimeTypeFilter,
158                                        const CallingInfo& callingInfo) -> std::vector<std::string> {
159         auto jsBackendEngine = weakEngine.Upgrade();
160         CHECK_NULL_RETURN_NOLOG(jsBackendEngine, std::vector<std::string>());
161         return jsBackendEngine->GetFileTypes(uri, mimeTypeFilter, callingInfo);
162     };
163 
164     builder.openFileCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
165                                    const Uri& uri, const std::string& mode, const CallingInfo& callingInfo) -> int32_t {
166         auto jsBackendEngine = weakEngine.Upgrade();
167         CHECK_NULL_RETURN_NOLOG(jsBackendEngine, 0);
168         return jsBackendEngine->OpenFile(uri, mode, callingInfo);
169     };
170 
171     builder.openRawFileCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](const Uri& uri,
172                                       const std::string& mode, const CallingInfo& callingInfo) -> int32_t {
173         auto jsBackendEngine = weakEngine.Upgrade();
174         CHECK_NULL_RETURN_NOLOG(jsBackendEngine, 0);
175         return jsBackendEngine->OpenRawFile(uri, mode, callingInfo);
176     };
177 
178     builder.normalizeUriCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
179                                        const Uri& uri, const CallingInfo& callingInfo) -> Uri {
180         auto jsBackendEngine = weakEngine.Upgrade();
181         CHECK_NULL_RETURN_NOLOG(jsBackendEngine, Uri(""));
182         return jsBackendEngine->NormalizeUri(uri, callingInfo);
183     };
184 
185     builder.denormalizeUriCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
186                                          const Uri& uri, const CallingInfo& callingInfo) -> Uri {
187         auto jsBackendEngine = weakEngine.Upgrade();
188         CHECK_NULL_RETURN_NOLOG(jsBackendEngine, Uri(""));
189         return jsBackendEngine->DenormalizeUri(uri, callingInfo);
190     };
191 
192     builder.destroyApplicationCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
193                                              const std::string& packageName) {
194         auto jsBackendEngine = weakEngine.Upgrade();
195         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
196         jsBackendEngine->DestroyApplication(packageName);
197     };
198 
199     builder.connectCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
200                                   const OHOS::AAFwk::Want& want) -> sptr<IRemoteObject> {
201         auto jsBackendEngine = weakEngine.Upgrade();
202         CHECK_NULL_RETURN_NOLOG(jsBackendEngine, nullptr);
203         return jsBackendEngine->OnConnectService(want);
204     };
205 
206     builder.disConnectCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
207                                      const OHOS::AAFwk::Want& want) {
208         auto jsBackendEngine = weakEngine.Upgrade();
209         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
210         jsBackendEngine->OnDisconnectService(want);
211     };
212 
213     builder.commandCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
214                                   const OHOS::AAFwk::Want& want, int startId) {
215         auto jsBackendEngine = weakEngine.Upgrade();
216         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
217         jsBackendEngine->OnCommand(want, startId);
218     };
219 
220     builder.createFormCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
221                                      const OHOS::AAFwk::Want& want) {
222         auto jsBackendEngine = weakEngine.Upgrade();
223         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
224         jsBackendEngine->OnCreate(want);
225     };
226 
227     builder.deleteFormCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](const int64_t formId) {
228         auto jsBackendEngine = weakEngine.Upgrade();
229         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
230         jsBackendEngine->OnDelete(formId);
231     };
232 
233     builder.triggerEventCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
234                                        const int64_t formId, const std::string& message) {
235         auto jsBackendEngine = weakEngine.Upgrade();
236         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
237         jsBackendEngine->OnTriggerEvent(formId, message);
238     };
239 
240     builder.updateFormCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](const int64_t formId) {
241         auto jsBackendEngine = weakEngine.Upgrade();
242         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
243         jsBackendEngine->OnUpdate(formId);
244     };
245 
246     builder.castTemptoNormalCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](const int64_t formId) {
247         auto jsBackendEngine = weakEngine.Upgrade();
248         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
249         jsBackendEngine->OnCastTemptoNormal(formId);
250     };
251 
252     builder.visibilityChangedCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
253                                             const std::map<int64_t, int32_t>& formEventsMap) {
254         auto jsBackendEngine = weakEngine.Upgrade();
255         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
256         jsBackendEngine->OnVisibilityChanged(formEventsMap);
257     };
258 
259     builder.acquireStateCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
260                                        const OHOS::AAFwk::Want& want) -> int32_t {
261         auto jsBackendEngine = weakEngine.Upgrade();
262         CHECK_NULL_RETURN_NOLOG(jsBackendEngine, -1);
263         return jsBackendEngine->OnAcquireFormState(want);
264     };
265 
266     builder.commandApplicationCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
267                                              const std::string& intent, int startId) {
268         auto jsBackendEngine = weakEngine.Upgrade();
269         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
270         jsBackendEngine->OnCommandApplication(intent, startId);
271     };
272 
273     builder.commandCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
274                                   const OHOS::AAFwk::Want& want, int startId) {
275         auto jsBackendEngine = weakEngine.Upgrade();
276         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
277         jsBackendEngine->OnCommand(want, startId);
278     };
279 
280     builder.shareFormCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](
281                                     int64_t formId, OHOS::AAFwk::WantParams& wantParams) {
282         auto jsBackendEngine = weakEngine.Upgrade();
283         CHECK_NULL_RETURN_NOLOG(jsBackendEngine, false);
284         return jsBackendEngine->OnShare(formId, wantParams);
285     };
286 
287     builder.dumpHeapSnapshotCallback = [weakEngine = WeakPtr<JsBackendEngine>(jsBackendEngine_)](bool isPrivate) {
288         auto jsBackendEngine = weakEngine.Upgrade();
289         CHECK_NULL_VOID_NOLOG(jsBackendEngine);
290         jsBackendEngine->DumpHeapSnapshot(isPrivate);
291     };
292 
293     builder.taskExecutor = taskExecutor;
294     builder.type = type_;
295 
296     delegate_ = AceType::MakeRefPtr<BackendDelegateImpl>(builder);
297 
298     CHECK_NULL_VOID(jsBackendEngine_);
299     delegate_->SetGroupJsBridge(jsBackendEngine_->GetGroupJsBridge());
300 }
301 
UpdateState(Backend::State state)302 void PaBackend::UpdateState(Backend::State state)
303 {
304     LOGI("UpdateState");
305     switch (state) {
306         case Backend::State::ON_CREATE:
307             break;
308         case Backend::State::ON_DESTROY:
309             delegate_->OnApplicationDestroy("pa");
310             break;
311         default:
312             LOGE("error State: %d", state);
313     }
314 }
315 
OnCommand(const std::string & intent,int startId)316 void PaBackend::OnCommand(const std::string& intent, int startId)
317 {
318     delegate_->OnApplicationCommand(intent, startId);
319 }
320 
OnCommand(const OHOS::AAFwk::Want & want,int startId)321 void PaBackend::OnCommand(const OHOS::AAFwk::Want& want, int startId)
322 {
323     delegate_->OnCommand(want, startId);
324 }
325 
RunPa(const std::string & url)326 void PaBackend::RunPa(const std::string& url) {}
327 
TransferJsResponseData(int callbackId,int32_t code,std::vector<uint8_t> && data) const328 void PaBackend::TransferJsResponseData(int callbackId, int32_t code, std::vector<uint8_t>&& data) const
329 {
330     delegate_->TransferJsResponseData(callbackId, code, std::move(data));
331 }
332 
TransferJsPluginGetError(int callbackId,int32_t errorCode,std::string && errorMessage) const333 void PaBackend::TransferJsPluginGetError(int callbackId, int32_t errorCode, std::string&& errorMessage) const
334 {
335     delegate_->TransferJsPluginGetError(callbackId, errorCode, std::move(errorMessage));
336 }
337 
TransferJsEventData(int32_t callbackId,int32_t code,std::vector<uint8_t> && data) const338 void PaBackend::TransferJsEventData(int32_t callbackId, int32_t code, std::vector<uint8_t>&& data) const
339 {
340     delegate_->TransferJsEventData(callbackId, code, std::move(data));
341 }
342 
LoadPluginJsCode(std::string && jsCode) const343 void PaBackend::LoadPluginJsCode(std::string&& jsCode) const
344 {
345     delegate_->LoadPluginJsCode(std::move(jsCode));
346 }
347 
LoadPluginJsByteCode(std::vector<uint8_t> && jsCode,std::vector<int32_t> && jsCodeLen) const348 void PaBackend::LoadPluginJsByteCode(std::vector<uint8_t>&& jsCode, std::vector<int32_t>&& jsCodeLen) const
349 {
350     delegate_->LoadPluginJsByteCode(std::move(jsCode), std::move(jsCodeLen));
351 }
352 
SetJsMessageDispatcher(const RefPtr<JsMessageDispatcher> & dispatcher) const353 void PaBackend::SetJsMessageDispatcher(const RefPtr<JsMessageDispatcher>& dispatcher) const
354 {
355     delegate_->SetJsMessageDispatcher(dispatcher);
356 }
357 
SetAssetManager(const RefPtr<AssetManager> & assetManager)358 void PaBackend::SetAssetManager(const RefPtr<AssetManager>& assetManager)
359 {
360     delegate_->SetAssetManager(assetManager);
361 }
362 
MethodChannel(const std::string & methodName,std::string & jsonStr)363 void PaBackend::MethodChannel(const std::string& methodName, std::string& jsonStr)
364 {
365     delegate_->MethodChannel(methodName, jsonStr);
366 }
367 
Insert(const Uri & uri,const OHOS::NativeRdb::ValuesBucket & value)368 int32_t PaBackend::Insert(const Uri& uri, const OHOS::NativeRdb::ValuesBucket& value)
369 {
370     return delegate_->Insert(uri, value);
371 }
372 
Call(const Uri & uri,const std::string & method,const std::string & arg,const AppExecFwk::PacMap & pacMap)373 std::shared_ptr<AppExecFwk::PacMap> PaBackend::Call(
374     const Uri& uri, const std::string& method, const std::string& arg, const AppExecFwk::PacMap& pacMap)
375 {
376     return delegate_->Call(uri, method, arg, pacMap);
377 }
378 
Query(const Uri & uri,const std::vector<std::string> & columns,const OHOS::NativeRdb::DataAbilityPredicates & predicates)379 std::shared_ptr<OHOS::NativeRdb::AbsSharedResultSet> PaBackend::Query(
380     const Uri& uri, const std::vector<std::string>& columns, const OHOS::NativeRdb::DataAbilityPredicates& predicates)
381 {
382     return delegate_->Query(uri, columns, predicates);
383 }
384 
Update(const Uri & uri,const OHOS::NativeRdb::ValuesBucket & value,const OHOS::NativeRdb::DataAbilityPredicates & predicates)385 int32_t PaBackend::Update(const Uri& uri, const OHOS::NativeRdb::ValuesBucket& value,
386     const OHOS::NativeRdb::DataAbilityPredicates& predicates)
387 {
388     return delegate_->Update(uri, value, predicates);
389 }
390 
Delete(const Uri & uri,const OHOS::NativeRdb::DataAbilityPredicates & predicates)391 int32_t PaBackend::Delete(const Uri& uri, const OHOS::NativeRdb::DataAbilityPredicates& predicates)
392 {
393     return delegate_->Delete(uri, predicates);
394 }
395 
BatchInsert(const Uri & uri,const std::vector<OHOS::NativeRdb::ValuesBucket> & values)396 int32_t PaBackend::BatchInsert(const Uri& uri, const std::vector<OHOS::NativeRdb::ValuesBucket>& values)
397 {
398     return delegate_->BatchInsert(uri, values);
399 }
400 
GetType(const Uri & uri)401 std::string PaBackend::GetType(const Uri& uri)
402 {
403     return delegate_->GetType(uri);
404 }
405 
GetFileTypes(const Uri & uri,const std::string & mimeTypeFilter)406 std::vector<std::string> PaBackend::GetFileTypes(const Uri& uri, const std::string& mimeTypeFilter)
407 {
408     return delegate_->GetFileTypes(uri, mimeTypeFilter);
409 }
410 
OpenFile(const Uri & uri,const std::string & mode)411 int32_t PaBackend::OpenFile(const Uri& uri, const std::string& mode)
412 {
413     return delegate_->OpenFile(uri, mode);
414 }
415 
OpenRawFile(const Uri & uri,const std::string & mode)416 int32_t PaBackend::OpenRawFile(const Uri& uri, const std::string& mode)
417 {
418     return delegate_->OpenRawFile(uri, mode);
419 }
420 
NormalizeUri(const Uri & uri)421 Uri PaBackend::NormalizeUri(const Uri& uri)
422 {
423     return delegate_->NormalizeUri(uri);
424 }
425 
DenormalizeUri(const Uri & uri)426 Uri PaBackend::DenormalizeUri(const Uri& uri)
427 {
428     return delegate_->DenormalizeUri(uri);
429 }
430 
RunPa(const std::string & url,const OHOS::AAFwk::Want & want)431 void PaBackend::RunPa(const std::string& url, const OHOS::AAFwk::Want& want)
432 {
433     delegate_->RunPa(url, want);
434 }
435 
OnCreate(const OHOS::AAFwk::Want & want)436 void PaBackend::OnCreate(const OHOS::AAFwk::Want& want)
437 {
438     delegate_->OnCreate(want);
439 }
440 
OnDelete(const int64_t formId)441 void PaBackend::OnDelete(const int64_t formId)
442 {
443     delegate_->OnDelete(formId);
444 }
445 
OnTriggerEvent(const int64_t formId,const std::string & message)446 void PaBackend::OnTriggerEvent(const int64_t formId, const std::string& message)
447 {
448     delegate_->OnTriggerEvent(formId, message);
449 }
450 
OnUpdate(const int64_t formId)451 void PaBackend::OnUpdate(const int64_t formId)
452 {
453     delegate_->OnUpdate(formId);
454 }
455 
OnCastTemptoNormal(const int64_t formId)456 void PaBackend::OnCastTemptoNormal(const int64_t formId)
457 {
458     delegate_->OnCastTemptoNormal(formId);
459 }
460 
OnVisibilityChanged(const std::map<int64_t,int32_t> & formEventsMap)461 void PaBackend::OnVisibilityChanged(const std::map<int64_t, int32_t>& formEventsMap)
462 {
463     delegate_->OnVisibilityChanged(formEventsMap);
464 }
465 
OnAcquireFormState(const OHOS::AAFwk::Want & want)466 int32_t PaBackend::OnAcquireFormState(const OHOS::AAFwk::Want& want)
467 {
468     return delegate_->OnAcquireFormState(want);
469 }
470 
OnConnect(const OHOS::AAFwk::Want & want)471 sptr<IRemoteObject> PaBackend::OnConnect(const OHOS::AAFwk::Want& want)
472 {
473     return delegate_->OnConnect(want);
474 }
475 
OnDisConnect(const OHOS::AAFwk::Want & want)476 void PaBackend::OnDisConnect(const OHOS::AAFwk::Want& want)
477 {
478     delegate_->OnDisConnect(want);
479 }
480 
OnShare(int64_t formId,OHOS::AAFwk::WantParams & wantParams)481 bool PaBackend::OnShare(int64_t formId, OHOS::AAFwk::WantParams& wantParams)
482 {
483     return delegate_->OnShare(formId, wantParams);
484 }
485 
DumpHeapSnapshot(bool isPrivate)486 void PaBackend::DumpHeapSnapshot(bool isPrivate)
487 {
488     delegate_->DumpHeapSnapshot(isPrivate);
489 }
490 } // namespace OHOS::Ace
491