diff options
| author | Adrian Roos <roosa@google.com> | 2014-07-29 15:09:57 +0200 |
|---|---|---|
| committer | Adrian Roos <roosa@google.com> | 2014-07-30 12:34:18 +0000 |
| commit | 8f21158fe64eb93ff005dc1b831b282b95531023 (patch) | |
| tree | ca5054639d03e4ac0b13536eb59ce723e50f0b81 /core/java/android/service | |
| parent | 7861c663fd64af33ec2a4c5ad653c806dc8bd994 (diff) | |
| download | frameworks_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')
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(); } } |
