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