From f6073fb9780ef077ede54f16d7c2341ec36d32f0 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Mon, 6 Nov 2017 10:30:05 -0800 Subject: [PATCH] Guard against a NPE when disconnecting suggestion service. Change-Id: Ib10502b9467365f6e348737655806ef2369a747b Fixes: 68885411 Test: robotests --- .../suggestions/SuggestionControllerMixin.java | 5 ++++- .../suggestions/SuggestionControllerMixinTest.java | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionControllerMixin.java b/src/com/android/settings/dashboard/suggestions/SuggestionControllerMixin.java index e77881e7e0a..71bf10771c4 100644 --- a/src/com/android/settings/dashboard/suggestions/SuggestionControllerMixin.java +++ b/src/com/android/settings/dashboard/suggestions/SuggestionControllerMixin.java @@ -97,7 +97,10 @@ public class SuggestionControllerMixin implements SuggestionController.ServiceCo if (DEBUG) { Log.d(TAG, "SuggestionService disconnected"); } - mHost.getLoaderManager().destroyLoader(SuggestionLoader.LOADER_ID_SUGGESTIONS); + final LoaderManager loaderManager = mHost.getLoaderManager(); + if (loaderManager != null) { + loaderManager.destroyLoader(SuggestionLoader.LOADER_ID_SUGGESTIONS); + } } @Override diff --git a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionControllerMixinTest.java b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionControllerMixinTest.java index 89c45b480b8..696ea4b1778 100644 --- a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionControllerMixinTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionControllerMixinTest.java @@ -97,4 +97,14 @@ public class SuggestionControllerMixinTest { verify(mHost).getLoaderManager(); } + + @Test + public void onServiceDisconnected_hostNotAttached_shouldDoNothing() { + when(mHost.getLoaderManager()).thenReturn(null); + + mMixin = new SuggestionControllerMixin(mContext, mHost, mLifecycle); + mMixin.onServiceDisconnected(); + + verify(mHost).getLoaderManager(); + } }