Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 92cd7b40 authored by Jason Chiu's avatar Jason Chiu Committed by Android (Google) Code Review
Browse files

Merge "Refactor Settings for injection v2 inline toggle"

parents 2f6fe971 1a1f9314
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -111,7 +111,7 @@ public class SettingsBaseActivity extends FragmentActivity {
        filter.addDataScheme(DATA_SCHEME_PKG);
        registerReceiver(mPackageReceiver, filter);

        new CategoriesUpdateTask().execute();
        updateCategories();
    }

    @Override
@@ -154,7 +154,6 @@ public class SettingsBaseActivity extends FragmentActivity {
        }
    }


    private boolean isLockTaskModePinned() {
        final ActivityManager activityManager =
                getApplicationContext().getSystemService(ActivityManager.class);
@@ -226,7 +225,7 @@ public class SettingsBaseActivity extends FragmentActivity {
    private class PackageReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            new CategoriesUpdateTask().execute();
            updateCategories();
        }
    }
}
+27 −19
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.net.Uri;
import android.os.Bundle;
import android.os.UserHandle;
import android.provider.Settings;
@@ -118,10 +119,10 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
        bindTitle(pref, tile);
        bindSummary(pref, tile);
        bindIcon(pref, tile, forceRoundedIcon);

        final Bundle metadata = tile.getMetaData();
        String clsName = null;
        String action = null;

        if (metadata != null) {
            clsName = metadata.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS);
            action = metadata.getString(META_DATA_KEY_INTENT_ACTION);
@@ -140,10 +141,9 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
                return true;
            });
        }
        final String skipOffsetPackageName = activity.getPackageName();


        if (tile.hasOrder()) {
            final String skipOffsetPackageName = activity.getPackageName();
            final int order = tile.getOrder();
            boolean shouldSkipBaseOrderOffset = TextUtils.equals(
                    skipOffsetPackageName, tile.getIntent().getComponent().getPackageName());
@@ -182,15 +182,19 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
            // to avoid preference height change.
            preference.setTitle(R.string.summary_placeholder);

            final Uri uri = TileUtils.getCompleteUri(tile, META_DATA_PREFERENCE_TITLE_URI);
            refreshTitle(uri, preference);
        }
    }

    private void refreshTitle(Uri uri, Preference preference) {
        ThreadUtils.postOnBackgroundThread(() -> {
            final Map<String, IContentProvider> providerMap = new ArrayMap<>();
                final String uri = tile.getMetaData().getString(META_DATA_PREFERENCE_TITLE_URI);
            final String titleFromUri = TileUtils.getTextFromUri(
                    mContext, uri, providerMap, META_DATA_PREFERENCE_TITLE);
            ThreadUtils.postOnMainThread(() -> preference.setTitle(titleFromUri));
        });
    }
    }

    private void bindSummary(Preference preference, Tile tile) {
        final CharSequence summary = tile.getSummary(mContext);
@@ -202,16 +206,20 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
            // to avoid preference height change.
            preference.setSummary(R.string.summary_placeholder);

            final Uri uri = TileUtils.getCompleteUri(tile, META_DATA_PREFERENCE_SUMMARY_URI);
            refreshSummary(uri, preference);
        } else {
            preference.setSummary(R.string.summary_placeholder);
        }
    }

    private void refreshSummary(Uri uri, Preference preference) {
        ThreadUtils.postOnBackgroundThread(() -> {
            final Map<String, IContentProvider> providerMap = new ArrayMap<>();
                final String uri = tile.getMetaData().getString(META_DATA_PREFERENCE_SUMMARY_URI);
            final String summaryFromUri = TileUtils.getTextFromUri(
                    mContext, uri, providerMap, META_DATA_PREFERENCE_SUMMARY);
            ThreadUtils.postOnMainThread(() -> preference.setSummary(summaryFromUri));
        });
        } else {
            preference.setSummary(R.string.summary_placeholder);
        }
    }

    @VisibleForTesting
