Replace footer with regular preference

Replaced the "Manage Storage" footer preference
with a regular preference because the footer type
is not meant to be a touch target. This should fix
the bug with not being able to click on specific
parts of the preference.

Test: run settings espresso tests
Bug: 34349518
Change-Id: I36ada2a6a537a68d9fcbe7e10773896225ecc6b2
This commit is contained in:
Salvador Martinez
2017-02-13 11:50:10 -08:00
parent 65af66f0d8
commit 2f0bee5032
4 changed files with 47 additions and 10 deletions

View File

@@ -43,4 +43,10 @@
android:key="pref_system"
android:title="@string/storage_detail_system">
</com.android.settings.deviceinfo.storage.StorageItemPreferenceAlternate>
<Preference
android:key="manage_storage"
android:title="@string/storage_menu_manage"
android:icon="@drawable/ic_settings_storage"
android:fragment="com.android.settings.deletionhelper.AutomaticStorageManagerSettings">
</Preference>
</PreferenceScreen>

View File

@@ -16,14 +16,13 @@
package com.android.settings.deviceinfo;
import android.content.Context;
import android.support.v7.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.PreferenceController;
public class ManageStoragePreferenceController extends PreferenceController {
public static final String KEY_MANAGE_STORAGE = "footer_preference";
public static final String KEY_MANAGE_STORAGE = "manage_storage";
public ManageStoragePreferenceController(Context context) {
super(context);

View File

@@ -32,7 +32,6 @@ import com.android.settings.deviceinfo.storage.StorageSummaryDonutPreferenceCont
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settings.widget.FooterPreference;
import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
import java.util.ArrayList;
@@ -84,13 +83,6 @@ public class StorageDashboardFragment extends DashboardFragment {
mSummaryController.updateBytes(usedBytes, totalSize);
mPreferenceController.setVolume(mVolume);
mPreferenceController.setSystemSize(systemSize);
// Initialize the footer preference to go to the smart storage management.
final FooterPreference pref = mFooterPreferenceMixin.createFooterPreference();
pref.setTitle(R.string.storage_menu_manage);
pref.setFragment("com.android.settings.deletionhelper.AutomaticStorageManagerSettings");
pref.setIcon(R.drawable.ic_settings_storage);
pref.setEnabled(true);
}
@Override

View File

@@ -0,0 +1,40 @@
package com.android.settings.deviceinfo;
import android.support.test.espresso.intent.rule.IntentsTestRule;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnitRunner;
import com.android.settings.R;
import com.android.settings.Settings.StorageDashboardActivity;
import com.android.settings.deletionhelper.AutomaticStorageManagerSettings;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.click;
import static android.support.test.espresso.intent.Intents.intended;
import static android.support.test.espresso.intent.matcher.IntentMatchers.hasExtra;
import static android.support.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.equalTo;
@SmallTest
public class StorageDashboardFragmentEspressoTest {
public static final String EXTRA_KEY = ":settings:show_fragment";
@Rule
public IntentsTestRule<StorageDashboardActivity> mActivityRule =
new IntentsTestRule<>(StorageDashboardActivity.class, true, true);
@Test
public void testStorageManagePreference_canClickTextView() throws InterruptedException {
// Click on the actual textbox instead of just somewhere in the preference
onView(withText(R.string.storage_menu_manage)).perform(click());
// Check that it worked by seeing if we switched screens
intended(hasExtra(equalTo(EXTRA_KEY),
containsString(AutomaticStorageManagerSettings.class.getName())));
}
}