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

Commit e973b090 authored by Fan Zhang's avatar Fan Zhang Committed by Android (Google) Code Review
Browse files

Merge changes Iacc80db5,I66dc0bfd

* changes:
  Load preference title from uri if available
  Clean up ShadowTheadUtils.
parents e905ef38 823c4dae
Loading
Loading
Loading
Loading
+26 −2
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import static android.content.Intent.EXTRA_USER;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY_URI;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_TITLE;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_TITLE_URI;

import android.app.settings.SettingsEnums;
import android.content.ComponentName;
@@ -108,12 +110,12 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
        if (pref == null) {
            return;
        }
        pref.setTitle(tile.getTitle(activity.getApplicationContext()));
        if (!TextUtils.isEmpty(key)) {
            pref.setKey(key);
        } else {
            pref.setKey(getDashboardKeyForTile(tile));
        }
        bindTitle(pref, tile);
        bindSummary(pref, tile);
        bindIcon(pref, tile, forceRoundedIcon);
        final Bundle metadata = tile.getMetaData();
@@ -168,6 +170,28 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
        launchIntentOrSelectProfile(activity, tile, intent, SettingsEnums.DASHBOARD_SUMMARY);
    }

    private void bindTitle(Preference preference, Tile tile) {
        final CharSequence title = tile.getTitle(mContext.getApplicationContext());
        if (title != null) {
            preference.setTitle(title);
            return;
        }
        if (tile.getMetaData() != null && tile.getMetaData().containsKey(
                META_DATA_PREFERENCE_TITLE_URI)) {
            // Set a placeholder title before starting to fetch real title, this is necessary
            // to avoid preference height change.
            preference.setTitle(R.string.summary_placeholder);

            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);
        if (summary != null) {
+0 −16
Original line number Diff line number Diff line
@@ -206,22 +206,6 @@ public class SummaryLoader {
        });
    }

    /**
     * Updates all tile's summary to latest cached version. This is necessary to handle the case
     * where category is updated after summary change.
     */
    public void updateSummaryToCache(DashboardCategory category) {
        if (category == null) {
            return;
        }
        for (Tile tile : category.getTiles()) {
            final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile);
            if (mSummaryTextMap.containsKey(key)) {
                tile.overrideSummary(mSummaryTextMap.get(key));
            }
        }
    }

    private synchronized void setListeningW(boolean listening) {
        if (mWorkerListening == listening) {
            return;
+20 −5
Original line number Diff line number Diff line
@@ -249,7 +249,7 @@ public class DashboardFeatureProviderImplTest {
    }

    @Test
    @Config(shadows = {ShadowTileUtils.class, ShadowThreadUtils.class})
    @Config(shadows = {ShadowTileUtils.class})
    public void bindPreference_hasSummaryUri_shouldLoadSummaryFromContentProvider() {
        final Preference preference = new Preference(RuntimeEnvironment.application);
        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
@@ -262,6 +262,20 @@ public class DashboardFeatureProviderImplTest {
        assertThat(preference.getSummary()).isEqualTo(ShadowTileUtils.MOCK_SUMMARY);
    }

    @Test
    @Config(shadows = {ShadowTileUtils.class})
    public void bindPreference_hasTitleUri_shouldLoadFromContentProvider() {
        final Preference preference = new Preference(RuntimeEnvironment.application);
        final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
        mActivityInfo.metaData.putString(TileUtils.META_DATA_PREFERENCE_TITLE_URI,
                "content://com.android.settings/tile_title");

        mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.VIEW_UNKNOWN,
                preference, tile, null /*key */, Preference.DEFAULT_ORDER);

        assertThat(preference.getTitle()).isEqualTo(ShadowTileUtils.MOCK_SUMMARY);
    }

    @Test
    public void bindPreference_withNullKeyTileKey_shouldUseTileKey() {
        final Preference preference = new Preference(RuntimeEnvironment.application);
@@ -274,7 +288,7 @@ public class DashboardFeatureProviderImplTest {
    }

    @Test
    @Config(shadows = {ShadowTileUtils.class, ShadowThreadUtils.class})
    @Config(shadows = {ShadowTileUtils.class})
    public void bindPreference_withIconUri_shouldLoadIconFromContentProvider() {
        final Preference preference = new Preference(RuntimeEnvironment.application);
        mActivityInfo.packageName = RuntimeEnvironment.application.getPackageName();
@@ -341,7 +355,8 @@ public class DashboardFeatureProviderImplTest {
        final Intent launchIntent = shadowActivity.getNextStartedActivityForResult().intent;
        assertThat(launchIntent.getAction())
                .isEqualTo("TestAction");
        assertThat(launchIntent.getIntExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY, 0))
        assertThat(
                launchIntent.getIntExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY, 0))
                .isEqualTo(MetricsEvent.SETTINGS_GESTURES);
    }

+0 −27
Original line number Diff line number Diff line
@@ -16,21 +16,16 @@

package com.android.settings.dashboard;

import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.verifyZeroInteractions;
import static org.mockito.Mockito.when;

import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.os.Bundle;

import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settingslib.drawer.CategoryKey;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.Tile;

import org.junit.Before;
@@ -89,26 +84,4 @@ public class SummaryLoaderTest {

        assertThat(mCallbackInvoked).isTrue();
    }

    @Test
    public void testUpdateSummaryToCache_hasCache_shouldUpdate() {
        final String testSummary = "test_summary";
        final DashboardCategory category = new DashboardCategory(CategoryKey.CATEGORY_HOMEPAGE);
        final ActivityInfo activityInfo = new ActivityInfo();
        activityInfo.packageName = "pkg";
        activityInfo.name = "cls";
        activityInfo.metaData = new Bundle();
        activityInfo.metaData.putString(META_DATA_PREFERENCE_KEYHINT, "123");
        final Tile tile = new Tile(activityInfo, category.key);

        category.addTile(tile);
        when(mFeatureFactory.dashboardFeatureProvider.getDashboardKeyForTile(tile))
                .thenReturn(tile.getKey(RuntimeEnvironment.application));

        mSummaryLoader.updateSummaryIfNeeded(mContext, tile, testSummary);
        tile.overrideSummary(null);
        mSummaryLoader.updateSummaryToCache(category);

        assertThat(tile.getSummary(mContext)).isEqualTo(testSummary);
    }
}
+0 −3
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import android.content.Context;

import com.android.settings.R;
import com.android.settings.testutils.DatabaseTestUtils;
import com.android.settings.testutils.shadow.ShadowThreadUtils;

import org.junit.After;
import org.junit.Before;
@@ -45,13 +44,11 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;

import java.util.List;
import java.util.concurrent.TimeUnit;

@RunWith(RobolectricTestRunner.class)
@Config(shadows = ShadowThreadUtils.class)
public class AnomalyCleanupJobServiceTest {
    private static final int UID = 1234;
    private static final String PACKAGE_NAME = "com.android.package";
Loading