15da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn/* 25da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn * Copyright (C) 2013 The Android Open Source Project 35da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn * 45da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License"); 55da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn * you may not use this file except in compliance with the License. 65da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn * You may obtain a copy of the License at 75da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn * 85da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn * http://www.apache.org/licenses/LICENSE-2.0 95da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn * 105da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn * Unless required by applicable law or agreed to in writing, software 115da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS, 125da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn * See the License for the specific language governing permissions and 145da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn * limitations under the License. 155da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn */ 165da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 175da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn// 185da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn#ifndef ANDROID_IAPP_OPS_SERVICE_H 195da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn#define ANDROID_IAPP_OPS_SERVICE_H 205da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 215da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn#include <binder/IAppOpsCallback.h> 225da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn#include <binder/IInterface.h> 235da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 245da5ca520cca085528588f6067acb1c437001ef2Dianne Hackbornnamespace android { 255da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 265da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn// ---------------------------------------------------------------------- 275da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 285da5ca520cca085528588f6067acb1c437001ef2Dianne Hackbornclass IAppOpsService : public IInterface 295da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn{ 305da5ca520cca085528588f6067acb1c437001ef2Dianne Hackbornpublic: 315da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn DECLARE_META_INTERFACE(AppOpsService); 325da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 335da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn virtual int32_t checkOperation(int32_t code, int32_t uid, const String16& packageName) = 0; 345da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn virtual int32_t noteOperation(int32_t code, int32_t uid, const String16& packageName) = 0; 35913b63d235a982174b66acad95ca2f87ac8a1982Dianne Hackborn virtual int32_t startOperation(const sp<IBinder>& token, int32_t code, int32_t uid, 36913b63d235a982174b66acad95ca2f87ac8a1982Dianne Hackborn const String16& packageName) = 0; 37913b63d235a982174b66acad95ca2f87ac8a1982Dianne Hackborn virtual void finishOperation(const sp<IBinder>& token, int32_t code, int32_t uid, 38913b63d235a982174b66acad95ca2f87ac8a1982Dianne Hackborn const String16& packageName) = 0; 395da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn virtual void startWatchingMode(int32_t op, const String16& packageName, 405da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn const sp<IAppOpsCallback>& callback) = 0; 415da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn virtual void stopWatchingMode(const sp<IAppOpsCallback>& callback) = 0; 42913b63d235a982174b66acad95ca2f87ac8a1982Dianne Hackborn virtual sp<IBinder> getToken(const sp<IBinder>& clientToken) = 0; 43b412f6e203b38f8047f760261a5e3dc6d0722f08Svetoslav virtual int32_t permissionToOpCode(const String16& permission) = 0; 445da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 455da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn enum { 465da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn CHECK_OPERATION_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION, 475da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn NOTE_OPERATION_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION+1, 485da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn START_OPERATION_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION+2, 495da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn FINISH_OPERATION_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION+3, 505da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn START_WATCHING_MODE_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION+4, 51913b63d235a982174b66acad95ca2f87ac8a1982Dianne Hackborn STOP_WATCHING_MODE_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION+5, 52913b63d235a982174b66acad95ca2f87ac8a1982Dianne Hackborn GET_TOKEN_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION+6, 53b412f6e203b38f8047f760261a5e3dc6d0722f08Svetoslav PERMISSION_TO_OP_CODE_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION+7, 545da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn }; 55e88a85e0d0a25c943e974114557770ba10b81847Eino-Ville Talvala 56e88a85e0d0a25c943e974114557770ba10b81847Eino-Ville Talvala enum { 57e88a85e0d0a25c943e974114557770ba10b81847Eino-Ville Talvala MODE_ALLOWED = 0, 58e88a85e0d0a25c943e974114557770ba10b81847Eino-Ville Talvala MODE_IGNORED = 1, 59e88a85e0d0a25c943e974114557770ba10b81847Eino-Ville Talvala MODE_ERRORED = 2 60e88a85e0d0a25c943e974114557770ba10b81847Eino-Ville Talvala }; 615da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn}; 625da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 635da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn// ---------------------------------------------------------------------- 645da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 655da5ca520cca085528588f6067acb1c437001ef2Dianne Hackbornclass BnAppOpsService : public BnInterface<IAppOpsService> 665da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn{ 675da5ca520cca085528588f6067acb1c437001ef2Dianne Hackbornpublic: 685da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn virtual status_t onTransact( uint32_t code, 695da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn const Parcel& data, 705da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn Parcel* reply, 715da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn uint32_t flags = 0); 725da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn}; 735da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 745da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn// ---------------------------------------------------------------------- 755da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 765da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn}; // namespace android 775da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 785da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn#endif // ANDROID_IAPP_OPS_SERVICE_H 79