Loading libs/binder/AppOpsManager.cpp +21 −23 Original line number Diff line number Diff line Loading @@ -115,56 +115,54 @@ int32_t AppOpsManager::checkAudioOpNoThrow(int32_t op, int32_t usage, int32_t ui } int32_t AppOpsManager::noteOp(int32_t op, int32_t uid, const String16& callingPackage) { return noteOp(op, uid, callingPackage, String16(), String16()); return noteOp(op, uid, callingPackage, std::unique_ptr<String16>(), String16("Legacy AppOpsManager.noteOp call")); } int32_t AppOpsManager::noteOp(int32_t op, int32_t uid, const String16& callingPackage, const String16& featureId, const String16& message) { const std::unique_ptr<String16>& featureId, const String16& message) { sp<IAppOpsService> service = getService(); int32_t mode = service != nullptr ? service->noteOperation(op, uid, callingPackage) ? service->noteOperation(op, uid, callingPackage, featureId) : APP_OPS_MANAGER_UNAVAILABLE_MODE; if (mode == AppOpsManager::MODE_ALLOWED) { if (message.size() == 0) { markAppOpNoted(uid, callingPackage, op, featureId, String16("noteOp from native code")); } else { markAppOpNoted(uid, callingPackage, op, featureId, message); } } return mode; } int32_t AppOpsManager::startOpNoThrow(int32_t op, int32_t uid, const String16& callingPackage, bool startIfModeDefault) { return startOpNoThrow(op, uid, callingPackage, startIfModeDefault, String16(), String16()); return startOpNoThrow(op, uid, callingPackage, startIfModeDefault, std::unique_ptr<String16>(), String16("Legacy AppOpsManager.startOpNoThrow call")); } int32_t AppOpsManager::startOpNoThrow(int32_t op, int32_t uid, const String16& callingPackage, bool startIfModeDefault, const String16& featureId, const String16& message) { bool startIfModeDefault, const std::unique_ptr<String16>& featureId, const String16& message) { sp<IAppOpsService> service = getService(); int32_t mode = service != nullptr ? service->startOperation(getToken(service), op, uid, callingPackage, startIfModeDefault) : APP_OPS_MANAGER_UNAVAILABLE_MODE; featureId, startIfModeDefault) : APP_OPS_MANAGER_UNAVAILABLE_MODE; if (mode == AppOpsManager::MODE_ALLOWED) { if (message.size() == 0) { markAppOpNoted(uid, callingPackage, op, featureId, String16("startOp from native code")); } else { markAppOpNoted(uid, callingPackage, op, featureId, message); } } return mode; } void AppOpsManager::finishOp(int32_t op, int32_t uid, const String16& callingPackage) { finishOp(op, uid, callingPackage, std::unique_ptr<String16>()); } void AppOpsManager::finishOp(int32_t op, int32_t uid, const String16& callingPackage, const std::unique_ptr<String16>& callingFeatureId) { sp<IAppOpsService> service = getService(); if (service != nullptr) { service->finishOperation(getToken(service), op, uid, callingPackage); service->finishOperation(getToken(service), op, uid, callingPackage, callingFeatureId); } } Loading Loading @@ -207,7 +205,7 @@ bool AppOpsManager::shouldCollectNotes(int32_t opcode) { } void AppOpsManager::markAppOpNoted(int32_t uid, const String16& packageName, int32_t opCode, const String16& featureId, const String16& message) { const std::unique_ptr<String16>& featureId, const String16& message) { // check it the appops needs to be collected and cache result if (appOpsToNote[opCode] == 0) { if (shouldCollectNotes(opCode)) { Loading @@ -221,11 +219,11 @@ void AppOpsManager::markAppOpNoted(int32_t uid, const String16& packageName, int return; } noteAsyncOp(String16(), uid, packageName, opCode, featureId, message); noteAsyncOp(std::unique_ptr<String16>(), uid, packageName, opCode, featureId, message); } void AppOpsManager::noteAsyncOp(const String16& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const String16& featureId, void AppOpsManager::noteAsyncOp(const std::unique_ptr<String16>& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const std::unique_ptr<String16>& featureId, const String16& message) { sp<IAppOpsService> service = getService(); if (service != nullptr) { Loading libs/binder/IAppOpsService.cpp +27 −34 Original line number Diff line number Diff line Loading @@ -46,12 +46,14 @@ public: return reply.readInt32(); } virtual int32_t noteOperation(int32_t code, int32_t uid, const String16& packageName) { virtual int32_t noteOperation(int32_t code, int32_t uid, const String16& packageName, const std::unique_ptr<String16>& featureId) { Parcel data, reply; data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor()); data.writeInt32(code); data.writeInt32(uid); data.writeString16(packageName); data.writeString16(featureId); remote()->transact(NOTE_OPERATION_TRANSACTION, data, &reply); // fail on exception if (reply.readExceptionCode() != 0) return MODE_ERRORED; Loading @@ -59,13 +61,15 @@ public: } virtual int32_t startOperation(const sp<IBinder>& token, int32_t code, int32_t uid, const String16& packageName, bool startIfModeDefault) { const String16& packageName, const std::unique_ptr<String16>& featureId, bool startIfModeDefault) { Parcel data, reply; data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor()); data.writeStrongBinder(token); data.writeInt32(code); data.writeInt32(uid); data.writeString16(packageName); data.writeString16(featureId); data.writeInt32(startIfModeDefault ? 1 : 0); remote()->transact(START_OPERATION_TRANSACTION, data, &reply); // fail on exception Loading @@ -74,13 +78,14 @@ public: } virtual void finishOperation(const sp<IBinder>& token, int32_t code, int32_t uid, const String16& packageName) { const String16& packageName, const std::unique_ptr<String16>& featureId) { Parcel data, reply; data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor()); data.writeStrongBinder(token); data.writeInt32(code); data.writeInt32(uid); data.writeString16(packageName); data.writeString16(featureId); remote()->transact(FINISH_OPERATION_TRANSACTION, data, &reply); } Loading Loading @@ -144,37 +149,16 @@ public: remote()->transact(SET_CAMERA_AUDIO_RESTRICTION_TRANSACTION, data, &reply); } virtual void noteAsyncOp(const String16& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const String16& featureId, virtual void noteAsyncOp(const std::unique_ptr<String16>& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const std::unique_ptr<String16>& featureId, const String16& message) { Parcel data, reply; data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor()); // Convert empty callingPackage into null string if (callingPackageName.size() != 0) { data.writeString16(callingPackageName); } else { data.writeString16(nullptr, 0); } data.writeInt32(uid); // Convert empty packageName into null string if (packageName.size() != 0) { data.writeString16(packageName); } else { data.writeString16(nullptr, 0); } data.writeInt32(opCode); // Convert empty featureId into null string if (featureId.size() != 0) { data.writeString16(featureId); } else { data.writeString16(nullptr, 0); } data.writeString16(message); remote()->transact(NOTE_ASYNC_OP_TRANSACTION, data, &reply); } Loading Loading @@ -217,7 +201,9 @@ status_t BnAppOpsService::onTransact( int32_t code = data.readInt32(); int32_t uid = data.readInt32(); String16 packageName = data.readString16(); int32_t res = noteOperation(code, uid, packageName); std::unique_ptr<String16> featureId; data.readString16(&featureId); int32_t res = noteOperation(code, uid, packageName, featureId); reply->writeNoException(); reply->writeInt32(res); return NO_ERROR; Loading @@ -228,8 +214,11 @@ status_t BnAppOpsService::onTransact( int32_t code = data.readInt32(); int32_t uid = data.readInt32(); String16 packageName = data.readString16(); std::unique_ptr<String16> featureId; data.readString16(&featureId); bool startIfModeDefault = data.readInt32() == 1; int32_t res = startOperation(token, code, uid, packageName, startIfModeDefault); int32_t res = startOperation(token, code, uid, packageName, featureId, startIfModeDefault); reply->writeNoException(); reply->writeInt32(res); return NO_ERROR; Loading @@ -240,7 +229,9 @@ status_t BnAppOpsService::onTransact( int32_t code = data.readInt32(); int32_t uid = data.readInt32(); String16 packageName = data.readString16(); finishOperation(token, code, uid, packageName); std::unique_ptr<String16> featureId; data.readString16(&featureId); finishOperation(token, code, uid, packageName, featureId); reply->writeNoException(); return NO_ERROR; } break; Loading Loading @@ -296,11 +287,13 @@ status_t BnAppOpsService::onTransact( } break; case NOTE_ASYNC_OP_TRANSACTION: { CHECK_INTERFACE(IAppOpsService, data, reply); String16 callingPackageName = data.readString16(); std::unique_ptr<String16> callingPackageName; data.readString16(&callingPackageName); int32_t uid = data.readInt32(); String16 packageName = data.readString16(); int32_t opCode = data.readInt32(); String16 featureId = data.readString16(); std::unique_ptr<String16> featureId; data.readString16(&featureId); String16 message = data.readString16(); noteAsyncOp(callingPackageName, uid, packageName, opCode, featureId, message); reply->writeNoException(); Loading libs/binder/include/binder/AppOpsManager.h +10 −5 Original line number Diff line number Diff line Loading @@ -134,21 +134,26 @@ public: // const String16&) instead int32_t noteOp(int32_t op, int32_t uid, const String16& callingPackage); int32_t noteOp(int32_t op, int32_t uid, const String16& callingPackage, const String16& featureId, const String16& message); const std::unique_ptr<String16>& featureId, const String16& message); // @Deprecated, use startOpNoThrow(int32_t, int32_t, const String16&, bool, const String16&, // const String16&) instead int32_t startOpNoThrow(int32_t op, int32_t uid, const String16& callingPackage, bool startIfModeDefault); int32_t startOpNoThrow(int32_t op, int32_t uid, const String16& callingPackage, bool startIfModeDefault, const String16& featureId, const String16& message); bool startIfModeDefault, const std::unique_ptr<String16>& featureId, const String16& message); // @Deprecated, use finishOp(int32_t, int32_t, const String16&, bool, const String16&) instead void finishOp(int32_t op, int32_t uid, const String16& callingPackage); void finishOp(int32_t op, int32_t uid, const String16& callingPackage, const std::unique_ptr<String16>& featureId); void startWatchingMode(int32_t op, const String16& packageName, const sp<IAppOpsCallback>& callback); void stopWatchingMode(const sp<IAppOpsCallback>& callback); int32_t permissionToOpCode(const String16& permission); void setCameraAudioRestriction(int32_t mode); void noteAsyncOp(const String16& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const String16& featureId, const String16& message); void noteAsyncOp(const std::unique_ptr<String16>& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const std::unique_ptr<String16>& featureId, const String16& message); private: Mutex mLock; Loading @@ -156,7 +161,7 @@ private: sp<IAppOpsService> getService(); void markAppOpNoted(int32_t uid, const String16& packageName, int32_t opCode, const String16& featureId, const String16& message); const std::unique_ptr<String16>& featureId, const String16& message); bool shouldCollectNotes(int32_t opCode); }; Loading libs/binder/include/binder/IAppOpsService.h +7 −5 Original line number Diff line number Diff line Loading @@ -35,11 +35,13 @@ public: DECLARE_META_INTERFACE(AppOpsService) virtual int32_t checkOperation(int32_t code, int32_t uid, const String16& packageName) = 0; virtual int32_t noteOperation(int32_t code, int32_t uid, const String16& packageName) = 0; virtual int32_t noteOperation(int32_t code, int32_t uid, const String16& packageName, const std::unique_ptr<String16>& featureId) = 0; virtual int32_t startOperation(const sp<IBinder>& token, int32_t code, int32_t uid, const String16& packageName, bool startIfModeDefault) = 0; const String16& packageName, const std::unique_ptr<String16>& featureId, bool startIfModeDefault) = 0; virtual void finishOperation(const sp<IBinder>& token, int32_t code, int32_t uid, const String16& packageName) = 0; const String16& packageName, const std::unique_ptr<String16>& featureId) = 0; virtual void startWatchingMode(int32_t op, const String16& packageName, const sp<IAppOpsCallback>& callback) = 0; virtual void stopWatchingMode(const sp<IAppOpsCallback>& callback) = 0; Loading @@ -48,8 +50,8 @@ public: virtual int32_t checkAudioOperation(int32_t code, int32_t usage,int32_t uid, const String16& packageName) = 0; virtual void setCameraAudioRestriction(int32_t mode) = 0; virtual void noteAsyncOp(const String16& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const String16& featureId, virtual void noteAsyncOp(const std::unique_ptr<String16>& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const std::unique_ptr<String16>& featureId, const String16& message) = 0; virtual bool shouldCollectNotes(int32_t opCode) = 0; Loading Loading
libs/binder/AppOpsManager.cpp +21 −23 Original line number Diff line number Diff line Loading @@ -115,56 +115,54 @@ int32_t AppOpsManager::checkAudioOpNoThrow(int32_t op, int32_t usage, int32_t ui } int32_t AppOpsManager::noteOp(int32_t op, int32_t uid, const String16& callingPackage) { return noteOp(op, uid, callingPackage, String16(), String16()); return noteOp(op, uid, callingPackage, std::unique_ptr<String16>(), String16("Legacy AppOpsManager.noteOp call")); } int32_t AppOpsManager::noteOp(int32_t op, int32_t uid, const String16& callingPackage, const String16& featureId, const String16& message) { const std::unique_ptr<String16>& featureId, const String16& message) { sp<IAppOpsService> service = getService(); int32_t mode = service != nullptr ? service->noteOperation(op, uid, callingPackage) ? service->noteOperation(op, uid, callingPackage, featureId) : APP_OPS_MANAGER_UNAVAILABLE_MODE; if (mode == AppOpsManager::MODE_ALLOWED) { if (message.size() == 0) { markAppOpNoted(uid, callingPackage, op, featureId, String16("noteOp from native code")); } else { markAppOpNoted(uid, callingPackage, op, featureId, message); } } return mode; } int32_t AppOpsManager::startOpNoThrow(int32_t op, int32_t uid, const String16& callingPackage, bool startIfModeDefault) { return startOpNoThrow(op, uid, callingPackage, startIfModeDefault, String16(), String16()); return startOpNoThrow(op, uid, callingPackage, startIfModeDefault, std::unique_ptr<String16>(), String16("Legacy AppOpsManager.startOpNoThrow call")); } int32_t AppOpsManager::startOpNoThrow(int32_t op, int32_t uid, const String16& callingPackage, bool startIfModeDefault, const String16& featureId, const String16& message) { bool startIfModeDefault, const std::unique_ptr<String16>& featureId, const String16& message) { sp<IAppOpsService> service = getService(); int32_t mode = service != nullptr ? service->startOperation(getToken(service), op, uid, callingPackage, startIfModeDefault) : APP_OPS_MANAGER_UNAVAILABLE_MODE; featureId, startIfModeDefault) : APP_OPS_MANAGER_UNAVAILABLE_MODE; if (mode == AppOpsManager::MODE_ALLOWED) { if (message.size() == 0) { markAppOpNoted(uid, callingPackage, op, featureId, String16("startOp from native code")); } else { markAppOpNoted(uid, callingPackage, op, featureId, message); } } return mode; } void AppOpsManager::finishOp(int32_t op, int32_t uid, const String16& callingPackage) { finishOp(op, uid, callingPackage, std::unique_ptr<String16>()); } void AppOpsManager::finishOp(int32_t op, int32_t uid, const String16& callingPackage, const std::unique_ptr<String16>& callingFeatureId) { sp<IAppOpsService> service = getService(); if (service != nullptr) { service->finishOperation(getToken(service), op, uid, callingPackage); service->finishOperation(getToken(service), op, uid, callingPackage, callingFeatureId); } } Loading Loading @@ -207,7 +205,7 @@ bool AppOpsManager::shouldCollectNotes(int32_t opcode) { } void AppOpsManager::markAppOpNoted(int32_t uid, const String16& packageName, int32_t opCode, const String16& featureId, const String16& message) { const std::unique_ptr<String16>& featureId, const String16& message) { // check it the appops needs to be collected and cache result if (appOpsToNote[opCode] == 0) { if (shouldCollectNotes(opCode)) { Loading @@ -221,11 +219,11 @@ void AppOpsManager::markAppOpNoted(int32_t uid, const String16& packageName, int return; } noteAsyncOp(String16(), uid, packageName, opCode, featureId, message); noteAsyncOp(std::unique_ptr<String16>(), uid, packageName, opCode, featureId, message); } void AppOpsManager::noteAsyncOp(const String16& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const String16& featureId, void AppOpsManager::noteAsyncOp(const std::unique_ptr<String16>& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const std::unique_ptr<String16>& featureId, const String16& message) { sp<IAppOpsService> service = getService(); if (service != nullptr) { Loading
libs/binder/IAppOpsService.cpp +27 −34 Original line number Diff line number Diff line Loading @@ -46,12 +46,14 @@ public: return reply.readInt32(); } virtual int32_t noteOperation(int32_t code, int32_t uid, const String16& packageName) { virtual int32_t noteOperation(int32_t code, int32_t uid, const String16& packageName, const std::unique_ptr<String16>& featureId) { Parcel data, reply; data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor()); data.writeInt32(code); data.writeInt32(uid); data.writeString16(packageName); data.writeString16(featureId); remote()->transact(NOTE_OPERATION_TRANSACTION, data, &reply); // fail on exception if (reply.readExceptionCode() != 0) return MODE_ERRORED; Loading @@ -59,13 +61,15 @@ public: } virtual int32_t startOperation(const sp<IBinder>& token, int32_t code, int32_t uid, const String16& packageName, bool startIfModeDefault) { const String16& packageName, const std::unique_ptr<String16>& featureId, bool startIfModeDefault) { Parcel data, reply; data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor()); data.writeStrongBinder(token); data.writeInt32(code); data.writeInt32(uid); data.writeString16(packageName); data.writeString16(featureId); data.writeInt32(startIfModeDefault ? 1 : 0); remote()->transact(START_OPERATION_TRANSACTION, data, &reply); // fail on exception Loading @@ -74,13 +78,14 @@ public: } virtual void finishOperation(const sp<IBinder>& token, int32_t code, int32_t uid, const String16& packageName) { const String16& packageName, const std::unique_ptr<String16>& featureId) { Parcel data, reply; data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor()); data.writeStrongBinder(token); data.writeInt32(code); data.writeInt32(uid); data.writeString16(packageName); data.writeString16(featureId); remote()->transact(FINISH_OPERATION_TRANSACTION, data, &reply); } Loading Loading @@ -144,37 +149,16 @@ public: remote()->transact(SET_CAMERA_AUDIO_RESTRICTION_TRANSACTION, data, &reply); } virtual void noteAsyncOp(const String16& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const String16& featureId, virtual void noteAsyncOp(const std::unique_ptr<String16>& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const std::unique_ptr<String16>& featureId, const String16& message) { Parcel data, reply; data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor()); // Convert empty callingPackage into null string if (callingPackageName.size() != 0) { data.writeString16(callingPackageName); } else { data.writeString16(nullptr, 0); } data.writeInt32(uid); // Convert empty packageName into null string if (packageName.size() != 0) { data.writeString16(packageName); } else { data.writeString16(nullptr, 0); } data.writeInt32(opCode); // Convert empty featureId into null string if (featureId.size() != 0) { data.writeString16(featureId); } else { data.writeString16(nullptr, 0); } data.writeString16(message); remote()->transact(NOTE_ASYNC_OP_TRANSACTION, data, &reply); } Loading Loading @@ -217,7 +201,9 @@ status_t BnAppOpsService::onTransact( int32_t code = data.readInt32(); int32_t uid = data.readInt32(); String16 packageName = data.readString16(); int32_t res = noteOperation(code, uid, packageName); std::unique_ptr<String16> featureId; data.readString16(&featureId); int32_t res = noteOperation(code, uid, packageName, featureId); reply->writeNoException(); reply->writeInt32(res); return NO_ERROR; Loading @@ -228,8 +214,11 @@ status_t BnAppOpsService::onTransact( int32_t code = data.readInt32(); int32_t uid = data.readInt32(); String16 packageName = data.readString16(); std::unique_ptr<String16> featureId; data.readString16(&featureId); bool startIfModeDefault = data.readInt32() == 1; int32_t res = startOperation(token, code, uid, packageName, startIfModeDefault); int32_t res = startOperation(token, code, uid, packageName, featureId, startIfModeDefault); reply->writeNoException(); reply->writeInt32(res); return NO_ERROR; Loading @@ -240,7 +229,9 @@ status_t BnAppOpsService::onTransact( int32_t code = data.readInt32(); int32_t uid = data.readInt32(); String16 packageName = data.readString16(); finishOperation(token, code, uid, packageName); std::unique_ptr<String16> featureId; data.readString16(&featureId); finishOperation(token, code, uid, packageName, featureId); reply->writeNoException(); return NO_ERROR; } break; Loading Loading @@ -296,11 +287,13 @@ status_t BnAppOpsService::onTransact( } break; case NOTE_ASYNC_OP_TRANSACTION: { CHECK_INTERFACE(IAppOpsService, data, reply); String16 callingPackageName = data.readString16(); std::unique_ptr<String16> callingPackageName; data.readString16(&callingPackageName); int32_t uid = data.readInt32(); String16 packageName = data.readString16(); int32_t opCode = data.readInt32(); String16 featureId = data.readString16(); std::unique_ptr<String16> featureId; data.readString16(&featureId); String16 message = data.readString16(); noteAsyncOp(callingPackageName, uid, packageName, opCode, featureId, message); reply->writeNoException(); Loading
libs/binder/include/binder/AppOpsManager.h +10 −5 Original line number Diff line number Diff line Loading @@ -134,21 +134,26 @@ public: // const String16&) instead int32_t noteOp(int32_t op, int32_t uid, const String16& callingPackage); int32_t noteOp(int32_t op, int32_t uid, const String16& callingPackage, const String16& featureId, const String16& message); const std::unique_ptr<String16>& featureId, const String16& message); // @Deprecated, use startOpNoThrow(int32_t, int32_t, const String16&, bool, const String16&, // const String16&) instead int32_t startOpNoThrow(int32_t op, int32_t uid, const String16& callingPackage, bool startIfModeDefault); int32_t startOpNoThrow(int32_t op, int32_t uid, const String16& callingPackage, bool startIfModeDefault, const String16& featureId, const String16& message); bool startIfModeDefault, const std::unique_ptr<String16>& featureId, const String16& message); // @Deprecated, use finishOp(int32_t, int32_t, const String16&, bool, const String16&) instead void finishOp(int32_t op, int32_t uid, const String16& callingPackage); void finishOp(int32_t op, int32_t uid, const String16& callingPackage, const std::unique_ptr<String16>& featureId); void startWatchingMode(int32_t op, const String16& packageName, const sp<IAppOpsCallback>& callback); void stopWatchingMode(const sp<IAppOpsCallback>& callback); int32_t permissionToOpCode(const String16& permission); void setCameraAudioRestriction(int32_t mode); void noteAsyncOp(const String16& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const String16& featureId, const String16& message); void noteAsyncOp(const std::unique_ptr<String16>& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const std::unique_ptr<String16>& featureId, const String16& message); private: Mutex mLock; Loading @@ -156,7 +161,7 @@ private: sp<IAppOpsService> getService(); void markAppOpNoted(int32_t uid, const String16& packageName, int32_t opCode, const String16& featureId, const String16& message); const std::unique_ptr<String16>& featureId, const String16& message); bool shouldCollectNotes(int32_t opCode); }; Loading
libs/binder/include/binder/IAppOpsService.h +7 −5 Original line number Diff line number Diff line Loading @@ -35,11 +35,13 @@ public: DECLARE_META_INTERFACE(AppOpsService) virtual int32_t checkOperation(int32_t code, int32_t uid, const String16& packageName) = 0; virtual int32_t noteOperation(int32_t code, int32_t uid, const String16& packageName) = 0; virtual int32_t noteOperation(int32_t code, int32_t uid, const String16& packageName, const std::unique_ptr<String16>& featureId) = 0; virtual int32_t startOperation(const sp<IBinder>& token, int32_t code, int32_t uid, const String16& packageName, bool startIfModeDefault) = 0; const String16& packageName, const std::unique_ptr<String16>& featureId, bool startIfModeDefault) = 0; virtual void finishOperation(const sp<IBinder>& token, int32_t code, int32_t uid, const String16& packageName) = 0; const String16& packageName, const std::unique_ptr<String16>& featureId) = 0; virtual void startWatchingMode(int32_t op, const String16& packageName, const sp<IAppOpsCallback>& callback) = 0; virtual void stopWatchingMode(const sp<IAppOpsCallback>& callback) = 0; Loading @@ -48,8 +50,8 @@ public: virtual int32_t checkAudioOperation(int32_t code, int32_t usage,int32_t uid, const String16& packageName) = 0; virtual void setCameraAudioRestriction(int32_t mode) = 0; virtual void noteAsyncOp(const String16& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const String16& featureId, virtual void noteAsyncOp(const std::unique_ptr<String16>& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const std::unique_ptr<String16>& featureId, const String16& message) = 0; virtual bool shouldCollectNotes(int32_t opCode) = 0; Loading