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
19cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Rootimport android.content.pm.ApplicationInfo;
20d5752bdc8fd39d4f0a508f9088c538e30e73044aSvet Ganov
2182b0842051a93764e96a68072da1a220f00c2c27Todd Kennedyimport com.android.server.pm.permission.PermissionsState;
2282b0842051a93764e96a68072da1a220f00c2c27Todd Kennedy
23c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslavabstract class SettingBase {
24cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root    int pkgFlags;
25b9f8a5204a1b0b3919fa921e858d04124c582828Alex Klyubin    int pkgPrivateFlags;
26cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root
2737f05184b5641366b59c540ad6bf3e3b2a1ac6eaSvet Ganov    protected final PermissionsState mPermissionsState;
28cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root
29c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav    SettingBase(int pkgFlags, int pkgPrivateFlags) {
30cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root        setFlags(pkgFlags);
31b9f8a5204a1b0b3919fa921e858d04124c582828Alex Klyubin        setPrivateFlags(pkgPrivateFlags);
32c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav        mPermissionsState = new PermissionsState();
33cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root    }
34cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root
35788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy    SettingBase(SettingBase orig) {
36788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy        mPermissionsState = new PermissionsState();
37788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy        doCopy(orig);
38788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy    }
39788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy
40788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy    public void copyFrom(SettingBase orig) {
41788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy        doCopy(orig);
42788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy    }
43788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy
44788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy    private void doCopy(SettingBase orig) {
45788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy        pkgFlags = orig.pkgFlags;
46788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy        pkgPrivateFlags = orig.pkgPrivateFlags;
47788c8423d19972389b82a23dec297eb27d819c86Todd Kennedy        mPermissionsState.copyFrom(orig.mPermissionsState);
48c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav    }
49cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root
50c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav    public PermissionsState getPermissionsState() {
51c6d1c345f41cf817bf2c07c97b97107d94296064Svetoslav        return mPermissionsState;
52cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root    }
53cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root
54cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root    void setFlags(int pkgFlags) {
55cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root        this.pkgFlags = pkgFlags
56cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root                & (ApplicationInfo.FLAG_SYSTEM
57cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root                        | ApplicationInfo.FLAG_EXTERNAL_STORAGE);
58cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root    }
59b9f8a5204a1b0b3919fa921e858d04124c582828Alex Klyubin
60b9f8a5204a1b0b3919fa921e858d04124c582828Alex Klyubin    void setPrivateFlags(int pkgPrivateFlags) {
61b9f8a5204a1b0b3919fa921e858d04124c582828Alex Klyubin        this.pkgPrivateFlags = pkgPrivateFlags
62b9f8a5204a1b0b3919fa921e858d04124c582828Alex Klyubin                & (ApplicationInfo.PRIVATE_FLAG_PRIVILEGED
63087dce20e3a7137e94607c060fd825d1f8952572Svet Ganov                | ApplicationInfo.PRIVATE_FLAG_OEM
64002fdbdb950ebbf40331a27de33b80db33e40d30Jiyong Park                | ApplicationInfo.PRIVATE_FLAG_VENDOR
651713d9e97aada3dc695800c18b1025238a11629dJaekyun Seok                | ApplicationInfo.PRIVATE_FLAG_PRODUCT
66bdbc9692c7cb365d9d3f239baa2377724a6f7bc8Fyodor Kupolov                | ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK
67bdbc9692c7cb365d9d3f239baa2377724a6f7bc8Fyodor Kupolov                | ApplicationInfo.PRIVATE_FLAG_REQUIRED_FOR_SYSTEM_USER);
68b9f8a5204a1b0b3919fa921e858d04124c582828Alex Klyubin    }
69cf0b38ca6e5aa5efded7dbdbb623f6cd2746c96aKenny Root}
70