Merge "Disable autofill while user setup is not completed." into oc-dev

This commit is contained in:
TreeHugger Robot
2017-05-26 21:29:41 +00:00
committed by Android (Google) Code Review
2 changed files with 26 additions and 4 deletions

View File

@@ -711,10 +711,13 @@ public final class AutofillManagerService extends SystemService {
ContentResolver resolver = mContext.getContentResolver(); ContentResolver resolver = mContext.getContentResolver();
resolver.registerContentObserver(Settings.Secure.getUriFor( resolver.registerContentObserver(Settings.Secure.getUriFor(
Settings.Secure.AUTOFILL_SERVICE), false, this, UserHandle.USER_ALL); Settings.Secure.AUTOFILL_SERVICE), false, this, UserHandle.USER_ALL);
resolver.registerContentObserver(Settings.Secure.getUriFor(
Settings.Secure.USER_SETUP_COMPLETE), false, this, UserHandle.USER_ALL);
} }
@Override @Override
public void onChange(boolean selfChange, Uri uri, int userId) { public void onChange(boolean selfChange, Uri uri, int userId) {
if (sVerbose) Slog.v(TAG, "onChange(): uri=" + uri + ", userId=" + userId);
synchronized (mLock) { synchronized (mLock) {
updateCachedServiceLocked(userId); updateCachedServiceLocked(userId);
} }

View File

@@ -51,7 +51,6 @@ import android.service.autofill.FillEventHistory.Event;
import android.service.autofill.FillResponse; import android.service.autofill.FillResponse;
import android.service.autofill.IAutoFillService; import android.service.autofill.IAutoFillService;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.LocalLog; import android.util.LocalLog;
import android.util.Slog; import android.util.Slog;
import android.util.SparseArray; import android.util.SparseArray;
@@ -99,6 +98,12 @@ final class AutofillManagerServiceImpl {
*/ */
private boolean mDisabled; private boolean mDisabled;
/**
* Caches whether the setup completed for the current user.
*/
@GuardedBy("mLock")
private boolean mSetupComplete;
private final HandlerCaller.Callback mHandlerCallback = (msg) -> { private final HandlerCaller.Callback mHandlerCallback = (msg) -> {
switch (msg.what) { switch (msg.what) {
case MSG_SERVICE_SAVE: case MSG_SERVICE_SAVE:
@@ -171,6 +176,12 @@ final class AutofillManagerServiceImpl {
} }
} }
private boolean isSetupCompletedLocked() {
final String setupComplete = Settings.Secure.getStringForUser(
mContext.getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, mUserId);
return "1".equals(setupComplete);
}
private String getComponentNameFromSettings() { private String getComponentNameFromSettings() {
return Settings.Secure.getStringForUser( return Settings.Secure.getStringForUser(
mContext.getContentResolver(), Settings.Secure.AUTOFILL_SERVICE, mUserId); mContext.getContentResolver(), Settings.Secure.AUTOFILL_SERVICE, mUserId);
@@ -178,6 +189,12 @@ final class AutofillManagerServiceImpl {
void updateLocked(boolean disabled) { void updateLocked(boolean disabled) {
final boolean wasEnabled = isEnabled(); final boolean wasEnabled = isEnabled();
if (sVerbose) {
Slog.v(TAG, "updateLocked(u=" + mUserId + "): wasEnabled=" + wasEnabled
+ ", mSetupComplete= " + mSetupComplete
+ ", disabled=" + disabled + ", mDisabled=" + mDisabled);
}
mSetupComplete = isSetupCompletedLocked();
mDisabled = disabled; mDisabled = disabled;
ComponentName serviceComponent = null; ComponentName serviceComponent = null;
ServiceInfo serviceInfo = null; ServiceInfo serviceInfo = null;
@@ -199,8 +216,9 @@ final class AutofillManagerServiceImpl {
} else { } else {
mInfo = null; mInfo = null;
} }
if (wasEnabled != isEnabled()) { final boolean isEnabled = isEnabled();
if (!isEnabled()) { if (wasEnabled != isEnabled) {
if (!isEnabled) {
final int sessionCount = mSessions.size(); final int sessionCount = mSessions.size();
for (int i = sessionCount - 1; i >= 0; i--) { for (int i = sessionCount - 1; i >= 0; i--) {
final Session session = mSessions.valueAt(i); final Session session = mSessions.valueAt(i);
@@ -534,6 +552,7 @@ final class AutofillManagerServiceImpl {
pw.print(prefix); pw.print("Default component: "); pw.print(prefix); pw.print("Default component: ");
pw.println(mContext.getString(R.string.config_defaultAutofillService)); pw.println(mContext.getString(R.string.config_defaultAutofillService));
pw.print(prefix); pw.print("Disabled: "); pw.println(mDisabled); pw.print(prefix); pw.print("Disabled: "); pw.println(mDisabled);
pw.print(prefix); pw.print("Setup complete: "); pw.println(mSetupComplete);
pw.print(prefix); pw.print("Last prune: "); pw.println(mLastPrune); pw.print(prefix); pw.print("Last prune: "); pw.println(mLastPrune);
final int size = mSessions.size(); final int size = mSessions.size();
@@ -617,7 +636,7 @@ final class AutofillManagerServiceImpl {
} }
boolean isEnabled() { boolean isEnabled() {
return mInfo != null && !mDisabled; return mSetupComplete && mInfo != null && !mDisabled;
} }
@Override @Override