1/* 2 * Copyright (c) 2021-2023 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 16let Context = requireNapi('application.Context'); 17let Caller = requireNapi('application.Caller'); 18 19const ERROR_CODE_INVALID_PARAM = 401; 20const ERROR_MSG_INVALID_PARAM = 'Invalid input parameter.'; 21class ParamError extends Error { 22 constructor(msg) { 23 super(msg); 24 this.code = ERROR_CODE_INVALID_PARAM; 25 } 26} 27 28class AbilityContext extends Context { 29 constructor(obj) { 30 super(obj); 31 this.abilityInfo = obj.abilityInfo; 32 this.currentHapModuleInfo = obj.currentHapModuleInfo; 33 this.config = obj.config; 34 this.windowStage = obj.windowStage; 35 } 36 37 onUpdateConfiguration(config) { 38 this.config = config; 39 } 40 41 startAbility(want, options, callback) { 42 return this.__context_impl__.startAbility(want, options, callback); 43 } 44 45 openLink(link, options, callback) { 46 return this.__context_impl__.openLink(link, options, callback); 47 } 48 49 startAbilityAsCaller(want, options, callback) { 50 return this.__context_impl__.startAbilityAsCaller(want, options, callback); 51 } 52 53 startRecentAbility(want, options, callback) { 54 return this.__context_impl__.startRecentAbility(want, options, callback); 55 } 56 57 startAbilityWithAccount(want, accountId, options, callback) { 58 return this.__context_impl__.startAbilityWithAccount(want, accountId, options, callback); 59 } 60 61 startAbilityByCall(want) { 62 return new Promise(async (resolve, reject) => { 63 if (typeof want !== 'object' || want == null) { 64 console.log('AbilityContext::startAbilityByCall input param error'); 65 reject(new ParamError('Parse param want failed, want must be Want')); 66 return; 67 } 68 69 let callee = null; 70 try { 71 callee = await this.__context_impl__.startAbilityByCall(want); 72 } catch (error) { 73 console.log('AbilityContext::startAbilityByCall Obtain remoteObject failed'); 74 reject(error); 75 return; 76 } 77 78 resolve(new Caller(callee)); 79 console.log('AbilityContext::startAbilityByCall success'); 80 return; 81 }); 82 } 83 84 startAbilityByCallWithAccount(want, accountId) { 85 return new Promise(async (resolve, reject) => { 86 if (typeof want !== 'object' || want == null || typeof accountId !== 'number') { 87 console.log('AbilityContext::startAbilityByCall With accountId input param error'); 88 reject(new ParamError( 89 'Parse param want or accountId failed, want must be Want and accountId must be number')); 90 return; 91 } 92 93 let callee = null; 94 try { 95 callee = await this.__context_impl__.startAbilityByCall(want, accountId); 96 } catch (error) { 97 console.log('AbilityContext::startAbilityByCall With accountId Obtain remoteObject failed'); 98 reject(error); 99 return; 100 } 101 102 resolve(new Caller(callee)); 103 console.log('AbilityContext::startAbilityByCall With accountId success'); 104 return; 105 }); 106 } 107 108 startAbilityForResult(want, options, callback) { 109 return this.__context_impl__.startAbilityForResult(want, options, callback); 110 } 111 112 startAbilityForResultWithAccount(want, accountId, options, callback) { 113 return this.__context_impl__.startAbilityForResultWithAccount(want, accountId, options, callback); 114 } 115 116 startServiceExtensionAbility(want, callback) { 117 return this.__context_impl__.startServiceExtensionAbility(want, callback); 118 } 119 120 startServiceExtensionAbilityWithAccount(want, accountId, callback) { 121 return this.__context_impl__.startServiceExtensionAbilityWithAccount(want, accountId, callback); 122 } 123 124 stopServiceExtensionAbility(want, callback) { 125 return this.__context_impl__.stopServiceExtensionAbility(want, callback); 126 } 127 128 stopServiceExtensionAbilityWithAccount(want, accountId, callback) { 129 return this.__context_impl__.stopServiceExtensionAbilityWithAccount(want, accountId, callback); 130 } 131 132 connectServiceExtensionAbility(want, options) { 133 return this.__context_impl__.connectServiceExtensionAbility(want, options); 134 } 135 136 connectAbilityWithAccount(want, accountId, options) { 137 return this.__context_impl__.connectAbilityWithAccount(want, accountId, options); 138 } 139 140 connectServiceExtensionAbilityWithAccount(want, accountId, options) { 141 return this.__context_impl__.connectServiceExtensionAbilityWithAccount(want, accountId, options); 142 } 143 144 disconnectAbility(connection, callback) { 145 return this.__context_impl__.disconnectAbility(connection, callback); 146 } 147 148 disconnectServiceExtensionAbility(connection, callback) { 149 return this.__context_impl__.disconnectServiceExtensionAbility(connection, callback); 150 } 151 152 terminateSelf(callback) { 153 return this.__context_impl__.terminateSelf(callback); 154 } 155 156 isTerminating() { 157 return this.__context_impl__.isTerminating(); 158 } 159 160 terminateSelfWithResult(abilityResult, callback) { 161 return this.__context_impl__.terminateSelfWithResult(abilityResult, callback); 162 } 163 164 backToCallerAbilityWithResult(abilityResult, requestCode) { 165 return this.__context_impl__.backToCallerAbilityWithResult(abilityResult, requestCode); 166 } 167 168 restoreWindowStage(contentStorage) { 169 return this.__context_impl__.restoreWindowStage(contentStorage); 170 } 171 172 setMissionContinueState(state, callback) { 173 return this.__context_impl__.setMissionContinueState(state, callback); 174 } 175 176 setMissionLabel(label, callback) { 177 return this.__context_impl__.setMissionLabel(label, callback); 178 } 179 180 setMissionIcon(icon, callback) { 181 return this.__context_impl__.setMissionIcon(icon, callback); 182 } 183 184 requestDialogService(want, resultCallback) { 185 return this.__context_impl__.requestDialogService(want, resultCallback); 186 } 187 188 reportDrawnCompleted(callback) { 189 return this.__context_impl__.reportDrawnCompleted(callback); 190 } 191 192 startAbilityByType(type, wantParam, abilityStartCallback, callback) { 193 return this.__context_impl__.startAbilityByType(type, wantParam, abilityStartCallback, callback); 194 } 195 196 requestModalUIExtension(want, callback) { 197 return this.__context_impl__.requestModalUIExtension(want, callback); 198 } 199 200 showAbility() { 201 return this.__context_impl__.showAbility(); 202 } 203 204 hideAbility() { 205 return this.__context_impl__.hideAbility(); 206 } 207 208 openAtomicService(appId, options, callback) { 209 return this.__context_impl__.openAtomicService(appId, options, callback); 210 } 211 212 moveAbilityToBackground(callback) { 213 return this.__context_impl__.moveAbilityToBackground(callback); 214 } 215} 216 217export default AbilityContext; 218