Merge "Remove tint to show rainbow drawable on Bluetooth devices slice"
diff --git a/Android.mk b/Android.mk
index 283575d..e385b34 100644
--- a/Android.mk
+++ b/Android.mk
@@ -49,7 +49,6 @@
settings-contextual-card-protos-lite \
contextualcards \
settings-logtags \
- statsdprotolite \
zxing-core-1.7
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
diff --git a/res/layout/homepage_slice_tile.xml b/res/layout/homepage_slice_tile.xml
index b2badf5..ca8791f 100644
--- a/res/layout/homepage_slice_tile.xml
+++ b/res/layout/homepage_slice_tile.xml
@@ -31,7 +31,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
- android:animateLayoutChanges="true"
android:importantForAccessibility="no"
style="@style/SliceViewStyle"/>
diff --git a/res/layout/preference.xml b/res/layout/preference.xml
index 195671b..db96139 100644
--- a/res/layout/preference.xml
+++ b/res/layout/preference.xml
@@ -54,6 +54,10 @@
</RelativeLayout>
+ <include
+ layout="@layout/preference_two_target_divider"
+ android:visibility="gone"/>
+
<LinearLayout
android:id="@android:id/widget_frame"
android:layout_width="wrap_content"
diff --git a/res/layout/slice_preference_layout.xml b/res/layout/slice_preference_layout.xml
index ae58901..4cea9c0 100644
--- a/res/layout/slice_preference_layout.xml
+++ b/res/layout/slice_preference_layout.xml
@@ -25,5 +25,5 @@
<androidx.slice.widget.SliceView
android:id="@+id/slice_view"
android:layout_width="match_parent"
- android:layout_height="@dimen/slice_preference_group_height"/>
+ android:layout_height="wrap_content"/>
</FrameLayout>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index ef6fc4f..248fb81 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -404,7 +404,4 @@
<!-- Wi-Fi DPP fragment icon size -->
<dimen name="wifi_dpp_fragment_icon_width_height">48dp</dimen>
-
- <!-- Height for slice preference, which contains 6 items at most -->
- <dimen name="slice_preference_group_height">360dp</dimen>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2746543..a55fca3 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4194,6 +4194,8 @@
<string name="uninstall_all_users_text">Uninstall for all users</string>
<!-- [CHAR LIMIT=NONE] Manage applications, individual application info screen, button label under Storage heading. Button to install an application for the user. -->
<string name="install_text">Install</string>
+ <!-- [CHAR LIMIT=25] Manage applications, individual application info screen, button label under Storage heading. Button to disable an existing application. -->
+ <string name="disable_text">Disable</string>
<!-- [CHAR LIMIT=25] Manage applications, individual application info screen, button label under Storage heading. Button to re-enable an existing application. -->
<string name="enable_text">Enable</string>
<!-- Manage applications, individual application info screen, button label under Storage heading. Button to clear all data associated with tis app (for example, remove all cached emails for an Email app) -->
@@ -4332,9 +4334,9 @@
<!-- Manage applications. application installation location summary -->
<string name="app_install_location_summary">Change the preferred installation location for new apps</string>
<!-- [CHAR LIMIT=30] Manage applications, label for option to disable app -->
- <string name="app_disable_dlg_positive">Uninstall app</string>
- <!-- [CHAR LIMIT=200] Manage applications, text for dialog when disabling apps -->
- <string name="app_disable_dlg_text">If you uninstall this app, Android and other apps may no longer function as intended.</string>
+ <string name="app_disable_dlg_positive">Disable app</string>
+ <!-- [CHAR LIMIT=NONE] Manage applications, text for dialog when disabling apps -->
+ <string name="app_disable_dlg_text">If you disable this app, Android and other apps may no longer function as intended. Keep in mind, you can\u2019t delete this app since it came pre-installed on your device. By disabling, you turn this app off and hide it on your device.</string>
<!-- [CHAR LIMIT=30] Manage applications, title for dialog when disabling notifications for an app -->
<string name="app_disable_notifications_dlg_title">Turn off notifications?</string>
<!-- Manage applications, individual application info screen, section heading for information about the app installer [CHAR_LIMIT=25] -->
@@ -7680,6 +7682,18 @@
<string name="profile_section_header">Work notifications</string>
<!-- Configure Notifications: setting title [CHAR LIMIT=80] -->
+ <string name="asst_capability_prioritizer_title">Automatic Notification Prioritizer</string>
+
+ <!-- Configure Notifications: setting summary [CHAR LIMIT=200] -->
+ <string name="asst_capability_prioritizer_summary">Automatically silence and demote less important notifications</string>
+
+ <!-- Configure Notifications: setting title [CHAR LIMIT=80] -->
+ <string name="asst_capabilities_actions_replies_title">Smart actions and replies</string>
+
+ <!-- Configure Notifications: setting summary [CHAR LIMIT=200] -->
+ <string name="asst_capabilities_actions_replies_summary">Automatically add contextual notification actions and quick replies to notifications</string>
+
+ <!-- Configure Notifications: setting title [CHAR LIMIT=80] -->
<string name="hide_silent_icons_title">Hide silent notification status icons</string>
<!-- Configure Notifications: setting summary [CHAR LIMIT=NONE] -->
diff --git a/res/xml/configure_notification_settings.xml b/res/xml/configure_notification_settings.xml
index 38fa060..e2517d5 100644
--- a/res/xml/configure_notification_settings.xml
+++ b/res/xml/configure_notification_settings.xml
@@ -27,6 +27,18 @@
settings:controller="com.android.settings.notification.NotificationAssistantPreferenceController"/>
<SwitchPreference
+ android:key="asst_capability_prioritizer"
+ android:title="@string/asst_capability_prioritizer_title"
+ android:summary="@string/asst_capability_prioritizer_summary"
+ settings:controller="com.android.settings.notification.AssistantCapabilityPreferenceController" />
+
+ <SwitchPreference
+ android:key="asst_capabilities_actions_replies"
+ android:title="@string/asst_capabilities_actions_replies_title"
+ android:summary="@string/asst_capabilities_actions_replies_summary"
+ settings:controller="com.android.settings.notification.AssistantCapabilityPreferenceController" />
+
+ <SwitchPreference
android:key="hide_silent_icons"
android:title="@string/hide_silent_icons_title"
android:summary="@string/hide_silent_icons_summary"
diff --git a/src/com/android/settings/RadioInfo.java b/src/com/android/settings/RadioInfo.java
index 495d35c..6f6e6c4 100644
--- a/src/com/android/settings/RadioInfo.java
+++ b/src/com/android/settings/RadioInfo.java
@@ -1571,7 +1571,8 @@
}
private static boolean isDsdsSupported() {
- return TelephonyManager.getDefault().isMultisimSupported();
+ return (TelephonyManager.getDefault().isMultiSimSupported()
+ == TelephonyManager.MULTISIM_ALLOWED);
}
private static boolean isDsdsEnabled() {
diff --git a/src/com/android/settings/accessibility/AccessibilityHearingAidPreferenceController.java b/src/com/android/settings/accessibility/AccessibilityHearingAidPreferenceController.java
index 1881ca7..641d8ca 100644
--- a/src/com/android/settings/accessibility/AccessibilityHearingAidPreferenceController.java
+++ b/src/com/android/settings/accessibility/AccessibilityHearingAidPreferenceController.java
@@ -31,6 +31,9 @@
import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.FragmentManager;
+import androidx.lifecycle.Lifecycle.Event;
+import androidx.lifecycle.LifecycleObserver;
+import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -40,9 +43,6 @@
import com.android.settings.core.SubSettingLauncher;
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.core.lifecycle.LifecycleObserver;
-import com.android.settingslib.core.lifecycle.events.OnPause;
-import com.android.settingslib.core.lifecycle.events.OnResume;
import java.util.Iterator;
import java.util.List;
@@ -53,7 +53,7 @@
* Controller that shows and updates the bluetooth device name
*/
public class AccessibilityHearingAidPreferenceController extends BasePreferenceController
- implements LifecycleObserver, OnResume, OnPause {
+ implements LifecycleObserver {
private static final String TAG = "AccessibilityHearingAidPreferenceController";
private Preference mHearingAidPreference;
@@ -104,7 +104,7 @@
return mHearingAidProfileSupported ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
- @Override
+ @OnLifecycleEvent(Event.ON_RESUME)
public void onResume() {
if (mHearingAidProfileSupported) {
IntentFilter filter = new IntentFilter();
@@ -114,7 +114,7 @@
}
}
- @Override
+ @OnLifecycleEvent(Event.ON_PAUSE)
public void onPause() {
if (mHearingAidProfileSupported) {
mContext.unregisterReceiver(mHearingAidChangedReceiver);
diff --git a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java
index c661890..e118ed6 100644
--- a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java
@@ -559,15 +559,15 @@
if (mHomePackages.contains(mAppEntry.info.packageName)
|| isSystemPackage(mActivity.getResources(), mPm, mPackageInfo)) {
// Disable button for core system applications.
- mButtonsPref.setButton2Text(R.string.uninstall_text)
+ mButtonsPref.setButton2Text(R.string.disable_text)
.setButton2Icon(R.drawable.ic_settings_delete);
} else if (mAppEntry.info.enabled && !isDisabledUntilUsed()) {
- mButtonsPref.setButton2Text(R.string.uninstall_text)
+ mButtonsPref.setButton2Text(R.string.disable_text)
.setButton2Icon(R.drawable.ic_settings_delete);
disableable = !mApplicationFeatureProvider.getKeepEnabledPackages()
.contains(mAppEntry.info.packageName);
} else {
- mButtonsPref.setButton2Text(R.string.install_text)
+ mButtonsPref.setButton2Text(R.string.enable_text)
.setButton2Icon(R.drawable.ic_settings_install);
disableable = true;
}
diff --git a/src/com/android/settings/backup/BackupSettingsHelper.java b/src/com/android/settings/backup/BackupSettingsHelper.java
index b836e55..1d3455b 100644
--- a/src/com/android/settings/backup/BackupSettingsHelper.java
+++ b/src/com/android/settings/backup/BackupSettingsHelper.java
@@ -25,6 +25,7 @@
import android.os.ServiceManager;
import android.os.UserHandle;
import android.os.UserManager;
+import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
@@ -91,9 +92,9 @@
*
* @return Label for the backup settings item.
*/
- public String getLabelForBackupSettings() {
- String label = getLabelFromBackupTransport();
- if (label == null || label.isEmpty()) {
+ public CharSequence getLabelForBackupSettings() {
+ CharSequence label = getLabelFromBackupTransport();
+ if (TextUtils.isEmpty(label)) {
label = mContext.getString(R.string.privacy_settings_title);
}
return label;
@@ -222,10 +223,11 @@
}
@VisibleForTesting
- String getLabelFromBackupTransport() {
+ CharSequence getLabelFromBackupTransport() {
try {
- String label =
- mBackupManager.getDataManagementLabel(mBackupManager.getCurrentTransport());
+ CharSequence label =
+ mBackupManager.getDataManagementLabelForUser(
+ UserHandle.myUserId(), mBackupManager.getCurrentTransport());
if (Log.isLoggable(TAG, Log.DEBUG)) {
Log.d(TAG, "Received the backup settings label from backup transport: " + label);
}
diff --git a/src/com/android/settings/backup/BackupSettingsPreferenceController.java b/src/com/android/settings/backup/BackupSettingsPreferenceController.java
index 2a657ea..4e0e3b4 100644
--- a/src/com/android/settings/backup/BackupSettingsPreferenceController.java
+++ b/src/com/android/settings/backup/BackupSettingsPreferenceController.java
@@ -31,7 +31,7 @@
private static final String BACKUP_SETTINGS = "backup_settings";
private static final String MANUFACTURER_SETTINGS = "manufacturer_backup";
private Intent mBackupSettingsIntent;
- private String mBackupSettingsTitle;
+ private CharSequence mBackupSettingsTitle;
private String mBackupSettingsSummary;
private Intent mManufacturerIntent;
private String mManufacturerLabel;
diff --git a/src/com/android/settings/backup/DataManagementPreferenceController.java b/src/com/android/settings/backup/DataManagementPreferenceController.java
index d19b866..34d51ac 100644
--- a/src/com/android/settings/backup/DataManagementPreferenceController.java
+++ b/src/com/android/settings/backup/DataManagementPreferenceController.java
@@ -48,7 +48,7 @@
return;
}
preference.setIntent(mPSCD.getManageIntent());
- final String manageLabel = mPSCD.getManageLabel();
+ final CharSequence manageLabel = mPSCD.getManageLabel();
if (manageLabel != null) {
preference.setTitle(manageLabel);
}
diff --git a/src/com/android/settings/backup/PrivacySettingsConfigData.java b/src/com/android/settings/backup/PrivacySettingsConfigData.java
index ffe05b8..8bea11b 100644
--- a/src/com/android/settings/backup/PrivacySettingsConfigData.java
+++ b/src/com/android/settings/backup/PrivacySettingsConfigData.java
@@ -27,7 +27,7 @@
private Intent mConfigIntent;
private String mConfigSummary;
private Intent mManageIntent;
- private String mManageLabel;
+ private CharSequence mManageLabel;
private PrivacySettingsConfigData() {
mBackupEnabled = false;
@@ -85,11 +85,11 @@
mManageIntent = manageIntent;
}
- public String getManageLabel() {
+ public CharSequence getManageLabel() {
return mManageLabel;
}
- public void setManageLabel(final String manageLabel) {
+ public void setManageLabel(final CharSequence manageLabel) {
mManageLabel = manageLabel;
}
}
diff --git a/src/com/android/settings/backup/PrivacySettingsUtils.java b/src/com/android/settings/backup/PrivacySettingsUtils.java
index f8f21dd..bb1108c 100644
--- a/src/com/android/settings/backup/PrivacySettingsUtils.java
+++ b/src/com/android/settings/backup/PrivacySettingsUtils.java
@@ -97,7 +97,8 @@
data.setConfigSummary(backupManager.getDestinationString(transport));
data.setManageIntent(validatedActivityIntent(context,
backupManager.getDataManagementIntent(transport), "management"));
- data.setManageLabel(backupManager.getDataManagementLabel(transport));
+ data.setManageLabel(
+ backupManager.getDataManagementLabelForUser(UserHandle.myUserId(), transport));
data.setBackupGray(false);
} catch (RemoteException e) {
// leave it 'false' and disable the UI; there's no backup manager
diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
index d95320f..a014c29 100644
--- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
+++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
@@ -174,7 +174,8 @@
return;
}
- mTelephonyManager.listen(mPhoneStateListener,
+ mTelephonyManager.createForSubscriptionId(mSubscriptionInfo.getSubscriptionId())
+ .listen(mPhoneStateListener,
PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
| PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
| PhoneStateListener.LISTEN_SERVICE_STATE);
@@ -197,8 +198,8 @@
return;
}
- mTelephonyManager.listen(mPhoneStateListener,
- PhoneStateListener.LISTEN_NONE);
+ mTelephonyManager.createForSubscriptionId(mSubscriptionInfo.getSubscriptionId())
+ .listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
if (mShowLatestAreaInfo) {
mContext.unregisterReceiver(mAreaInfoReceiver);
@@ -432,8 +433,7 @@
@VisibleForTesting
PhoneStateListener getPhoneStateListener() {
- return new PhoneStateListener(
- mSubscriptionInfo.getSubscriptionId()) {
+ return new PhoneStateListener() {
@Override
public void onDataConnectionStateChanged(int state) {
updateDataState(state);
diff --git a/src/com/android/settings/homepage/contextualcards/slices/SliceFullCardRendererHelper.java b/src/com/android/settings/homepage/contextualcards/slices/SliceFullCardRendererHelper.java
index ee63536..ef0a67d 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/SliceFullCardRendererHelper.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/SliceFullCardRendererHelper.java
@@ -16,7 +16,6 @@
package com.android.settings.homepage.contextualcards.slices;
-import android.animation.LayoutTransition;
import android.content.Context;
import android.view.View;
@@ -95,7 +94,6 @@
public SliceViewHolder(View view) {
super(view);
sliceView = view.findViewById(R.id.slice_view);
- sliceView.getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
}
}
}
diff --git a/src/com/android/settings/notification/AssistantCapabilityPreferenceController.java b/src/com/android/settings/notification/AssistantCapabilityPreferenceController.java
new file mode 100644
index 0000000..be90a04
--- /dev/null
+++ b/src/com/android/settings/notification/AssistantCapabilityPreferenceController.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.content.Context;
+import android.os.UserHandle;
+import android.service.notification.Adjustment;
+
+import com.android.settings.core.TogglePreferenceController;
+
+import com.google.common.annotations.VisibleForTesting;
+
+import java.util.List;
+
+public class AssistantCapabilityPreferenceController extends TogglePreferenceController {
+
+ static final String PRIORITIZER_KEY = "asst_capability_prioritizer";
+ static final String SMART_KEY = "asst_capabilities_actions_replies";
+ private NotificationBackend mBackend;
+
+ public AssistantCapabilityPreferenceController(Context context, String key) {
+ super(context, key);
+ mBackend = new NotificationBackend();
+ }
+
+ @VisibleForTesting
+ void setBackend(NotificationBackend backend) {
+ mBackend = backend;
+ }
+
+ @Override
+ public boolean isChecked() {
+ List<String> capabilities = mBackend.getAssistantCapabilities(mContext.getPackageName());
+ if (PRIORITIZER_KEY.equals(getPreferenceKey())) {
+ return capabilities.contains(Adjustment.KEY_IMPORTANCE);
+ } else if (SMART_KEY.equals(getPreferenceKey())) {
+ return capabilities.contains(Adjustment.KEY_CONTEXTUAL_ACTIONS)
+ && capabilities.contains(Adjustment.KEY_TEXT_REPLIES);
+ }
+ return false;
+ }
+
+ @Override
+ public boolean setChecked(boolean isChecked) {
+ if (PRIORITIZER_KEY.equals(getPreferenceKey())) {
+ mBackend.allowAssistantCapability(Adjustment.KEY_IMPORTANCE, isChecked);
+ } else if (SMART_KEY.equals(getPreferenceKey())) {
+ mBackend.allowAssistantCapability(Adjustment.KEY_CONTEXTUAL_ACTIONS, isChecked);
+ mBackend.allowAssistantCapability(Adjustment.KEY_TEXT_REPLIES, isChecked);
+ }
+ return true;
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return mBackend.getAllowedNotificationAssistant() != null
+ ? AVAILABLE : DISABLED_DEPENDENT_SETTING;
+ }
+}
+
+
diff --git a/src/com/android/settings/notification/NotificationBackend.java b/src/com/android/settings/notification/NotificationBackend.java
index ba07438..4227050 100644
--- a/src/com/android/settings/notification/NotificationBackend.java
+++ b/src/com/android/settings/notification/NotificationBackend.java
@@ -339,6 +339,27 @@
}
}
+ public void allowAssistantCapability(String capability, boolean allowed) {
+ try {
+ if (allowed) {
+ sINM.allowAssistantCapability(capability);
+ } else {
+ sINM.disallowAssistantCapability(capability);
+ }
+ } catch (Exception e) {
+ Log.w(TAG, "Error calling NoMan", e);
+ }
+ }
+
+ public List<String> getAssistantCapabilities(String pkg) {
+ try {
+ return sINM.getAllowedAssistantCapabilities(pkg);
+ } catch (Exception e) {
+ Log.w(TAG, "Error calling NoMan", e);
+ }
+ return new ArrayList<>();
+ }
+
protected void recordAggregatedUsageEvents(Context context, AppRow appRow) {
long now = System.currentTimeMillis();
long startTime = now - (DateUtils.DAY_IN_MILLIS * DAYS_TO_CHECK);
diff --git a/src/com/android/settings/sim/SimSettings.java b/src/com/android/settings/sim/SimSettings.java
index b646b3b..e43c6a5 100644
--- a/src/com/android/settings/sim/SimSettings.java
+++ b/src/com/android/settings/sim/SimSettings.java
@@ -220,7 +220,7 @@
Log.d(TAG, "Register for call state change");
for (int i = 0; i < mPhoneCount; i++) {
int subId = mSelectableSubInfos.get(i).getSubscriptionId();
- tm.listen(getPhoneStateListener(i, subId),
+ tm.createForSubscriptionId(subId).listen(getPhoneStateListener(i),
PhoneStateListener.LISTEN_CALL_STATE);
}
}
@@ -239,13 +239,13 @@
}
}
- private PhoneStateListener getPhoneStateListener(int phoneId, int subId) {
+ private PhoneStateListener getPhoneStateListener(int phoneId) {
// Disable Sim selection for Data when voice call is going on as changing the default data
// sim causes a modem reset currently and call gets disconnected
// ToDo : Add subtext on disabled preference to let user know that default data sim cannot
// be changed while call is going on
final int i = phoneId;
- mPhoneStateListener[phoneId] = new PhoneStateListener(subId) {
+ mPhoneStateListener[phoneId] = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (DBG) log("PhoneStateListener.onCallStateChanged: state=" + state);
diff --git a/src/com/android/settings/wifi/AddWifiNetworkPreference.java b/src/com/android/settings/wifi/AddWifiNetworkPreference.java
index cd2e4a8..e49f2ab 100644
--- a/src/com/android/settings/wifi/AddWifiNetworkPreference.java
+++ b/src/com/android/settings/wifi/AddWifiNetworkPreference.java
@@ -20,7 +20,6 @@
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.util.Log;
-import android.view.View;
import android.widget.ImageButton;
import androidx.annotation.DrawableRes;
@@ -63,10 +62,6 @@
getContext().startActivity(
WifiDppUtils.getEnrolleeQrCodeScannerIntent(/* ssid */ null));
});
-
- final View divider = (View) holder.findViewById(
- com.android.settingslib.R.id.two_target_divider);
- divider.setVisibility(View.INVISIBLE);
}
}
diff --git a/src/com/android/settings/wifi/NetworkRequestDialogFragment.java b/src/com/android/settings/wifi/NetworkRequestDialogFragment.java
index 09360e4..28c6cb7 100644
--- a/src/com/android/settings/wifi/NetworkRequestDialogFragment.java
+++ b/src/com/android/settings/wifi/NetworkRequestDialogFragment.java
@@ -124,7 +124,7 @@
final AlertDialog.Builder builder = new AlertDialog.Builder(context)
.setCustomTitle(customTitle)
.setAdapter(mDialogAdapter, this)
- .setNegativeButton(R.string.cancel, (dialog, which) -> getActivity().finish())
+ .setNegativeButton(R.string.cancel, (dialog, which) -> onCancel(dialog))
// Do nothings, will replace the onClickListener to avoid auto closing dialog.
.setNeutralButton(R.string.network_connection_request_dialog_showall,
null /* OnClickListener */);
@@ -221,6 +221,9 @@
if (getActivity() != null) {
getActivity().finish();
}
+ if (mUserSelectionCallback != null) {
+ mUserSelectionCallback.reject();
+ }
}
@Override
diff --git a/src/com/android/settings/wifi/tether/WifiTetherSsidPreference.java b/src/com/android/settings/wifi/tether/WifiTetherSsidPreference.java
index 64014d9..e2566d0 100644
--- a/src/com/android/settings/wifi/tether/WifiTetherSsidPreference.java
+++ b/src/com/android/settings/wifi/tether/WifiTetherSsidPreference.java
@@ -39,6 +39,7 @@
private ImageButton mImageButton;
private Drawable mButtonIcon;
+ private View mDivider;
private View.OnClickListener mClickListener;
private boolean mVisible;
@@ -68,6 +69,8 @@
}
private void initialize() {
+ // TODO(b/129019971): use methods of divider line in parent object
+ setLayoutResource(R.layout.preference);
setWidgetLayoutResource(R.layout.wifi_button_preference_widget);
}
@@ -82,13 +85,17 @@
getContext().getString(R.string.wifi_dpp_share_hotspot));
setButtonIcon(R.drawable.ic_qrcode_24dp);
mImageButton.setImageDrawable(mButtonIcon);
+
+ mDivider = holder.findViewById(R.id.two_target_divider);
}
if (mVisible) {
mImageButton.setOnClickListener(mClickListener);
mImageButton.setVisibility(View.VISIBLE);
+ mDivider.setVisibility(View.VISIBLE);
} else {
mImageButton.setVisibility(View.GONE);
+ mDivider.setVisibility(View.GONE);
}
}
diff --git a/tests/robotests/src/com/android/settings/backup/BackupSettingsHelperTest.java b/tests/robotests/src/com/android/settings/backup/BackupSettingsHelperTest.java
index 5587783..b6ef32c 100644
--- a/tests/robotests/src/com/android/settings/backup/BackupSettingsHelperTest.java
+++ b/tests/robotests/src/com/android/settings/backup/BackupSettingsHelperTest.java
@@ -256,20 +256,21 @@
@Test
public void testGetLabelBackupTransport() throws Exception {
- String label = "test_label";
+ CharSequence label = "test_label";
- when(mBackupManager.getDataManagementLabel(anyString())).thenReturn(label);
+ when(mBackupManager.getDataManagementLabelForUser(anyInt(), anyString())).thenReturn(label);
- String backupLabel = mBackupSettingsHelper.getLabelFromBackupTransport();
+ CharSequence backupLabel = mBackupSettingsHelper.getLabelFromBackupTransport();
assertThat(backupLabel).isEqualTo(label);
}
@Test
public void testGetLabelBackupTransport_RemoteException() throws Exception {
- when(mBackupManager.getDataManagementLabel(anyString())).thenThrow(new RemoteException());
+ when(mBackupManager.getDataManagementLabelForUser(anyInt(), anyString()))
+ .thenThrow(new RemoteException());
- String backupLabel = mBackupSettingsHelper.getLabelFromBackupTransport();
+ CharSequence backupLabel = mBackupSettingsHelper.getLabelFromBackupTransport();
assertThat(backupLabel).isNull();
}
@@ -291,31 +292,31 @@
@Test
public void testGetLabelForBackupSettings_WithLabelFromTransport() throws Exception {
- String label = "test_label";
+ CharSequence label = "test_label";
- when(mBackupManager.getDataManagementLabel(anyString())).thenReturn(label);
+ when(mBackupManager.getDataManagementLabelForUser(anyInt(), anyString())).thenReturn(label);
- String backupLabel = mBackupSettingsHelper.getLabelForBackupSettings();
+ CharSequence backupLabel = mBackupSettingsHelper.getLabelForBackupSettings();
assertThat(backupLabel).isEqualTo(label);
}
@Test
public void testGetLabelForBackupSettings_WithEmptyLabelFromTransport() throws Exception {
- String label = "";
+ CharSequence label = "";
- when(mBackupManager.getDataManagementLabel(anyString())).thenReturn(label);
+ when(mBackupManager.getDataManagementLabelForUser(anyInt(), anyString())).thenReturn(label);
- String backupLabel = mBackupSettingsHelper.getLabelForBackupSettings();
+ CharSequence backupLabel = mBackupSettingsHelper.getLabelForBackupSettings();
assertThat(backupLabel).isEqualTo(mContext.getString(DEFAULT_LABEL_RESOURCE));
}
@Test
public void testGetLabelForBackupSettings_WithoutLabelFromTransport() throws Exception {
- when(mBackupManager.getDataManagementLabel(anyString())).thenReturn(null);
+ when(mBackupManager.getDataManagementLabelForUser(anyInt(), anyString())).thenReturn(null);
- String backupLabel = mBackupSettingsHelper.getLabelForBackupSettings();
+ CharSequence backupLabel = mBackupSettingsHelper.getLabelForBackupSettings();
assertThat(backupLabel).isEqualTo(mContext.getString(DEFAULT_LABEL_RESOURCE));
}
diff --git a/tests/robotests/src/com/android/settings/backup/DataManagementPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/backup/DataManagementPreferenceControllerTest.java
index ac92fb7..d3688d3 100644
--- a/tests/robotests/src/com/android/settings/backup/DataManagementPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/backup/DataManagementPreferenceControllerTest.java
@@ -43,7 +43,7 @@
private DataManagementPreferenceController mController;
private PrivacySettingsConfigData mPSCD;
private Preference mPreference;
- private String mTitle;
+ private CharSequence mTitle;
@Mock
private Intent mIntent;
diff --git a/tests/robotests/src/com/android/settings/notification/AssistantCapabilityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/AssistantCapabilityPreferenceControllerTest.java
new file mode 100644
index 0000000..182ce8a
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/AssistantCapabilityPreferenceControllerTest.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+import static com.android.settings.core.BasePreferenceController.DISABLED_DEPENDENT_SETTING;
+import static com.android.settings.notification.AssistantCapabilityPreferenceController.PRIORITIZER_KEY;
+import static com.android.settings.notification.AssistantCapabilityPreferenceController.SMART_KEY;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.service.notification.Adjustment;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+@RunWith(RobolectricTestRunner.class)
+public class AssistantCapabilityPreferenceControllerTest {
+
+ @Mock
+ private NotificationBackend mBackend;
+ @Mock
+ private PreferenceScreen mScreen;
+
+ private Context mContext;
+ private AssistantCapabilityPreferenceController mPrioritizerController;
+ private AssistantCapabilityPreferenceController mChipController;
+ private Preference mPrioritizerPreference;
+ private Preference mChipPreference;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.application;
+ mPrioritizerController = new AssistantCapabilityPreferenceController(
+ mContext, PRIORITIZER_KEY);
+ mPrioritizerController.setBackend(mBackend);
+ mPrioritizerPreference = new Preference(mContext);
+ mPrioritizerPreference.setKey(mPrioritizerController.getPreferenceKey());
+ when(mScreen.findPreference(
+ mPrioritizerController.getPreferenceKey())).thenReturn(mPrioritizerPreference);
+ mChipController = new AssistantCapabilityPreferenceController(mContext, SMART_KEY);
+ mChipController.setBackend(mBackend);
+ mChipPreference = new Preference(mContext);
+ mChipPreference.setKey(mChipController.getPreferenceKey());
+ when(mScreen.findPreference(
+ mChipController.getPreferenceKey())).thenReturn(mChipPreference);
+ }
+
+ @Test
+ public void getAvailabilityStatus_NAS() {
+ when(mBackend.getAllowedNotificationAssistant()).thenReturn(mock(ComponentName.class));
+ assertThat(mPrioritizerController.getAvailabilityStatus())
+ .isEqualTo(AVAILABLE);
+ assertThat(mChipController.getAvailabilityStatus())
+ .isEqualTo(AVAILABLE);
+ }
+
+ @Test
+ public void getAvailabilityStatus_noNAS() {
+ when(mBackend.getAllowedNotificationAssistant()).thenReturn(null);
+ assertThat(mPrioritizerController.getAvailabilityStatus())
+ .isEqualTo(DISABLED_DEPENDENT_SETTING);
+ assertThat(mChipController.getAvailabilityStatus())
+ .isEqualTo(DISABLED_DEPENDENT_SETTING);
+ }
+
+ @Test
+ public void isChecked_prioritizerSettingIsOff_false() {
+ List<String> capabilities = new ArrayList<>();
+ capabilities.add(Adjustment.KEY_USER_SENTIMENT);
+ when(mBackend.getAssistantCapabilities(anyString())).thenReturn(capabilities);
+ assertThat(mPrioritizerController.isChecked()).isFalse();
+ }
+
+ @Test
+ public void isChecked_prioritizerSettingIsOn_true() {
+ List<String> capabilities = new ArrayList<>();
+ capabilities.add(Adjustment.KEY_IMPORTANCE);
+ when(mBackend.getAssistantCapabilities(anyString())).thenReturn(capabilities);
+ assertThat(mPrioritizerController.isChecked()).isTrue();
+ }
+
+ @Test
+ public void isChecked_chipSettingIsOff_false() {
+ List<String> capabilities = new ArrayList<>();
+ capabilities.add(Adjustment.KEY_IMPORTANCE);
+ when(mBackend.getAssistantCapabilities(anyString())).thenReturn(capabilities);
+ assertThat(mChipController.isChecked()).isFalse();
+
+ capabilities = new ArrayList<>();
+ capabilities.add(Adjustment.KEY_CONTEXTUAL_ACTIONS);
+ when(mBackend.getAssistantCapabilities(anyString())).thenReturn(capabilities);
+ assertThat(mChipController.isChecked()).isFalse();
+
+ capabilities = new ArrayList<>();
+ capabilities.add(Adjustment.KEY_TEXT_REPLIES);
+ when(mBackend.getAssistantCapabilities(anyString())).thenReturn(capabilities);
+ assertThat(mChipController.isChecked()).isFalse();
+ }
+
+ @Test
+ public void isChecked_chipSettingIsOn_true() {
+ List<String> capabilities = new ArrayList<>();
+ capabilities.add(Adjustment.KEY_TEXT_REPLIES);
+ capabilities.add(Adjustment.KEY_CONTEXTUAL_ACTIONS);
+ when(mBackend.getAssistantCapabilities(anyString())).thenReturn(capabilities);
+ assertThat(mChipController.isChecked()).isTrue();
+ }
+
+ @Test
+ public void onPreferenceChange_prioritizerOn() {
+ mPrioritizerController.onPreferenceChange(mPrioritizerPreference, true);
+ verify(mBackend).allowAssistantCapability(Adjustment.KEY_IMPORTANCE, true);
+ }
+
+ @Test
+ public void onPreferenceChange_prioritizerOff() {
+ mPrioritizerController.onPreferenceChange(mPrioritizerPreference, false);
+ verify(mBackend).allowAssistantCapability(Adjustment.KEY_IMPORTANCE, false);
+ }
+
+ @Test
+ public void onPreferenceChange_chipsOn() {
+ mChipController.onPreferenceChange(mChipPreference, true);
+ verify(mBackend).allowAssistantCapability(Adjustment.KEY_CONTEXTUAL_ACTIONS, true);
+ verify(mBackend).allowAssistantCapability(Adjustment.KEY_TEXT_REPLIES, true);
+ }
+
+ @Test
+ public void onPreferenceChange_chipsOff() {
+ mChipController.onPreferenceChange(mChipPreference, false);
+ verify(mBackend).allowAssistantCapability(Adjustment.KEY_CONTEXTUAL_ACTIONS, false);
+ verify(mBackend).allowAssistantCapability(Adjustment.KEY_TEXT_REPLIES, false);
+ }
+}
+
diff --git a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java
index d2403b9..4202143 100644
--- a/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/NetworkRequestDialogFragmentTest.java
@@ -330,4 +330,21 @@
// Check
assertThat(button.getVisibility()).isEqualTo(View.GONE);
}
+
+ @Test
+ public void cancelDialog_callsReject() {
+ // Assert
+ networkRequestDialogFragment.show(mActivity.getSupportFragmentManager(), /* tag */ null);
+ final AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
+ final NetworkRequestUserSelectionCallback selectionCallback = mock(
+ NetworkRequestUserSelectionCallback.class);
+ networkRequestDialogFragment.onUserSelectionCallbackRegistration(selectionCallback);
+
+ // Action
+ final Button button = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
+ button.performClick();
+
+ // Check
+ verify(selectionCallback, times(1)).reject();
+ }
}