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