1 /*
2  * Copyright (c) 2024 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 #ifndef OHOS_ABILITY_RUNTIME_CJ_ABILITY_CONTEXT_BROKER_H
17 #define OHOS_ABILITY_RUNTIME_CJ_ABILITY_CONTEXT_BROKER_H
18 
19 #include "ability_context_impl.h"
20 #include "cj_common_ffi.h"
21 #include "cj_want_ffi.h"
22 
23 extern "C" {
24 struct CJStartOptions {
25     int32_t windowMode;
26     int32_t displayId;
27 };
28 
29 using VectorStringHandle = void*;
30 
31 struct AbilityContextBroker {
32     bool (*isAbilityContextExisted)(int64_t id);
33     int64_t (*getSizeOfStartOptions)();
34 
35     int64_t (*getAbilityInfo)(int64_t id);
36     int64_t (*getHapModuleInfo)(int64_t id);
37     int64_t (*getConfiguration)(int64_t id);
38 
39     int32_t (*startAbility)(int64_t id, WantHandle wantHandle);
40     int32_t (*startAbilityWithOption)(int64_t id, WantHandle wantHandle, CJStartOptions* startOption);
41     int32_t (*startAbilityWithAccount)(int64_t id, WantHandle wantHandle, int32_t accountId);
42     int32_t (*startAbilityWithAccountAndOption)(
43         int64_t id, WantHandle wantHandle, int32_t accountId, CJStartOptions* startOption);
44     int32_t (*startServiceExtensionAbility)(int64_t id, WantHandle want);
45     int32_t (*startServiceExtensionAbilityWithAccount)(int64_t id, WantHandle want, int32_t accountId);
46     int32_t (*stopServiceExtensionAbility)(int64_t id, WantHandle want);
47     int32_t (*stopServiceExtensionAbilityWithAccount)(int64_t id, WantHandle want, int32_t accountId);
48 
49     int32_t (*terminateSelf)(int64_t id);
50     int32_t (*terminateSelfWithResult)(int64_t id, WantHandle want, int32_t resultCode);
51     RetDataBool (*isTerminating)(int64_t id);
52 
53     int32_t (*connectAbility)(int64_t id, WantHandle want, int64_t connection);
54     int32_t (*connectAbilityWithAccount)(int64_t id, WantHandle want, int32_t accountId, int64_t connection);
55     int32_t (*disconnectAbility)(int64_t id, WantHandle want, int64_t connection);
56     int32_t (*startAbilityForResult)(int64_t id, WantHandle want, int32_t requestCode, int64_t lambdaId);
57     int32_t (*startAbilityForResultWithOption)(
58         int64_t id, WantHandle want, CJStartOptions* startOption, int32_t requestCode, int64_t lambdaId);
59     int32_t (*startAbilityForResultWithAccount)(
60         int64_t id, WantHandle want, int32_t accountId, int32_t requestCode, int64_t lambdaId);
61     int32_t (*startAbilityForResultWithAccountAndOption)(int64_t id, WantHandle want, int32_t accountId,
62         CJStartOptions* startOption, int32_t requestCode, int64_t lambdaId);
63     int32_t (*requestPermissionsFromUser)(
64         int64_t id, VectorStringHandle permissions, int32_t requestCode, int64_t lambdaId);
65 
66     int32_t (*setMissionLabel)(int64_t id, const char* label);
67     int32_t (*setMissionIcon)(int64_t id, int64_t pixelMapId);
68 };
69 }
70 
71 #endif // OHOS_ABILITY_RUNTIME_CJ_ABILITY_CONTEXT_BROKER_H