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; 435da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 445da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn enum { 455da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn CHECK_OPERATION_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION, 465da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn NOTE_OPERATION_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION+1, 475da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn START_OPERATION_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION+2, 485da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn FINISH_OPERATION_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION+3, 495da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn START_WATCHING_MODE_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION+4, 50913b63d235a982174b66acad95ca2f87ac8a1982Dianne Hackborn STOP_WATCHING_MODE_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION+5, 51913b63d235a982174b66acad95ca2f87ac8a1982Dianne Hackborn GET_TOKEN_TRANSACTION = IBinder::FIRST_CALL_TRANSACTION+6, 525da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn }; 53e88a85e0d0a25c943e974114557770ba10b81847Eino-Ville Talvala 54e88a85e0d0a25c943e974114557770ba10b81847Eino-Ville Talvala enum { 55e88a85e0d0a25c943e974114557770ba10b81847Eino-Ville Talvala MODE_ALLOWED = 0, 56e88a85e0d0a25c943e974114557770ba10b81847Eino-Ville Talvala MODE_IGNORED = 1, 57e88a85e0d0a25c943e974114557770ba10b81847Eino-Ville Talvala MODE_ERRORED = 2 58e88a85e0d0a25c943e974114557770ba10b81847Eino-Ville Talvala }; 595da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn}; 605da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 615da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn// ---------------------------------------------------------------------- 625da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 635da5ca520cca085528588f6067acb1c437001ef2Dianne Hackbornclass BnAppOpsService : public BnInterface<IAppOpsService> 645da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn{ 655da5ca520cca085528588f6067acb1c437001ef2Dianne Hackbornpublic: 665da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn virtual status_t onTransact( uint32_t code, 675da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn const Parcel& data, 685da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn Parcel* reply, 695da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn uint32_t flags = 0); 705da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn}; 715da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 725da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn// ---------------------------------------------------------------------- 735da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 745da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn}; // namespace android 755da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn 765da5ca520cca085528588f6067acb1c437001ef2Dianne Hackborn#endif // ANDROID_IAPP_OPS_SERVICE_H 77