Snap for 6393130 from 89db263afd to mainline-release
Change-Id: If5c6275513df22c4227a2d8cd37230b0139cdd6b
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<ScrollView
|
||||
<androidx.core.widget.NestedScrollView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/scroll"
|
||||
android:layout_width="match_parent"
|
||||
@@ -124,22 +124,15 @@
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:paddingBottom="16dp" />
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/list_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clipChildren="true"
|
||||
android:elevation="3dp"
|
||||
android:background="@drawable/rounded_bg">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/notification_list"
|
||||
android:elevation="3dp"
|
||||
android:background="@drawable/rounded_bg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clipChildren="true"
|
||||
android:scrollbars="none"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
@@ -156,21 +149,14 @@
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:paddingBottom="16dp" />
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/list_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:elevation="3dp"
|
||||
android:clipChildren="true"
|
||||
android:background="@drawable/rounded_bg">
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/notification_list"
|
||||
android:elevation="3dp"
|
||||
android:background="@drawable/rounded_bg"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clipChildren="true"
|
||||
android:scrollbars="none"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
@@ -198,4 +184,4 @@
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
@@ -73,18 +73,12 @@
|
||||
android:layout_height="1dp"
|
||||
android:background="?android:attr/listDivider"/>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/list_container"
|
||||
android:layout_width="match_parent"
|
||||
android:clipChildren="true"
|
||||
android:layout_height="wrap_content">
|
||||
<com.android.settings.notification.history.NotificationHistoryRecyclerView
|
||||
android:id="@+id/notification_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clipChildren="true"
|
||||
android:importantForAccessibility="yes"
|
||||
android:scrollbars="none"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</LinearLayout>
|
||||
@@ -29,8 +29,8 @@ import androidx.fragment.app.FragmentManager;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settingslib.search.Indexable;
|
||||
import com.android.settingslib.search.SearchIndexableRaw;
|
||||
import com.android.settingslib.search.SearchIndexable;
|
||||
import com.android.settingslib.search.SearchIndexableRaw;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -109,7 +109,7 @@ public class UserBackupSettingsActivity extends FragmentActivity implements Inde
|
||||
// Add the activity title
|
||||
SearchIndexableRaw data = new SearchIndexableRaw(context);
|
||||
data.title = context.getString(R.string.privacy_settings_title);
|
||||
data.screenTitle = context.getString(R.string.settings_label);
|
||||
data.screenTitle = context.getString(R.string.privacy_settings_title);
|
||||
data.keywords = context.getString(R.string.keywords_backup);
|
||||
data.intentTargetPackage = context.getPackageName();
|
||||
data.intentTargetClass = UserBackupSettingsActivity.class.getName();
|
||||
|
||||
@@ -65,7 +65,8 @@ public class DSULoader extends ListActivity {
|
||||
private static final String PROPERTY_KEY_CPU = "ro.product.cpu.abi";
|
||||
private static final String PROPERTY_KEY_OS = "ro.system.build.version.release";
|
||||
private static final String PROPERTY_KEY_VNDK = "ro.vndk.version";
|
||||
private static final String PROPERTY_KEY_LIST = "ro.vendor.dsu.list";
|
||||
private static final String PROPERTY_KEY_LIST =
|
||||
"persist.sys.fflag.override.settings_dynamic_system.list";
|
||||
private static final String PROPERTY_KEY_SPL = "ro.build.version.security_patch";
|
||||
private static final String DSU_LIST =
|
||||
"https://dl.google.com/developers/android/gsi/gsi-src.json";
|
||||
|
||||
@@ -25,8 +25,8 @@ import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.media.session.MediaController;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.core.graphics.drawable.IconCompat;
|
||||
import androidx.slice.Slice;
|
||||
import androidx.slice.builders.ListBuilder;
|
||||
@@ -36,7 +36,6 @@ import com.android.settings.R;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.slices.CustomSliceable;
|
||||
import com.android.settings.slices.SliceBackgroundWorker;
|
||||
import com.android.settings.slices.SliceBroadcastReceiver;
|
||||
import com.android.settingslib.media.MediaOutputSliceConstants;
|
||||
|
||||
public class MediaOutputIndicatorSlice implements CustomSliceable {
|
||||
@@ -60,8 +59,10 @@ public class MediaOutputIndicatorSlice implements CustomSliceable {
|
||||
final IconCompat icon = IconCompat.createWithResource(mContext,
|
||||
com.android.internal.R.drawable.ic_settings_bluetooth);
|
||||
final CharSequence title = mContext.getText(R.string.media_output_title);
|
||||
final PendingIntent primaryActionIntent = PendingIntent.getActivity(mContext,
|
||||
0 /* requestCode */, getMediaOutputSliceIntent(), 0 /* flags */);
|
||||
final SliceAction primarySliceAction = SliceAction.createDeeplink(
|
||||
getBroadcastIntent(), icon, ListBuilder.ICON_IMAGE, title);
|
||||
primaryActionIntent, icon, ListBuilder.ICON_IMAGE, title);
|
||||
@ColorInt final int color = Utils.getColorAccentDefaultColor(mContext);
|
||||
// To set an empty icon to indent the row
|
||||
final ListBuilder listBuilder = new ListBuilder(mContext, getUri(), ListBuilder.INFINITY)
|
||||
@@ -74,18 +75,27 @@ public class MediaOutputIndicatorSlice implements CustomSliceable {
|
||||
return listBuilder.build();
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
Intent getMediaOutputSliceIntent() {
|
||||
final MediaController mediaController = getWorker().getActiveLocalMediaController();
|
||||
final Intent intent = new Intent()
|
||||
.setPackage(Utils.SETTINGS_PACKAGE_NAME)
|
||||
.setAction(MediaOutputSliceConstants.ACTION_MEDIA_OUTPUT)
|
||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
if (mediaController != null) {
|
||||
intent.putExtra(MediaOutputSliceConstants.KEY_MEDIA_SESSION_TOKEN,
|
||||
mediaController.getSessionToken());
|
||||
intent.putExtra(MediaOutputSliceConstants.EXTRA_PACKAGE_NAME,
|
||||
mediaController.getPackageName());
|
||||
}
|
||||
return intent;
|
||||
}
|
||||
|
||||
private IconCompat createEmptyIcon() {
|
||||
final Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
|
||||
return IconCompat.createWithBitmap(bitmap);
|
||||
}
|
||||
|
||||
private PendingIntent getBroadcastIntent() {
|
||||
final Intent intent = new Intent(getUri().toString());
|
||||
intent.setClass(mContext, SliceBroadcastReceiver.class);
|
||||
return PendingIntent.getBroadcast(mContext, 0, intent,
|
||||
PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Uri getUri() {
|
||||
return MEDIA_OUTPUT_INDICATOR_SLICE_URI;
|
||||
@@ -103,26 +113,6 @@ public class MediaOutputIndicatorSlice implements CustomSliceable {
|
||||
return MediaOutputIndicatorWorker.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNotifyChange(Intent i) {
|
||||
if (getWorker() == null) {
|
||||
Log.d(TAG, "onNotifyChange: Worker is null");
|
||||
return;
|
||||
}
|
||||
final MediaController mediaController = getWorker().getActiveLocalMediaController();
|
||||
final Intent intent = new Intent()
|
||||
.setPackage(Utils.SETTINGS_PACKAGE_NAME)
|
||||
.setAction(MediaOutputSliceConstants.ACTION_MEDIA_OUTPUT)
|
||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
if (mediaController != null) {
|
||||
intent.putExtra(MediaOutputSliceConstants.KEY_MEDIA_SESSION_TOKEN,
|
||||
mediaController.getSessionToken());
|
||||
intent.putExtra(MediaOutputSliceConstants.EXTRA_PACKAGE_NAME,
|
||||
mediaController.getPackageName());
|
||||
}
|
||||
mContext.startActivity(intent);
|
||||
}
|
||||
|
||||
private MediaOutputIndicatorWorker getWorker() {
|
||||
if (mWorker == null) {
|
||||
mWorker = SliceBackgroundWorker.getInstance(getUri());
|
||||
|
||||
@@ -77,7 +77,7 @@ public class NotificationHistoryActivity extends Activity {
|
||||
View viewForPackage = LayoutInflater.from(this)
|
||||
.inflate(R.layout.notification_history_app_layout, null);
|
||||
|
||||
final View container = viewForPackage.findViewById(R.id.list_container);
|
||||
final View container = viewForPackage.findViewById(R.id.notification_list);
|
||||
container.setVisibility(View.GONE);
|
||||
ImageButton expand = viewForPackage.findViewById(R.id.expand);
|
||||
expand.setContentDescription(container.getVisibility() == View.VISIBLE
|
||||
|
||||
@@ -16,13 +16,22 @@
|
||||
|
||||
package com.android.settings.notification.history;
|
||||
|
||||
import static android.provider.Settings.EXTRA_APP_PACKAGE;
|
||||
import static android.provider.Settings.EXTRA_CHANNEL_ID;
|
||||
import static android.provider.Settings.EXTRA_CONVERSATION_ID;
|
||||
|
||||
import android.app.INotificationManager;
|
||||
import android.app.NotificationHistory.HistoricalNotification;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.RemoteException;
|
||||
import android.os.UserHandle;
|
||||
import android.provider.Settings;
|
||||
import android.util.Slog;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
@@ -63,8 +72,37 @@ public class NotificationHistoryAdapter extends
|
||||
holder.setTitle(hn.getTitle());
|
||||
holder.setSummary(hn.getText());
|
||||
holder.setPostedTime(hn.getPostedTimeMs());
|
||||
holder.addOnClick(hn.getPackage(), hn.getUserId(), hn.getChannelId(),
|
||||
hn.getConversationId());
|
||||
holder.itemView.setOnClickListener(v -> {
|
||||
Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS)
|
||||
.putExtra(EXTRA_APP_PACKAGE, hn.getPackage())
|
||||
.putExtra(EXTRA_CHANNEL_ID, hn.getChannelId())
|
||||
.putExtra(EXTRA_CONVERSATION_ID, hn.getConversationId());
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
holder.itemView.getContext().startActivityAsUser(intent, UserHandle.of(hn.getUserId()));
|
||||
});
|
||||
holder.itemView.setAccessibilityDelegate(new View.AccessibilityDelegate() {
|
||||
@Override
|
||||
public void onInitializeAccessibilityNodeInfo(View host,
|
||||
AccessibilityNodeInfo info) {
|
||||
super.onInitializeAccessibilityNodeInfo(host, info);
|
||||
CharSequence description =
|
||||
host.getResources().getText(R.string.notification_history_view_settings);
|
||||
AccessibilityNodeInfo.AccessibilityAction customClick =
|
||||
new AccessibilityNodeInfo.AccessibilityAction(
|
||||
AccessibilityNodeInfo.ACTION_CLICK, description);
|
||||
info.addAction(customClick);
|
||||
//info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_DISMISS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean performAccessibilityAction(View host, int action, Bundle args) {
|
||||
if (action == AccessibilityNodeInfo.AccessibilityAction.ACTION_DISMISS.getId()) {
|
||||
onItemSwipeDeleted(position);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -34,6 +34,7 @@ public class NotificationHistoryRecyclerView extends RecyclerView {
|
||||
ItemTouchHelper touchHelper = new ItemTouchHelper(
|
||||
new DismissTouchHelper(0, ItemTouchHelper.START | ItemTouchHelper.END));
|
||||
touchHelper.attachToRecyclerView(this);
|
||||
setNestedScrollingEnabled(false);
|
||||
}
|
||||
|
||||
public void setOnItemSwipeDeleteListener(OnItemSwipeDeleteListener listener) {
|
||||
|
||||
@@ -16,20 +16,10 @@
|
||||
|
||||
package com.android.settings.notification.history;
|
||||
|
||||
import static android.provider.Settings.EXTRA_APP_PACKAGE;
|
||||
import static android.provider.Settings.EXTRA_CHANNEL_ID;
|
||||
import static android.provider.Settings.EXTRA_CONVERSATION_ID;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.UserHandle;
|
||||
import android.provider.Settings;
|
||||
import android.view.View;
|
||||
import android.widget.DateTimeView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.core.view.AccessibilityDelegateCompat;
|
||||
import androidx.core.view.ViewCompat;
|
||||
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.settings.R;
|
||||
@@ -61,28 +51,4 @@ public class NotificationHistoryViewHolder extends RecyclerView.ViewHolder {
|
||||
void setPostedTime(long postedTime) {
|
||||
mTime.setTime(postedTime);
|
||||
}
|
||||
|
||||
void addOnClick(String pkg, int userId, String channelId, String conversationId) {
|
||||
itemView.setOnClickListener(v -> {
|
||||
Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS)
|
||||
.putExtra(EXTRA_APP_PACKAGE, pkg)
|
||||
.putExtra(EXTRA_CHANNEL_ID, channelId)
|
||||
.putExtra(EXTRA_CONVERSATION_ID, conversationId);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
itemView.getContext().startActivityAsUser(intent, UserHandle.of(userId));
|
||||
});
|
||||
ViewCompat.setAccessibilityDelegate(itemView, new AccessibilityDelegateCompat() {
|
||||
@Override
|
||||
public void onInitializeAccessibilityNodeInfo(View host,
|
||||
AccessibilityNodeInfoCompat info) {
|
||||
super.onInitializeAccessibilityNodeInfo(host, info);
|
||||
CharSequence description =
|
||||
host.getResources().getText(R.string.notification_history_view_settings);
|
||||
AccessibilityNodeInfoCompat.AccessibilityActionCompat customClick =
|
||||
new AccessibilityNodeInfoCompat.AccessibilityActionCompat(
|
||||
AccessibilityNodeInfoCompat.ACTION_CLICK, description);
|
||||
info.addAction(customClick);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import android.app.PendingIntent;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.Intent;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserHandle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Slog;
|
||||
@@ -81,39 +82,44 @@ public class NotificationSbnViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
void setProfileBadge(Drawable badge) {
|
||||
mProfileBadge.setImageDrawable(badge);
|
||||
mProfileBadge.setVisibility(badge != null ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
void addOnClick(String pkg, int userId, PendingIntent pi) {
|
||||
itemView.setOnClickListener(v -> {
|
||||
if (pi != null) {
|
||||
try {
|
||||
pi.send();
|
||||
} catch (PendingIntent.CanceledException e) {
|
||||
Slog.e(TAG, "Could not launch", e);
|
||||
Intent appIntent = itemView.getContext().getPackageManager()
|
||||
.getLaunchIntentForPackage(pkg);
|
||||
boolean isPendingIntentValid = pi != null && PendingIntent.getActivity(
|
||||
itemView.getContext(), 0, pi.getIntent(), PendingIntent.FLAG_NO_CREATE) != null;
|
||||
if (isPendingIntentValid || appIntent != null) {
|
||||
itemView.setOnClickListener(v -> {
|
||||
if (pi != null) {
|
||||
try {
|
||||
pi.send();
|
||||
} catch (PendingIntent.CanceledException e) {
|
||||
Slog.e(TAG, "Could not launch", e);
|
||||
}
|
||||
} else if (appIntent != null) {
|
||||
appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
try {
|
||||
itemView.getContext().startActivityAsUser(appIntent, UserHandle.of(userId));
|
||||
} catch (ActivityNotFoundException e) {
|
||||
Slog.e(TAG, "no launch activity", e);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Intent appIntent = itemView.getContext().getPackageManager()
|
||||
.getLaunchIntentForPackage(pkg);
|
||||
appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
try {
|
||||
itemView.getContext().startActivityAsUser(appIntent, UserHandle.of(userId));
|
||||
} catch (ActivityNotFoundException e) {
|
||||
Slog.e(TAG, "no launch activity", e);
|
||||
});
|
||||
ViewCompat.setAccessibilityDelegate(itemView, new AccessibilityDelegateCompat() {
|
||||
@Override
|
||||
public void onInitializeAccessibilityNodeInfo(View host,
|
||||
AccessibilityNodeInfoCompat info) {
|
||||
super.onInitializeAccessibilityNodeInfo(host, info);
|
||||
CharSequence description = host.getResources().getText(
|
||||
R.string.notification_history_open_notification);
|
||||
AccessibilityNodeInfoCompat.AccessibilityActionCompat customClick =
|
||||
new AccessibilityNodeInfoCompat.AccessibilityActionCompat(
|
||||
AccessibilityNodeInfoCompat.ACTION_CLICK, description);
|
||||
info.addAction(customClick);
|
||||
}
|
||||
}
|
||||
});
|
||||
ViewCompat.setAccessibilityDelegate(itemView, new AccessibilityDelegateCompat() {
|
||||
@Override
|
||||
public void onInitializeAccessibilityNodeInfo(View host,
|
||||
AccessibilityNodeInfoCompat info) {
|
||||
super.onInitializeAccessibilityNodeInfo(host, info);
|
||||
CharSequence description = host.getResources().getText(
|
||||
R.string.notification_history_open_notification);
|
||||
AccessibilityNodeInfoCompat.AccessibilityActionCompat customClick =
|
||||
new AccessibilityNodeInfoCompat.AccessibilityActionCompat(
|
||||
AccessibilityNodeInfoCompat.ACTION_CLICK, description);
|
||||
info.addAction(customClick);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ public class MediaOutputPanel implements PanelContent, LocalMediaManager.DeviceC
|
||||
return metadata.getDescription().getSubtitle();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return mContext.getText(R.string.media_output_panel_title);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -19,9 +19,17 @@ package com.android.settings.search;
|
||||
import android.util.ArrayMap;
|
||||
|
||||
import com.android.settings.DisplaySettings;
|
||||
import com.android.settings.backup.UserBackupSettingsActivity;
|
||||
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
|
||||
import com.android.settings.connecteddevice.usb.UsbDetailsFragment;
|
||||
import com.android.settings.fuelgauge.PowerUsageAdvanced;
|
||||
import com.android.settings.fuelgauge.PowerUsageSummary;
|
||||
import com.android.settings.location.LocationSettings;
|
||||
import com.android.settings.location.RecentLocationRequestSeeAllFragment;
|
||||
import com.android.settings.network.NetworkDashboardFragment;
|
||||
import com.android.settings.security.SecuritySettings;
|
||||
import com.android.settings.security.screenlock.ScreenLockSettings;
|
||||
import com.android.settings.system.SystemDashboardFragment;
|
||||
import com.android.settings.wallpaper.WallpaperSuggestionActivity;
|
||||
import com.android.settings.wifi.WifiSettings2;
|
||||
|
||||
@@ -44,5 +52,12 @@ public class CustomSiteMapRegistry {
|
||||
WallpaperSuggestionActivity.class.getName(), DisplaySettings.class.getName());
|
||||
CUSTOM_SITE_MAP.put(
|
||||
WifiSettings2.class.getName(), NetworkDashboardFragment.class.getName());
|
||||
CUSTOM_SITE_MAP.put(PowerUsageAdvanced.class.getName(), PowerUsageSummary.class.getName());
|
||||
CUSTOM_SITE_MAP.put(RecentLocationRequestSeeAllFragment.class.getName(),
|
||||
LocationSettings.class.getName());
|
||||
CUSTOM_SITE_MAP.put(UsbDetailsFragment.class.getName(),
|
||||
ConnectedDeviceDashboardFragment.class.getName());
|
||||
CUSTOM_SITE_MAP.put(UserBackupSettingsActivity.class.getName(),
|
||||
SystemDashboardFragment.class.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,8 +52,6 @@ public class MultiUserSwitchBarController implements SwitchWidgetController.OnSw
|
||||
mListener = listener;
|
||||
mUserCapabilities = UserCapabilities.create(context);
|
||||
mSwitchBar.setChecked(mUserCapabilities.mUserSwitcherEnabled);
|
||||
Settings.Global.putInt(mContext.getContentResolver(),
|
||||
Settings.Global.USER_SWITCHER_ENABLED, mSwitchBar.isChecked() ? 1 : 0);
|
||||
|
||||
if (mUserCapabilities.mDisallowSwitchUser) {
|
||||
mSwitchBar.setDisabledByAdmin(RestrictedLockUtilsInternal
|
||||
|
||||
@@ -25,6 +25,7 @@ import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||
|
||||
@@ -44,10 +45,6 @@ public class NetworkRequestErrorDialogFragment extends InstrumentedDialogFragmen
|
||||
return new NetworkRequestErrorDialogFragment();
|
||||
}
|
||||
|
||||
private NetworkRequestErrorDialogFragment() {
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancel(@NonNull DialogInterface dialog) {
|
||||
super.onCancel(dialog);
|
||||
|
||||
@@ -21,11 +21,8 @@ import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_INDIC
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
@@ -48,14 +45,12 @@ import com.android.settings.Utils;
|
||||
import com.android.settings.slices.SliceBackgroundWorker;
|
||||
import com.android.settings.testutils.shadow.ShadowBluetoothUtils;
|
||||
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
||||
import com.android.settingslib.media.LocalMediaManager;
|
||||
import com.android.settingslib.media.MediaDevice;
|
||||
import com.android.settingslib.media.MediaOutputSliceConstants;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
@@ -85,8 +80,6 @@ public class MediaOutputIndicatorSliceTest {
|
||||
@Mock
|
||||
private MediaController mMediaController;
|
||||
@Mock
|
||||
private LocalMediaManager mLocalMediaManager;
|
||||
@Mock
|
||||
private MediaDevice mDevice1;
|
||||
@Mock
|
||||
private MediaDevice mDevice2;
|
||||
@@ -193,46 +186,32 @@ public class MediaOutputIndicatorSliceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onNotifyChange_noWorker_doNothing() {
|
||||
sMediaOutputIndicatorWorker = null;
|
||||
mMediaOutputIndicatorSlice.onNotifyChange(new Intent());
|
||||
|
||||
verify(mContext, never()).startActivity(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onNotifyChange_withActiveLocalMedia_verifyIntentExtra() {
|
||||
public void getMediaOutputSliceIntent_withActiveLocalMedia_verifyIntentExtra() {
|
||||
when(mMediaController.getSessionToken()).thenReturn(mToken);
|
||||
when(mMediaController.getPackageName()).thenReturn(TEST_PACKAGE_NAME);
|
||||
doReturn(mMediaController).when(sMediaOutputIndicatorWorker)
|
||||
.getActiveLocalMediaController();
|
||||
final Intent intent = mMediaOutputIndicatorSlice.getMediaOutputSliceIntent();
|
||||
|
||||
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
mMediaOutputIndicatorSlice.onNotifyChange(new Intent());
|
||||
verify(mContext).startActivity(intentCaptor.capture());
|
||||
|
||||
assertThat(TextUtils.equals(TEST_PACKAGE_NAME, intentCaptor.getValue().getStringExtra(
|
||||
assertThat(TextUtils.equals(TEST_PACKAGE_NAME, intent.getStringExtra(
|
||||
MediaOutputSliceConstants.EXTRA_PACKAGE_NAME))).isTrue();
|
||||
assertThat(TextUtils.equals(Utils.SETTINGS_PACKAGE_NAME, intentCaptor.getValue()
|
||||
.getPackage())).isTrue();
|
||||
assertThat(mToken == intentCaptor.getValue().getExtras().getParcelable(
|
||||
assertThat(MediaOutputSliceConstants.ACTION_MEDIA_OUTPUT).isEqualTo(intent.getAction());
|
||||
assertThat(TextUtils.equals(Utils.SETTINGS_PACKAGE_NAME, intent.getPackage())).isTrue();
|
||||
assertThat(mToken == intent.getExtras().getParcelable(
|
||||
MediaOutputSliceConstants.KEY_MEDIA_SESSION_TOKEN)).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onNotifyChange_withoutActiveLocalMedia_verifyIntentExtra() {
|
||||
public void getMediaOutputSliceIntent_withoutActiveLocalMedia_verifyIntentExtra() {
|
||||
doReturn(mMediaController).when(sMediaOutputIndicatorWorker)
|
||||
.getActiveLocalMediaController();
|
||||
final Intent intent = mMediaOutputIndicatorSlice.getMediaOutputSliceIntent();
|
||||
|
||||
final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
mMediaOutputIndicatorSlice.onNotifyChange(new Intent());
|
||||
verify(mContext).startActivity(intentCaptor.capture());
|
||||
|
||||
assertThat(TextUtils.isEmpty(intentCaptor.getValue().getStringExtra(
|
||||
assertThat(TextUtils.isEmpty(intent.getStringExtra(
|
||||
MediaOutputSliceConstants.EXTRA_PACKAGE_NAME))).isTrue();
|
||||
assertThat(TextUtils.equals(Utils.SETTINGS_PACKAGE_NAME, intentCaptor.getValue()
|
||||
.getPackage())).isTrue();
|
||||
assertThat(intentCaptor.getValue().getExtras().getParcelable(
|
||||
assertThat(MediaOutputSliceConstants.ACTION_MEDIA_OUTPUT).isEqualTo(intent.getAction());
|
||||
assertThat(TextUtils.equals(Utils.SETTINGS_PACKAGE_NAME, intent.getPackage())).isTrue();
|
||||
assertThat(intent.getExtras().getParcelable(
|
||||
MediaOutputSliceConstants.KEY_MEDIA_SESSION_TOKEN) == null).isTrue();
|
||||
}
|
||||
|
||||
|
||||
@@ -35,7 +35,6 @@ import android.media.session.MediaController;
|
||||
import android.media.session.MediaSessionManager;
|
||||
import android.media.session.PlaybackState;
|
||||
import android.net.Uri;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.slices.CustomSliceRegistry;
|
||||
@@ -238,28 +237,31 @@ public class MediaOutputPanelTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSubTitle_noMetadata_returnEmpty() {
|
||||
public void getSubTitle_noMetadata_returnDefault() {
|
||||
when(mMediaController.getPackageName()).thenReturn(TEST_PACKAGENAME);
|
||||
when(mMediaController.getMetadata()).thenReturn(null);
|
||||
|
||||
assertThat(TextUtils.isEmpty(mPanel.getSubTitle())).isTrue();
|
||||
assertThat(mPanel.getSubTitle()).isEqualTo(mContext.getText(
|
||||
R.string.media_output_panel_title));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSubTitle_noPackageName_returnEmpty() {
|
||||
public void getSubTitle_noPackageName_returnDefault() {
|
||||
mPanel = MediaOutputPanel.create(mContext, null);
|
||||
when(mMediaController.getMetadata()).thenReturn(mMediaMetadata);
|
||||
|
||||
assertThat(TextUtils.isEmpty(mPanel.getSubTitle())).isTrue();
|
||||
assertThat(mPanel.getSubTitle()).isEqualTo(mContext.getText(
|
||||
R.string.media_output_panel_title));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getSubTitle_noController_returnEmpty() {
|
||||
public void getSubTitle_noController_returnDefault() {
|
||||
mMediaControllers.clear();
|
||||
mPanel = MediaOutputPanel.create(mContext, TEST_PACKAGENAME);
|
||||
when(mMediaController.getMetadata()).thenReturn(mMediaMetadata);
|
||||
|
||||
assertThat(TextUtils.isEmpty(mPanel.getSubTitle())).isTrue();
|
||||
assertThat(mPanel.getSubTitle()).isEqualTo(mContext.getText(
|
||||
R.string.media_output_panel_title));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -19,9 +19,17 @@ package com.android.settings.search;
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import com.android.settings.DisplaySettings;
|
||||
import com.android.settings.backup.UserBackupSettingsActivity;
|
||||
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
|
||||
import com.android.settings.connecteddevice.usb.UsbDetailsFragment;
|
||||
import com.android.settings.fuelgauge.PowerUsageAdvanced;
|
||||
import com.android.settings.fuelgauge.PowerUsageSummary;
|
||||
import com.android.settings.location.LocationSettings;
|
||||
import com.android.settings.location.RecentLocationRequestSeeAllFragment;
|
||||
import com.android.settings.network.NetworkDashboardFragment;
|
||||
import com.android.settings.security.SecuritySettings;
|
||||
import com.android.settings.security.screenlock.ScreenLockSettings;
|
||||
import com.android.settings.system.SystemDashboardFragment;
|
||||
import com.android.settings.wallpaper.WallpaperSuggestionActivity;
|
||||
import com.android.settings.wifi.WifiSettings2;
|
||||
|
||||
@@ -50,4 +58,31 @@ public class CustomSiteMapRegistryTest {
|
||||
assertThat(CustomSiteMapRegistry.CUSTOM_SITE_MAP.get(WifiSettings2.class.getName()))
|
||||
.isEqualTo(NetworkDashboardFragment.class.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldContainPowerUsageAdvancedPairs() {
|
||||
assertThat(CustomSiteMapRegistry.CUSTOM_SITE_MAP.get(PowerUsageAdvanced.class.getName()))
|
||||
.isEqualTo(PowerUsageSummary.class.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldContainRecentLocationRequestSeeAllFragmentPairs() {
|
||||
assertThat(CustomSiteMapRegistry.CUSTOM_SITE_MAP.get(
|
||||
RecentLocationRequestSeeAllFragment.class.getName())).isEqualTo(
|
||||
LocationSettings.class.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldContainUsbDetailsFragmentPairs() {
|
||||
assertThat(CustomSiteMapRegistry.CUSTOM_SITE_MAP.get(
|
||||
UsbDetailsFragment.class.getName())).isEqualTo(
|
||||
ConnectedDeviceDashboardFragment.class.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldContainUserBackupSettingsActivityPairs() {
|
||||
assertThat(CustomSiteMapRegistry.CUSTOM_SITE_MAP.get(
|
||||
UserBackupSettingsActivity.class.getName())).isEqualTo(
|
||||
SystemDashboardFragment.class.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
package com.android.settings.wifi;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
@@ -26,12 +28,15 @@ import android.content.DialogInterface;
|
||||
import android.net.wifi.WifiManager.NetworkRequestUserSelectionCallback;
|
||||
import android.os.Bundle;
|
||||
import android.widget.Button;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
|
||||
import com.android.settings.wifi.NetworkRequestErrorDialogFragment.ERROR_DIALOG_TYPE;
|
||||
import com.android.settingslib.wifi.WifiTracker;
|
||||
import com.android.settingslib.wifi.WifiTrackerFactory;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -57,6 +62,15 @@ public class NetworkRequestErrorDialogFragmentTest {
|
||||
mFragment.show(mActivity.getSupportFragmentManager(), null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getConstructor_shouldNotThrowNoSuchMethodException() {
|
||||
try {
|
||||
NetworkRequestErrorDialogFragment.class.getConstructor();
|
||||
} catch (NoSuchMethodException e) {
|
||||
fail("No default constructor for configuration change!");
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void display_shouldShowTimeoutDialog() {
|
||||
AlertDialog alertDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
|
||||
|
||||
Reference in New Issue
Block a user