1edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project/*
2edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Copyright (C) 2005 The Android Open Source Project
3edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project *
4edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * you may not use this file except in compliance with the License.
6edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * You may obtain a copy of the License at
7edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project *
8edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project *
10edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * See the License for the specific language governing permissions and
14edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * limitations under the License.
15edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */
16edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
17edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project//
18edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#ifndef ANDROID_IPERMISSION_CONTROLLER_H
19edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#define ANDROID_IPERMISSION_CONTROLLER_H
20edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
21c5b2c0bf8007562536b822eb060fc54a01f8e08bMathias Agopian#include <binder/IInterface.h>
22f1377f506c764a8b254b60ee28e38e12ccc8135cSvet Ganov#include <stdlib.h>
23edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
24edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectnamespace android {
25edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
26edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// ----------------------------------------------------------------------
27edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
28edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectclass IPermissionController : public IInterface
29edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{
30edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectpublic:
31edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project    DECLARE_META_INTERFACE(PermissionController);
32edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
33f1377f506c764a8b254b60ee28e38e12ccc8135cSvet Ganov    virtual bool checkPermission(const String16& permission, int32_t pid, int32_t uid) = 0;
34f1377f506c764a8b254b60ee28e38e12ccc8135cSvet Ganov
35f1377f506c764a8b254b60ee28e38e12ccc8135cSvet Ganov    virtual void getPackagesForUid(const uid_t uid, Vector<String16> &packages) = 0;
36f1377f506c764a8b254b60ee28e38e12ccc8135cSvet Ganov
37b412f6e203b38f8047f760261a5e3dc6d0722f08Svetoslav    virtual bool isRuntimePermission(const String16& permission) = 0;
38b412f6e203b38f8047f760261a5e3dc6d0722f08Svetoslav
39edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project    enum {
40f1377f506c764a8b254b60ee28e38e12ccc8135cSvet Ganov        CHECK_PERMISSION_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION,
41b412f6e203b38f8047f760261a5e3dc6d0722f08Svetoslav        GET_PACKAGES_FOR_UID_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION + 1,
42b412f6e203b38f8047f760261a5e3dc6d0722f08Svetoslav        IS_RUNTIME_PERMISSION_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION + 2
43edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project    };
44edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project};
45edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
46edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// ----------------------------------------------------------------------
47edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
48edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectclass BnPermissionController : public BnInterface<IPermissionController>
49edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{
50edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectpublic:
51edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project    virtual status_t    onTransact( uint32_t code,
52edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project                                    const Parcel& data,
53edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project                                    Parcel* reply,
54edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project                                    uint32_t flags = 0);
55edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project};
56edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
57edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// ----------------------------------------------------------------------
58edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
59edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; // namespace android
60edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
61edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#endif // ANDROID_IPERMISSION_CONTROLLER_H
62edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project
63