1 /*
2  * Copyright (c) 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 "bundle_active_account_helper.h"
17 
18 namespace OHOS {
19 namespace DeviceUsageStats {
20 #ifndef OS_ACCOUNT_PART_ENABLED
21 constexpr int32_t UID_TRANSFORM_DIVISOR = 200000;
22 #endif
GetUserId(const int32_t uid,int32_t & userId)23 ErrCode BundleActiveAccountHelper::GetUserId(const int32_t uid, int32_t& userId)
24 {
25 #ifdef OS_ACCOUNT_PART_ENABLED
26     ErrCode ret = OHOS::AccountSA::OsAccountManager::GetOsAccountLocalIdFromUid(uid, userId);
27 #else // OS_ACCOUNT_PART_ENABLED
28     ErrCode ret = ERR_OK;
29     userId = uid / UID_TRANSFORM_DIVISOR;
30 #endif // OS_ACCOUNT_PART_ENABLED
31     return ret;
32 }
33 
34 
GetActiveUserId(std::vector<int32_t> & activatedOsAccountIds)35 void BundleActiveAccountHelper::GetActiveUserId(std::vector<int32_t> &activatedOsAccountIds)
36 {
37 #ifdef OS_ACCOUNT_PART_ENABLED
38     if (AccountSA::OsAccountManager::QueryActiveOsAccountIds(activatedOsAccountIds) != ERR_OK) {
39         return;
40     }
41     if (activatedOsAccountIds.size() == 0) {
42         return;
43     }
44 #else // OS_ACCOUNT_PART_ENABLED
45     activatedOsAccountIds.push_back(DEFAULT_OS_ACCOUNT_ID);
46 #endif // OS_ACCOUNT_PART_ENABLED
47 }
48 }  // namespace DeviceUsageStats
49 }  // namespace OHOS
50 
51