Merge "Prevent multiple outstanding permission queries per client" into sc-qpr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
373ed0127e
@@ -209,6 +209,12 @@ public class ContextHubClientBroker extends IContextHubClient.Stub
|
|||||||
*/
|
*/
|
||||||
private AtomicBoolean mIsPendingIntentCancelled = new AtomicBoolean(false);
|
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.
|
* 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 =
|
private final IContextHubTransactionCallback mQueryPermsCallback =
|
||||||
new IContextHubTransactionCallback.Stub() {
|
new IContextHubTransactionCallback.Stub() {
|
||||||
@Override
|
@Override
|
||||||
public void onTransactionComplete(int result) {
|
public void onTransactionComplete(int result) {}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onQueryResponse(int result, List<NanoAppState> nanoAppStateList) {
|
public void onQueryResponse(int result, List<NanoAppState> nanoAppStateList) {
|
||||||
|
mIsPermQueryIssued.set(false);
|
||||||
if (result != ContextHubTransaction.RESULT_SUCCESS && nanoAppStateList != null) {
|
if (result != ContextHubTransaction.RESULT_SUCCESS && nanoAppStateList != null) {
|
||||||
Log.e(TAG, "Permissions query failed, but still received nanoapp state");
|
Log.e(TAG, "Permissions query failed, but still received nanoapp state");
|
||||||
} else if (nanoAppStateList != null) {
|
} else if (nanoAppStateList != null) {
|
||||||
@@ -656,9 +662,11 @@ public class ContextHubClientBroker extends IContextHubClient.Stub
|
|||||||
* communicated with in the past.
|
* communicated with in the past.
|
||||||
*/
|
*/
|
||||||
private void checkNanoappPermsAsync() {
|
private void checkNanoappPermsAsync() {
|
||||||
ContextHubServiceTransaction transaction = mTransactionManager.createQueryTransaction(
|
if (!mIsPermQueryIssued.getAndSet(true)) {
|
||||||
mAttachedContextHubInfo.getId(), mQueryPermsCallback, mPackage);
|
ContextHubServiceTransaction transaction = mTransactionManager.createQueryTransaction(
|
||||||
mTransactionManager.addTransaction(transaction);
|
mAttachedContextHubInfo.getId(), mQueryPermsCallback, mPackage);
|
||||||
|
mTransactionManager.addTransaction(transaction);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int updateNanoAppAuthState(
|
private int updateNanoAppAuthState(
|
||||||
|
|||||||
Reference in New Issue
Block a user