OSDN Git Service

Minor improvements on Autofill:
authorFelipe Leme <felipeal@google.com>
Fri, 20 Oct 2017 20:04:19 +0000 (13:04 -0700)
committerFelipe Leme <felipeal@google.com>
Fri, 20 Oct 2017 20:05:25 +0000 (13:05 -0700)
- Don't print PII on Dataset.toString()
- Use proper method to get last response

Test: cts-tradefed run commandAndExit cts-dev -m CtsAutoFillServiceTestCases

Bug: 67867469

Change-Id: I41579ba30366e07193ab4f7790e5a107c85d6ec2

core/java/android/service/autofill/Dataset.java
core/java/android/service/autofill/FillEventHistory.java
core/java/android/service/autofill/FillResponse.java
services/autofill/java/com/android/server/autofill/Session.java

index b2cdef2..331130e 100644 (file)
@@ -150,8 +150,16 @@ public final class Dataset implements Parcelable {
     public String toString() {
         if (!sDebug) return super.toString();
 
-        return new StringBuilder("Dataset " + mId + " [")
-                .append("fieldIds=").append(mFieldIds)
+        final StringBuilder builder = new StringBuilder("Dataset[id=");
+        if (mId == null) {
+            builder.append("null");
+        } else {
+            // Cannot disclose id because it could contain PII.
+            builder.append(mId.length()).append("_chars");
+        }
+
+        return builder
+                .append(", fieldIds=").append(mFieldIds)
                 .append(", fieldValues=").append(mFieldValues)
                 .append(", fieldPresentations=")
                 .append(mFieldPresentations == null ? 0 : mFieldPresentations.size())
index d6c0dbf..b1857b3 100644 (file)
@@ -129,6 +129,11 @@ public final class FillEventHistory implements Parcelable {
     }
 
     @Override
+    public String toString() {
+        return mEvents == null ? "no events" : mEvents.toString();
+    }
+
+    @Override
     public int describeContents() {
         return 0;
     }
index d91cebb..d2033fa 100644 (file)
@@ -71,7 +71,7 @@ public final class FillResponse implements Parcelable {
     private FillResponse(@NonNull Builder builder) {
         mDatasets = (builder.mDatasets != null) ? new ParceledListSlice<>(builder.mDatasets) : null;
         mSaveInfo = builder.mSaveInfo;
-        mClientState = builder.mCLientState;
+        mClientState = builder.mClientState;
         mPresentation = builder.mPresentation;
         mAuthentication = builder.mAuthentication;
         mAuthenticationIds = builder.mAuthenticationIds;
@@ -145,7 +145,7 @@ public final class FillResponse implements Parcelable {
     public static final class Builder {
         private ArrayList<Dataset> mDatasets;
         private SaveInfo mSaveInfo;
-        private Bundle mCLientState;
+        private Bundle mClientState;
         private RemoteViews mPresentation;
         private IntentSender mAuthentication;
         private AutofillId[] mAuthenticationIds;
@@ -288,7 +288,7 @@ public final class FillResponse implements Parcelable {
          */
         public Builder setClientState(@Nullable Bundle clientState) {
             throwIfDestroyed();
-            mCLientState = clientState;
+            mClientState = clientState;
             return this;
         }
 
index 59fc34d..b720f74 100644 (file)
@@ -846,12 +846,9 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
      * when necessary.
      */
     public void logContextCommittedLocked() {
-        if (mResponses == null) {
-            if (sVerbose) Slog.v(TAG, "logContextCommittedLocked(): skipped (no responses)");
-            return;
-        }
+        final FillResponse lastResponse = getLastResponseLocked("logContextCommited()");
+        if (lastResponse == null) return;
 
-        final FillResponse lastResponse = mResponses.valueAt(mResponses.size() -1);
         final int flags = lastResponse.getFlags();
         if ((flags & FillResponse.FLAG_TRACK_CONTEXT_COMMITED) == 0) {
             if (sDebug) Slog.d(TAG, "logContextCommittedLocked(): ignored by flags " + flags);
@@ -1599,11 +1596,10 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
      * Checks whether a view should be ignored.
      */
     private boolean isIgnoredLocked(AutofillId id) {
-        if (mResponses == null || mResponses.size() == 0) {
-            return false;
-        }
         // Always check the latest response only
-        final FillResponse response = mResponses.valueAt(mResponses.size() - 1);
+        final FillResponse response = getLastResponseLocked(null);
+        if (response == null) return false;
+
         return ArrayUtils.contains(response.getIgnoredIds(), id);
     }
 
@@ -1680,13 +1676,10 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
     }
 
     private void updateTrackedIdsLocked() {
-        if (mResponses == null || mResponses.size() == 0) {
-            return;
-        }
-
         // Only track the views of the last response as only those are reported back to the
         // service, see #showSaveLocked
-        final FillResponse response = mResponses.valueAt(getLastResponseIndexLocked());
+        final FillResponse response = getLastResponseLocked(null);
+        if (response == null) return;
 
         ArraySet<AutofillId> trackedViews = null;
         boolean saveOnAllViewsInvisible = false;