From 8c29ff0a27e2c71641ef13ce05c4b077d81b4806 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Wed, 9 Jun 2021 00:35:53 +0800 Subject: [PATCH] [Provider Model] Fix the panel non responsive issue Bug: 187340277 Test: manual test atest -c ProviderModelSliceTest Change-Id: Ie27a5049b2cab05b7c7936395d0db85c3c594d96 --- .../settings/network/ProviderModelSlice.java | 13 +++++++++++++ .../settings/network/ProviderModelSliceTest.java | 10 ++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/com/android/settings/network/ProviderModelSlice.java b/src/com/android/settings/network/ProviderModelSlice.java index b778a05a96c..cfaef53ac60 100644 --- a/src/com/android/settings/network/ProviderModelSlice.java +++ b/src/com/android/settings/network/ProviderModelSlice.java @@ -46,6 +46,7 @@ import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.network.telephony.NetworkProviderWorker; import com.android.settings.slices.CustomSliceable; import com.android.settings.slices.SliceBackgroundWorker; +import com.android.settings.slices.SliceBroadcastReceiver; import com.android.settings.slices.SliceBuilderUtils; import com.android.settings.wifi.WifiUtils; import com.android.settings.wifi.slice.WifiSlice; @@ -163,6 +164,18 @@ public class ProviderModelSlice extends WifiSlice { return listBuilder.build(); } + @Override + public PendingIntent getBroadcastIntent(Context context) { + final Intent intent = new Intent(getUri().toString()) + // The FLAG_RECEIVER_FOREGROUND flag is necessary to avoid the intent delay of + // the first sending after the device restarts + .addFlags(Intent.FLAG_RECEIVER_FOREGROUND) + .setData(getUri()) + .setClass(context, SliceBroadcastReceiver.class); + return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent, + PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE); + } + /** * Update the current carrier's mobile data status. */ diff --git a/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java b/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java index fb17e34a9bc..a96e7cf21b4 100644 --- a/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java +++ b/tests/unit/src/com/android/settings/network/ProviderModelSliceTest.java @@ -142,6 +142,16 @@ public class ProviderModelSliceTest { mockBuilder(); } + @Test + @UiThreadTest + public void getBroadcastIntent_shouldHaveFlagReceiverForeground() { + final PendingIntent pendingIntent = mMockProviderModelSlice.getBroadcastIntent(mContext); + + final int flags = pendingIntent.getIntent().getFlags(); + assertThat(flags & Intent.FLAG_RECEIVER_FOREGROUND) + .isEqualTo(Intent.FLAG_RECEIVER_FOREGROUND); + } + @Test @UiThreadTest public void getSlice_noWifiAndHasCarrierNoData_oneCarrier() {