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