Merge "Prevent multiple outstanding permission queries per client" into sc-qpr1-dev am: 373ed0127e
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15993917 Change-Id: I85e429a3489888acc218527d9f4e7cb7f1d2bc5d
This commit is contained in:
@@ -209,6 +209,12 @@ public class ContextHubClientBroker extends IContextHubClient.Stub
|
||||
*/
|
||||
private AtomicBoolean mIsPendingIntentCancelled = new AtomicBoolean(false);
|
||||
|
||||
/**
|
||||
* True if a permissions query has been issued and is being processed. Used to prevent too many
|
||||
* queries from being issued by a single client at once.
|
||||
*/
|
||||
private AtomicBoolean mIsPermQueryIssued = new AtomicBoolean(false);
|
||||
|
||||
/*
|
||||
* True if the application creating the client has the ACCESS_CONTEXT_HUB permission.
|
||||
*/
|
||||
@@ -240,11 +246,11 @@ public class ContextHubClientBroker extends IContextHubClient.Stub
|
||||
private final IContextHubTransactionCallback mQueryPermsCallback =
|
||||
new IContextHubTransactionCallback.Stub() {
|
||||
@Override
|
||||
public void onTransactionComplete(int result) {
|
||||
}
|
||||
public void onTransactionComplete(int result) {}
|
||||
|
||||
@Override
|
||||
public void onQueryResponse(int result, List<NanoAppState> nanoAppStateList) {
|
||||
mIsPermQueryIssued.set(false);
|
||||
if (result != ContextHubTransaction.RESULT_SUCCESS && nanoAppStateList != null) {
|
||||
Log.e(TAG, "Permissions query failed, but still received nanoapp state");
|
||||
} else if (nanoAppStateList != null) {
|
||||
@@ -656,9 +662,11 @@ public class ContextHubClientBroker extends IContextHubClient.Stub
|
||||
* communicated with in the past.
|
||||
*/
|
||||
private void checkNanoappPermsAsync() {
|
||||
ContextHubServiceTransaction transaction = mTransactionManager.createQueryTransaction(
|
||||
mAttachedContextHubInfo.getId(), mQueryPermsCallback, mPackage);
|
||||
mTransactionManager.addTransaction(transaction);
|
||||
if (!mIsPermQueryIssued.getAndSet(true)) {
|
||||
ContextHubServiceTransaction transaction = mTransactionManager.createQueryTransaction(
|
||||
mAttachedContextHubInfo.getId(), mQueryPermsCallback, mPackage);
|
||||
mTransactionManager.addTransaction(transaction);
|
||||
}
|
||||
}
|
||||
|
||||
private int updateNanoAppAuthState(
|
||||
|
||||
Reference in New Issue
Block a user