1cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root/* 2cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * Copyright (C) 2011 The Android Open Source Project 3cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * 4cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 5cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * you may not use this file except in compliance with the License. 6cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * You may obtain a copy of the License at 7cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * 8cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * http://www.apache.org/licenses/LICENSE-2.0 9cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * 10cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * Unless required by applicable law or agreed to in writing, software 11cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * distributed under the License is distributed on an "AS IS" BASIS, 12cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * See the License for the specific language governing permissions and 14cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * limitations under the License. 15cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root */ 16cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 17cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Rootpackage com.android.server.pm; 18cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 19628946a6efd7931fac59b3236b58b53c58c6bf20Christopher Tateimport android.content.pm.ApplicationInfo; 20cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Rootimport android.content.pm.PackageParser; 21cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 22cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Rootimport java.io.File; 23cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 24cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root/** 25cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * Settings data for a particular package we know about. 26cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root */ 27cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Rootfinal class PackageSetting extends PackageSettingBase { 28135936072b24b090fb63940aea41b408d855a4f3Amith Yamasani int appId; 29cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root PackageParser.Package pkg; 30cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root SharedUserSetting sharedUser; 31cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 32cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root PackageSetting(String name, String realName, File codePath, File resourcePath, 33ff110bd61a69f7ed8602ae14b27f7befec76b2e7Narayan Kamath String legacyNativeLibraryPathString, String primaryCpuAbiString, 344903f64ba2478849e6c401f42f5a77c1d4f9f7dfNarayan Kamath String secondaryCpuAbiString, String cpuAbiOverrideString, 354903f64ba2478849e6c401f42f5a77c1d4f9f7dfNarayan Kamath int pVersionCode, int pkgFlags) { 36ff110bd61a69f7ed8602ae14b27f7befec76b2e7Narayan Kamath super(name, realName, codePath, resourcePath, legacyNativeLibraryPathString, 374903f64ba2478849e6c401f42f5a77c1d4f9f7dfNarayan Kamath primaryCpuAbiString, secondaryCpuAbiString, cpuAbiOverrideString, 384903f64ba2478849e6c401f42f5a77c1d4f9f7dfNarayan Kamath pVersionCode, pkgFlags); 39cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root } 40cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 41cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root /** 42cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * New instance of PackageSetting replicating the original settings. 43cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root * Note that it keeps the same PackageParser.Package instance. 44cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root */ 45cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root PackageSetting(PackageSetting orig) { 46cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root super(orig); 47cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 48135936072b24b090fb63940aea41b408d855a4f3Amith Yamasani appId = orig.appId; 49cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root pkg = orig.pkg; 50cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root sharedUser = orig.sharedUser; 51cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root } 52cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root 53cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root @Override 54cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root public String toString() { 55cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root return "PackageSetting{" 56cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root + Integer.toHexString(System.identityHashCode(this)) 57135936072b24b090fb63940aea41b408d855a4f3Amith Yamasani + " " + name + "/" + appId + "}"; 58cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root } 5902e4d16ed9a0499ad72f2ff427e8bf0e85d7ae06Jeff Sharkey 6002e4d16ed9a0499ad72f2ff427e8bf0e85d7ae06Jeff Sharkey public int[] getGids() { 6102e4d16ed9a0499ad72f2ff427e8bf0e85d7ae06Jeff Sharkey return sharedUser != null ? sharedUser.gids : gids; 6202e4d16ed9a0499ad72f2ff427e8bf0e85d7ae06Jeff Sharkey } 63628946a6efd7931fac59b3236b58b53c58c6bf20Christopher Tate 64628946a6efd7931fac59b3236b58b53c58c6bf20Christopher Tate public boolean isPrivileged() { 65628946a6efd7931fac59b3236b58b53c58c6bf20Christopher Tate return (pkgFlags & ApplicationInfo.FLAG_PRIVILEGED) != 0; 66628946a6efd7931fac59b3236b58b53c58c6bf20Christopher Tate } 6702e4d16ed9a0499ad72f2ff427e8bf0e85d7ae06Jeff Sharkey} 68