@@ -238,7 +246,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
                    packageName = intent.getComponent().getPackageName();
                }
                final Map<String, IContentProvider> providerMap = new ArrayMap<>();
                final String uri = tile.getMetaData().getString(META_DATA_PREFERENCE_ICON_URI);
                final Uri uri = TileUtils.getCompleteUri(tile, META_DATA_PREFERENCE_ICON_URI);
                final Pair<String, Integer> iconInfo = TileUtils.getIconFromUri(
                        mContext, packageName, uri, providerMap);
                if (iconInfo == null) {
+12 −14
Original line number Diff line number Diff line
@@ -98,11 +98,11 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment

        // And wire up with lifecycle.
        final Lifecycle lifecycle = getSettingsLifecycle();
        uniqueControllerFromXml
                .stream()
                .filter(controller -> controller instanceof LifecycleObserver)
                .forEach(
                        controller -> lifecycle.addObserver((LifecycleObserver) controller));
        uniqueControllerFromXml.forEach(controller -> {
            if (controller instanceof LifecycleObserver) {
                lifecycle.addObserver((LifecycleObserver) controller);
            }
        });

        mPlaceholderPreferenceController =
                new DashboardTilePlaceholderPreferenceController(context);
@@ -115,11 +115,9 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
    @VisibleForTesting
    void checkUiBlocker(List<AbstractPreferenceController> controllers) {
        final List<String> keys = new ArrayList<>();
        controllers
                .stream()
                .filter(controller -> controller instanceof BasePreferenceController.UiBlocker)
                .forEach(controller -> {
                    if (controller.isAvailable()) {
        controllers.forEach(controller -> {
            if (controller instanceof BasePreferenceController.UiBlocker
                    && controller.isAvailable()) {
                ((BasePreferenceController) controller).setUiBlockListener(this);
                keys.add(controller.getPreferenceKey());
            }
+6 −5
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.dashboard.DashboardFeatureProviderImpl;
import com.android.settings.testutils.shadow.ShadowAccountManager;
import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settingslib.drawer.ActivityTile;
import com.android.settingslib.drawer.CategoryKey;
import com.android.settingslib.drawer.Tile;

@@ -105,7 +106,7 @@ public class AccountDetailDashboardFragmentTest {

    @Test
    public void refreshDashboardTiles_HasAccountType_shouldDisplay() {
        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
        mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
        mActivityInfo.metaData.putString(METADATA_ACCOUNT_TYPE, "com.abc");

@@ -114,7 +115,7 @@ public class AccountDetailDashboardFragmentTest {

    @Test
    public void refreshDashboardTiles_NoAccountType_shouldNotDisplay() {
        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
        mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT_DETAIL);

        assertThat(mFragment.displayTile(tile)).isFalse();
@@ -122,7 +123,7 @@ public class AccountDetailDashboardFragmentTest {

    @Test
    public void refreshDashboardTiles_OtherAccountType_shouldNotDisplay() {
        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
        mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
        mActivityInfo.metaData.putString(METADATA_ACCOUNT_TYPE, "com.other");

@@ -138,7 +139,7 @@ public class AccountDetailDashboardFragmentTest {
        when(packageManager.resolveActivity(any(Intent.class), anyInt()))
                .thenReturn(mock(ResolveInfo.class));

        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
        mActivityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "key");
        mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT);
        mActivityInfo.metaData.putString(METADATA_ACCOUNT_TYPE, "com.abc");
@@ -166,7 +167,7 @@ public class AccountDetailDashboardFragmentTest {
    public void displayTile_shouldAddUserHandleToTileIntent() {
        mFragment.mUserHandle = new UserHandle(1);

        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
        final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT_DETAIL);
        mActivityInfo.metaData.putString(METADATA_CATEGORY, CategoryKey.CATEGORY_ACCOUNT);
        mActivityInfo.metaData.putString(METADATA_ACCOUNT_TYPE, "com.abc");

+28 −27
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.content.pm.ApplicationInfo;
import android.os.Bundle;
import android.util.Pair;

import com.android.settingslib.drawer.ActivityTile;
import com.android.settingslib.drawer.CategoryKey;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.Tile;
@@ -68,8 +69,8 @@ public class CategoryManagerTest {

    @Test
    public void backwardCompatCleanupForCategory_shouldNotChangeCategoryForNewKeys() {
        final Tile tile1 = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT);
        final Tile tile2 = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT);
        final Tile tile1 = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT);
        final Tile tile2 = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT);
        final DashboardCategory category = new DashboardCategory(CategoryKey.CATEGORY_ACCOUNT);
        category.addTile(tile1);
        category.addTile(tile2);
@@ -85,9 +86,9 @@ public class CategoryManagerTest {

    @Test
    public void backwardCompatCleanupForCategory_shouldNotChangeCategoryForMixedKeys() {
        final Tile tile1 = new Tile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT);
        final Tile tile1 = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_ACCOUNT);
        final String oldCategory = "com.android.settings.category.wireless";
        final Tile tile2 = new Tile(mActivityInfo, oldCategory);
        final Tile tile2 = new ActivityTile(mActivityInfo, oldCategory);
        final DashboardCategory category1 = new DashboardCategory(CategoryKey.CATEGORY_ACCOUNT);
        category1.addTile(tile1);
        final DashboardCategory category2 = new DashboardCategory(oldCategory);
@@ -108,7 +109,7 @@ public class CategoryManagerTest {
    @Test
    public void backwardCompatCleanupForCategory_shouldChangeCategoryForOldKeys() {
        final String oldCategory = "com.android.settings.category.wireless";
        final Tile tile1 = new Tile(mActivityInfo, oldCategory);
        final Tile tile1 = new ActivityTile(mActivityInfo, oldCategory);
        tile1.setCategory(oldCategory);
        final DashboardCategory category1 = new DashboardCategory(oldCategory);
        category1.addTile(tile1);
@@ -146,9 +147,9 @@ public class CategoryManagerTest {
        activityInfo3.metaData.putInt(META_DATA_KEY_ORDER, 200);
        activityInfo3.packageName = testPackage;
        activityInfo3.name = "class3";
        final Tile tile1 = new Tile(activityInfo1, category.key);
        final Tile tile2 = new Tile(activityInfo2, category.key);
        final Tile tile3 = new Tile(activityInfo3, category.key);
        final Tile tile1 = new ActivityTile(activityInfo1, category.key);
        final Tile tile2 = new ActivityTile(activityInfo2, category.key);
        final Tile tile3 = new ActivityTile(activityInfo3, category.key);

        category.addTile(tile1);
        category.addTile(tile2);
@@ -186,9 +187,9 @@ public class CategoryManagerTest {
        activityInfo3.packageName = testPackage1;
        activityInfo3.name = "class3";

        final Tile tile1 = new Tile(activityInfo1, category.key);
        final Tile tile2 = new Tile(activityInfo2, category.key);
        final Tile tile3 = new Tile(activityInfo3, category.key);
        final Tile tile1 = new ActivityTile(activityInfo1, category.key);
        final Tile tile2 = new ActivityTile(activityInfo2, category.key);
        final Tile tile3 = new ActivityTile(activityInfo3, category.key);
        category.addTile(tile1);
        category.addTile(tile2);
        category.addTile(tile3);
@@ -223,9 +224,9 @@ public class CategoryManagerTest {
        activityInfo3.name = "class3";
        activityInfo3.metaData = new Bundle();
        activityInfo3.metaData.putInt(META_DATA_KEY_ORDER, 50);
        final Tile tile1 = new Tile(activityInfo1, category.key);
        final Tile tile2 = new Tile(activityInfo2, category.key);
        final Tile tile3 = new Tile(activityInfo3, category.key);
        final Tile tile1 = new ActivityTile(activityInfo1, category.key);
        final Tile tile2 = new ActivityTile(activityInfo2, category.key);
        final Tile tile3 = new ActivityTile(activityInfo3, category.key);
        category.addTile(tile1);
        category.addTile(tile2);
        category.addTile(tile3);
@@ -268,10 +269,10 @@ public class CategoryManagerTest {
        activityInfo4.metaData = new Bundle();
        activityInfo4.metaData.putInt(META_DATA_KEY_ORDER, -1);

        final Tile tile1 = new Tile(activityInfo1, category.key);
        final Tile tile2 = new Tile(activityInfo2, category.key);
        final Tile tile4 = new Tile(activityInfo4, category.key);
        final Tile tile3 = new Tile(activityInfo3, category.key);
        final Tile tile1 = new ActivityTile(activityInfo1, category.key);
        final Tile tile2 = new ActivityTile(activityInfo2, category.key);
        final Tile tile4 = new ActivityTile(activityInfo4, category.key);
        final Tile tile3 = new ActivityTile(activityInfo3, category.key);
        category.addTile(tile1);
        category.addTile(tile2);
        category.addTile(tile3);
@@ -310,9 +311,9 @@ public class CategoryManagerTest {
        activityInfo3.name = "class3";
        activityInfo3.metaData = new Bundle();
        activityInfo3.metaData.putInt(META_DATA_KEY_ORDER, 1);
        final Tile tile1 = new Tile(activityInfo1, category.key);
        final Tile tile2 = new Tile(activityInfo2, category.key);
        final Tile tile3 = new Tile(activityInfo3, category.key);
        final Tile tile1 = new ActivityTile(activityInfo1, category.key);
        final Tile tile2 = new ActivityTile(activityInfo2, category.key);
        final Tile tile3 = new ActivityTile(activityInfo3, category.key);
        category.addTile(tile1);
        category.addTile(tile2);
        category.addTile(tile3);
@@ -347,9 +348,9 @@ public class CategoryManagerTest {
        activityInfo3.name = "class3";
        activityInfo3.metaData = new Bundle();
        activityInfo3.metaData.putInt(META_DATA_KEY_ORDER, 50);
        final Tile tile1 = new Tile(activityInfo1, category.key);
        final Tile tile2 = new Tile(activityInfo2, category.key);
        final Tile tile3 = new Tile(activityInfo3, category.key);
        final Tile tile1 = new ActivityTile(activityInfo1, category.key);
        final Tile tile2 = new ActivityTile(activityInfo2, category.key);
        final Tile tile3 = new ActivityTile(activityInfo3, category.key);
        category.addTile(tile1);
        category.addTile(tile2);
        category.addTile(tile3);
@@ -381,9 +382,9 @@ public class CategoryManagerTest {
        activityInfo3.metaData = new Bundle();
        activityInfo3.metaData.putInt(META_DATA_KEY_ORDER, 50);

        final Tile tile1 = new Tile(activityInfo1, category.key);
        final Tile tile2 = new Tile(activityInfo2, category.key);
        final Tile tile3 = new Tile(activityInfo3, category.key);
        final Tile tile1 = new ActivityTile(activityInfo1, category.key);
        final Tile tile2 = new ActivityTile(activityInfo2, category.key);
        final Tile tile3 = new ActivityTile(activityInfo3, category.key);
        category.addTile(tile1);
        category.addTile(tile2);
        category.addTile(tile3);
Loading