diff --git a/src/com/android/settings/search/SearchViewHolder.java b/src/com/android/settings/search/SearchViewHolder.java index ed72940f8b6..7667a060f28 100644 --- a/src/com/android/settings/search/SearchViewHolder.java +++ b/src/com/android/settings/search/SearchViewHolder.java @@ -17,6 +17,7 @@ package com.android.settings.search; import android.content.Context; +import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.os.UserHandle; @@ -26,6 +27,7 @@ import android.util.IconDrawableFactory; import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import android.support.annotation.VisibleForTesting; import com.android.settings.R; import com.android.settings.core.instrumentation.MetricsFeatureProvider; @@ -84,8 +86,7 @@ public abstract class SearchViewHolder extends RecyclerView.ViewHolder { AppSearchResult appResult = (AppSearchResult) result; PackageManager pm = fragment.getActivity().getPackageManager(); UserHandle userHandle = appResult.getAppUserHandle(); - Drawable badgedIcon = - mIconDrawableFactory.getBadgedIcon(appResult.info, userHandle.getIdentifier()); + Drawable badgedIcon = getBadgedIcon(appResult.info, userHandle.getIdentifier()); iconView.setImageDrawable(badgedIcon); titleView.setContentDescription( pm.getUserBadgedLabel(appResult.info.loadLabel(pm), userHandle)); @@ -112,4 +113,9 @@ public abstract class SearchViewHolder extends RecyclerView.ViewHolder { breadcrumbView.setText(breadcrumb); breadcrumbView.setVisibility(View.VISIBLE); } + + @VisibleForTesting + Drawable getBadgedIcon(ApplicationInfo info, int userId) { + return mIconDrawableFactory.getBadgedIcon(info, userId); + } } \ No newline at end of file diff --git a/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java b/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java index 4ec080c4207..14fe63ab611 100644 --- a/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java +++ b/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java @@ -18,6 +18,8 @@ package com.android.settings.search; import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doReturn; @@ -32,8 +34,10 @@ import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.UserHandle; +import android.os.UserManager; import android.view.LayoutInflater; import android.view.View; @@ -58,7 +62,7 @@ import java.util.List; import java.util.Objects; @RunWith(SettingsRobolectricTestRunner.class) -@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION_O) public class IntentSearchViewHolderTest { private static final String TITLE = "title"; @@ -72,6 +76,8 @@ public class IntentSearchViewHolderTest { private SearchFragment mFragment; @Mock private PackageManager mPackageManager; + @Mock + private UserManager mUserManager; private FakeFeatureFactory mFeatureFactory; private IntentSearchViewHolder mHolder; private Drawable mIcon; @@ -189,6 +195,9 @@ public class IntentSearchViewHolderTest { @Test public void testBindViewElements_appSearchResult() { + mHolder = spy(mHolder); + doReturn(new ColorDrawable(0)).when(mHolder).getBadgedIcon(any(ApplicationInfo.class), + anyInt()); when(mPackageManager.getUserBadgedLabel(any(CharSequence.class), eq(new UserHandle(USER_ID)))).thenReturn(BADGED_LABEL);