From a21570c732f7beaf3ae980d694e8e559d28cece3 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Fri, 19 Apr 2019 15:05:41 -0700 Subject: [PATCH] Adding null check when unregistering slice relay handler Bug: 130324175 Test: atest SliceBroadcastRelayHandlerTest Change-Id: I8dc923746f3ef3a3617951d85c6a6f5d11970fa2 --- .../systemui/SliceBroadcastRelayHandler.java | 5 ++++- .../systemui/SliceBroadcastRelayHandlerTest.java | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/SliceBroadcastRelayHandler.java b/packages/SystemUI/src/com/android/systemui/SliceBroadcastRelayHandler.java index 922c65e453beb..b3fc69e8a49d5 100644 --- a/packages/SystemUI/src/com/android/systemui/SliceBroadcastRelayHandler.java +++ b/packages/SystemUI/src/com/android/systemui/SliceBroadcastRelayHandler.java @@ -59,7 +59,10 @@ public class SliceBroadcastRelayHandler extends SystemUI { } else if (SliceBroadcastRelay.ACTION_UNREGISTER.equals(intent.getAction())) { Uri uri = intent.getParcelableExtra(SliceBroadcastRelay.EXTRA_URI); if (DEBUG) Log.d(TAG, "Unregister " + uri); - getAndRemoveRelay(uri).unregister(mContext); + BroadcastRelay relay = getAndRemoveRelay(uri); + if (relay != null) { + relay.unregister(mContext); + } } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/SliceBroadcastRelayHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/SliceBroadcastRelayHandlerTest.java index c6e85c3f81a06..19e1a5cef183c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/SliceBroadcastRelayHandlerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/SliceBroadcastRelayHandlerTest.java @@ -94,6 +94,22 @@ public class SliceBroadcastRelayHandlerTest extends SysuiTestCase { verify(relayHandler.mContext).unregisterReceiver(eq(relay.getValue())); } + @Test + public void testUnregisterWithoutRegister() { + Uri testUri = new Uri.Builder() + .scheme(ContentResolver.SCHEME_CONTENT) + .authority("something") + .path("test") + .build(); + SliceBroadcastRelayHandler relayHandler = new SliceBroadcastRelayHandler(); + relayHandler.mContext = spy(mContext); + + Intent intent = new Intent(SliceBroadcastRelay.ACTION_UNREGISTER); + intent.putExtra(SliceBroadcastRelay.EXTRA_URI, ContentProvider.maybeAddUserId(testUri, 0)); + relayHandler.handleIntent(intent); + // No crash + } + @Test public void testRelay() { Receiver.sReceiver = mock(BroadcastReceiver.class);