1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.server.permission.access.appop
18 
19 import android.app.AppOpsManager
20 import com.android.server.permission.access.MutateStateScope
21 import com.android.server.pm.pkg.PackageState
22 
23 class PackageAppOpUpgrade(private val policy: PackageAppOpPolicy) {
MutateStateScopenull24     fun MutateStateScope.upgradePackageState(
25         packageState: PackageState,
26         userId: Int,
27         version: Int,
28     ) {
29         if (version <= 2) {
30             with(policy) {
31                 val appOpMode =
32                     getAppOpMode(
33                         packageState.packageName,
34                         userId,
35                         AppOpsManager.OPSTR_RUN_IN_BACKGROUND
36                     )
37                 setAppOpMode(
38                     packageState.packageName,
39                     userId,
40                     AppOpsManager.OPSTR_RUN_ANY_IN_BACKGROUND,
41                     appOpMode
42                 )
43             }
44         }
45     }
46 }
47