Loading res/values/strings.xml +2 −4 Original line number Diff line number Diff line Loading @@ -12723,10 +12723,8 @@ <string name="view_airplane_safe_networks">View airplane mode networks</string> <!-- Text of message for viewing the networks that are available in airplane mode. [CHAR LIMIT=60] --> <string name="viewing_airplane_mode_networks">Viewing airplane mode networks</string> <!-- Slice title text for turning on networks (e.g. Wi-Fi). [CHAR LIMIT=40] --> <string name="turn_on_networks">Turn on networks</string> <!-- Slice title text for turning off networks (e.g. Wi-Fi). [CHAR LIMIT=40] --> <string name="turn_off_networks">Turn off networks</string> <!-- Slice title text for turning on the Wi-Fi networks. [CHAR LIMIT=40] --> <string name="turn_on_wifi">Turn on Wi\u2011Fi</string> <!-- Title for interrupting the voice call alert. [CHAR_LIMIT=NONE] --> <string name="reset_your_internet_title">Reset your internet?</string> <!-- Description for interrupting the voice call alert. [CHAR_LIMIT=NONE] --> src/com/android/settings/network/AirplaneSafeNetworksSlice.java→src/com/android/settings/network/TurnOnWifiSlice.java +147 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * Copyright (C) 2021 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. Loading @@ -16,7 +16,6 @@ package com.android.settings.network; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; Loading @@ -28,7 +27,6 @@ import android.net.Uri; import android.net.wifi.WifiManager; import android.util.Log; import androidx.annotation.IntDef; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; import androidx.slice.builders.ListBuilder; Loading @@ -36,7 +34,6 @@ import androidx.slice.builders.ListBuilder.RowBuilder; import androidx.slice.builders.SliceAction; import androidx.slice.core.SliceHints; import com.android.settings.AirplaneModeEnabler; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.slices.CustomSliceRegistry; Loading @@ -44,45 +41,18 @@ import com.android.settings.slices.CustomSliceable; import com.android.settings.slices.SliceBackgroundWorker; import com.android.settings.slices.SliceBroadcastReceiver; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * {@link CustomSliceable} for airplane-safe networks, used by generic clients. * {@link CustomSliceable} for turning on Wi-Fi, used by generic clients. */ public class AirplaneSafeNetworksSlice implements CustomSliceable, AirplaneModeEnabler.OnAirplaneModeChangedListener { private static final String TAG = "AirplaneSafeNetworksSlice"; public class TurnOnWifiSlice implements CustomSliceable { public static final String ACTION_INTENT_EXTRA = "action"; /** * Annotation for different action of the slice. * * {@code TURN_ON_NETWORKS} for action of turning on Wi-Fi networks. * {@code TURN_OFF_NETWORKS} for action of turning off Wi-Fi networks. */ @Retention(RetentionPolicy.SOURCE) @IntDef(value = { Action.TURN_ON_NETWORKS, Action.TURN_OFF_NETWORKS, }) public @interface Action { int TURN_ON_NETWORKS = 1; int TURN_OFF_NETWORKS = 2; } private static final String TAG = "TurnOnWifiSlice"; private final Context mContext; private final AirplaneModeEnabler mAirplaneModeEnabler; private final WifiManager mWifiManager; private boolean mIsAirplaneModeOn; public AirplaneSafeNetworksSlice(Context context) { public TurnOnWifiSlice(Context context) { mContext = context; mAirplaneModeEnabler = new AirplaneModeEnabler(context, this); mIsAirplaneModeOn = mAirplaneModeEnabler.isAirplaneModeOn(); mWifiManager = mContext.getSystemService(WifiManager.class); } Loading @@ -92,72 +62,40 @@ public class AirplaneSafeNetworksSlice implements CustomSliceable, @Override public Slice getSlice() { final ListBuilder listBuilder = new ListBuilder(mContext, getUri(), ListBuilder.INFINITY); if (mIsAirplaneModeOn) { listBuilder.addRow(new RowBuilder() .setTitle(getTitle()) if (mWifiManager.isWifiEnabled()) { return null; } final String title = mContext.getText(R.string.turn_on_wifi).toString(); final SliceAction primaryAction = SliceAction.create(getBroadcastIntent(mContext), getEndIcon(), ListBuilder.ICON_IMAGE, title); final ListBuilder listBuilder = new ListBuilder(mContext, getUri(), ListBuilder.INFINITY) .addRow(new RowBuilder() .setTitle(title) .addEndItem(getEndIcon(), SliceHints.ICON_IMAGE) .setPrimaryAction(getSliceAction())); } .setPrimaryAction(primaryAction)); return listBuilder.build(); } @Override public Uri getUri() { return CustomSliceRegistry.AIRPLANE_SAFE_NETWORKS_SLICE_URI; return CustomSliceRegistry.TURN_ON_WIFI_SLICE_URI; } @Override public void onNotifyChange(Intent intent) { final int action = intent.getIntExtra(ACTION_INTENT_EXTRA, 0); if (action == Action.TURN_ON_NETWORKS) { if (!mWifiManager.isWifiEnabled()) { logd("Action: turn on Wi-Fi networks"); mWifiManager.setWifiEnabled(true); } } else if (action == Action.TURN_OFF_NETWORKS) { if (mWifiManager.isWifiEnabled()) { logd("Action: turn off Wi-Fi networks"); mWifiManager.setWifiEnabled(false); } } } @Override public void onAirplaneModeChanged(boolean isAirplaneModeOn) { mIsAirplaneModeOn = isAirplaneModeOn; final AirplaneSafeNetworksWorker worker = SliceBackgroundWorker.getInstance(getUri()); if (worker != null) { worker.updateSlice(); } } @Override public Intent getIntent() { return new Intent(getUri().toString()) .setData(getUri()) .setClass(mContext, SliceBroadcastReceiver.class) .putExtra(ACTION_INTENT_EXTRA, getAction()); } @Action private int getAction() { return mWifiManager.isWifiEnabled() ? Action.TURN_OFF_NETWORKS : Action.TURN_ON_NETWORKS; } private String getTitle() { return mContext.getText( (getAction() == Action.TURN_ON_NETWORKS) ? R.string.turn_on_networks : R.string.turn_off_networks).toString(); .setClass(mContext, SliceBroadcastReceiver.class); } private IconCompat getEndIcon() { final Drawable drawable = mContext.getDrawable( (getAction() == Action.TURN_ON_NETWORKS) ? R.drawable.ic_airplane_safe_networks_24dp : R.drawable.ic_airplanemode_active); final Drawable drawable = mContext.getDrawable(R.drawable.ic_settings_wireless); if (drawable == null) { return Utils.createIconWithDrawable(new ColorDrawable(Color.TRANSPARENT)); } Loading @@ -165,20 +103,16 @@ public class AirplaneSafeNetworksSlice implements CustomSliceable, return Utils.createIconWithDrawable(drawable); } private SliceAction getSliceAction() { final PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0 /* requestCode */, getIntent(), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); final IconCompat icon = Utils.createIconWithDrawable(new ColorDrawable(Color.TRANSPARENT)); return SliceAction.create(pendingIntent, icon, ListBuilder.ACTION_WITH_LABEL, getTitle()); } @Override public Class getBackgroundWorkerClass() { return AirplaneSafeNetworksWorker.class; return TurnOnWifiWorker.class; } public static class AirplaneSafeNetworksWorker extends SliceBackgroundWorker { /** * The Slice background worker {@link SliceBackgroundWorker} is used to listen the Wi-Fi * status change, and then notifies the Slice {@link Uri} to update. */ public static class TurnOnWifiWorker extends SliceBackgroundWorker { private final IntentFilter mIntentFilter; private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { Loading @@ -190,7 +124,7 @@ public class AirplaneSafeNetworksSlice implements CustomSliceable, } }; public AirplaneSafeNetworksWorker(Context context, Uri uri) { public TurnOnWifiWorker(Context context, Uri uri) { super(context, uri); mIntentFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); } Loading @@ -209,9 +143,5 @@ public class AirplaneSafeNetworksSlice implements CustomSliceable, public void close() { // Do nothing. } public void updateSlice() { notifySliceChange(); } } } src/com/android/settings/panel/InternetConnectivityPanel.java +1 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve final List<Uri> uris = new ArrayList<>(); if (mIsProviderModelEnabled) { uris.add(CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI); uris.add(CustomSliceRegistry.AIRPLANE_SAFE_NETWORKS_SLICE_URI); uris.add(CustomSliceRegistry.TURN_ON_WIFI_SLICE_URI); } else { uris.add(CustomSliceRegistry.WIFI_SLICE_URI); uris.add(CustomSliceRegistry.MOBILE_DATA_SLICE_URI); Loading src/com/android/settings/slices/CustomSliceRegistry.java +5 −5 Original line number Diff line number Diff line Loading @@ -39,8 +39,8 @@ import com.android.settings.homepage.contextualcards.slices.LowStorageSlice; import com.android.settings.location.LocationSlice; import com.android.settings.media.MediaOutputIndicatorSlice; import com.android.settings.media.RemoteMediaSlice; import com.android.settings.network.AirplaneSafeNetworksSlice; import com.android.settings.network.ProviderModelSlice; import com.android.settings.network.TurnOnWifiSlice; import com.android.settings.network.telephony.MobileDataSlice; import com.android.settings.notification.zen.ZenModeButtonPreferenceController; import com.android.settings.wifi.calling.WifiCallingSliceHelper; Loading Loading @@ -307,13 +307,13 @@ public class CustomSliceRegistry { .build(); /** * Backing Uri for the Always On Slice. * Backing Uri for the Turn on Wi-Fi Slice. */ public static final Uri AIRPLANE_SAFE_NETWORKS_SLICE_URI = new Uri.Builder() public static final Uri TURN_ON_WIFI_SLICE_URI = new Uri.Builder() .scheme(ContentResolver.SCHEME_CONTENT) .authority(SettingsSliceProvider.SLICE_AUTHORITY) .appendPath(SettingsSlicesContract.PATH_SETTING_ACTION) .appendPath("airplane_safe_networks") .appendPath("turn_on_wifi") .build(); @VisibleForTesting Loading @@ -337,7 +337,7 @@ public class CustomSliceRegistry { sUriToSlice.put(DARK_THEME_SLICE_URI, DarkThemeSlice.class); sUriToSlice.put(REMOTE_MEDIA_SLICE_URI, RemoteMediaSlice.class); sUriToSlice.put(ALWAYS_ON_SLICE_URI, AlwaysOnDisplaySlice.class); sUriToSlice.put(AIRPLANE_SAFE_NETWORKS_SLICE_URI, AirplaneSafeNetworksSlice.class); sUriToSlice.put(TURN_ON_WIFI_SLICE_URI, TurnOnWifiSlice.class); } public static Class<? extends CustomSliceable> getSliceClassByUri(Uri uri) { Loading tests/unit/src/com/android/settings/network/AirplaneSafeNetworksSliceTest.java→tests/unit/src/com/android/settings/network/TurnOnWifiSliceTest.java +85 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * Copyright (C) 2021 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. Loading @@ -26,16 +26,11 @@ import android.content.Context; import android.content.Intent; import android.net.wifi.WifiManager; import androidx.slice.Slice; import androidx.slice.SliceItem; import androidx.slice.SliceMetadata; import androidx.slice.SliceProvider; import androidx.slice.widget.SliceLiveData; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.android.settings.testutils.ResourcesUtils; import org.junit.Before; import org.junit.Rule; import org.junit.Test; Loading @@ -45,7 +40,7 @@ import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; @RunWith(AndroidJUnit4.class) public class AirplaneSafeNetworksSliceTest { public class TurnOnWifiSliceTest { @Rule public MockitoRule mMocks = MockitoJUnit.rule(); Loading @@ -53,7 +48,7 @@ public class AirplaneSafeNetworksSliceTest { private WifiManager mWifiManager; private Context mContext; private AirplaneSafeNetworksSlice mAirplaneSafeNetworksSlice; private TurnOnWifiSlice mSlice; @Before public void setUp() { Loading @@ -62,61 +57,29 @@ public class AirplaneSafeNetworksSliceTest { // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); mAirplaneSafeNetworksSlice = new AirplaneSafeNetworksSlice(mContext); mAirplaneSafeNetworksSlice.onAirplaneModeChanged(true); mSlice = new TurnOnWifiSlice(mContext); } @Test public void getSlice_airplaneModeOff_shouldBeNotNull() { mAirplaneSafeNetworksSlice.onAirplaneModeChanged(false); assertThat(mAirplaneSafeNetworksSlice.getSlice()).isNotNull(); } @Test public void getSlice_wifiDisabled_shouldShowTurnOnNetworks() { when(mWifiManager.isWifiEnabled()).thenReturn(false); final Slice slice = mAirplaneSafeNetworksSlice.getSlice(); assertThat(slice).isNotNull(); final SliceItem sliceTitle = SliceMetadata.from(mContext, slice).getListContent().getHeader().getTitleItem(); assertThat(sliceTitle.getText()).isEqualTo( ResourcesUtils.getResourcesString(mContext, "turn_on_networks")); } @Test public void getSlice_wifiEnabled_shouldShowTurnOffNetworks() { public void getSlice_wifiEnabled_shouldBeNull() { when(mWifiManager.isWifiEnabled()).thenReturn(true); final Slice slice = mAirplaneSafeNetworksSlice.getSlice(); assertThat(slice).isNotNull(); final SliceItem sliceTitle = SliceMetadata.from(mContext, slice).getListContent().getHeader().getTitleItem(); assertThat(sliceTitle.getText()).isEqualTo( ResourcesUtils.getResourcesString(mContext, "turn_off_networks")); assertThat(mSlice.getSlice()).isNull(); } @Test public void onNotifyChange_turnOnNetworks_shouldSetWifiEnabled() { public void getSlice_wifiDisabled_shouldBeNotNull() { when(mWifiManager.isWifiEnabled()).thenReturn(false); Intent intent = mAirplaneSafeNetworksSlice.getIntent(); mAirplaneSafeNetworksSlice.onNotifyChange(intent); verify(mWifiManager).setWifiEnabled(true); assertThat(mSlice.getSlice()).isNotNull(); } @Test public void onNotifyChange_turnOffNetworks_shouldSetWifiDisabled() { when(mWifiManager.isWifiEnabled()).thenReturn(true); Intent intent = mAirplaneSafeNetworksSlice.getIntent(); public void onNotifyChange_shouldSetWifiEnabled() { Intent intent = mSlice.getIntent(); mAirplaneSafeNetworksSlice.onNotifyChange(intent); mSlice.onNotifyChange(intent); verify(mWifiManager).setWifiEnabled(false); verify(mWifiManager).setWifiEnabled(true); } } Loading
res/values/strings.xml +2 −4 Original line number Diff line number Diff line Loading @@ -12723,10 +12723,8 @@ <string name="view_airplane_safe_networks">View airplane mode networks</string> <!-- Text of message for viewing the networks that are available in airplane mode. [CHAR LIMIT=60] --> <string name="viewing_airplane_mode_networks">Viewing airplane mode networks</string> <!-- Slice title text for turning on networks (e.g. Wi-Fi). [CHAR LIMIT=40] --> <string name="turn_on_networks">Turn on networks</string> <!-- Slice title text for turning off networks (e.g. Wi-Fi). [CHAR LIMIT=40] --> <string name="turn_off_networks">Turn off networks</string> <!-- Slice title text for turning on the Wi-Fi networks. [CHAR LIMIT=40] --> <string name="turn_on_wifi">Turn on Wi\u2011Fi</string> <!-- Title for interrupting the voice call alert. [CHAR_LIMIT=NONE] --> <string name="reset_your_internet_title">Reset your internet?</string> <!-- Description for interrupting the voice call alert. [CHAR_LIMIT=NONE] -->
src/com/android/settings/network/AirplaneSafeNetworksSlice.java→src/com/android/settings/network/TurnOnWifiSlice.java +147 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * Copyright (C) 2021 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. Loading @@ -16,7 +16,6 @@ package com.android.settings.network; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; Loading @@ -28,7 +27,6 @@ import android.net.Uri; import android.net.wifi.WifiManager; import android.util.Log; import androidx.annotation.IntDef; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; import androidx.slice.builders.ListBuilder; Loading @@ -36,7 +34,6 @@ import androidx.slice.builders.ListBuilder.RowBuilder; import androidx.slice.builders.SliceAction; import androidx.slice.core.SliceHints; import com.android.settings.AirplaneModeEnabler; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.slices.CustomSliceRegistry; Loading @@ -44,45 +41,18 @@ import com.android.settings.slices.CustomSliceable; import com.android.settings.slices.SliceBackgroundWorker; import com.android.settings.slices.SliceBroadcastReceiver; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * {@link CustomSliceable} for airplane-safe networks, used by generic clients. * {@link CustomSliceable} for turning on Wi-Fi, used by generic clients. */ public class AirplaneSafeNetworksSlice implements CustomSliceable, AirplaneModeEnabler.OnAirplaneModeChangedListener { private static final String TAG = "AirplaneSafeNetworksSlice"; public class TurnOnWifiSlice implements CustomSliceable { public static final String ACTION_INTENT_EXTRA = "action"; /** * Annotation for different action of the slice. * * {@code TURN_ON_NETWORKS} for action of turning on Wi-Fi networks. * {@code TURN_OFF_NETWORKS} for action of turning off Wi-Fi networks. */ @Retention(RetentionPolicy.SOURCE) @IntDef(value = { Action.TURN_ON_NETWORKS, Action.TURN_OFF_NETWORKS, }) public @interface Action { int TURN_ON_NETWORKS = 1; int TURN_OFF_NETWORKS = 2; } private static final String TAG = "TurnOnWifiSlice"; private final Context mContext; private final AirplaneModeEnabler mAirplaneModeEnabler; private final WifiManager mWifiManager; private boolean mIsAirplaneModeOn; public AirplaneSafeNetworksSlice(Context context) { public TurnOnWifiSlice(Context context) { mContext = context; mAirplaneModeEnabler = new AirplaneModeEnabler(context, this); mIsAirplaneModeOn = mAirplaneModeEnabler.isAirplaneModeOn(); mWifiManager = mContext.getSystemService(WifiManager.class); } Loading @@ -92,72 +62,40 @@ public class AirplaneSafeNetworksSlice implements CustomSliceable, @Override public Slice getSlice() { final ListBuilder listBuilder = new ListBuilder(mContext, getUri(), ListBuilder.INFINITY); if (mIsAirplaneModeOn) { listBuilder.addRow(new RowBuilder() .setTitle(getTitle()) if (mWifiManager.isWifiEnabled()) { return null; } final String title = mContext.getText(R.string.turn_on_wifi).toString(); final SliceAction primaryAction = SliceAction.create(getBroadcastIntent(mContext), getEndIcon(), ListBuilder.ICON_IMAGE, title); final ListBuilder listBuilder = new ListBuilder(mContext, getUri(), ListBuilder.INFINITY) .addRow(new RowBuilder() .setTitle(title) .addEndItem(getEndIcon(), SliceHints.ICON_IMAGE) .setPrimaryAction(getSliceAction())); } .setPrimaryAction(primaryAction)); return listBuilder.build(); } @Override public Uri getUri() { return CustomSliceRegistry.AIRPLANE_SAFE_NETWORKS_SLICE_URI; return CustomSliceRegistry.TURN_ON_WIFI_SLICE_URI; } @Override public void onNotifyChange(Intent intent) { final int action = intent.getIntExtra(ACTION_INTENT_EXTRA, 0); if (action == Action.TURN_ON_NETWORKS) { if (!mWifiManager.isWifiEnabled()) { logd("Action: turn on Wi-Fi networks"); mWifiManager.setWifiEnabled(true); } } else if (action == Action.TURN_OFF_NETWORKS) { if (mWifiManager.isWifiEnabled()) { logd("Action: turn off Wi-Fi networks"); mWifiManager.setWifiEnabled(false); } } } @Override public void onAirplaneModeChanged(boolean isAirplaneModeOn) { mIsAirplaneModeOn = isAirplaneModeOn; final AirplaneSafeNetworksWorker worker = SliceBackgroundWorker.getInstance(getUri()); if (worker != null) { worker.updateSlice(); } } @Override public Intent getIntent() { return new Intent(getUri().toString()) .setData(getUri()) .setClass(mContext, SliceBroadcastReceiver.class) .putExtra(ACTION_INTENT_EXTRA, getAction()); } @Action private int getAction() { return mWifiManager.isWifiEnabled() ? Action.TURN_OFF_NETWORKS : Action.TURN_ON_NETWORKS; } private String getTitle() { return mContext.getText( (getAction() == Action.TURN_ON_NETWORKS) ? R.string.turn_on_networks : R.string.turn_off_networks).toString(); .setClass(mContext, SliceBroadcastReceiver.class); } private IconCompat getEndIcon() { final Drawable drawable = mContext.getDrawable( (getAction() == Action.TURN_ON_NETWORKS) ? R.drawable.ic_airplane_safe_networks_24dp : R.drawable.ic_airplanemode_active); final Drawable drawable = mContext.getDrawable(R.drawable.ic_settings_wireless); if (drawable == null) { return Utils.createIconWithDrawable(new ColorDrawable(Color.TRANSPARENT)); } Loading @@ -165,20 +103,16 @@ public class AirplaneSafeNetworksSlice implements CustomSliceable, return Utils.createIconWithDrawable(drawable); } private SliceAction getSliceAction() { final PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0 /* requestCode */, getIntent(), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); final IconCompat icon = Utils.createIconWithDrawable(new ColorDrawable(Color.TRANSPARENT)); return SliceAction.create(pendingIntent, icon, ListBuilder.ACTION_WITH_LABEL, getTitle()); } @Override public Class getBackgroundWorkerClass() { return AirplaneSafeNetworksWorker.class; return TurnOnWifiWorker.class; } public static class AirplaneSafeNetworksWorker extends SliceBackgroundWorker { /** * The Slice background worker {@link SliceBackgroundWorker} is used to listen the Wi-Fi * status change, and then notifies the Slice {@link Uri} to update. */ public static class TurnOnWifiWorker extends SliceBackgroundWorker { private final IntentFilter mIntentFilter; private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { Loading @@ -190,7 +124,7 @@ public class AirplaneSafeNetworksSlice implements CustomSliceable, } }; public AirplaneSafeNetworksWorker(Context context, Uri uri) { public TurnOnWifiWorker(Context context, Uri uri) { super(context, uri); mIntentFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); } Loading @@ -209,9 +143,5 @@ public class AirplaneSafeNetworksSlice implements CustomSliceable, public void close() { // Do nothing. } public void updateSlice() { notifySliceChange(); } } }
src/com/android/settings/panel/InternetConnectivityPanel.java +1 −1 Original line number Diff line number Diff line Loading @@ -113,7 +113,7 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve final List<Uri> uris = new ArrayList<>(); if (mIsProviderModelEnabled) { uris.add(CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI); uris.add(CustomSliceRegistry.AIRPLANE_SAFE_NETWORKS_SLICE_URI); uris.add(CustomSliceRegistry.TURN_ON_WIFI_SLICE_URI); } else { uris.add(CustomSliceRegistry.WIFI_SLICE_URI); uris.add(CustomSliceRegistry.MOBILE_DATA_SLICE_URI); Loading
src/com/android/settings/slices/CustomSliceRegistry.java +5 −5 Original line number Diff line number Diff line Loading @@ -39,8 +39,8 @@ import com.android.settings.homepage.contextualcards.slices.LowStorageSlice; import com.android.settings.location.LocationSlice; import com.android.settings.media.MediaOutputIndicatorSlice; import com.android.settings.media.RemoteMediaSlice; import com.android.settings.network.AirplaneSafeNetworksSlice; import com.android.settings.network.ProviderModelSlice; import com.android.settings.network.TurnOnWifiSlice; import com.android.settings.network.telephony.MobileDataSlice; import com.android.settings.notification.zen.ZenModeButtonPreferenceController; import com.android.settings.wifi.calling.WifiCallingSliceHelper; Loading Loading @@ -307,13 +307,13 @@ public class CustomSliceRegistry { .build(); /** * Backing Uri for the Always On Slice. * Backing Uri for the Turn on Wi-Fi Slice. */ public static final Uri AIRPLANE_SAFE_NETWORKS_SLICE_URI = new Uri.Builder() public static final Uri TURN_ON_WIFI_SLICE_URI = new Uri.Builder() .scheme(ContentResolver.SCHEME_CONTENT) .authority(SettingsSliceProvider.SLICE_AUTHORITY) .appendPath(SettingsSlicesContract.PATH_SETTING_ACTION) .appendPath("airplane_safe_networks") .appendPath("turn_on_wifi") .build(); @VisibleForTesting Loading @@ -337,7 +337,7 @@ public class CustomSliceRegistry { sUriToSlice.put(DARK_THEME_SLICE_URI, DarkThemeSlice.class); sUriToSlice.put(REMOTE_MEDIA_SLICE_URI, RemoteMediaSlice.class); sUriToSlice.put(ALWAYS_ON_SLICE_URI, AlwaysOnDisplaySlice.class); sUriToSlice.put(AIRPLANE_SAFE_NETWORKS_SLICE_URI, AirplaneSafeNetworksSlice.class); sUriToSlice.put(TURN_ON_WIFI_SLICE_URI, TurnOnWifiSlice.class); } public static Class<? extends CustomSliceable> getSliceClassByUri(Uri uri) { Loading
tests/unit/src/com/android/settings/network/AirplaneSafeNetworksSliceTest.java→tests/unit/src/com/android/settings/network/TurnOnWifiSliceTest.java +85 −0 Original line number Diff line number Diff line /* * Copyright (C) 2020 The Android Open Source Project * Copyright (C) 2021 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. Loading @@ -26,16 +26,11 @@ import android.content.Context; import android.content.Intent; import android.net.wifi.WifiManager; import androidx.slice.Slice; import androidx.slice.SliceItem; import androidx.slice.SliceMetadata; import androidx.slice.SliceProvider; import androidx.slice.widget.SliceLiveData; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.android.settings.testutils.ResourcesUtils; import org.junit.Before; import org.junit.Rule; import org.junit.Test; Loading @@ -45,7 +40,7 @@ import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; @RunWith(AndroidJUnit4.class) public class AirplaneSafeNetworksSliceTest { public class TurnOnWifiSliceTest { @Rule public MockitoRule mMocks = MockitoJUnit.rule(); Loading @@ -53,7 +48,7 @@ public class AirplaneSafeNetworksSliceTest { private WifiManager mWifiManager; private Context mContext; private AirplaneSafeNetworksSlice mAirplaneSafeNetworksSlice; private TurnOnWifiSlice mSlice; @Before public void setUp() { Loading @@ -62,61 +57,29 @@ public class AirplaneSafeNetworksSliceTest { // Set-up specs for SliceMetadata. SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS); mAirplaneSafeNetworksSlice = new AirplaneSafeNetworksSlice(mContext); mAirplaneSafeNetworksSlice.onAirplaneModeChanged(true); mSlice = new TurnOnWifiSlice(mContext); } @Test public void getSlice_airplaneModeOff_shouldBeNotNull() { mAirplaneSafeNetworksSlice.onAirplaneModeChanged(false); assertThat(mAirplaneSafeNetworksSlice.getSlice()).isNotNull(); } @Test public void getSlice_wifiDisabled_shouldShowTurnOnNetworks() { when(mWifiManager.isWifiEnabled()).thenReturn(false); final Slice slice = mAirplaneSafeNetworksSlice.getSlice(); assertThat(slice).isNotNull(); final SliceItem sliceTitle = SliceMetadata.from(mContext, slice).getListContent().getHeader().getTitleItem(); assertThat(sliceTitle.getText()).isEqualTo( ResourcesUtils.getResourcesString(mContext, "turn_on_networks")); } @Test public void getSlice_wifiEnabled_shouldShowTurnOffNetworks() { public void getSlice_wifiEnabled_shouldBeNull() { when(mWifiManager.isWifiEnabled()).thenReturn(true); final Slice slice = mAirplaneSafeNetworksSlice.getSlice(); assertThat(slice).isNotNull(); final SliceItem sliceTitle = SliceMetadata.from(mContext, slice).getListContent().getHeader().getTitleItem(); assertThat(sliceTitle.getText()).isEqualTo( ResourcesUtils.getResourcesString(mContext, "turn_off_networks")); assertThat(mSlice.getSlice()).isNull(); } @Test public void onNotifyChange_turnOnNetworks_shouldSetWifiEnabled() { public void getSlice_wifiDisabled_shouldBeNotNull() { when(mWifiManager.isWifiEnabled()).thenReturn(false); Intent intent = mAirplaneSafeNetworksSlice.getIntent(); mAirplaneSafeNetworksSlice.onNotifyChange(intent); verify(mWifiManager).setWifiEnabled(true); assertThat(mSlice.getSlice()).isNotNull(); } @Test public void onNotifyChange_turnOffNetworks_shouldSetWifiDisabled() { when(mWifiManager.isWifiEnabled()).thenReturn(true); Intent intent = mAirplaneSafeNetworksSlice.getIntent(); public void onNotifyChange_shouldSetWifiEnabled() { Intent intent = mSlice.getIntent(); mAirplaneSafeNetworksSlice.onNotifyChange(intent); mSlice.onNotifyChange(intent); verify(mWifiManager).setWifiEnabled(false); verify(mWifiManager).setWifiEnabled(true); } }