summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/autofill/AutoFillManager.java10
-rw-r--r--services/autofill/java/com/android/server/autofill/AutoFillManagerService.java23
-rw-r--r--services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java90
3 files changed, 68 insertions, 55 deletions
diff --git a/core/java/android/view/autofill/AutoFillManager.java b/core/java/android/view/autofill/AutoFillManager.java
index e82021ec3e39..b44bbbebc083 100644
--- a/core/java/android/view/autofill/AutoFillManager.java
+++ b/core/java/android/view/autofill/AutoFillManager.java
@@ -17,6 +17,7 @@
package android.view.autofill;
import static android.view.autofill.Helper.DEBUG;
+import static android.view.autofill.Helper.VERBOSE;
import android.content.Context;
import android.content.Intent;
@@ -255,7 +256,7 @@ public final class AutoFillManager {
private void startSession(AutoFillId id, IBinder windowToken,
Rect bounds, AutoFillValue value) {
if (DEBUG) {
- Log.v(TAG, "startSession(): id=" + id + ", bounds=" + bounds + ", value=" + value);
+ Log.d(TAG, "startSession(): id=" + id + ", bounds=" + bounds + ", value=" + value);
}
try {
mService.startSession(mContext.getActivityToken(), windowToken,
@@ -272,7 +273,7 @@ public final class AutoFillManager {
private void finishSession() {
if (DEBUG) {
- Log.v(TAG, "finishSession()");
+ Log.d(TAG, "finishSession()");
}
mHasSession = false;
try {
@@ -284,9 +285,12 @@ public final class AutoFillManager {
private void updateSession(AutoFillId id, Rect bounds, AutoFillValue value, int flags) {
if (DEBUG) {
- Log.v(TAG, "updateSession(): id=" + id + ", bounds=" + bounds + ", value=" + value
+ if (VERBOSE || (flags & FLAG_FOCUS_LOST) != 0) {
+ Log.d(TAG, "updateSession(): id=" + id + ", bounds=" + bounds + ", value=" + value
+ ", flags=" + flags);
+ }
}
+
try {
mService.updateSession(mContext.getActivityToken(), id, bounds, value, flags,
mContext.getUserId());
diff --git a/services/autofill/java/com/android/server/autofill/AutoFillManagerService.java b/services/autofill/java/com/android/server/autofill/AutoFillManagerService.java
index 520b43a709d0..7a85d4e9b62e 100644
--- a/services/autofill/java/com/android/server/autofill/AutoFillManagerService.java
+++ b/services/autofill/java/com/android/server/autofill/AutoFillManagerService.java
@@ -18,7 +18,6 @@ package com.android.server.autofill;
import static android.Manifest.permission.MANAGE_AUTO_FILL;
import static android.content.Context.AUTO_FILL_MANAGER_SERVICE;
-import static com.android.server.autofill.Helper.DEBUG;
import static com.android.server.autofill.Helper.VERBOSE;
import android.Manifest;
@@ -101,14 +100,16 @@ public final class AutoFillManagerService extends SystemService {
private SparseArray<AutoFillManagerServiceImpl> mServicesCache = new SparseArray<>();
// TODO(b/33197203): set a different max (or disable it) on low-memory devices.
- private final LocalLog mRequestsHistory = new LocalLog(100);
+ private final LocalLog mRequestsHistory = new LocalLog(20);
private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(intent.getAction())) {
final String reason = intent.getStringExtra("reason");
- if (DEBUG) Slog.d(TAG, "close system dialogs: " + reason);
+ if (VERBOSE) {
+ Slog.v(TAG, "close system dialogs: " + reason);
+ }
mUi.hideAll();
}
}
@@ -247,7 +248,9 @@ public final class AutoFillManagerService extends SystemService {
private IBinder getTopActivityForUser() {
final List<IBinder> topActivities = LocalServices
.getService(ActivityManagerInternal.class).getTopVisibleActivities();
- if (DEBUG) Slog.d(TAG, "Top activities (" + topActivities.size() + "): " + topActivities);
+ if (VERBOSE) {
+ Slog.v(TAG, "Top activities (" + topActivities.size() + "): " + topActivities);
+ }
if (topActivities.isEmpty()) {
Slog.w(TAG, "Could not get top activity");
return null;
@@ -276,11 +279,6 @@ public final class AutoFillManagerService extends SystemService {
AutoFillId autoFillId, Rect bounds, AutoFillValue value, int userId) {
// TODO(b/33197203): make sure it's called by resumed / focused activity
- if (VERBOSE) {
- Slog.v(TAG, "startSession: autoFillId=" + autoFillId + ", bounds=" + bounds
- + ", value=" + value);
- }
-
synchronized (mLock) {
final AutoFillManagerServiceImpl service = getServiceForUserLocked(userId);
service.startSessionLocked(activityToken, windowToken, appCallback,
@@ -291,11 +289,6 @@ public final class AutoFillManagerService extends SystemService {
@Override
public void updateSession(IBinder activityToken, AutoFillId id, Rect bounds,
AutoFillValue value, int flags, int userId) {
- if (DEBUG) {
- Slog.d(TAG, "updateSession: flags=" + flags + ", autoFillId=" + id
- + ", bounds=" + bounds + ", value=" + value);
- }
-
synchronized (mLock) {
final AutoFillManagerServiceImpl service = mServicesCache.get(
UserHandle.getCallingUserId());
@@ -307,8 +300,6 @@ public final class AutoFillManagerService extends SystemService {
@Override
public void finishSession(IBinder activityToken, int userId) {
- if (VERBOSE) Slog.v(TAG, "finishSession(): " + activityToken);
-
synchronized (mLock) {
final AutoFillManagerServiceImpl service = mServicesCache.get(
UserHandle.getCallingUserId());
diff --git a/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java
index f399f59ebe50..f7cb0104d3a2 100644
--- a/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java
+++ b/services/autofill/java/com/android/server/autofill/AutoFillManagerServiceImpl.java
@@ -104,7 +104,7 @@ final class AutoFillManagerServiceImpl {
handleSessionSave((IBinder) msg.obj);
break;
default:
- Slog.d(TAG, "invalid msg: " + msg);
+ Slog.w(TAG, "invalid msg on handler: " + msg);
}
};
@@ -128,17 +128,18 @@ final class AutoFillManagerServiceImpl {
private final IResultReceiver mAssistReceiver = new IResultReceiver.Stub() {
@Override
public void send(int resultCode, Bundle resultData) throws RemoteException {
- if (DEBUG) Slog.d(TAG, "resultCode on mAssistReceiver: " + resultCode);
+ if (VERBOSE) {
+ Slog.v(TAG, "resultCode on mAssistReceiver: " + resultCode);
+ }
final AssistStructure structure = resultData.getParcelable(KEY_STRUCTURE);
if (structure == null) {
- Slog.w(TAG, "no assist structure for id " + resultCode);
+ Slog.wtf(TAG, "no assist structure for id " + resultCode);
return;
}
final Bundle receiverExtras = resultData.getBundle(KEY_RECEIVER_EXTRAS);
if (receiverExtras == null) {
- // Should not happen
Slog.wtf(TAG, "No " + KEY_RECEIVER_EXTRAS + " on receiver");
return;
}
@@ -195,7 +196,7 @@ final class AutoFillManagerServiceImpl {
final ApplicationInfo info = pm.getApplicationInfo(packageName, 0);
return pm.getApplicationLabel(info);
} catch (Exception e) {
- Slog.w(TAG, "Could not get label for " + packageName + ": " + e);
+ Slog.e(TAG, "Could not get label for " + packageName + ": " + e);
return packageName;
}
}
@@ -211,7 +212,7 @@ final class AutoFillManagerServiceImpl {
serviceInfo = AppGlobals.getPackageManager().getServiceInfo(serviceComponent,
0, mUserId);
} catch (RuntimeException | RemoteException e) {
- Slog.e(TAG, "Bad auto-fill service name " + componentName, e);
+ Slog.e(TAG, "Bad auto-fill service name " + componentName + ": " + e);
return;
}
}
@@ -235,7 +236,7 @@ final class AutoFillManagerServiceImpl {
sendStateToClients();
}
} catch (PackageManager.NameNotFoundException e) {
- Slog.e(TAG, "Bad auto-fill service name " + componentName, e);
+ Slog.e(TAG, "Bad auto-fill service name " + componentName + ": " + e);
}
}
@@ -279,9 +280,9 @@ final class AutoFillManagerServiceImpl {
return;
}
- final String historyItem = "s=" + new ComponentName(mInfo.getServiceInfo().packageName,
- mInfo.getServiceInfo().name) + " u=" + mUserId + " a=" + activityToken
- + " i=" + autoFillId + " b=" + bounds + " v=" + value;
+ final String historyItem = "s=" + mInfo.getServiceInfo().packageName
+ + " u=" + mUserId + " a=" + activityToken
+ + " i=" + autoFillId + " b=" + bounds;
mRequestsHistory.log(historyItem);
// TODO(b/33197203): Handle partitioning
@@ -331,8 +332,6 @@ final class AutoFillManagerServiceImpl {
try {
if (!ActivityManager.getService().requestAutoFillData(mAssistReceiver,
receiverExtras, activityToken)) {
- // TODO(b/33197203): might need a way to warn user (perhaps a new method on
- // AutoFillService).
Slog.w(TAG, "failed to request auto-fill data for " + activityToken);
}
} finally {
@@ -349,7 +348,9 @@ final class AutoFillManagerServiceImpl {
// TODO(b/33197203): add MetricsLogger call
final Session session = mSessions.get(activityToken);
if (session == null) {
- Slog.w(TAG, "updateSessionLocked(): session gone for " + activityToken);
+ if (VERBOSE) {
+ Slog.v(TAG, "updateSessionLocked(): session gone for " + activityToken);
+ }
return;
}
@@ -369,7 +370,9 @@ final class AutoFillManagerServiceImpl {
}
void destroyLocked() {
- if (VERBOSE) Slog.v(TAG, "destroyLocked()");
+ if (VERBOSE) {
+ Slog.v(TAG, "destroyLocked()");
+ }
for (Session session : mSessions.values()) {
session.destroyLocked();
@@ -380,7 +383,7 @@ final class AutoFillManagerServiceImpl {
void dumpLocked(String prefix, PrintWriter pw) {
final String prefix2 = prefix + " ";
- pw.print(prefix); pw.println("Component:"); pw.println(mInfo != null
+ pw.print(prefix); pw.print("Component:"); pw.println(mInfo != null
? mInfo.getServiceInfo().getComponentName() : null);
if (VERBOSE) {
@@ -526,8 +529,6 @@ final class AutoFillManagerServiceImpl {
@Override
public String toString() {
- if (!DEBUG) return super.toString();
-
return "ViewState: [id=" + mId + ", value=" + mAutoFillValue + ", bounds=" + mBounds
+ ", updated = " + mValueUpdated + "]";
}
@@ -602,7 +603,9 @@ final class AutoFillManagerServiceImpl {
mClient = IAutoFillManagerClient.Stub.asInterface(client);
try {
client.linkToDeath(() -> {
- if (DEBUG) Slog.d(TAG, "app binder died");
+ if (DEBUG) {
+ Slog.d(TAG, "app binder died");
+ }
removeSelf();
}, 0);
@@ -705,20 +708,23 @@ final class AutoFillManagerServiceImpl {
*/
public void showSaveLocked() {
if (mStructure == null) {
- // Sanity check; should not happen...
Slog.wtf(TAG, "showSaveLocked(): no mStructure");
return;
}
if (mCurrentResponse == null) {
- // Happens when the activity / session was finished before the service replied.
- Slog.d(TAG, "showSaveLocked(): no mCurrentResponse yet");
+ // Happens when the activity / session was finished before the service replied, or
+ // when the service cannot auto-fill it (and returned a null response).
+ if (DEBUG) {
+ Slog.d(TAG, "showSaveLocked(): no mCurrentResponse");
+ }
return;
}
final ArraySet<AutoFillId> savableIds = mCurrentResponse.getSavableIds();
- if (VERBOSE) Slog.v(TAG, "showSaveLocked(): savableIds=" + savableIds);
+ if (DEBUG) {
+ Slog.d(TAG, "showSaveLocked(): savableIds=" + savableIds);
+ }
- if (savableIds.isEmpty()) {
- if (DEBUG) Slog.d(TAG, "showSaveLocked(): service doesn't want to save");
+ if (savableIds == null || savableIds.isEmpty()) {
return;
}
@@ -742,21 +748,27 @@ final class AutoFillManagerServiceImpl {
}
// Nothing changed...
- if (DEBUG) Slog.d(TAG, "showSaveLocked(): with no changes, comes no responsibilities");
+ if (DEBUG) {
+ Slog.d(TAG, "showSaveLocked(): with no changes, comes no responsibilities");
+ }
}
/**
* Calls service when user requested save.
*/
private void callSaveLocked() {
- if (DEBUG) Slog.d(TAG, "callSaveLocked(): mViewStates=" + mViewStates);
+ if (DEBUG) {
+ Slog.d(TAG, "callSaveLocked(): mViewStates=" + mViewStates);
+ }
final Bundle extras = this.mCurrentResponse.getExtras();
for (Entry<AutoFillId, ViewState> entry : mViewStates.entrySet()) {
final AutoFillValue value = entry.getValue().mAutoFillValue;
if (value == null) {
- if (VERBOSE) Slog.v(TAG, "callSaveLocked(): skipping " + entry.getKey());
+ if (VERBOSE) {
+ Slog.v(TAG, "callSaveLocked(): skipping " + entry.getKey());
+ }
continue;
}
final AutoFillId id = entry.getKey();
@@ -765,7 +777,9 @@ final class AutoFillManagerServiceImpl {
Slog.w(TAG, "callSaveLocked(): did not find node with id " + id);
continue;
}
- if (DEBUG) Slog.d(TAG, "callSaveLocked(): updating " + id + " to " + value);
+ if (VERBOSE) {
+ Slog.v(TAG, "callSaveLocked(): updating " + id + " to " + value);
+ }
node.updateAutoFillValue(value);
}
@@ -781,11 +795,9 @@ final class AutoFillManagerServiceImpl {
}
void updateLocked(AutoFillId id, Rect bounds, AutoFillValue value, int flags) {
- if (DEBUG) Slog.d(TAG, "updateLocked(): id=" + id + ", flags=" + flags);
-
if (mAutoFilledDataset != null && (flags & FLAG_VALUE_CHANGED) == 0) {
// TODO(b/33197203): ignoring because we don't support partitions yet
- if (DEBUG) Slog.d(TAG, "updateLocked(): ignoring " + flags + " after auto-filled");
+ Slog.d(TAG, "updateLocked(): ignoring " + flags + " after app was auto-filled");
return;
}
@@ -852,7 +864,7 @@ final class AutoFillManagerServiceImpl {
return;
}
- Slog.w(TAG, "unknown flags " + flags);
+ Slog.w(TAG, "updateLocked(): unknown flags " + flags);
}
@Override
@@ -871,8 +883,10 @@ final class AutoFillManagerServiceImpl {
}
private void processResponseLocked(FillResponse response) {
- if (DEBUG) Slog.d(TAG, "processResponseLocked(authRequired="
- + response.getAuthentication() + "):" + response);
+ if (DEBUG) {
+ Slog.d(TAG, "processResponseLocked(auth=" + response.getAuthentication()
+ + "):" + response);
+ }
// TODO(b/33197203): add MetricsLogger calls
@@ -956,7 +970,9 @@ final class AutoFillManagerServiceImpl {
void autoFillApp(Dataset dataset) {
synchronized (mLock) {
try {
- if (DEBUG) Slog.d(TAG, "autoFillApp(): the buck is on the app: " + dataset);
+ if (DEBUG) {
+ Slog.d(TAG, "autoFillApp(): the buck is on the app: " + dataset);
+ }
mClient.autoFill(dataset.getFieldIds(), dataset.getFieldValues());
} catch (RemoteException e) {
Slog.w(TAG, "Error auto-filling activity: " + e);
@@ -1010,7 +1026,9 @@ final class AutoFillManagerServiceImpl {
}
private void removeSelf() {
- if (VERBOSE) Slog.v(TAG, "removeSelf()");
+ if (VERBOSE) {
+ Slog.v(TAG, "removeSelf()");
+ }
synchronized (mLock) {
destroyLocked();