diff options
Diffstat (limited to 'libs/binder/AppOpsManager.cpp')
-rw-r--r-- | libs/binder/AppOpsManager.cpp | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/libs/binder/AppOpsManager.cpp b/libs/binder/AppOpsManager.cpp index 9da9c13e54..60f047fd90 100644 --- a/libs/binder/AppOpsManager.cpp +++ b/libs/binder/AppOpsManager.cpp @@ -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; @@ -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; @@ -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)) { @@ -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); } } |