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