Fix the ExpandDividerPreference will flash one time in some corner cases
Bug: 204051529 Test: make SettingsRoboTests Change-Id: Iaead6d2a596cbbf0281045b40e4b00f23ceb9f09
This commit is contained in:
@@ -26,9 +26,7 @@
|
|||||||
android:paddingRight="?android:attr/listPreferredItemPaddingRight"
|
android:paddingRight="?android:attr/listPreferredItemPaddingRight"
|
||||||
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
|
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal">
|
||||||
android:clipToPadding="false"
|
|
||||||
android:baselineAligned="false">
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/expand_title"
|
android:id="@+id/expand_title"
|
||||||
|
@@ -65,8 +65,7 @@ public class ExpandDividerPreference extends Preference {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick() {
|
public void onClick() {
|
||||||
mIsExpanded = !mIsExpanded;
|
setIsExpanded(!mIsExpanded);
|
||||||
refreshState();
|
|
||||||
if (mOnExpandListener != null) {
|
if (mOnExpandListener != null) {
|
||||||
mOnExpandListener.onExpand(mIsExpanded);
|
mOnExpandListener.onExpand(mIsExpanded);
|
||||||
}
|
}
|
||||||
@@ -74,10 +73,7 @@ public class ExpandDividerPreference extends Preference {
|
|||||||
|
|
||||||
void setTitle(final String titleContent) {
|
void setTitle(final String titleContent) {
|
||||||
mTitleContent = titleContent;
|
mTitleContent = titleContent;
|
||||||
if (mTextView != null) {
|
refreshState();
|
||||||
mTextView.postDelayed(
|
|
||||||
() -> mTextView.setText(titleContent), 50);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void setIsExpanded(boolean isExpanded) {
|
void setIsExpanded(boolean isExpanded) {
|
||||||
@@ -90,13 +86,13 @@ public class ExpandDividerPreference extends Preference {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void refreshState() {
|
private void refreshState() {
|
||||||
final int iconId =
|
|
||||||
mIsExpanded
|
|
||||||
? R.drawable.ic_settings_expand_less
|
|
||||||
: R.drawable.ic_settings_expand_more;
|
|
||||||
if (mImageView != null) {
|
if (mImageView != null) {
|
||||||
mImageView.setImageResource(iconId);
|
mImageView.setImageResource(mIsExpanded
|
||||||
|
? R.drawable.ic_settings_expand_less
|
||||||
|
: R.drawable.ic_settings_expand_more);
|
||||||
|
}
|
||||||
|
if (mTextView != null) {
|
||||||
|
mTextView.setText(mTitleContent);
|
||||||
}
|
}
|
||||||
setTitle(mTitleContent);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -18,11 +18,7 @@ package com.android.settings.fuelgauge;
|
|||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
|
||||||
import static org.mockito.Matchers.anyInt;
|
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.never;
|
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -36,8 +32,6 @@ import com.android.settings.R;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.ArgumentCaptor;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
|
|
||||||
@@ -52,7 +46,6 @@ public final class ExpandDividerPreferenceTest {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
|
||||||
mContext = spy(RuntimeEnvironment.application);
|
mContext = spy(RuntimeEnvironment.application);
|
||||||
mImageView = spy(new ImageView(mContext));
|
mImageView = spy(new ImageView(mContext));
|
||||||
mTextView = spy(new TextView(mContext));
|
mTextView = spy(new TextView(mContext));
|
||||||
@@ -64,9 +57,9 @@ public final class ExpandDividerPreferenceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testConstructor_returnExpectedResult() {
|
public void testConstructor_returnExpectedResult() {
|
||||||
assertThat(mExpandDividerPreference.getKey())
|
assertThat(mExpandDividerPreference.getKey())
|
||||||
.isEqualTo(ExpandDividerPreference.PREFERENCE_KEY);
|
.isEqualTo(ExpandDividerPreference.PREFERENCE_KEY);
|
||||||
assertThat(mExpandDividerPreference.getLayoutResource())
|
assertThat(mExpandDividerPreference.getLayoutResource())
|
||||||
.isEqualTo(R.layout.preference_expand_divider);
|
.isEqualTo(R.layout.preference_expand_divider);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -75,9 +68,7 @@ public final class ExpandDividerPreferenceTest {
|
|||||||
mExpandDividerPreference.mTextView = mTextView;
|
mExpandDividerPreference.mTextView = mTextView;
|
||||||
|
|
||||||
mExpandDividerPreference.setTitle(titleContent);
|
mExpandDividerPreference.setTitle(titleContent);
|
||||||
final ArgumentCaptor<Runnable> captor = ArgumentCaptor.forClass(Runnable.class);
|
|
||||||
verify(mTextView).postDelayed(captor.capture(), eq(50L));
|
|
||||||
captor.getValue().run();
|
|
||||||
verify(mTextView).setText(titleContent);
|
verify(mTextView).setText(titleContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,7 +77,7 @@ public final class ExpandDividerPreferenceTest {
|
|||||||
final boolean[] isExpandedArray = new boolean[] {false};
|
final boolean[] isExpandedArray = new boolean[] {false};
|
||||||
mExpandDividerPreference.mImageView = mImageView;
|
mExpandDividerPreference.mImageView = mImageView;
|
||||||
mExpandDividerPreference.setOnExpandListener(
|
mExpandDividerPreference.setOnExpandListener(
|
||||||
isExpanded -> isExpandedArray[0] = isExpanded);
|
isExpanded -> isExpandedArray[0] = isExpanded);
|
||||||
|
|
||||||
// Click the item first time from false -> true.
|
// Click the item first time from false -> true.
|
||||||
mExpandDividerPreference.onClick();
|
mExpandDividerPreference.onClick();
|
||||||
@@ -106,7 +97,7 @@ public final class ExpandDividerPreferenceTest {
|
|||||||
final boolean[] isExpandedArray = new boolean[] {false};
|
final boolean[] isExpandedArray = new boolean[] {false};
|
||||||
mExpandDividerPreference.mImageView = mImageView;
|
mExpandDividerPreference.mImageView = mImageView;
|
||||||
mExpandDividerPreference.setOnExpandListener(
|
mExpandDividerPreference.setOnExpandListener(
|
||||||
isExpanded -> isExpandedArray[0] = isExpanded);
|
isExpanded -> isExpandedArray[0] = isExpanded);
|
||||||
|
|
||||||
mExpandDividerPreference.setIsExpanded(true);
|
mExpandDividerPreference.setIsExpanded(true);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user