summaryrefslogtreecommitdiffstats
path: root/core/java/android/service
diff options
context:
space:
mode:
authorAdrian Roos <roosa@google.com>2014-07-29 15:09:57 +0200
committerAdrian Roos <roosa@google.com>2014-07-30 12:34:18 +0000
commit8f21158fe64eb93ff005dc1b831b282b95531023 (patch)
treeca5054639d03e4ac0b13536eb59ce723e50f0b81 /core/java/android/service
parent7861c663fd64af33ec2a4c5ad653c806dc8bd994 (diff)
downloadframeworks_base-8f21158fe64eb93ff005dc1b831b282b95531023.zip
frameworks_base-8f21158fe64eb93ff005dc1b831b282b95531023.tar.gz
frameworks_base-8f21158fe64eb93ff005dc1b831b282b95531023.tar.bz2
Trust: Make setEnabledFeatures asynchronous
Unsynchronizes the call into app code from setEnabledFeatures, replacing it with a callback mechanism. Also makes this actually work by fixing the check in TrustManagerService to take into account whitelisting. Change-Id: I0831752cd2d3158eda9c8404a5569498f11ac2ac
Diffstat (limited to 'core/java/android/service')
-rw-r--r--core/java/android/service/trust/ITrustAgentService.aidl2
-rw-r--r--core/java/android/service/trust/ITrustAgentServiceCallback.aidl2
-rw-r--r--core/java/android/service/trust/TrustAgentService.java24
3 files changed, 22 insertions, 6 deletions
diff --git a/core/java/android/service/trust/ITrustAgentService.aidl b/core/java/android/service/trust/ITrustAgentService.aidl
index 49eb7be..637d080 100644
--- a/core/java/android/service/trust/ITrustAgentService.aidl
+++ b/core/java/android/service/trust/ITrustAgentService.aidl
@@ -25,5 +25,5 @@ import android.service.trust.ITrustAgentServiceCallback;
interface ITrustAgentService {
oneway void onUnlockAttempt(boolean successful);
oneway void setCallback(ITrustAgentServiceCallback callback);
- boolean setTrustAgentFeaturesEnabled(in Bundle options);
+ oneway void setTrustAgentFeaturesEnabled(in Bundle options, IBinder token);
}
diff --git a/core/java/android/service/trust/ITrustAgentServiceCallback.aidl b/core/java/android/service/trust/ITrustAgentServiceCallback.aidl
index 193ac59..b107bcc 100644
--- a/core/java/android/service/trust/ITrustAgentServiceCallback.aidl
+++ b/core/java/android/service/trust/ITrustAgentServiceCallback.aidl
@@ -16,6 +16,7 @@
package android.service.trust;
import android.os.Bundle;
+import android.os.IBinder;
import android.os.UserHandle;
/**
@@ -26,4 +27,5 @@ oneway interface ITrustAgentServiceCallback {
void grantTrust(CharSequence message, long durationMs, boolean initiatedByUser);
void revokeTrust();
void setManagingTrust(boolean managingTrust);
+ void onSetTrustAgentFeaturesEnabledCompleted(boolean result, IBinder token);
}
diff --git a/core/java/android/service/trust/TrustAgentService.java b/core/java/android/service/trust/TrustAgentService.java
index 2609fce..51f07ec 100644
--- a/core/java/android/service/trust/TrustAgentService.java
+++ b/core/java/android/service/trust/TrustAgentService.java
@@ -28,6 +28,7 @@ import android.content.pm.ServiceInfo;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
+import android.os.Message;
import android.os.RemoteException;
import android.util.Log;
import android.util.Slog;
@@ -94,6 +95,7 @@ public class TrustAgentService extends Service {
public static final String KEY_FEATURES = "trust_agent_features";
private static final int MSG_UNLOCK_ATTEMPT = 1;
+ private static final int MSG_SET_TRUST_AGENT_FEATURES_ENABLED = 2;
private ITrustAgentServiceCallback mCallback;
@@ -110,8 +112,20 @@ public class TrustAgentService extends Service {
case MSG_UNLOCK_ATTEMPT:
onUnlockAttempt(msg.arg1 != 0);
break;
+ case MSG_SET_TRUST_AGENT_FEATURES_ENABLED:
+ Bundle features = msg.peekData();
+ IBinder token = (IBinder) msg.obj;
+ boolean result = onSetTrustAgentFeaturesEnabled(features);
+ try {
+ synchronized (mLock) {
+ mCallback.onSetTrustAgentFeaturesEnabledCompleted(result, token);
+ }
+ } catch (RemoteException e) {
+ onError("calling onSetTrustAgentFeaturesEnabledCompleted()");
+ }
+ break;
}
- };
+ }
};
@Override
@@ -278,10 +292,10 @@ public class TrustAgentService extends Service {
}
@Override
- public boolean setTrustAgentFeaturesEnabled(Bundle features) {
- synchronized (mLock) {
- return onSetTrustAgentFeaturesEnabled(features);
- }
+ public void setTrustAgentFeaturesEnabled(Bundle features, IBinder token) {
+ Message msg = mHandler.obtainMessage(MSG_SET_TRUST_AGENT_FEATURES_ENABLED, token);
+ msg.setData(features);
+ msg.sendToTarget();
}
}