1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage java.security; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code AllPermission} represents the permission to perform any operation. 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Since its {@link #implies(Permission)} method always returns {@code true}, 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * granting this permission is equivalent to disabling security. 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic final class AllPermission extends Permission { 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 28e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes /** 29e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes * @serial 30e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes */ 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final long serialVersionUID = -2916474571451318075L; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Permission name 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final String ALL_PERMISSIONS = "<all permissions>"; //$NON-NLS-1$ 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Actions name 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final String ALL_ACTIONS = "<all actions>"; //$NON-NLS-1$ 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constructs a new instance of {@code AllPermission}. The two argument 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * version is provided for class {@code Policy} so that it has a consistent 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * call pattern across all permissions. The name and action list are both 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * ignored. 44e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes * 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param name 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * ignored. 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param actions 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * ignored. 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public AllPermission(String name, String actions) { 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(ALL_PERMISSIONS); 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Constructs a new instance of {@code AllPermission}. 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public AllPermission() { 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(ALL_PERMISSIONS); 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Compares the specified object with this {@code AllPermission} for 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * equality and returns {@code true} if the specified object is equal, 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code false} otherwise. To be equal, the given object needs to be an 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * instance of {@code AllPermission}. 66e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes * 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param obj 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * object to be compared for equality with this {@code 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * AllPermission}. 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return {@code true} if the specified object is equal to this {@code 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * AllPermission}, otherwise {@code false}. 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #hashCode 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 74e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes @Override 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean equals(Object obj) { 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return (obj instanceof AllPermission); 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the hash code value for this {@code AllPermission}. Returns the 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * same hash code for {@code AllPermission}s that are equal to each other as 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * required by the general contract of {@link Object#hashCode}. 83e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes * 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the hash code value for this {@code AllPermission}. 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see Object#equals(Object) 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see AllPermission#equals(Object) 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 88e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes @Override 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int hashCode() { 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 1; 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the actions associated with this {@code AllPermission}. Since 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code AllPermission} objects allow all actions, this method returns 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * always the string "<all actions>". 97e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes * 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the actions associated with this {@code AllPermission}. 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 100e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes @Override 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getActions() { 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return ALL_ACTIONS; 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Indicates whether the given permission is implied by this permission. 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code AllPermission} objects imply all other permissions. 108e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes * 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return always {@code true}. 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param permission 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the permission to check. 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 113e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes @Override 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean implies(Permission permission) { 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return true; 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a new {@code PermissionCollection} for holding permissions of 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this class. 121e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes * 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return a new {@code PermissionCollection}. 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 124e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes @Override 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PermissionCollection newPermissionCollection() { 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new AllPermissionCollection(); 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 129