Merge "Frameworks: Annotate trivial @GuardedBy in services/autofill"

This commit is contained in:
TreeHugger Robot
2018-02-08 06:04:51 +00:00
committed by Android (Google) Code Review
4 changed files with 67 additions and 0 deletions

View File

@@ -306,6 +306,7 @@ public final class AutofillManagerService extends SystemService {
*
* @return service instance.
*/
@GuardedBy("mLock")
@NonNull
AutofillManagerServiceImpl getServiceForUserLocked(int userId) {
final int resolvedUserId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
@@ -325,6 +326,7 @@ public final class AutofillManagerService extends SystemService {
*
* @return service instance or {@code null} if not already present
*/
@GuardedBy("mLock")
@Nullable
AutofillManagerServiceImpl peekServiceForUserLocked(int userId) {
final int resolvedUserId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
@@ -474,6 +476,7 @@ public final class AutofillManagerService extends SystemService {
/**
* Removes a cached service for a given user.
*/
@GuardedBy("mLock")
private void removeCachedServiceLocked(int userId) {
final AutofillManagerServiceImpl service = peekServiceForUserLocked(userId);
if (service != null) {
@@ -485,6 +488,7 @@ public final class AutofillManagerService extends SystemService {
/**
* Updates a cached service for a given user.
*/
@GuardedBy("mLock")
private void updateCachedServiceLocked(int userId) {
updateCachedServiceLocked(userId, mDisabledUsers.get(userId));
}
@@ -492,6 +496,7 @@ public final class AutofillManagerService extends SystemService {
/**
* Updates a cached service for a given user.
*/
@GuardedBy("mLock")
private void updateCachedServiceLocked(int userId, boolean disabled) {
AutofillManagerServiceImpl service = getServiceForUserLocked(userId);
if (service != null) {

View File

@@ -211,6 +211,7 @@ final class AutofillManagerServiceImpl {
}
}
@GuardedBy("mLock")
private int getServiceUidLocked() {
if (mInfo == null) {
Slog.w(TAG, "getServiceUidLocked(): no mInfo");
@@ -248,6 +249,7 @@ final class AutofillManagerServiceImpl {
mContext.getContentResolver(), Settings.Secure.AUTOFILL_SERVICE, mUserId);
}
@GuardedBy("mLock")
void updateLocked(boolean disabled) {
final boolean wasEnabled = isEnabledLocked();
if (sVerbose) {
@@ -300,6 +302,7 @@ final class AutofillManagerServiceImpl {
}
}
@GuardedBy("mLock")
boolean addClientLocked(IAutoFillManagerClient client) {
if (mClients == null) {
mClients = new RemoteCallbackList<>();
@@ -308,12 +311,14 @@ final class AutofillManagerServiceImpl {
return isEnabledLocked();
}
@GuardedBy("mLock")
void removeClientLocked(IAutoFillManagerClient client) {
if (mClients != null) {
mClients.unregister(client);
}
}
@GuardedBy("mLock")
void setAuthenticationResultLocked(Bundle data, int sessionId, int authenticationId, int uid) {
if (!isEnabledLocked()) {
return;
@@ -336,6 +341,7 @@ final class AutofillManagerServiceImpl {
}
}
@GuardedBy("mLock")
int startSessionLocked(@NonNull IBinder activityToken, int uid,
@NonNull IBinder appCallbackToken, @NonNull AutofillId autofillId,
@NonNull Rect virtualBounds, @Nullable AutofillValue value, boolean hasCallback,
@@ -389,6 +395,7 @@ final class AutofillManagerServiceImpl {
/**
* Remove abandoned sessions if needed.
*/
@GuardedBy("mLock")
private void pruneAbandonedSessionsLocked() {
long now = System.currentTimeMillis();
if (mLastPrune < now - MAX_ABANDONED_SESSION_MILLIS) {
@@ -400,6 +407,7 @@ final class AutofillManagerServiceImpl {
}
}
@GuardedBy("mLock")
void finishSessionLocked(int sessionId, int uid) {
if (!isEnabledLocked()) {
return;
@@ -423,6 +431,7 @@ final class AutofillManagerServiceImpl {
}
}
@GuardedBy("mLock")
void cancelSessionLocked(int sessionId, int uid) {
if (!isEnabledLocked()) {
return;
@@ -436,6 +445,7 @@ final class AutofillManagerServiceImpl {
session.removeSelfLocked();
}
@GuardedBy("mLock")
void disableOwnedAutofillServicesLocked(int uid) {
Slog.i(TAG, "disableOwnedServices(" + uid + "): " + mInfo);
if (mInfo == null) return;
@@ -468,6 +478,7 @@ final class AutofillManagerServiceImpl {
}
}
@GuardedBy("mLock")
private Session createSessionByTokenLocked(@NonNull IBinder activityToken, int uid,
@NonNull IBinder appCallbackToken, boolean hasCallback,
@NonNull ComponentName componentName, int flags) {
@@ -546,6 +557,7 @@ final class AutofillManagerServiceImpl {
/**
* Updates a session and returns whether it should be restarted.
*/
@GuardedBy("mLock")
boolean updateSessionLocked(int sessionId, int uid, AutofillId autofillId, Rect virtualBounds,
AutofillValue value, int action, int flags) {
final Session session = mSessions.get(sessionId);
@@ -568,6 +580,7 @@ final class AutofillManagerServiceImpl {
return false;
}
@GuardedBy("mLock")
void removeSessionLocked(int sessionId) {
mSessions.remove(sessionId);
}
@@ -603,6 +616,7 @@ final class AutofillManagerServiceImpl {
}
}
@GuardedBy("mLock")
void destroyLocked() {
if (sVerbose) Slog.v(TAG, "destroyLocked()");
@@ -655,6 +669,7 @@ final class AutofillManagerServiceImpl {
}
}
@GuardedBy("mLock")
private boolean isValidEventLocked(String method, int sessionId) {
if (mEventHistory == null) {
Slog.w(TAG, method + ": not logging event because history is null");
@@ -726,6 +741,7 @@ final class AutofillManagerServiceImpl {
/**
* Updates the last fill response when an autofill context is committed.
*/
@GuardedBy("mLock")
void logContextCommittedLocked(int sessionId, @Nullable Bundle clientState,
@Nullable ArrayList<String> selectedDatasets,
@Nullable ArraySet<String> ignoredDatasets,
@@ -739,6 +755,7 @@ final class AutofillManagerServiceImpl {
manuallyFilledDatasetIds, null, null, appPackageName);
}
@GuardedBy("mLock")
void logContextCommittedLocked(int sessionId, @Nullable Bundle clientState,
@Nullable ArrayList<String> selectedDatasets,
@Nullable ArraySet<String> ignoredDatasets,
@@ -847,6 +864,7 @@ final class AutofillManagerServiceImpl {
}
}
@GuardedBy("mLock")
private boolean isCalledByServiceLocked(String methodName, int callingUid) {
if (getServiceUidLocked() != callingUid) {
Slog.w(TAG, methodName + "() called by UID " + callingUid
@@ -856,6 +874,7 @@ final class AutofillManagerServiceImpl {
return true;
}
@GuardedBy("mLock")
void dumpLocked(String prefix, PrintWriter pw) {
final String prefix2 = prefix + " ";
@@ -965,6 +984,7 @@ final class AutofillManagerServiceImpl {
mFieldClassificationStrategy.dump(prefix2, pw);
}
@GuardedBy("mLock")
void destroySessionsLocked() {
if (mSessions.size() == 0) {
mUi.destroyAll(null, null, false);
@@ -976,6 +996,7 @@ final class AutofillManagerServiceImpl {
}
// TODO(b/64940307): remove this method if SaveUI is refactored to be attached on activities
@GuardedBy("mLock")
void destroyFinishedSessionsLocked() {
final int sessionCount = mSessions.size();
for (int i = sessionCount - 1; i >= 0; i--) {
@@ -987,6 +1008,7 @@ final class AutofillManagerServiceImpl {
}
}
@GuardedBy("mLock")
void listSessionsLocked(ArrayList<String> output) {
final int numSessions = mSessions.size();
for (int i = 0; i < numSessions; i++) {
@@ -995,6 +1017,7 @@ final class AutofillManagerServiceImpl {
}
}
@GuardedBy("mLock")
boolean isCompatibilityModeRequestedLocked(@NonNull String packageName,
long versionCode) {
if (mInfo == null || !mInfo.isCompatibilityModeRequested(packageName, versionCode)) {
@@ -1060,6 +1083,7 @@ final class AutofillManagerServiceImpl {
}
}
@GuardedBy("mLock")
private boolean isClientSessionDestroyedLocked(IAutoFillManagerClient client) {
final int sessionCount = mSessions.size();
for (int i = 0; i < sessionCount; i++) {
@@ -1071,6 +1095,7 @@ final class AutofillManagerServiceImpl {
return true;
}
@GuardedBy("mLock")
boolean isEnabledLocked() {
return mSetupComplete && mInfo != null && !mDisabled;
}
@@ -1123,6 +1148,7 @@ final class AutofillManagerServiceImpl {
/**
* Checks if autofill is disabled by service to the given activity.
*/
@GuardedBy("mLock")
private boolean isAutofillDisabledLocked(@NonNull ComponentName componentName) {
// Check activities first.
long elapsedTime = 0;

View File

@@ -475,6 +475,7 @@ final class RemoteFillService implements DeathRecipient {
return true;
}
@GuardedBy("mLock")
protected boolean isCancelledLocked() {
return mCancelled;
}

View File

@@ -300,6 +300,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
/**
* Returns the ids of all entries in {@link #mViewStates} in the same order.
*/
@GuardedBy("mLock")
private AutofillId[] getIdsOfAllViewStatesLocked() {
final int numViewState = mViewStates.size();
final AutofillId[] ids = new AutofillId[numViewState];
@@ -346,6 +347,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
* <p>Gets the value of a field, using either the {@code viewStates} or the {@code mContexts},
* or {@code null} when not found on either of them.
*/
@GuardedBy("mLock")
private AutofillValue findValueLocked(@NonNull AutofillId id) {
final ViewState state = mViewStates.get(id);
if (state == null) {
@@ -369,6 +371,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
* @param fillContext The context to be filled
* @param flags The flags that started the session
*/
@GuardedBy("mLock")
private void fillContextWithAllowedValuesLocked(@NonNull FillContext fillContext, int flags) {
final ViewNode[] nodes = fillContext
.findViewNodesByAutofillIds(getIdsOfAllViewStatesLocked());
@@ -409,6 +412,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
/**
* Cancels the last request sent to the {@link #mRemoteFillService}.
*/
@GuardedBy("mLock")
private void cancelCurrentRequestLocked() {
final int canceledRequest = mRemoteFillService.cancelCurrentRequest();
@@ -430,6 +434,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
/**
* Reads a new structure and then request a new fill response from the fill service.
*/
@GuardedBy("mLock")
private void requestNewFillResponseLocked(int flags) {
int requestId;
@@ -497,6 +502,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
*
* @return The activity token
*/
@GuardedBy("mLock")
@NonNull IBinder getActivityTokenLocked() {
return mActivityToken;
}
@@ -663,6 +669,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
*
* @return The context or {@code null} if there is no context
*/
@GuardedBy("mLock")
@Nullable private FillContext getFillContextByRequestIdLocked(int requestId) {
if (mContexts == null) {
return null;
@@ -820,6 +827,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
});
}
@GuardedBy("mLock")
void setAuthenticationResultLocked(Bundle data, int authenticationId) {
if (mDestroyed) {
Slog.w(TAG, "Call to Session#setAuthenticationResultLocked() rejected - session: "
@@ -882,6 +890,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
}
@GuardedBy("mLock")
void setHasCallbackLocked(boolean hasIt) {
if (mDestroyed) {
Slog.w(TAG, "Call to Session#setHasCallbackLocked() rejected - session: "
@@ -891,6 +900,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
mHasCallback = hasIt;
}
@GuardedBy("mLock")
@Nullable
private FillResponse getLastResponseLocked(@Nullable String logPrefix) {
if (mContexts == null) {
@@ -923,6 +933,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
return response;
}
@GuardedBy("mLock")
@Nullable
private SaveInfo getSaveInfoLocked() {
final FillResponse response = getLastResponseLocked(null);
@@ -941,6 +952,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
});
}
@GuardedBy("mLock")
private void logContextCommittedLocked() {
final FillResponse lastResponse = getLastResponseLocked("logContextCommited()");
if (lastResponse == null) return;
@@ -1241,6 +1253,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
*
* @return {@code true} if session is done, or {@code false} if it's pending user action.
*/
@GuardedBy("mLock")
public boolean showSaveLocked() {
if (mDestroyed) {
Slog.w(TAG, "Call to Session#showSaveLocked() rejected - session: "
@@ -1510,6 +1523,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
/**
* Returns whether the session is currently showing the save UI
*/
@GuardedBy("mLock")
boolean isSavingLocked() {
return mIsSaving;
}
@@ -1517,6 +1531,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
/**
* Gets the latest non-empty value for the given id in the autofill contexts.
*/
@GuardedBy("mLock")
@Nullable
private AutofillValue getValueFromContextsLocked(AutofillId id) {
final int numContexts = mContexts.size();
@@ -1539,6 +1554,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
/**
* Gets the latest autofill options for the given id in the autofill contexts.
*/
@GuardedBy("mLock")
@Nullable
private CharSequence[] getAutofillOptionsFromContextsLocked(AutofillId id) {
final int numContexts = mContexts.size();
@@ -1556,6 +1572,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
/**
* Calls service when user requested save.
*/
@GuardedBy("mLock")
void callSaveLocked() {
if (mDestroyed) {
Slog.w(TAG, "Call to Session#callSaveLocked() rejected - session: "
@@ -1646,6 +1663,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
* @param viewState The view that is entered.
* @param flags The flag that was passed by the AutofillManager.
*/
@GuardedBy("mLock")
private void requestNewFillResponseOnViewEnteredIfNecessaryLocked(@NonNull AutofillId id,
@NonNull ViewState viewState, int flags) {
if ((flags & FLAG_MANUAL_REQUEST) != 0) {
@@ -1673,6 +1691,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
*
* @return {@code true} iff a new partition should be started
*/
@GuardedBy("mLock")
private boolean shouldStartNewPartitionLocked(@NonNull AutofillId id) {
if (mResponses == null) {
return true;
@@ -1721,6 +1740,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
return true;
}
@GuardedBy("mLock")
void updateLocked(AutofillId id, Rect virtualBounds, AutofillValue value, int action,
int flags) {
if (mDestroyed) {
@@ -1830,6 +1850,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
/**
* Checks whether a view should be ignored.
*/
@GuardedBy("mLock")
private boolean isIgnoredLocked(AutofillId id) {
// Always check the latest response only
final FillResponse response = getLastResponseLocked(null);
@@ -1910,6 +1931,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
}
@GuardedBy("mLock")
private void updateTrackedIdsLocked() {
// Only track the views of the last response as only those are reported back to the
// service, see #showSaveLocked
@@ -1982,6 +2004,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
}
@GuardedBy("mLock")
private void replaceResponseLocked(@NonNull FillResponse oldResponse,
@NonNull FillResponse newResponse, @Nullable Bundle newClientState) {
// Disassociate view states with the old response
@@ -2005,6 +2028,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
removeSelf();
}
@GuardedBy("mLock")
private void processResponseLocked(@NonNull FillResponse newResponse,
@Nullable Bundle newClientState, int flags) {
// Make sure we are hiding the UI which will be shown
@@ -2042,6 +2066,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
/**
* Sets the state of all views in the given response.
*/
@GuardedBy("mLock")
private void setViewStatesLocked(FillResponse response, int state, boolean clearResponse) {
final List<Dataset> datasets = response.getDatasets();
if (datasets != null) {
@@ -2090,6 +2115,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
/**
* Sets the state of all views in the given dataset and response.
*/
@GuardedBy("mLock")
private void setViewStatesLocked(@Nullable FillResponse response, @NonNull Dataset dataset,
int state, boolean clearResponse) {
final ArrayList<AutofillId> ids = dataset.getFieldIds();
@@ -2110,6 +2136,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
}
@GuardedBy("mLock")
private ViewState createOrUpdateViewStateLocked(@NonNull AutofillId id, int state,
@Nullable AutofillValue value) {
ViewState viewState = mViewStates.get(id);
@@ -2171,6 +2198,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
}
// TODO: this should never be null, but we got at least one occurrence, probably due to a race.
@GuardedBy("mLock")
@Nullable
private Intent createAuthFillInIntentLocked(int requestId, Bundle extras) {
final Intent fillInIntent = new Intent();
@@ -2203,6 +2231,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
return "Session: [id=" + id + ", component=" + mComponentName + "]";
}
@GuardedBy("mLock")
void dumpLocked(String prefix, PrintWriter pw) {
final String prefix2 = prefix + " ";
pw.print(prefix); pw.print("id: "); pw.println(id);
@@ -2332,6 +2361,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
* disabled it).
* </ul>
*/
@GuardedBy("mLock")
RemoteFillService destroyLocked() {
if (mDestroyed) {
return null;
@@ -2347,6 +2377,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
* Cleans up this session and remove it from the service always, even if it does have a pending
* Save UI.
*/
@GuardedBy("mLock")
void forceRemoveSelfLocked() {
if (sVerbose) Slog.v(TAG, "forceRemoveSelfLocked(): " + mPendingSaveUi);
@@ -2376,6 +2407,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
* Cleans up this session and remove it from the service, but but only if it does not have a
* pending Save UI.
*/
@GuardedBy("mLock")
void removeSelfLocked() {
if (sVerbose) Slog.v(TAG, "removeSelfLocked(): " + mPendingSaveUi);
if (mDestroyed) {
@@ -2404,6 +2436,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
* a specific {@code token} created by
* {@link PendingUi#PendingUi(IBinder, int, IAutoFillManagerClient)}.
*/
@GuardedBy("mLock")
boolean isSaveUiPendingForTokenLocked(@NonNull IBinder token) {
return isSaveUiPendingLocked() && token.equals(mPendingSaveUi.getToken());
}
@@ -2411,10 +2444,12 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
/**
* Checks whether this session is hiding the Save UI to handle a custom description link.
*/
@GuardedBy("mLock")
private boolean isSaveUiPendingLocked() {
return mPendingSaveUi != null && mPendingSaveUi.getState() == PendingUi.STATE_PENDING;
}
@GuardedBy("mLock")
private int getLastResponseIndexLocked() {
// The response ids are monotonically increasing so
// we just find the largest id which is the last. We