1a7a0406958991f7a964370295821d8e477f503e9Svet Ganov/* 2a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * Copyright (C) 2015 The Android Open Source Project 3a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * 4a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * Licensed under the Apache License, Version 2.0 (the "License"); 5a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * you may not use this file except in compliance with the License. 6a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * You may obtain a copy of the License at 7a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * 8a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * http://www.apache.org/licenses/LICENSE-2.0 9a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * 10a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * Unless required by applicable law or agreed to in writing, software 11a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * distributed under the License is distributed on an "AS IS" BASIS, 12a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * See the License for the specific language governing permissions and 14a7a0406958991f7a964370295821d8e477f503e9Svet Ganov * limitations under the License. 15a7a0406958991f7a964370295821d8e477f503e9Svet Ganov */ 16a7a0406958991f7a964370295821d8e477f503e9Svet Ganov 17a7a0406958991f7a964370295821d8e477f503e9Svet Ganovpackage com.android.packageinstaller.permission.model; 18a7a0406958991f7a964370295821d8e477f503e9Svet Ganov 19267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganovimport android.graphics.drawable.Drawable; 20a7a0406958991f7a964370295821d8e477f503e9Svet Ganov 21a7a0406958991f7a964370295821d8e477f503e9Svet Ganovpublic final class PermissionGroup implements Comparable<PermissionGroup> { 22a7a0406958991f7a964370295821d8e477f503e9Svet Ganov private final String mName; 23267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov private final String mDeclaringPackage; 24a7a0406958991f7a964370295821d8e477f503e9Svet Ganov private final CharSequence mLabel; 25267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov private final Drawable mIcon; 269337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann private final int mTotal; 279337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann private final int mGranted; 28785a9b6369db4c46a389a43ae30e1f6e8003366bSvet Ganov 299337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann PermissionGroup(String name, String declaringPackage, CharSequence label, Drawable icon, 309337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann int total, int granted) { 31267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov mDeclaringPackage = declaringPackage; 32a7a0406958991f7a964370295821d8e477f503e9Svet Ganov mName = name; 33a7a0406958991f7a964370295821d8e477f503e9Svet Ganov mLabel = label; 34267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov mIcon = icon; 359337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann mTotal = total; 369337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann mGranted = granted; 37a7a0406958991f7a964370295821d8e477f503e9Svet Ganov } 38a7a0406958991f7a964370295821d8e477f503e9Svet Ganov 39a7a0406958991f7a964370295821d8e477f503e9Svet Ganov public String getName() { 40a7a0406958991f7a964370295821d8e477f503e9Svet Ganov return mName; 41a7a0406958991f7a964370295821d8e477f503e9Svet Ganov } 42a7a0406958991f7a964370295821d8e477f503e9Svet Ganov 43267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov public String getDeclaringPackage() { 44267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov return mDeclaringPackage; 45a7a0406958991f7a964370295821d8e477f503e9Svet Ganov } 46a7a0406958991f7a964370295821d8e477f503e9Svet Ganov 47a7a0406958991f7a964370295821d8e477f503e9Svet Ganov public CharSequence getLabel() { 48a7a0406958991f7a964370295821d8e477f503e9Svet Ganov return mLabel; 49a7a0406958991f7a964370295821d8e477f503e9Svet Ganov } 50a7a0406958991f7a964370295821d8e477f503e9Svet Ganov 51267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov public Drawable getIcon() { 52267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov return mIcon; 530430e255aebb6cf64f65eeaaf052786ee2834819Svet Ganov } 540430e255aebb6cf64f65eeaaf052786ee2834819Svet Ganov 559337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann /** 569337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann * @return The number of apps that might request permissions of this group 579337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann */ 589337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann public int getTotal() { 599337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann return mTotal; 609337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann } 619337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann 629337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann /** 639337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann * @return The number of apps that were granted permissions of this group 649337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann */ 659337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann public int getGranted() { 669337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann return mGranted; 679337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann } 689337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann 69a7a0406958991f7a964370295821d8e477f503e9Svet Ganov @Override 70a7a0406958991f7a964370295821d8e477f503e9Svet Ganov public int compareTo(PermissionGroup another) { 71267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov return mLabel.toString().compareTo(another.mLabel.toString()); 72a7a0406958991f7a964370295821d8e477f503e9Svet Ganov } 73a7a0406958991f7a964370295821d8e477f503e9Svet Ganov 74a7a0406958991f7a964370295821d8e477f503e9Svet Ganov @Override 75a7a0406958991f7a964370295821d8e477f503e9Svet Ganov public boolean equals(Object obj) { 76a7a0406958991f7a964370295821d8e477f503e9Svet Ganov if (this == obj) { 77a7a0406958991f7a964370295821d8e477f503e9Svet Ganov return true; 78a7a0406958991f7a964370295821d8e477f503e9Svet Ganov } 79a7a0406958991f7a964370295821d8e477f503e9Svet Ganov 80a7a0406958991f7a964370295821d8e477f503e9Svet Ganov if (obj == null) { 81a7a0406958991f7a964370295821d8e477f503e9Svet Ganov return false; 82a7a0406958991f7a964370295821d8e477f503e9Svet Ganov } 83a7a0406958991f7a964370295821d8e477f503e9Svet Ganov 84a7a0406958991f7a964370295821d8e477f503e9Svet Ganov if (getClass() != obj.getClass()) { 85a7a0406958991f7a964370295821d8e477f503e9Svet Ganov return false; 86a7a0406958991f7a964370295821d8e477f503e9Svet Ganov } 87a7a0406958991f7a964370295821d8e477f503e9Svet Ganov 88a7a0406958991f7a964370295821d8e477f503e9Svet Ganov PermissionGroup other = (PermissionGroup) obj; 89a7a0406958991f7a964370295821d8e477f503e9Svet Ganov 90a7a0406958991f7a964370295821d8e477f503e9Svet Ganov if (mName == null) { 91a7a0406958991f7a964370295821d8e477f503e9Svet Ganov if (other.mName != null) { 92a7a0406958991f7a964370295821d8e477f503e9Svet Ganov return false; 93a7a0406958991f7a964370295821d8e477f503e9Svet Ganov } 94a7a0406958991f7a964370295821d8e477f503e9Svet Ganov } else if (!mName.equals(other.mName)) { 95a7a0406958991f7a964370295821d8e477f503e9Svet Ganov return false; 96a7a0406958991f7a964370295821d8e477f503e9Svet Ganov } 97a7a0406958991f7a964370295821d8e477f503e9Svet Ganov 989337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann if (mTotal != other.mTotal) { 999337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann return false; 1009337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann } 1019337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann 1029337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann if (mGranted != other.mGranted) { 1039337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann return false; 1049337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann } 1059337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann 106a7a0406958991f7a964370295821d8e477f503e9Svet Ganov return true; 107a7a0406958991f7a964370295821d8e477f503e9Svet Ganov } 108a7a0406958991f7a964370295821d8e477f503e9Svet Ganov 109a7a0406958991f7a964370295821d8e477f503e9Svet Ganov @Override 110a7a0406958991f7a964370295821d8e477f503e9Svet Ganov public int hashCode() { 1119337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann return mName != null ? mName.hashCode() + mTotal + mGranted : mTotal + mGranted; 112a7a0406958991f7a964370295821d8e477f503e9Svet Ganov } 113a7a0406958991f7a964370295821d8e477f503e9Svet Ganov} 114