diff --git a/res/anim/item_animation_fall_down.xml b/res/anim/item_animation_fade_in.xml
similarity index 61%
rename from res/anim/item_animation_fall_down.xml
rename to res/anim/item_animation_fade_in.xml
index df2451cf638..68a2713e534 100644
--- a/res/anim/item_animation_fall_down.xml
+++ b/res/anim/item_animation_fade_in.xml
@@ -18,25 +18,10 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/res/anim/layout_animation_fall_down.xml b/res/anim/layout_animation_fade_in.xml
similarity index 89%
rename from res/anim/layout_animation_fall_down.xml
rename to res/anim/layout_animation_fade_in.xml
index f39735c157b..fcdb8741718 100644
--- a/res/anim/layout_animation_fall_down.xml
+++ b/res/anim/layout_animation_fade_in.xml
@@ -17,6 +17,6 @@
\ No newline at end of file
diff --git a/res/layout/settings_homepage.xml b/res/layout/settings_homepage.xml
index f027d655349..e04b372aa38 100644
--- a/res/layout/settings_homepage.xml
+++ b/res/layout/settings_homepage.xml
@@ -25,6 +25,6 @@
android:id="@+id/card_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layoutAnimation="@anim/layout_animation_fall_down"/>
+ android:layoutAnimation="@anim/layout_animation_fade_in"/>
diff --git a/src/com/android/settings/development/MobileDataAlwaysOnPreferenceController.java b/src/com/android/settings/development/MobileDataAlwaysOnPreferenceController.java
index 78054ae2ab7..b2fa693104e 100644
--- a/src/com/android/settings/development/MobileDataAlwaysOnPreferenceController.java
+++ b/src/com/android/settings/development/MobileDataAlwaysOnPreferenceController.java
@@ -66,7 +66,7 @@ public class MobileDataAlwaysOnPreferenceController extends
protected void onDeveloperOptionsSwitchDisabled() {
super.onDeveloperOptionsSwitchDisabled();
Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.MOBILE_DATA_ALWAYS_ON,
- SETTING_VALUE_OFF);
- ((SwitchPreference) mPreference).setChecked(false);
+ SETTING_VALUE_ON);
+ ((SwitchPreference) mPreference).setChecked(true);
}
}
diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCardFeatureProvider.java b/src/com/android/settings/homepage/contextualcards/ContextualCardFeatureProvider.java
index 8583f38c78b..5ebc924bdec 100644
--- a/src/com/android/settings/homepage/contextualcards/ContextualCardFeatureProvider.java
+++ b/src/com/android/settings/homepage/contextualcards/ContextualCardFeatureProvider.java
@@ -24,16 +24,16 @@ import java.util.List;
public interface ContextualCardFeatureProvider {
/** Homepage displays. */
- public void logHomepageDisplay(Context context, Long latency);
+ void logHomepageDisplay(Context context, long latency);
/** When user clicks dismiss in contextual card */
- public void logContextualCardDismiss(Context context, ContextualCard card);
+ void logContextualCardDismiss(Context context, ContextualCard card);
/** After ContextualCardManager decides which cards will be displayed/hidden */
- public void logContextualCardDisplay(Context context, List showedCards,
+ void logContextualCardDisplay(Context context, List showedCards,
List hiddenCards);
/** When user clicks toggle/title area of a contextual card. */
- public void logContextualCardClick(Context context, ContextualCard card, int row,
+ void logContextualCardClick(Context context, ContextualCard card, int row,
int tapTarget);
}
diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCardFeatureProviderImpl.java b/src/com/android/settings/homepage/contextualcards/ContextualCardFeatureProviderImpl.java
index 32a86e84389..dc295fc1f94 100644
--- a/src/com/android/settings/homepage/contextualcards/ContextualCardFeatureProviderImpl.java
+++ b/src/com/android/settings/homepage/contextualcards/ContextualCardFeatureProviderImpl.java
@@ -85,11 +85,10 @@ public class ContextualCardFeatureProviderImpl implements ContextualCardFeatureP
private static final int TARGET_SLIDER = 3;
@Override
- public void logHomepageDisplay(Context context, Long latency) {
- final Intent intent = new Intent();
- intent.putExtra(EXTRA_CONTEXTUALCARD_ACTION_TYPE, CONTEXTUAL_HOME_SHOW);
- intent.putExtra(EXTRA_LATENCY, latency);
- sendBroadcast(context, intent);
+ public void logHomepageDisplay(Context context, long latency) {
+ sendBroadcast(context, new Intent()
+ .putExtra(EXTRA_CONTEXTUALCARD_ACTION_TYPE, CONTEXTUAL_HOME_SHOW)
+ .putExtra(EXTRA_LATENCY, latency));
}
@Override
diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java b/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java
index f32be26e433..71b262de7d7 100644
--- a/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java
+++ b/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java
@@ -31,6 +31,7 @@ import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
+import android.text.format.DateUtils;
import android.util.Log;
import androidx.annotation.NonNull;
@@ -49,6 +50,7 @@ public class ContextualCardLoader extends AsyncLoaderCompat
@VisibleForTesting
static final int DEFAULT_CARD_COUNT = 4;
static final int CARD_CONTENT_LOADER_ID = 1;
+ static final long CARD_CONTENT_LOADER_TIMEOUT_MS = DateUtils.SECOND_IN_MILLIS;
private static final String TAG = "ContextualCardLoader";
diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCardManager.java b/src/com/android/settings/homepage/contextualcards/ContextualCardManager.java
index 28ad0d30e8e..24266eea409 100644
--- a/src/com/android/settings/homepage/contextualcards/ContextualCardManager.java
+++ b/src/com/android/settings/homepage/contextualcards/ContextualCardManager.java
@@ -59,12 +59,15 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo
ContextualCardUpdateListener {
private static final String TAG = "ContextualCardManager";
+
//The list for Settings Custom Card
private static final int[] SETTINGS_CARDS =
{ContextualCard.CardType.CONDITIONAL, ContextualCard.CardType.LEGACY_SUGGESTION};
@VisibleForTesting
final List mContextualCards;
+ @VisibleForTesting
+ long mStartTime;
private final Context mContext;
private final ControllerRendererPool mControllerRendererPool;
@@ -72,7 +75,6 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo
private final List mLifecycleObservers;
private ContextualCardUpdateListener mListener;
- private long mStartTime;
public ContextualCardManager(Context context, Lifecycle lifecycle) {
mContext = context;
@@ -169,11 +171,14 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo
@Override
public void onFinishCardLoading(List cards) {
- onContextualCardUpdated(cards.stream().collect(groupingBy(ContextualCard::getCardType)));
- final long elapsedTime = System.currentTimeMillis() - mStartTime;
- final ContextualCardFeatureProvider contextualCardFeatureProvider =
- FeatureFactory.getFactory(mContext).getContextualCardFeatureProvider();
- contextualCardFeatureProvider.logHomepageDisplay(mContext, elapsedTime);
+ final long loadTime = System.currentTimeMillis() - mStartTime;
+ if (loadTime <= ContextualCardLoader.CARD_CONTENT_LOADER_TIMEOUT_MS) {
+ onContextualCardUpdated(
+ cards.stream().collect(groupingBy(ContextualCard::getCardType)));
+ }
+ final long totalTime = System.currentTimeMillis() - mStartTime;
+ FeatureFactory.getFactory(mContext).getContextualCardFeatureProvider()
+ .logHomepageDisplay(mContext, totalTime);
}
public ControllerRendererPool getControllerRendererPool() {
diff --git a/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardController.java b/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardController.java
index 02854c2213f..834ebbc6539 100644
--- a/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardController.java
+++ b/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardController.java
@@ -109,7 +109,6 @@ public class ConditionContextualCardController implements ContextualCardControll
final Map> conditionalCards =
buildConditionalCardsWithFooterOrHeader(conditionCards);
mListener.onContextualCardUpdated(conditionalCards);
-
}
/**
diff --git a/tests/robotests/src/com/android/settings/development/MobileDataAlwaysOnPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/MobileDataAlwaysOnPreferenceControllerTest.java
index a578429d63c..91bdad39f91 100644
--- a/tests/robotests/src/com/android/settings/development/MobileDataAlwaysOnPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/development/MobileDataAlwaysOnPreferenceControllerTest.java
@@ -96,13 +96,13 @@ public class MobileDataAlwaysOnPreferenceControllerTest {
}
@Test
- public void onDeveloperOptionsSwitchDisabled_preferenceShouldBeDisabled() {
+ public void onDeveloperOptionsSwitchDisabled_shouldDisableMobileDataAlwaysOn() {
mController.onDeveloperOptionsSwitchDisabled();
final int mode = Settings.Global.getInt(mContext.getContentResolver(),
Settings.Global.MOBILE_DATA_ALWAYS_ON, -1 /* default */);
- assertThat(mode).isEqualTo(MobileDataAlwaysOnPreferenceController.SETTING_VALUE_OFF);
+ assertThat(mode).isEqualTo(MobileDataAlwaysOnPreferenceController.SETTING_VALUE_ON);
verify(mPreference).setEnabled(false);
- verify(mPreference).setChecked(false);
+ verify(mPreference).setChecked(true);
}
}
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java
index 64a7c9cfcd6..81f87b98d81 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/ContextualCardManagerTest.java
@@ -18,6 +18,13 @@ package com.android.settings.homepage.contextualcards;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.anyMap;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
import android.content.Context;
import android.net.Uri;
import android.util.ArrayMap;
@@ -36,6 +43,7 @@ import org.robolectric.RuntimeEnvironment;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
@RunWith(SettingsRobolectricTestRunner.class)
public class ContextualCardManagerTest {
@@ -107,6 +115,25 @@ public class ContextualCardManagerTest {
.isEqualTo(ContextualCard.CardType.CONDITIONAL_FOOTER);
}
+ @Test
+ public void onFinishCardLoading_fastLoad_shouldCallOnContextualCardUpdated() {
+ mManager.mStartTime = System.currentTimeMillis();
+ final ContextualCardManager manager = spy(mManager);
+ doNothing().when(manager).onContextualCardUpdated(anyMap());
+
+ manager.onFinishCardLoading(new ArrayList<>());
+ verify(manager).onContextualCardUpdated(nullable(Map.class));
+ }
+
+ @Test
+ public void onFinishCardLoading_slowLoad_shouldSkipOnContextualCardUpdated() {
+ mManager.mStartTime = 0;
+ final ContextualCardManager manager = spy(mManager);
+ doNothing().when(manager).onContextualCardUpdated(anyMap());
+
+ manager.onFinishCardLoading(new ArrayList<>());
+ verify(manager, never()).onContextualCardUpdated(anyMap());
+ }
private ContextualCard buildContextualCard(String sliceUri) {
return new ContextualCard.Builder()