Loading src/com/android/settings/widget/EntityHeaderController.java +16 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,7 @@ public class EntityHeaderController { private Lifecycle mLifecycle; private RecyclerView mRecyclerView; private Drawable mIcon; private String mIconContentDescription; private CharSequence mLabel; private CharSequence mSummary; private String mPackageName; Loading Loading @@ -122,6 +123,10 @@ public class EntityHeaderController { return this; } /** * Set the icon in the header. Callers should also consider calling setIconContentDescription * to provide a description of this icon for accessibility purposes. */ public EntityHeaderController setIcon(Drawable icon) { if (icon != null) { mIcon = icon.getConstantState().newDrawable(mAppContext.getResources()); Loading @@ -129,6 +134,11 @@ public class EntityHeaderController { return this; } /** * Convenience method to set the header icon from an ApplicationsState.AppEntry. Callers should * also consider calling setIconContentDescription to provide a description of this icon for * accessibility purposes. */ public EntityHeaderController setIcon(ApplicationsState.AppEntry appEntry) { if (appEntry.icon != null) { mIcon = appEntry.icon.getConstantState().newDrawable(mAppContext.getResources()); Loading @@ -136,6 +146,11 @@ public class EntityHeaderController { return this; } public EntityHeaderController setIconContentDescription(String contentDescription) { mIconContentDescription = contentDescription; return this; } public EntityHeaderController setLabel(CharSequence label) { mLabel = label; return this; Loading Loading @@ -204,6 +219,7 @@ public class EntityHeaderController { ImageView iconView = mHeader.findViewById(R.id.entity_header_icon); if (iconView != null) { iconView.setImageDrawable(mIcon); iconView.setContentDescription(mIconContentDescription); } setText(R.id.entity_header_title, mLabel); setText(R.id.entity_header_summary, mSummary); Loading tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java +27 −0 Original line number Diff line number Diff line Loading @@ -233,6 +233,33 @@ public class EntityHeaderControllerTest { .isEqualTo("App info"); } @Test public void iconContentDescription_shouldWorkWithSetIcon() { final View view = mLayoutInflater .inflate(R.layout.settings_entity_header, null /* root */); when(mFragment.getActivity()).thenReturn(mock(Activity.class)); mController = EntityHeaderController.newInstance(mActivity, mFragment, view); String description = "Fake Description"; mController.setIcon(mShadowContext.getDrawable(R.drawable.ic_add)); mController.setIconContentDescription(description); mController.done(mActivity); assertThat(view.findViewById(R.id.entity_header_icon).getContentDescription().toString()) .isEqualTo(description); } @Test public void iconContentDescription_shouldWorkWithoutSetIcon() { final View view = mLayoutInflater .inflate(R.layout.settings_entity_header, null /* root */); when(mFragment.getActivity()).thenReturn(mock(Activity.class)); mController = EntityHeaderController.newInstance(mActivity, mFragment, view); String description = "Fake Description"; mController.setIconContentDescription(description); mController.done(mActivity); assertThat(view.findViewById(R.id.entity_header_icon).getContentDescription().toString()) .isEqualTo(description); } @Test public void bindButton_hasAppNotifIntent_shouldShowButton() { final View appLinks = mLayoutInflater Loading Loading
src/com/android/settings/widget/EntityHeaderController.java +16 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,7 @@ public class EntityHeaderController { private Lifecycle mLifecycle; private RecyclerView mRecyclerView; private Drawable mIcon; private String mIconContentDescription; private CharSequence mLabel; private CharSequence mSummary; private String mPackageName; Loading Loading @@ -122,6 +123,10 @@ public class EntityHeaderController { return this; } /** * Set the icon in the header. Callers should also consider calling setIconContentDescription * to provide a description of this icon for accessibility purposes. */ public EntityHeaderController setIcon(Drawable icon) { if (icon != null) { mIcon = icon.getConstantState().newDrawable(mAppContext.getResources()); Loading @@ -129,6 +134,11 @@ public class EntityHeaderController { return this; } /** * Convenience method to set the header icon from an ApplicationsState.AppEntry. Callers should * also consider calling setIconContentDescription to provide a description of this icon for * accessibility purposes. */ public EntityHeaderController setIcon(ApplicationsState.AppEntry appEntry) { if (appEntry.icon != null) { mIcon = appEntry.icon.getConstantState().newDrawable(mAppContext.getResources()); Loading @@ -136,6 +146,11 @@ public class EntityHeaderController { return this; } public EntityHeaderController setIconContentDescription(String contentDescription) { mIconContentDescription = contentDescription; return this; } public EntityHeaderController setLabel(CharSequence label) { mLabel = label; return this; Loading Loading @@ -204,6 +219,7 @@ public class EntityHeaderController { ImageView iconView = mHeader.findViewById(R.id.entity_header_icon); if (iconView != null) { iconView.setImageDrawable(mIcon); iconView.setContentDescription(mIconContentDescription); } setText(R.id.entity_header_title, mLabel); setText(R.id.entity_header_summary, mSummary); Loading
tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java +27 −0 Original line number Diff line number Diff line Loading @@ -233,6 +233,33 @@ public class EntityHeaderControllerTest { .isEqualTo("App info"); } @Test public void iconContentDescription_shouldWorkWithSetIcon() { final View view = mLayoutInflater .inflate(R.layout.settings_entity_header, null /* root */); when(mFragment.getActivity()).thenReturn(mock(Activity.class)); mController = EntityHeaderController.newInstance(mActivity, mFragment, view); String description = "Fake Description"; mController.setIcon(mShadowContext.getDrawable(R.drawable.ic_add)); mController.setIconContentDescription(description); mController.done(mActivity); assertThat(view.findViewById(R.id.entity_header_icon).getContentDescription().toString()) .isEqualTo(description); } @Test public void iconContentDescription_shouldWorkWithoutSetIcon() { final View view = mLayoutInflater .inflate(R.layout.settings_entity_header, null /* root */); when(mFragment.getActivity()).thenReturn(mock(Activity.class)); mController = EntityHeaderController.newInstance(mActivity, mFragment, view); String description = "Fake Description"; mController.setIconContentDescription(description); mController.done(mActivity); assertThat(view.findViewById(R.id.entity_header_icon).getContentDescription().toString()) .isEqualTo(description); } @Test public void bindButton_hasAppNotifIntent_shouldShowButton() { final View appLinks = mLayoutInflater Loading