Loading libs/binder/AppOpsManager.cpp +22 −11 Original line number Diff line number Diff line Loading @@ -115,18 +115,23 @@ 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("noteOp from native code")); return noteOp(op, uid, callingPackage, String16(), String16()); } int32_t AppOpsManager::noteOp(int32_t op, int32_t uid, const String16& callingPackage, const String16& message) { const String16& featureId, const String16& message) { sp<IAppOpsService> service = getService(); int32_t mode = service != nullptr ? service->noteOperation(op, uid, callingPackage) : APP_OPS_MANAGER_UNAVAILABLE_MODE; if (mode == AppOpsManager::MODE_ALLOWED) { markAppOpNoted(uid, callingPackage, op, message); if (message.size() == 0) { markAppOpNoted(uid, callingPackage, op, featureId, String16("noteOp from native code")); } else { markAppOpNoted(uid, callingPackage, op, featureId, message); } } return mode; Loading @@ -134,19 +139,23 @@ int32_t AppOpsManager::noteOp(int32_t op, int32_t uid, const String16& callingPa int32_t AppOpsManager::startOpNoThrow(int32_t op, int32_t uid, const String16& callingPackage, bool startIfModeDefault) { return startOpNoThrow(op, uid, callingPackage, startIfModeDefault, String16("startOpNoThrow from native code")); return startOpNoThrow(op, uid, callingPackage, startIfModeDefault, String16(), String16()); } int32_t AppOpsManager::startOpNoThrow(int32_t op, int32_t uid, const String16& callingPackage, bool startIfModeDefault, const String16& message) { bool startIfModeDefault, const 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; if (mode == AppOpsManager::MODE_ALLOWED) { markAppOpNoted(uid, callingPackage, op, message); if (message.size() == 0) { markAppOpNoted(uid, callingPackage, op, featureId, String16("startOp from native code")); } else { markAppOpNoted(uid, callingPackage, op, featureId, message); } } return mode; Loading Loading @@ -198,7 +207,7 @@ bool AppOpsManager::shouldCollectNotes(int32_t opcode) { } void AppOpsManager::markAppOpNoted(int32_t uid, const String16& packageName, int32_t opCode, const String16& message) { const String16& featureId, const String16& message) { // check it the appops needs to be collected and cache result if (appOpsToNote[opCode] == 0) { if (shouldCollectNotes(opCode)) { Loading @@ -212,14 +221,16 @@ void AppOpsManager::markAppOpNoted(int32_t uid, const String16& packageName, int return; } noteAsyncOp(String16(), uid, packageName, opCode, message); noteAsyncOp(String16(), uid, packageName, opCode, featureId, message); } void AppOpsManager::noteAsyncOp(const String16& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const String16& message) { const String16& packageName, int32_t opCode, const String16& featureId, const String16& message) { sp<IAppOpsService> service = getService(); if (service != nullptr) { return service->noteAsyncOp(callingPackageName, uid, packageName, opCode, message); return service->noteAsyncOp(callingPackageName, uid, packageName, opCode, featureId, message); } } Loading libs/binder/IAppOpsService.cpp +12 −2 Original line number Diff line number Diff line Loading @@ -145,7 +145,8 @@ public: } virtual void noteAsyncOp(const String16& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const String16& message) { const String16& packageName, int32_t opCode, const String16& featureId, const String16& message) { Parcel data, reply; data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor()); Loading @@ -166,6 +167,14 @@ public: } 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 @@ -291,8 +300,9 @@ status_t BnAppOpsService::onTransact( int32_t uid = data.readInt32(); String16 packageName = data.readString16(); int32_t opCode = data.readInt32(); String16 featureId = data.readString16(); String16 message = data.readString16(); noteAsyncOp(callingPackageName, uid, packageName, opCode, message); noteAsyncOp(callingPackageName, uid, packageName, opCode, featureId, message); reply->writeNoException(); return NO_ERROR; } break; Loading libs/binder/include/binder/AppOpsManager.h +8 −7 Original line number Diff line number Diff line Loading @@ -130,16 +130,17 @@ public: int32_t checkOp(int32_t op, int32_t uid, const String16& callingPackage); int32_t checkAudioOpNoThrow(int32_t op, int32_t usage, int32_t uid, const String16& callingPackage); // @Deprecated, use noteOp(int32_t, int32_t uid, const String16&, const String16&) instead // @Deprecated, use noteOp(int32_t, int32_t uid, const String16&, const String16&, // 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& message); // @Deprecated, use startOpNoThrow(int32_t, int32_t, const String16&, bool, const String16&) // instead const 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& message); bool startIfModeDefault, const String16& featureId, const String16& message); void finishOp(int32_t op, int32_t uid, const String16& callingPackage); void startWatchingMode(int32_t op, const String16& packageName, const sp<IAppOpsCallback>& callback); Loading @@ -147,7 +148,7 @@ public: 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& message); int32_t opCode, const String16& featureId, const String16& message); private: Mutex mLock; Loading @@ -155,7 +156,7 @@ private: sp<IAppOpsService> getService(); void markAppOpNoted(int32_t uid, const String16& packageName, int32_t opCode, const String16& message); const String16& featureId, const String16& message); bool shouldCollectNotes(int32_t opCode); }; Loading libs/binder/include/binder/IAppOpsService.h +2 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,8 @@ public: 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& message) = 0; const String16& packageName, int32_t opCode, const String16& featureId, const String16& message) = 0; virtual bool shouldCollectNotes(int32_t opCode) = 0; enum { Loading Loading
libs/binder/AppOpsManager.cpp +22 −11 Original line number Diff line number Diff line Loading @@ -115,18 +115,23 @@ 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("noteOp from native code")); return noteOp(op, uid, callingPackage, String16(), String16()); } int32_t AppOpsManager::noteOp(int32_t op, int32_t uid, const String16& callingPackage, const String16& message) { const String16& featureId, const String16& message) { sp<IAppOpsService> service = getService(); int32_t mode = service != nullptr ? service->noteOperation(op, uid, callingPackage) : APP_OPS_MANAGER_UNAVAILABLE_MODE; if (mode == AppOpsManager::MODE_ALLOWED) { markAppOpNoted(uid, callingPackage, op, message); if (message.size() == 0) { markAppOpNoted(uid, callingPackage, op, featureId, String16("noteOp from native code")); } else { markAppOpNoted(uid, callingPackage, op, featureId, message); } } return mode; Loading @@ -134,19 +139,23 @@ int32_t AppOpsManager::noteOp(int32_t op, int32_t uid, const String16& callingPa int32_t AppOpsManager::startOpNoThrow(int32_t op, int32_t uid, const String16& callingPackage, bool startIfModeDefault) { return startOpNoThrow(op, uid, callingPackage, startIfModeDefault, String16("startOpNoThrow from native code")); return startOpNoThrow(op, uid, callingPackage, startIfModeDefault, String16(), String16()); } int32_t AppOpsManager::startOpNoThrow(int32_t op, int32_t uid, const String16& callingPackage, bool startIfModeDefault, const String16& message) { bool startIfModeDefault, const 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; if (mode == AppOpsManager::MODE_ALLOWED) { markAppOpNoted(uid, callingPackage, op, message); if (message.size() == 0) { markAppOpNoted(uid, callingPackage, op, featureId, String16("startOp from native code")); } else { markAppOpNoted(uid, callingPackage, op, featureId, message); } } return mode; Loading Loading @@ -198,7 +207,7 @@ bool AppOpsManager::shouldCollectNotes(int32_t opcode) { } void AppOpsManager::markAppOpNoted(int32_t uid, const String16& packageName, int32_t opCode, const String16& message) { const String16& featureId, const String16& message) { // check it the appops needs to be collected and cache result if (appOpsToNote[opCode] == 0) { if (shouldCollectNotes(opCode)) { Loading @@ -212,14 +221,16 @@ void AppOpsManager::markAppOpNoted(int32_t uid, const String16& packageName, int return; } noteAsyncOp(String16(), uid, packageName, opCode, message); noteAsyncOp(String16(), uid, packageName, opCode, featureId, message); } void AppOpsManager::noteAsyncOp(const String16& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const String16& message) { const String16& packageName, int32_t opCode, const String16& featureId, const String16& message) { sp<IAppOpsService> service = getService(); if (service != nullptr) { return service->noteAsyncOp(callingPackageName, uid, packageName, opCode, message); return service->noteAsyncOp(callingPackageName, uid, packageName, opCode, featureId, message); } } Loading
libs/binder/IAppOpsService.cpp +12 −2 Original line number Diff line number Diff line Loading @@ -145,7 +145,8 @@ public: } virtual void noteAsyncOp(const String16& callingPackageName, int32_t uid, const String16& packageName, int32_t opCode, const String16& message) { const String16& packageName, int32_t opCode, const String16& featureId, const String16& message) { Parcel data, reply; data.writeInterfaceToken(IAppOpsService::getInterfaceDescriptor()); Loading @@ -166,6 +167,14 @@ public: } 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 @@ -291,8 +300,9 @@ status_t BnAppOpsService::onTransact( int32_t uid = data.readInt32(); String16 packageName = data.readString16(); int32_t opCode = data.readInt32(); String16 featureId = data.readString16(); String16 message = data.readString16(); noteAsyncOp(callingPackageName, uid, packageName, opCode, message); noteAsyncOp(callingPackageName, uid, packageName, opCode, featureId, message); reply->writeNoException(); return NO_ERROR; } break; Loading
libs/binder/include/binder/AppOpsManager.h +8 −7 Original line number Diff line number Diff line Loading @@ -130,16 +130,17 @@ public: int32_t checkOp(int32_t op, int32_t uid, const String16& callingPackage); int32_t checkAudioOpNoThrow(int32_t op, int32_t usage, int32_t uid, const String16& callingPackage); // @Deprecated, use noteOp(int32_t, int32_t uid, const String16&, const String16&) instead // @Deprecated, use noteOp(int32_t, int32_t uid, const String16&, const String16&, // 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& message); // @Deprecated, use startOpNoThrow(int32_t, int32_t, const String16&, bool, const String16&) // instead const 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& message); bool startIfModeDefault, const String16& featureId, const String16& message); void finishOp(int32_t op, int32_t uid, const String16& callingPackage); void startWatchingMode(int32_t op, const String16& packageName, const sp<IAppOpsCallback>& callback); Loading @@ -147,7 +148,7 @@ public: 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& message); int32_t opCode, const String16& featureId, const String16& message); private: Mutex mLock; Loading @@ -155,7 +156,7 @@ private: sp<IAppOpsService> getService(); void markAppOpNoted(int32_t uid, const String16& packageName, int32_t opCode, const String16& message); const String16& featureId, const String16& message); bool shouldCollectNotes(int32_t opCode); }; Loading
libs/binder/include/binder/IAppOpsService.h +2 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,8 @@ public: 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& message) = 0; const String16& packageName, int32_t opCode, const String16& featureId, const String16& message) = 0; virtual bool shouldCollectNotes(int32_t opCode) = 0; enum { Loading