1 /* 2 * Copyright (C) 2015 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.packageinstaller.permission.model; 18 19 import android.app.AppOpsManager; 20 import android.content.pm.PackageManager; 21 22 public final class Permission { 23 private final String mName; 24 private final int mAppOp; 25 26 private boolean mGranted; 27 private boolean mAppOpAllowed; 28 private int mFlags; 29 Permission(String name, boolean granted, int appOp, boolean appOpAllowed, int flags)30 public Permission(String name, boolean granted, 31 int appOp, boolean appOpAllowed, int flags) { 32 mName = name; 33 mGranted = granted; 34 mAppOp = appOp; 35 mAppOpAllowed = appOpAllowed; 36 mFlags = flags; 37 } 38 getName()39 public String getName() { 40 return mName; 41 } 42 getAppOp()43 public int getAppOp() { 44 return mAppOp; 45 } 46 getFlags()47 public int getFlags() { 48 return mFlags; 49 } 50 hasAppOp()51 public boolean hasAppOp() { 52 return mAppOp != AppOpsManager.OP_NONE; 53 } 54 isGranted()55 public boolean isGranted() { 56 return mGranted; 57 } 58 setGranted(boolean mGranted)59 public void setGranted(boolean mGranted) { 60 this.mGranted = mGranted; 61 } 62 isAppOpAllowed()63 public boolean isAppOpAllowed() { 64 return mAppOpAllowed; 65 } 66 isUserFixed()67 public boolean isUserFixed() { 68 return (mFlags & PackageManager.FLAG_PERMISSION_USER_FIXED) != 0; 69 } 70 setUserFixed(boolean userFixed)71 public void setUserFixed(boolean userFixed) { 72 if (userFixed) { 73 mFlags |= PackageManager.FLAG_PERMISSION_USER_FIXED; 74 } else { 75 mFlags &= ~PackageManager.FLAG_PERMISSION_USER_FIXED; 76 } 77 } 78 isSystemFixed()79 public boolean isSystemFixed() { 80 return (mFlags & PackageManager.FLAG_PERMISSION_SYSTEM_FIXED) != 0; 81 } 82 isPolicyFixed()83 public boolean isPolicyFixed() { 84 return (mFlags & PackageManager.FLAG_PERMISSION_POLICY_FIXED) != 0; 85 } 86 isUserSet()87 public boolean isUserSet() { 88 return (mFlags & PackageManager.FLAG_PERMISSION_USER_SET) != 0; 89 } 90 isGrantedByDefault()91 public boolean isGrantedByDefault() { 92 return (mFlags & PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT) != 0; 93 } 94 setUserSet(boolean userSet)95 public void setUserSet(boolean userSet) { 96 if (userSet) { 97 mFlags |= PackageManager.FLAG_PERMISSION_USER_SET; 98 } else { 99 mFlags &= ~PackageManager.FLAG_PERMISSION_USER_SET; 100 } 101 } 102 setPolicyFixed(boolean policyFixed)103 public void setPolicyFixed(boolean policyFixed) { 104 if (policyFixed) { 105 mFlags |= PackageManager.FLAG_PERMISSION_POLICY_FIXED; 106 } else { 107 mFlags &= ~PackageManager.FLAG_PERMISSION_POLICY_FIXED; 108 } 109 } 110 shouldRevokeOnUpgrade()111 public boolean shouldRevokeOnUpgrade() { 112 return (mFlags & PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE) != 0; 113 } 114 setRevokeOnUpgrade(boolean revokeOnUpgrade)115 public void setRevokeOnUpgrade(boolean revokeOnUpgrade) { 116 if (revokeOnUpgrade) { 117 mFlags |= PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE; 118 } else { 119 mFlags &= ~PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE; 120 } 121 } 122 setAppOpAllowed(boolean mAppOpAllowed)123 public void setAppOpAllowed(boolean mAppOpAllowed) { 124 this.mAppOpAllowed = mAppOpAllowed; 125 } 126 }