1 /*
2 * Copyright (c) 2021-2022 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 "ability_context.h"
17
18 #include "ability_manager_client.h"
19 #include "accesstoken_kit.h"
20 #include "bundle_constants.h"
21 #include "hilog_wrapper.h"
22 #include "iservice_registry.h"
23 #include "os_account_manager.h"
24 #include "resource_manager.h"
25 #include "sys_mgr_client.h"
26 #include "system_ability_definition.h"
27
28 namespace OHOS {
29 namespace AppExecFwk {
30
31 int AbilityContext::ABILITY_CONTEXT_DEFAULT_REQUEST_CODE(0);
32 const std::string GRANT_ABILITY_BUNDLE_NAME = "com.ohos.permissionmanager";
33 const std::string GRANT_ABILITY_ABILITY_NAME = "com.ohos.permissionmanager.GrantAbility";
34 const std::string PERMISSION_KEY = "ohos.user.grant.permission";
35 const std::string STATE_KEY = "ohos.user.grant.permission.state";
36
StartAbility(const AAFwk::Want & want,int requestCode)37 ErrCode AbilityContext::StartAbility(const AAFwk::Want &want, int requestCode)
38 {
39 HILOG_INFO("AbilityContext::StartAbility called, requestCode = %{public}d", requestCode);
40
41 AppExecFwk::AbilityType type = GetAbilityInfoType();
42 if (type != AppExecFwk::AbilityType::PAGE && type != AppExecFwk::AbilityType::SERVICE) {
43 HILOG_ERROR("AbilityContext::StartAbility AbilityType = %{public}d", type);
44 return ERR_INVALID_VALUE;
45 }
46
47 HILOG_INFO("%{public}s. Start calling ams->StartAbility.", __func__);
48 ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want, token_, requestCode);
49 HILOG_INFO("%{public}s. End calling ams->StartAbility. ret=%{public}d", __func__, err);
50 if (err != ERR_OK) {
51 HILOG_ERROR("AbilityContext::StartAbility is failed %{public}d", err);
52 }
53 return err;
54 }
55
StartAbility(const Want & want,int requestCode,const AbilityStartSetting & abilityStartSetting)56 ErrCode AbilityContext::StartAbility(const Want &want, int requestCode, const AbilityStartSetting &abilityStartSetting)
57 {
58 AppExecFwk::AbilityType type = GetAbilityInfoType();
59 if (AppExecFwk::AbilityType::PAGE != type && AppExecFwk::AbilityType::SERVICE != type) {
60 HILOG_ERROR("AbilityContext::StartAbility AbilityType = %{public}d", type);
61 return ERR_INVALID_VALUE;
62 }
63
64 HILOG_INFO("%{public}s. Start calling ams->StartAbility.", __func__);
65 ErrCode err =
66 AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want, abilityStartSetting, token_, requestCode);
67 HILOG_INFO("%{public}s. End calling ams->StartAbility. ret=%{public}d", __func__, err);
68 if (err != ERR_OK) {
69 HILOG_ERROR("AbilityContext::StartAbility is failed %{public}d", err);
70 }
71
72 return err;
73 }
74
TerminateAbility(int requestCode)75 ErrCode AbilityContext::TerminateAbility(int requestCode)
76 {
77 HILOG_INFO("%{public}s begin.", __func__);
78 ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->TerminateAbility(token_, requestCode);
79 if (err != ERR_OK) {
80 HILOG_ERROR("AbilityContext::TerminateAbility is failed %{public}d", err);
81 }
82 HILOG_INFO("%{public}s end.", __func__);
83 return err;
84 }
85
TerminateAbility()86 ErrCode AbilityContext::TerminateAbility()
87 {
88 HILOG_INFO("%{public}s begin.", __func__);
89 std::shared_ptr<AbilityInfo> info = GetAbilityInfo();
90 if (info == nullptr) {
91 HILOG_ERROR("AbilityContext::TerminateAbility info == nullptr");
92 return ERR_NULL_OBJECT;
93 }
94
95 ErrCode err = ERR_OK;
96
97 switch (info->type) {
98 case AppExecFwk::AbilityType::PAGE:
99 HILOG_INFO("%{public}s begin ams->TerminateAbility for PAGE.", __func__);
100 err = AAFwk::AbilityManagerClient::GetInstance()->TerminateAbility(token_, resultCode_, &resultWant_);
101 HILOG_INFO("%{public}s end ams->TerminateAbility for PAGE, ret=%{public}d", __func__, err);
102 break;
103 case AppExecFwk::AbilityType::SERVICE:
104 HILOG_INFO("%{public}s begin ams->TerminateAbility for SERVICE.", __func__);
105 err = AAFwk::AbilityManagerClient::GetInstance()->TerminateAbility(token_, -1, nullptr);
106 HILOG_INFO("%{public}s end ams->TerminateAbility for SERVICE, ret=%{public}d", __func__, err);
107 break;
108 default:
109 HILOG_ERROR("AbilityContext::TerminateAbility info type error is %{public}d", info->type);
110 break;
111 }
112
113 if (err != ERR_OK) {
114 HILOG_ERROR("AbilityContext::TerminateAbility is failed %{public}d", err);
115 }
116 HILOG_INFO("%{public}s end.", __func__);
117 return err;
118 }
119
GetCallingBundle()120 std::string AbilityContext::GetCallingBundle()
121 {
122 return callingBundleName_;
123 }
124
GetElementName()125 std::shared_ptr<ElementName> AbilityContext::GetElementName()
126 {
127 HILOG_INFO("%{public}s begin.", __func__);
128 std::shared_ptr<AbilityInfo> info = GetAbilityInfo();
129 if (info == nullptr) {
130 HILOG_ERROR("AbilityContext::GetElementName info == nullptr");
131 return nullptr;
132 }
133
134 std::shared_ptr<ElementName> elementName = std::make_shared<ElementName>();
135 if (elementName == nullptr) {
136 HILOG_ERROR("AbilityContext::GetElementName elementName == nullptr");
137 return nullptr;
138 }
139 elementName->SetAbilityName(info->name);
140 elementName->SetBundleName(info->bundleName);
141 elementName->SetDeviceID(info->deviceId);
142 HILOG_INFO("%{public}s end.", __func__);
143 return elementName;
144 }
145
GetCallingAbility()146 std::shared_ptr<ElementName> AbilityContext::GetCallingAbility()
147 {
148 HILOG_INFO("%{public}s begin.", __func__);
149 std::shared_ptr<ElementName> elementName = std::make_shared<ElementName>();
150
151 if (elementName == nullptr) {
152 HILOG_ERROR("AbilityContext::GetElementName elementName == nullptr");
153 return nullptr;
154 }
155 elementName->SetAbilityName(callingAbilityName_);
156 elementName->SetBundleName(callingBundleName_);
157 elementName->SetDeviceID(callingDeviceId_);
158 HILOG_INFO("%{public}s end.", __func__);
159 return elementName;
160 }
161
ConnectAbility(const Want & want,const sptr<AAFwk::IAbilityConnection> & conn)162 bool AbilityContext::ConnectAbility(const Want &want, const sptr<AAFwk::IAbilityConnection> &conn)
163 {
164 HILOG_INFO("%{public}s begin.", __func__);
165
166 AppExecFwk::AbilityType type = GetAbilityInfoType();
167
168 std::shared_ptr<AbilityInfo> abilityInfo = GetAbilityInfo();
169 if (abilityInfo == nullptr) {
170 HILOG_ERROR("AbilityContext::ConnectAbility info == nullptr");
171 return false;
172 }
173
174 if (AppExecFwk::AbilityType::PAGE != type && AppExecFwk::AbilityType::SERVICE != type) {
175 HILOG_ERROR("AbilityContext::ConnectAbility AbilityType = %{public}d", type);
176 return false;
177 }
178
179 ErrCode ret = AAFwk::AbilityManagerClient::GetInstance()->ConnectAbility(want, conn, token_);
180 HILOG_INFO("%{public}s end ConnectAbility, ret=%{public}d", __func__, ret);
181 bool value = ((ret == ERR_OK) ? true : false);
182 if (!value) {
183 HILOG_ERROR("AbilityContext::ConnectAbility ErrorCode = %{public}d", ret);
184 }
185 HILOG_INFO("%{public}s end.", __func__);
186 return value;
187 }
188
DisconnectAbility(const sptr<AAFwk::IAbilityConnection> & conn)189 ErrCode AbilityContext::DisconnectAbility(const sptr<AAFwk::IAbilityConnection> &conn)
190 {
191 HILOG_INFO("%{public}s begin.", __func__);
192
193 AppExecFwk::AbilityType type = GetAbilityInfoType();
194 if (AppExecFwk::AbilityType::PAGE != type && AppExecFwk::AbilityType::SERVICE != type) {
195 HILOG_ERROR("AbilityContext::DisconnectAbility AbilityType = %{public}d", type);
196 return ERR_INVALID_VALUE;
197 }
198
199 ErrCode ret = AAFwk::AbilityManagerClient::GetInstance()->DisconnectAbility(conn);
200 HILOG_INFO("%{public}s end ams->DisconnectAbility, ret=%{public}d", __func__, ret);
201 if (ret != ERR_OK) {
202 HILOG_ERROR("AbilityContext::DisconnectAbility error");
203 }
204 HILOG_DEBUG("AbilityContext::DisconnectAbility end");
205 return ret;
206 }
207
StopAbility(const AAFwk::Want & want)208 bool AbilityContext::StopAbility(const AAFwk::Want &want)
209 {
210 HILOG_INFO("%{public}s begin.", __func__);
211 AppExecFwk::AbilityType type = GetAbilityInfoType();
212 if (AppExecFwk::AbilityType::PAGE != type && AppExecFwk::AbilityType::SERVICE != type) {
213 HILOG_ERROR("AbilityContext::StopAbility AbilityType = %{public}d", type);
214 return false;
215 }
216
217 HILOG_INFO("%{public}s begin ams->StopServiceAbility", __func__);
218 ErrCode err = AAFwk::AbilityManagerClient::GetInstance()->StopServiceAbility(want);
219 HILOG_INFO("%{public}s end ams->StopServiceAbility, ret=%{public}d", __func__, err);
220 if (err != ERR_OK) {
221 HILOG_ERROR("AbilityContext::StopAbility is failed %{public}d", err);
222 return false;
223 }
224
225 HILOG_INFO("%{public}s end.", __func__);
226 return true;
227 }
228
GetToken()229 sptr<IRemoteObject> AbilityContext::GetToken()
230 {
231 return token_;
232 }
233
GetApplicationInfo() const234 std::shared_ptr<ApplicationInfo> AbilityContext::GetApplicationInfo() const
235 {
236 return ContextContainer::GetApplicationInfo();
237 }
238
GetCacheDir()239 std::string AbilityContext::GetCacheDir()
240 {
241 return ContextContainer::GetCacheDir();
242 }
243
GetCodeCacheDir()244 std::string AbilityContext::GetCodeCacheDir()
245 {
246 return ContextContainer::GetCodeCacheDir();
247 }
248
GetDatabaseDir()249 std::string AbilityContext::GetDatabaseDir()
250 {
251 return ContextContainer::GetDatabaseDir();
252 }
253
GetDataDir()254 std::string AbilityContext::GetDataDir()
255 {
256 return ContextContainer::GetDataDir();
257 }
258
GetDir(const std::string & name,int mode)259 std::string AbilityContext::GetDir(const std::string &name, int mode)
260 {
261 return ContextContainer::GetDir(name, mode);
262 }
263
GetBundleManager() const264 sptr<IBundleMgr> AbilityContext::GetBundleManager() const
265 {
266 return ContextContainer::GetBundleManager();
267 }
268
GetBundleCodePath()269 std::string AbilityContext::GetBundleCodePath()
270 {
271 return ContextContainer::GetBundleCodePath();
272 }
273
GetBundleName() const274 std::string AbilityContext::GetBundleName() const
275 {
276 return ContextContainer::GetBundleName();
277 }
278
GetBundleResourcePath()279 std::string AbilityContext::GetBundleResourcePath()
280 {
281 return ContextContainer::GetBundleResourcePath();
282 }
283
GetApplicationContext() const284 std::shared_ptr<Context> AbilityContext::GetApplicationContext() const
285 {
286 return ContextContainer::GetApplicationContext();
287 }
288
GetContext()289 std::shared_ptr<Context> AbilityContext::GetContext()
290 {
291 return ContextContainer::GetContext();
292 }
293
GetAbilityManager()294 sptr<AAFwk::IAbilityManager> AbilityContext::GetAbilityManager()
295 {
296 return ContextContainer::GetAbilityManager();
297 }
298
GetProcessInfo() const299 std::shared_ptr<ProcessInfo> AbilityContext::GetProcessInfo() const
300 {
301 return ContextContainer::GetProcessInfo();
302 }
303
GetAppType()304 std::string AbilityContext::GetAppType()
305 {
306 return ContextContainer::GetAppType();
307 }
308
GetAbilityInfo()309 const std::shared_ptr<AbilityInfo> AbilityContext::GetAbilityInfo()
310 {
311 return ContextContainer::GetAbilityInfo();
312 }
313
GetHapModuleInfo()314 std::shared_ptr<HapModuleInfo> AbilityContext::GetHapModuleInfo()
315 {
316 return ContextContainer::GetHapModuleInfo();
317 }
318
GetAbilityInfoType()319 AppExecFwk::AbilityType AbilityContext::GetAbilityInfoType()
320 {
321 std::shared_ptr<AbilityInfo> info = GetAbilityInfo();
322 if (info == nullptr) {
323 HILOG_ERROR("AbilityContext::GetAbilityInfoType info == nullptr");
324 return AppExecFwk::AbilityType::UNKNOWN;
325 }
326
327 return info->type;
328 }
329
CreateBundleContext(std::string bundleName,int flag,int accountId)330 std::shared_ptr<Context> AbilityContext::CreateBundleContext(std::string bundleName, int flag, int accountId)
331 {
332 return ContextContainer::CreateBundleContext(bundleName, flag, accountId);
333 }
334
GetResourceManager() const335 std::shared_ptr<Global::Resource::ResourceManager> AbilityContext::GetResourceManager() const
336 {
337 HILOG_INFO("%{public}s begin.", __func__);
338 std::shared_ptr<Context> appcontext = GetApplicationContext();
339 if (appcontext == nullptr) {
340 HILOG_ERROR("AbilityContext::GetResourceManager appcontext is nullptr");
341 return nullptr;
342 }
343
344 HILOG_INFO("%{public}s begin appcontext->GetResourceManager.", __func__);
345 std::shared_ptr<Global::Resource::ResourceManager> resourceManager = appcontext->GetResourceManager();
346 HILOG_INFO("%{public}s end appcontext->GetResourceManager.", __func__);
347 if (resourceManager == nullptr) {
348 HILOG_ERROR("AbilityContext::GetResourceManager resourceManager is nullptr");
349 return nullptr;
350 }
351 HILOG_INFO("%{public}s end.", __func__);
352 return resourceManager;
353 }
354
VerifyPermission(const std::string & permission,int pid,int uid)355 int AbilityContext::VerifyPermission(const std::string &permission, int pid, int uid)
356 {
357 HILOG_INFO("%{public}s begin. permission=%{public}s, pid=%{public}d, uid=%{public}d",
358 __func__,
359 permission.c_str(),
360 pid,
361 uid);
362 if (permission.empty()) {
363 HILOG_ERROR("VerifyPermission permission invalid");
364 return AppExecFwk::Constants::PERMISSION_NOT_GRANTED;
365 }
366
367 sptr<IBundleMgr> ptr = GetBundleManager();
368 if (ptr == nullptr) {
369 HILOG_ERROR("VerifyPermission failed to get bundle manager service");
370 return AppExecFwk::Constants::PERMISSION_NOT_GRANTED;
371 }
372
373 std::string bundle_name;
374 if (!ptr->GetBundleNameForUid(uid, bundle_name)) {
375 HILOG_ERROR("VerifyPermission failed to get bundle name by uid");
376 return AppExecFwk::Constants::PERMISSION_NOT_GRANTED;
377 }
378
379 int account = -1;
380 if (AccountSA::OsAccountManager::GetOsAccountLocalIdFromUid(uid, account) != 0) {
381 HILOG_ERROR("VerifyPermission failed to get account by uid");
382 return AppExecFwk::Constants::PERMISSION_NOT_GRANTED;
383 }
384
385 AppExecFwk::ApplicationInfo appInfo;
386 if (!ptr->GetApplicationInfo(bundle_name, AppExecFwk::BundleFlag::GET_BUNDLE_DEFAULT, account, appInfo)) {
387 HILOG_ERROR("VerifyPermission failed to get application info");
388 return AppExecFwk::Constants::PERMISSION_NOT_GRANTED;
389 }
390
391 int32_t ret = Security::AccessToken::AccessTokenKit::VerifyAccessToken(appInfo.accessTokenId, permission);
392 if (ret == Security::AccessToken::PermissionState::PERMISSION_DENIED) {
393 HILOG_ERROR("VerifyPermission %{public}d: PERMISSION_DENIED", appInfo.accessTokenId);
394 return AppExecFwk::Constants::PERMISSION_NOT_GRANTED;
395 }
396
397 return 0;
398 }
399
GetPermissionDes(const std::string & permissionName,std::string & des)400 void AbilityContext::GetPermissionDes(const std::string &permissionName, std::string &des)
401 {
402 Security::AccessToken::PermissionDef permissionDef;
403 int32_t ret = Security::AccessToken::AccessTokenKit::GetDefPermission(permissionName, permissionDef);
404 if (ret == Security::AccessToken::AccessTokenKitRet::RET_SUCCESS) {
405 HILOG_DEBUG("GetPermissionDes %{public}s: RET_SUCCESS", permissionName.c_str());
406 des = permissionDef.description;
407 }
408 HILOG_DEBUG("%{public}s end GetPermissionDef.", __func__);
409 }
410
RequestPermissionsFromUser(std::vector<std::string> & permissions,std::vector<int> & permissionsState,int requestCode)411 void AbilityContext::RequestPermissionsFromUser(std::vector<std::string> &permissions,
412 std::vector<int> &permissionsState, int requestCode)
413 {
414 HILOG_INFO("%{public}s begin.", __func__);
415 if (permissions.size() == 0) {
416 HILOG_ERROR("AbilityContext::RequestPermissionsFromUser permissions is empty");
417 return;
418 }
419
420 if (requestCode < 0) {
421 HILOG_ERROR("AbilityContext::RequestPermissionsFromUser requestCode should be >= 0");
422 return;
423 }
424
425 AAFwk::Want want;
426 want.SetElementName(GRANT_ABILITY_BUNDLE_NAME, GRANT_ABILITY_ABILITY_NAME);
427 want.SetParam(PERMISSION_KEY, permissions);
428 want.SetParam(STATE_KEY, permissionsState);
429 StartAbility(want, requestCode);
430 HILOG_INFO("%{public}s end.", __func__);
431 }
432
DeleteFile(const std::string & fileName)433 bool AbilityContext::DeleteFile(const std::string &fileName)
434 {
435 return ContextContainer::DeleteFile(fileName);
436 }
437
SetCallingContext(const std::string & deviceId,const std::string & bundleName,const std::string & abilityName)438 void AbilityContext::SetCallingContext(
439 const std::string &deviceId, const std::string &bundleName, const std::string &abilityName)
440 {
441 callingDeviceId_ = deviceId;
442 callingBundleName_ = bundleName;
443 callingAbilityName_ = abilityName;
444 }
445
GetCaller()446 Uri AbilityContext::GetCaller()
447 {
448 return ContextContainer::GetCaller();
449 }
450
AttachBaseContext(const std::shared_ptr<Context> & base)451 void AbilityContext::AttachBaseContext(const std::shared_ptr<Context> &base)
452 {
453 HILOG_INFO("AbilityContext::AttachBaseContext. Start.");
454 ContextContainer::AttachBaseContext(base);
455 HILOG_INFO("AbilityContext::AttachBaseContext. End.");
456 }
457
GetExternalCacheDir()458 std::string AbilityContext::GetExternalCacheDir()
459 {
460 return ContextContainer::GetExternalCacheDir();
461 }
462
GetExternalFilesDir(std::string & type)463 std::string AbilityContext::GetExternalFilesDir(std::string &type)
464 {
465 return ContextContainer::GetExternalFilesDir(type);
466 }
467
GetFilesDir()468 std::string AbilityContext::GetFilesDir()
469 {
470 return ContextContainer::GetFilesDir();
471 }
472
GetNoBackupFilesDir()473 std::string AbilityContext::GetNoBackupFilesDir()
474 {
475 return ContextContainer::GetNoBackupFilesDir();
476 }
477
UnauthUriPermission(const std::string & permission,const Uri & uri,int uid)478 void AbilityContext::UnauthUriPermission(const std::string &permission, const Uri &uri, int uid)
479 {
480 ContextContainer::UnauthUriPermission(permission, uri, uid);
481 }
482
GetDistributedDir()483 std::string AbilityContext::GetDistributedDir()
484 {
485 return ContextContainer::GetDistributedDir();
486 }
487
SetPattern(int patternId)488 void AbilityContext::SetPattern(int patternId)
489 {
490 ContextContainer::SetPattern(patternId);
491 }
492
GetAbilityPackageContext()493 std::shared_ptr<Context> AbilityContext::GetAbilityPackageContext()
494 {
495 return ContextContainer::GetAbilityPackageContext();
496 }
497
GetProcessName()498 std::string AbilityContext::GetProcessName()
499 {
500 return ContextContainer::GetProcessName();
501 }
502
InitResourceManager(BundleInfo & bundleInfo,std::shared_ptr<ContextDeal> & deal)503 void AbilityContext::InitResourceManager(BundleInfo &bundleInfo, std::shared_ptr<ContextDeal> &deal)
504 {
505 ContextContainer::InitResourceManager(bundleInfo, deal);
506 }
507
GetString(int resId)508 std::string AbilityContext::GetString(int resId)
509 {
510 return ContextContainer::GetString(resId);
511 }
512
GetStringArray(int resId)513 std::vector<std::string> AbilityContext::GetStringArray(int resId)
514 {
515 return ContextContainer::GetStringArray(resId);
516 }
517
GetIntArray(int resId)518 std::vector<int> AbilityContext::GetIntArray(int resId)
519 {
520 return ContextContainer::GetIntArray(resId);
521 }
522
GetTheme()523 std::map<std::string, std::string> AbilityContext::GetTheme()
524 {
525 return ContextContainer::GetTheme();
526 }
527
SetTheme(int themeId)528 void AbilityContext::SetTheme(int themeId)
529 {
530 ContextContainer::SetTheme(themeId);
531 }
532
GetPattern()533 std::map<std::string, std::string> AbilityContext::GetPattern()
534 {
535 return ContextContainer::GetPattern();
536 }
537
GetColor(int resId)538 int AbilityContext::GetColor(int resId)
539 {
540 return ContextContainer::GetColor(resId);
541 }
542
GetThemeId()543 int AbilityContext::GetThemeId()
544 {
545 return ContextContainer::GetThemeId();
546 }
547
TerminateAbilityResult(int startId)548 bool AbilityContext::TerminateAbilityResult(int startId)
549 {
550 HILOG_INFO("%{public}s begin.", __func__);
551 auto abilityClient = AAFwk::AbilityManagerClient::GetInstance();
552 if (abilityClient == nullptr) {
553 HILOG_ERROR("AbilityContext::TerminateAbilityResult abilityClient is nullptr");
554 return false;
555 }
556
557 HILOG_INFO("%{public}s begin ams->TerminateAbilityResult, startId=%{public}d.", __func__, startId);
558 ErrCode errval = abilityClient->TerminateAbilityResult(token_, startId);
559 HILOG_INFO("%{public}s end ams->TerminateAbilityResult, ret=%{public}d.", __func__, errval);
560 if (errval != ERR_OK) {
561 HILOG_ERROR("AbilityContext::TerminateAbilityResult TerminateAbilityResult retval is %d", errval);
562 }
563
564 HILOG_INFO("%{public}s end.", __func__);
565 return (errval == ERR_OK) ? true : false;
566 }
567
GetDisplayOrientation()568 int AbilityContext::GetDisplayOrientation()
569 {
570 return ContextContainer::GetDisplayOrientation();
571 }
572
GetPreferencesDir()573 std::string AbilityContext::GetPreferencesDir()
574 {
575 return ContextContainer::GetPreferencesDir();
576 }
577
SetColorMode(int mode)578 void AbilityContext::SetColorMode(int mode)
579 {
580 ContextContainer::SetColorMode(mode);
581 }
582
GetColorMode()583 int AbilityContext::GetColorMode()
584 {
585 return ContextContainer::GetColorMode();
586 }
587
GetMissionId()588 int AbilityContext::GetMissionId()
589 {
590 return ContextContainer::GetMissionId();
591 }
592
TerminateAndRemoveMission()593 void AbilityContext::TerminateAndRemoveMission()
594 {
595 ContextContainer::TerminateAndRemoveMission();
596 }
597
StartAbilities(const std::vector<AAFwk::Want> & wants)598 void AbilityContext::StartAbilities(const std::vector<AAFwk::Want> &wants)
599 {
600 HILOG_INFO("%{public}s begin.", __func__);
601 for (auto want : wants) {
602 StartAbility(want, ABILITY_CONTEXT_DEFAULT_REQUEST_CODE);
603 }
604 HILOG_INFO("%{public}s end.", __func__);
605 }
606
IsFirstInMission()607 bool AbilityContext::IsFirstInMission()
608 {
609 HILOG_INFO("%{public}s begin.", __func__);
610 auto abilityClient = AAFwk::AbilityManagerClient::GetInstance();
611 if (abilityClient == nullptr) {
612 HILOG_ERROR("AbilityContext::IsFirstInMission abilityClient is nullptr");
613 return false;
614 }
615 HILOG_INFO("%{public}s begin ams->IsFirstInMission.", __func__);
616 ErrCode errval = abilityClient->IsFirstInMission(token_);
617 HILOG_INFO("%{public}s end ams->IsFirstInMission, ret=%{public}d", __func__, errval);
618 if (errval != ERR_OK) {
619 HILOG_ERROR("AbilityContext::IsFirstInMission IsFirstInMission retval is %d", errval);
620 }
621 HILOG_INFO("%{public}s end.", __func__);
622
623 return (errval == ERR_OK) ? true : false;
624 }
625
GetUITaskDispatcher()626 std::shared_ptr<TaskDispatcher> AbilityContext::GetUITaskDispatcher()
627 {
628 return ContextContainer::GetUITaskDispatcher();
629 }
630
GetMainTaskDispatcher()631 std::shared_ptr<TaskDispatcher> AbilityContext::GetMainTaskDispatcher()
632 {
633 return ContextContainer::GetMainTaskDispatcher();
634 }
635
CreateParallelTaskDispatcher(const std::string & name,const TaskPriority & priority)636 std::shared_ptr<TaskDispatcher> AbilityContext::CreateParallelTaskDispatcher(
637 const std::string &name, const TaskPriority &priority)
638 {
639 return ContextContainer::CreateParallelTaskDispatcher(name, priority);
640 }
641
CreateSerialTaskDispatcher(const std::string & name,const TaskPriority & priority)642 std::shared_ptr<TaskDispatcher> AbilityContext::CreateSerialTaskDispatcher(
643 const std::string &name, const TaskPriority &priority)
644 {
645 return ContextContainer::CreateSerialTaskDispatcher(name, priority);
646 }
647
GetGlobalTaskDispatcher(const TaskPriority & priority)648 std::shared_ptr<TaskDispatcher> AbilityContext::GetGlobalTaskDispatcher(const TaskPriority &priority)
649 {
650 return ContextContainer::GetGlobalTaskDispatcher(priority);
651 }
652
MoveMissionToEnd(bool nonFirst)653 bool AbilityContext::MoveMissionToEnd(bool nonFirst)
654 {
655 return ContextContainer::MoveMissionToEnd(nonFirst);
656 }
657
LockMission()658 void AbilityContext::LockMission()
659 {
660 ContextContainer::LockMission();
661 }
662
UnlockMission()663 void AbilityContext::UnlockMission()
664 {
665 ContextContainer::UnlockMission();
666 }
667
SetMissionInformation(const MissionInformation & missionInformation)668 bool AbilityContext::SetMissionInformation(const MissionInformation &missionInformation)
669 {
670 return ContextContainer::SetMissionInformation(missionInformation);
671 }
672
IsUpdatingConfigurations()673 bool AbilityContext::IsUpdatingConfigurations()
674 {
675 return ContextContainer::IsUpdatingConfigurations();
676 }
677
PrintDrawnCompleted()678 bool AbilityContext::PrintDrawnCompleted()
679 {
680 return ContextContainer::PrintDrawnCompleted();
681 }
682 } // namespace AppExecFwk
683 } // namespace OHOS
684