Don't show autofill settings if not enabled

The non-indexable keys of language-and-input on my angler are:
  game_controller_settings_category, gesture_assist,
  gesture_double_tap_screen, default_autofill

Fixes: 35956220
Test: Disabled auto-fill and looked at settings: did not find
      autofill button and could not find auto-fill in search
      Settings robolectric test
Merged-In: I0923e707422d1b1de5153a63fa3a5fe4773c055d
Change-Id: I0923e707422d1b1de5153a63fa3a5fe4773c055d
This commit is contained in:
Philip P. Moltmann
2017-04-24 16:13:21 -07:00
parent 9797a39ad7
commit d984e90b63
6 changed files with 141 additions and 9 deletions

View File

@@ -0,0 +1,41 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.applications;
import android.view.autofill.AutofillManager;
/**
* This interface replicates a subset of the android.view.autofill.AutofillManager (AFM). The
* interface exists so that we can use a thin wrapper around the AFM in production code and a mock
* in tests. We cannot directly mock or shadow the AFM, because some of the methods we rely on are
* newer than the API version supported by Robolectric.
*/
public interface AutofillManagerWrapper {
/**
* Calls {@code AutofillManager.hasAutofillFeature()}.
*
* @see AutofillManager#hasAutofillFeature
*/
public boolean hasAutofillFeature();
/**
* Calls {@code AutofillManager.isAutofillSupported()}.
*
* @see AutofillManager#isAutofillSupported
*/
public boolean isAutofillSupported();
}

View File

@@ -0,0 +1,45 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.applications;
import android.view.autofill.AutofillManager;
public class AutofillManagerWrapperImpl implements AutofillManagerWrapper {
private final AutofillManager mAfm;
public AutofillManagerWrapperImpl(AutofillManager afm) {
mAfm = afm;
}
@Override
public boolean hasAutofillFeature() {
if (mAfm == null) {
return false;
}
return mAfm.hasAutofillFeature();
}
@Override
public boolean isAutofillSupported() {
if (mAfm == null) {
return false;
}
return mAfm.isAutofillSupported();
}
}

View File

@@ -21,16 +21,25 @@ import android.content.Context;
import android.content.Intent;
import android.provider.Settings;
import android.text.TextUtils;
import android.view.autofill.AutofillManager;
import com.android.settings.applications.AutofillManagerWrapper;
import com.android.settings.applications.AutofillManagerWrapperImpl;
public class DefaultAutofillPreferenceController extends DefaultAppPreferenceController {
private AutofillManagerWrapper mAutofillManager;
public DefaultAutofillPreferenceController(Context context) {
super(context);
mAutofillManager = new AutofillManagerWrapperImpl(
mContext.getSystemService(AutofillManager.class));
}
@Override
public boolean isAvailable() {
return true;
return mAutofillManager.hasAutofillFeature()
&& mAutofillManager.isAutofillSupported();
}
@Override