Merge "Fix popup dialog show wrong device name"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c8d9aff..71840b1 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1128,12 +1128,12 @@
</intent-filter>
</activity-alias>
- <activity android:name=".applications.InstalledAppOpenByDefaultPage"
+ <activity android:name=".applications.InstalledAppOpenByDefaultActivity"
android:label="@string/application_info_label"
- android:permission="android.permission.OPEN_APPLICATION_DETAILS_OPEN_BY_DEFAULT_PAGE"
+ android:permission="android.permission.OPEN_APP_OPEN_BY_DEFAULT_SETTINGS"
android:exported="true">
<intent-filter android:priority="1">
- <action android:name="android.settings.APPLICATION_DETAILS_SETTINGS_OPEN_BY_DEFAULT_PAGE" />
+ <action android:name="com.android.settings.APP_OPEN_BY_DEFAULT_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="package" />
</intent-filter>
diff --git a/src/com/android/settings/applications/InstalledAppOpenByDefaultPage.java b/src/com/android/settings/applications/InstalledAppOpenByDefaultActivity.java
similarity index 93%
rename from src/com/android/settings/applications/InstalledAppOpenByDefaultPage.java
rename to src/com/android/settings/applications/InstalledAppOpenByDefaultActivity.java
index 40eef25..cd30d79 100644
--- a/src/com/android/settings/applications/InstalledAppOpenByDefaultPage.java
+++ b/src/com/android/settings/applications/InstalledAppOpenByDefaultActivity.java
@@ -20,7 +20,7 @@
import com.android.settings.SettingsActivity;
-public class InstalledAppOpenByDefaultPage extends SettingsActivity {
+public class InstalledAppOpenByDefaultActivity extends SettingsActivity {
@Override
public Intent getIntent() {
diff --git a/src/com/android/settings/homepage/ContextualCardController.java b/src/com/android/settings/homepage/ContextualCardController.java
index 4a7a149..e47f70c 100644
--- a/src/com/android/settings/homepage/ContextualCardController.java
+++ b/src/com/android/settings/homepage/ContextualCardController.java
@@ -16,8 +16,6 @@
package com.android.settings.homepage;
-import java.util.List;
-
/**
* Data controller for {@link ContextualCard}.
*/
@@ -26,12 +24,6 @@
@ContextualCard.CardType
int getCardType();
- /**
- * When data is updated or changed, the new data should be passed to ContextualCardManager for
- * list updating.
- */
- void onDataUpdated(List<ContextualCard> cardList);
-
void onPrimaryClick(ContextualCard card);
void onActionClick(ContextualCard card);
diff --git a/src/com/android/settings/homepage/ContextualCardManager.java b/src/com/android/settings/homepage/ContextualCardManager.java
index b9aa792..87b048e 100644
--- a/src/com/android/settings/homepage/ContextualCardManager.java
+++ b/src/com/android/settings/homepage/ContextualCardManager.java
@@ -18,8 +18,11 @@
import static com.android.settings.homepage.CardContentLoader.CARD_CONTENT_LOADER_ID;
+import static java.util.stream.Collectors.groupingBy;
+
import android.content.Context;
import android.os.Bundle;
+import android.util.ArrayMap;
import android.util.Log;
import android.widget.BaseAdapter;
@@ -33,6 +36,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@@ -110,15 +114,12 @@
}
@Override
- public void onContextualCardUpdated(List<ContextualCard> updateList) {
+ public void onContextualCardUpdated(Map<Integer, List<ContextualCard>> updateList) {
//TODO(b/112245748): Should implement a DiffCallback.
//Keep the old list for comparison.
final List<ContextualCard> prevCards = mContextualCards;
- final Set<Integer> cardTypes = updateList
- .stream()
- .map(card -> card.getCardType())
- .collect(Collectors.toSet());
+ final Set<Integer> cardTypes = updateList.keySet();
//Remove the existing data that matches the certain cardType before inserting new data.
final List<ContextualCard> cardsToKeep = mContextualCards
.stream()
@@ -126,10 +127,10 @@
.collect(Collectors.toList());
final List<ContextualCard> allCards = new ArrayList<>();
allCards.addAll(cardsToKeep);
- allCards.addAll(updateList);
+ allCards.addAll(
+ updateList.values().stream().flatMap(List::stream).collect(Collectors.toList()));
sortCards(allCards);
-
//replace with the new data
mContextualCards.clear();
mContextualCards.addAll(allCards);
@@ -137,13 +138,15 @@
loadCardControllers();
if (mListener != null) {
- mListener.onContextualCardUpdated(mContextualCards);
+ final Map<Integer, List<ContextualCard>> cardsToUpdate = new ArrayMap<>();
+ cardsToUpdate.put(ContextualCard.CardType.DEFAULT, mContextualCards);
+ mListener.onContextualCardUpdated(cardsToUpdate);
}
}
@Override
- public void onFinishCardLoading(List<ContextualCard> contextualCards) {
- onContextualCardUpdated(contextualCards);
+ public void onFinishCardLoading(List<ContextualCard> cards) {
+ onContextualCardUpdated(cards.stream().collect(groupingBy(ContextualCard::getCardType)));
}
void setListener(ContextualCardUpdateListener listener) {
diff --git a/src/com/android/settings/homepage/ContextualCardUpdateListener.java b/src/com/android/settings/homepage/ContextualCardUpdateListener.java
index 812c4ce..60dd3a7 100644
--- a/src/com/android/settings/homepage/ContextualCardUpdateListener.java
+++ b/src/com/android/settings/homepage/ContextualCardUpdateListener.java
@@ -17,15 +17,19 @@
package com.android.settings.homepage;
import java.util.List;
+import java.util.Map;
/**
* When {@link ContextualCardController} detects changes, it will notify the listeners registered.
- * In our case, {@link ContextualCardManager} gets noticed.
- *
- * After the list of {@link ContextualCard} gets updated in{@link ContextualCardManager},
- * {@link ContextualCardManager} will notify the listeners registered, {@link
- * ContextualCardsAdapter} in this case.
*/
public interface ContextualCardUpdateListener {
- void onContextualCardUpdated(List<ContextualCard> updateList);
+
+ /**
+ * Called when a set of cards are updated.
+ *
+ * @param cards A map of updates grouped by {@link ContextualCard.CardType}. Values can be
+ * null, which means all cards from corresponding {@link
+ * ContextualCard.CardType} are removed.
+ */
+ void onContextualCardUpdated(Map<Integer, List<ContextualCard>> cards);
}
\ No newline at end of file
diff --git a/src/com/android/settings/homepage/ContextualCardsAdapter.java b/src/com/android/settings/homepage/ContextualCardsAdapter.java
index 402212f..9ab8893 100644
--- a/src/com/android/settings/homepage/ContextualCardsAdapter.java
+++ b/src/com/android/settings/homepage/ContextualCardsAdapter.java
@@ -26,6 +26,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
public class ContextualCardsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
implements ContextualCardUpdateListener {
@@ -101,7 +102,8 @@
}
@Override
- public void onContextualCardUpdated(List<ContextualCard> contextualCards) {
+ public void onContextualCardUpdated(Map<Integer, List<ContextualCard>> cards) {
+ final List<ContextualCard> contextualCards = cards.get(ContextualCard.CardType.DEFAULT);
//TODO(b/112245748): Should implement a DiffCallback so we can use notifyItemChanged()
// instead.
if (contextualCards == null) {
diff --git a/src/com/android/settings/homepage/conditional/ConditionContextualCardController.java b/src/com/android/settings/homepage/conditional/ConditionContextualCardController.java
index adac8eb..fbbab14 100644
--- a/src/com/android/settings/homepage/conditional/ConditionContextualCardController.java
+++ b/src/com/android/settings/homepage/conditional/ConditionContextualCardController.java
@@ -17,6 +17,7 @@
package com.android.settings.homepage.conditional;
import android.content.Context;
+import android.util.ArrayMap;
import com.android.settings.homepage.ContextualCard;
import com.android.settings.homepage.ContextualCardController;
@@ -27,6 +28,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
/**
* This controller triggers the loading of conditional cards and monitors state changes to
@@ -57,11 +59,6 @@
}
@Override
- public void onDataUpdated(List<ContextualCard> cardList) {
- mListener.onContextualCardUpdated(cardList);
- }
-
- @Override
public void onStart() {
mConditionManager.startMonitoringStateChange();
}
@@ -105,7 +102,9 @@
}
if (mListener != null) {
- onDataUpdated(conditionCards);
+ final Map<Integer, List<ContextualCard>> conditionalCards = new ArrayMap<>();
+ conditionalCards.put(ContextualCard.CardType.CONDITIONAL, conditionCards);
+ mListener.onContextualCardUpdated(conditionalCards);
}
}
}
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index de67c10..2e6611f 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -465,8 +465,7 @@
} else {
enabled = ipAndProxyFieldsAreValid();
}
- if (mEapCaCertSpinner != null
- && mView.findViewById(R.id.l_ca_cert).getVisibility() != View.GONE) {
+ if (mAccessPointSecurity == AccessPoint.SECURITY_EAP) {
String caCertSelection = (String) mEapCaCertSpinner.getSelectedItem();
if (caCertSelection.equals(mUnspecifiedCertString)) {
// Disallow submit if the user has not selected a CA certificate for an EAP network
@@ -482,10 +481,8 @@
enabled = false;
}
}
- if (mEapUserCertSpinner != null
- && mView.findViewById(R.id.l_user_cert).getVisibility() != View.GONE
- && ((String) mEapUserCertSpinner.getSelectedItem())
- .equals(mUnspecifiedCertString)) {
+ if (mAccessPointSecurity == AccessPoint.SECURITY_EAP
+ && mEapUserCertSpinner.getSelectedItem().equals(mUnspecifiedCertString)) {
// Disallow submit if the user has not selected a user certificate for an EAP network
// configuration.
enabled = false;
diff --git a/tests/robotests/src/com/android/settings/homepage/conditional/ConditionContextualCardControllerTest.java b/tests/robotests/src/com/android/settings/homepage/conditional/ConditionContextualCardControllerTest.java
index ed45ce7..a59a3bc 100644
--- a/tests/robotests/src/com/android/settings/homepage/conditional/ConditionContextualCardControllerTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/conditional/ConditionContextualCardControllerTest.java
@@ -82,7 +82,7 @@
mController.onConditionsChanged();
- verify(mController).onDataUpdated(any());
+ verify(mListener).onContextualCardUpdated(any());
}
@Test
@@ -94,7 +94,7 @@
mController.onConditionsChanged();
- verify(mController, never()).onDataUpdated(any());
+ verify(mListener, never()).onContextualCardUpdated(any());
}
private class FakeConditionalCard implements ConditionalCard {
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java
index 5e8dd28..54be773 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java
@@ -184,6 +184,22 @@
}
@Test
+ public void isSubmittable_EapToPskWithValidPassword_shouldReturnTrue() {
+ final TextView password = mView.findViewById(R.id.password);
+ final Spinner securitySpinner = mView.findViewById(R.id.security);
+ assertThat(password).isNotNull();
+ assertThat(securitySpinner).isNotNull();
+ when(mAccessPoint.isSaved()).thenReturn(true);
+
+ // Change it from EAP to PSK
+ mController.onItemSelected(securitySpinner, null, AccessPoint.SECURITY_EAP, 0);
+ mController.onItemSelected(securitySpinner, null, AccessPoint.SECURITY_PSK, 0);
+ password.setText(GOOD_PSK);
+
+ assertThat(mController.isSubmittable()).isTrue();
+ }
+
+ @Test
public void getSignalString_notReachable_shouldHaveNoSignalString() {
when(mAccessPoint.isReachable()).thenReturn(false);