summaryrefslogtreecommitdiff
path: root/libs/binder/AppOpsManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/binder/AppOpsManager.cpp')
-rw-r--r--libs/binder/AppOpsManager.cpp33
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);
}
}