From 77b2a30e9df88a8c74123e2d74eeff2e8381f9ad Mon Sep 17 00:00:00 2001 From: Mill Chen Date: Wed, 17 Oct 2018 22:46:54 +0800 Subject: [PATCH] Updated misc in Contextual Settings Homepage - Set static cards with full width and removed packageName from setName method. - Removed Storage card from createStaticCards method because it does not belong to default category. - Changed the parameter type of setSliceUri from String to Uri in ContextualCard. - Added StorageSlice and DeviceInfoSlice to the contextual card provider. - Fixed test cases related to these changes. bug: 117874766 Test: robotest Change-Id: Ic2dca353f85d0b6191ab19882dd8c5cb9c6cc658 --- .../settings/homepage/CardContentLoader.java | 22 +++++-------------- .../settings/homepage/ContextualCard.java | 4 ++-- .../SettingsContextualCardProvider.java | 16 +++++++++++++- .../homepage/deviceinfo/DataUsageSlice.java | 12 +++++----- .../homepage/deviceinfo/DeviceInfoSlice.java | 11 ++++------ .../homepage/deviceinfo/StorageSlice.java | 8 +++---- .../homepage/CardContentLoaderTest.java | 7 +++--- .../SettingsContextualCardProviderTest.java | 2 +- .../SliceContextualCardRendererTest.java | 3 ++- .../homepage/CardContentLoaderTest.java | 3 ++- 10 files changed, 45 insertions(+), 43 deletions(-) diff --git a/src/com/android/settings/homepage/CardContentLoader.java b/src/com/android/settings/homepage/CardContentLoader.java index 0b0d6c52e65..401e53cbbbb 100644 --- a/src/com/android/settings/homepage/CardContentLoader.java +++ b/src/com/android/settings/homepage/CardContentLoader.java @@ -34,7 +34,6 @@ import androidx.slice.Slice; import com.android.settings.homepage.deviceinfo.DataUsageSlice; import com.android.settings.homepage.deviceinfo.DeviceInfoSlice; -import com.android.settings.homepage.deviceinfo.StorageSlice; import com.android.settingslib.utils.AsyncLoaderCompat; import java.util.ArrayList; @@ -94,13 +93,13 @@ public class CardContentLoader extends AsyncLoaderCompat> { final double rankingScore = 0.0; final List result = new ArrayList() {{ add(new ContextualCard.Builder() - .setSliceUri(DataUsageSlice.DATA_USAGE_CARD_URI.toString()) - .setName(packageName + "/" + DataUsageSlice.PATH_DATA_USAGE_CARD) + .setSliceUri(DataUsageSlice.DATA_USAGE_CARD_URI) + .setName(DataUsageSlice.PATH_DATA_USAGE) .setPackageName(packageName) .setRankingScore(rankingScore) .setAppVersion(appVersionCode) .setCardType(ContextualCard.CardType.SLICE) - .setIsHalfWidth(true) + .setIsHalfWidth(false) .build()); //TODO(b/115971399): Will change following values of SliceUri and Name // after landing these slice cards. @@ -114,22 +113,13 @@ public class CardContentLoader extends AsyncLoaderCompat> { // .setIsHalfWidth(true) // .build()); add(new ContextualCard.Builder() - .setSliceUri(DeviceInfoSlice.DEVICE_INFO_CARD_URI.toString()) - .setName(packageName + "/" + DeviceInfoSlice.PATH_DEVICE_INFO_CARD) + .setSliceUri(DeviceInfoSlice.DEVICE_INFO_CARD_URI) + .setName(DeviceInfoSlice.PATH_DEVICE_INFO) .setPackageName(packageName) .setRankingScore(rankingScore) .setAppVersion(appVersionCode) .setCardType(ContextualCard.CardType.SLICE) - .setIsHalfWidth(true) - .build()); - add(new ContextualCard.Builder() - .setSliceUri(StorageSlice.STORAGE_CARD_URI.toString()) - .setName(StorageSlice.PATH_STORAGE_CARD) - .setPackageName(packageName) - .setRankingScore(rankingScore) - .setAppVersion(appVersionCode) - .setCardType(ContextualCard.CardType.SLICE) - .setIsHalfWidth(true) + .setIsHalfWidth(false) .build()); }}; return result; diff --git a/src/com/android/settings/homepage/ContextualCard.java b/src/com/android/settings/homepage/ContextualCard.java index 130b878f00e..bb83836fc1d 100644 --- a/src/com/android/settings/homepage/ContextualCard.java +++ b/src/com/android/settings/homepage/ContextualCard.java @@ -244,8 +244,8 @@ public class ContextualCard { return this; } - public Builder setSliceUri(String sliceUri) { - mSliceUri = sliceUri; + public Builder setSliceUri(Uri sliceUri) { + mSliceUri = sliceUri.toString(); return this; } diff --git a/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java b/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java index 2dede95e758..d1c633f423c 100644 --- a/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java +++ b/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java @@ -21,6 +21,8 @@ import static android.provider.SettingsSlicesContract.KEY_WIFI; import android.annotation.Nullable; import com.android.settings.homepage.deviceinfo.DataUsageSlice; +import com.android.settings.homepage.deviceinfo.DeviceInfoSlice; +import com.android.settings.homepage.deviceinfo.StorageSlice; import com.android.settings.intelligence.ContextualCardProto.ContextualCard; import com.android.settings.intelligence.ContextualCardProto.ContextualCardList; import com.android.settings.wifi.WifiSlice; @@ -43,11 +45,23 @@ public class SettingsContextualCardProvider extends ContextualCardProvider { final ContextualCard dataUsageCard = ContextualCard.newBuilder() .setSliceUri(DataUsageSlice.DATA_USAGE_CARD_URI.toString()) - .setCardName(DataUsageSlice.PATH_DATA_USAGE_CARD) + .setCardName(DataUsageSlice.PATH_DATA_USAGE) + .build(); + final ContextualCard deviceInfoCard = + ContextualCard.newBuilder() + .setSliceUri(DeviceInfoSlice.DEVICE_INFO_CARD_URI.toString()) + .setCardName(DeviceInfoSlice.PATH_DEVICE_INFO) + .build(); + final ContextualCard storageInfoCard = + ContextualCard.newBuilder() + .setSliceUri(StorageSlice.STORAGE_CARD_URI.toString()) + .setCardName(StorageSlice.PATH_STORAGE_INFO) .build(); final ContextualCardList cards = ContextualCardList.newBuilder() .addCard(wifiCard) .addCard(dataUsageCard) + .addCard(deviceInfoCard) + .addCard(storageInfoCard) .build(); return cards; diff --git a/src/com/android/settings/homepage/deviceinfo/DataUsageSlice.java b/src/com/android/settings/homepage/deviceinfo/DataUsageSlice.java index d78b93de688..aebeaaeceb1 100644 --- a/src/com/android/settings/homepage/deviceinfo/DataUsageSlice.java +++ b/src/com/android/settings/homepage/deviceinfo/DataUsageSlice.java @@ -53,7 +53,7 @@ public class DataUsageSlice implements CustomSliceable { /** * The path denotes the unique name of data usage slice. */ - public static final String PATH_DATA_USAGE_CARD = "data_usage_card"; + public static final String PATH_DATA_USAGE = "data_usage_card"; /** * Backing Uri for the Data usage Slice. @@ -61,7 +61,7 @@ public class DataUsageSlice implements CustomSliceable { public static final Uri DATA_USAGE_CARD_URI = new Uri.Builder() .scheme(ContentResolver.SCHEME_CONTENT) .authority(SettingsSliceProvider.SLICE_AUTHORITY) - .appendPath(PATH_DATA_USAGE_CARD) + .appendPath(PATH_DATA_USAGE) .build(); private final Context mContext; @@ -88,8 +88,8 @@ public class DataUsageSlice implements CustomSliceable { final DataUsageController.DataUsageInfo info = dataUsageController.getDataUsageInfo(); final ListBuilder listBuilder = new ListBuilder(mContext, DATA_USAGE_CARD_URI, ListBuilder.INFINITY) - .setAccentColor(Utils.getColorAccentDefaultColor(mContext)) - .setHeader(new ListBuilder.HeaderBuilder().setTitle(title)); + .setAccentColor(Utils.getColorAccentDefaultColor(mContext)) + .setHeader(new ListBuilder.HeaderBuilder().setTitle(title)); if (DataUsageUtils.hasSim(mContext)) { listBuilder.addRow(new ListBuilder.RowBuilder() .setTitle(getDataUsageText(info)) @@ -106,9 +106,9 @@ public class DataUsageSlice implements CustomSliceable { @Override public Intent getIntent() { final String screenTitle = mContext.getText(R.string.data_usage_wifi_title).toString(); - final Uri contentUri = new Uri.Builder().appendPath(PATH_DATA_USAGE_CARD).build(); + final Uri contentUri = new Uri.Builder().appendPath(PATH_DATA_USAGE).build(); return SliceBuilderUtils.buildSearchResultPageIntent(mContext, - DataUsageSummary.class.getName(), PATH_DATA_USAGE_CARD, screenTitle, + DataUsageSummary.class.getName(), PATH_DATA_USAGE, screenTitle, MetricsProto.MetricsEvent.SLICE) .setClassName(mContext.getPackageName(), SubSettings.class.getName()) .setData(contentUri); diff --git a/src/com/android/settings/homepage/deviceinfo/DeviceInfoSlice.java b/src/com/android/settings/homepage/deviceinfo/DeviceInfoSlice.java index dc315c53515..ded48984fba 100644 --- a/src/com/android/settings/homepage/deviceinfo/DeviceInfoSlice.java +++ b/src/com/android/settings/homepage/deviceinfo/DeviceInfoSlice.java @@ -23,7 +23,6 @@ import android.content.Intent; import android.net.Uri; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; -import android.telephony.TelephonyManager; import android.text.BidiFormatter; import android.text.TextDirectionHeuristics; import android.text.TextUtils; @@ -53,7 +52,7 @@ public class DeviceInfoSlice implements CustomSliceable { /** * The path denotes the unique name of device info slice */ - public static final String PATH_DEVICE_INFO_CARD = "device_info_card"; + public static final String PATH_DEVICE_INFO = "device_info_card"; /** * Backing Uri for the Device info Slice. @@ -61,16 +60,14 @@ public class DeviceInfoSlice implements CustomSliceable { public static final Uri DEVICE_INFO_CARD_URI = new Uri.Builder() .scheme(ContentResolver.SCHEME_CONTENT) .authority(SettingsSliceProvider.SLICE_AUTHORITY) - .appendPath(PATH_DEVICE_INFO_CARD) + .appendPath(PATH_DEVICE_INFO) .build(); private final Context mContext; - private final TelephonyManager mTelephonyManager; private final SubscriptionManager mSubscriptionManager; public DeviceInfoSlice(Context context) { mContext = context; - mTelephonyManager = mContext.getSystemService(TelephonyManager.class); mSubscriptionManager = mContext.getSystemService(SubscriptionManager.class); } @@ -101,9 +98,9 @@ public class DeviceInfoSlice implements CustomSliceable { @Override public Intent getIntent() { final String screenTitle = mContext.getText(R.string.device_info_label).toString(); - final Uri contentUri = new Uri.Builder().appendPath(PATH_DEVICE_INFO_CARD).build(); + final Uri contentUri = new Uri.Builder().appendPath(PATH_DEVICE_INFO).build(); return SliceBuilderUtils.buildSearchResultPageIntent(mContext, - MyDeviceInfoFragment.class.getName(), PATH_DEVICE_INFO_CARD, screenTitle, + MyDeviceInfoFragment.class.getName(), PATH_DEVICE_INFO, screenTitle, MetricsProto.MetricsEvent.SLICE) .setClassName(mContext.getPackageName(), SubSettings.class.getName()) .setData(contentUri); diff --git a/src/com/android/settings/homepage/deviceinfo/StorageSlice.java b/src/com/android/settings/homepage/deviceinfo/StorageSlice.java index c9464e40061..0f95c57fa03 100644 --- a/src/com/android/settings/homepage/deviceinfo/StorageSlice.java +++ b/src/com/android/settings/homepage/deviceinfo/StorageSlice.java @@ -48,7 +48,7 @@ public class StorageSlice implements CustomSliceable { /** * The path denotes the unique name of storage slicel */ - public static final String PATH_STORAGE_CARD = "storage_card"; + public static final String PATH_STORAGE_INFO = "storage_card"; /** * Backing Uri for the storage slice. @@ -56,7 +56,7 @@ public class StorageSlice implements CustomSliceable { public static final Uri STORAGE_CARD_URI = new Uri.Builder() .scheme(ContentResolver.SCHEME_CONTENT) .authority(SettingsSliceProvider.SLICE_AUTHORITY) - .appendPath(PATH_STORAGE_CARD) + .appendPath(PATH_STORAGE_INFO) .build(); private final Context mContext; @@ -93,9 +93,9 @@ public class StorageSlice implements CustomSliceable { @Override public Intent getIntent() { final String screenTitle = mContext.getText(R.string.storage_label).toString(); - final Uri contentUri = new Uri.Builder().appendPath(PATH_STORAGE_CARD).build(); + final Uri contentUri = new Uri.Builder().appendPath(PATH_STORAGE_INFO).build(); return SliceBuilderUtils.buildSearchResultPageIntent(mContext, - StorageDashboardFragment.class.getName(), PATH_STORAGE_CARD, screenTitle, + StorageDashboardFragment.class.getName(), PATH_STORAGE_INFO, screenTitle, MetricsProto.MetricsEvent.SLICE) .setClassName(mContext.getPackageName(), SubSettings.class.getName()) .setData(contentUri); diff --git a/tests/robotests/src/com/android/settings/homepage/CardContentLoaderTest.java b/tests/robotests/src/com/android/settings/homepage/CardContentLoaderTest.java index defe0d9f759..a7527f37b1f 100644 --- a/tests/robotests/src/com/android/settings/homepage/CardContentLoaderTest.java +++ b/tests/robotests/src/com/android/settings/homepage/CardContentLoaderTest.java @@ -57,15 +57,14 @@ public class CardContentLoaderTest { public void createStaticCards_shouldReturnTwoCards() { final List defaultData = mCardContentLoader.createStaticCards(); - assertThat(defaultData).hasSize(3); + assertThat(defaultData).hasSize(2); } @Test public void createStaticCards_shouldContainDataUsageAndDeviceInfo() { final Uri dataUsage = DataUsageSlice.DATA_USAGE_CARD_URI; final Uri deviceInfo = DeviceInfoSlice.DEVICE_INFO_CARD_URI; - final Uri storageInfo = StorageSlice.STORAGE_CARD_URI; - final List expectedUris = Arrays.asList(dataUsage, deviceInfo, storageInfo); + final List expectedUris = Arrays.asList(dataUsage, deviceInfo); final List actualCardUris = mCardContentLoader.createStaticCards().stream().map( ContextualCard::getSliceUri).collect(Collectors.toList()); @@ -105,7 +104,7 @@ public class CardContentLoaderTest { return new ContextualCard.Builder() .setName("test_card") .setCardType(ContextualCard.CardType.SLICE) - .setSliceUri(sliceUri) + .setSliceUri(Uri.parse(sliceUri)) .build(); } } diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProviderTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProviderTest.java index a80b963c594..fbc91114883 100644 --- a/tests/robotests/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProviderTest.java +++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProviderTest.java @@ -58,6 +58,6 @@ public class SettingsContextualCardProviderTest { final ContextualCardList cards = ContextualCardList.parseFrom( returnValue.getByteArray(ContextualCardProvider.BUNDLE_CARD_LIST)); - assertThat(cards.getCardCount()).isEqualTo(2); + assertThat(cards.getCardCount()).isEqualTo(4); } } \ No newline at end of file diff --git a/tests/robotests/src/com/android/settings/homepage/slices/SliceContextualCardRendererTest.java b/tests/robotests/src/com/android/settings/homepage/slices/SliceContextualCardRendererTest.java index c597a6e4fb0..c5ca8d79487 100644 --- a/tests/robotests/src/com/android/settings/homepage/slices/SliceContextualCardRendererTest.java +++ b/tests/robotests/src/com/android/settings/homepage/slices/SliceContextualCardRendererTest.java @@ -21,6 +21,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; import android.content.Context; +import android.net.Uri; import android.view.LayoutInflater; import android.view.View; @@ -108,7 +109,7 @@ public class SliceContextualCardRendererTest { private ContextualCard buildContextualCard(String sliceUri) { return new ContextualCard.Builder() .setName("test_name") - .setSliceUri(sliceUri) + .setSliceUri(Uri.parse(sliceUri)) .build(); } } diff --git a/tests/unit/src/com/android/settings/homepage/CardContentLoaderTest.java b/tests/unit/src/com/android/settings/homepage/CardContentLoaderTest.java index 1f762bbf0ec..38a1f5a65b0 100644 --- a/tests/unit/src/com/android/settings/homepage/CardContentLoaderTest.java +++ b/tests/unit/src/com/android/settings/homepage/CardContentLoaderTest.java @@ -19,6 +19,7 @@ package com.android.settings.homepage; import static com.google.common.truth.Truth.assertThat; import android.content.Context; +import android.net.Uri; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; @@ -61,7 +62,7 @@ public class CardContentLoaderTest { return new ContextualCard.Builder() .setName("test_card") .setCardType(ContextualCard.CardType.SLICE) - .setSliceUri(sliceUri) + .setSliceUri(Uri.parse(sliceUri)) .build(); } }