Loading src/com/android/settings/deviceinfo/FeedbackPreferenceController.java +10 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ public class FeedbackPreferenceController extends AbstractPreferenceController i intent = new Intent("android.intent.action.BUG_REPORT"); } @Override public boolean isAvailable() { return !TextUtils.isEmpty(DeviceInfoUtils.getFeedbackReporterPackage(mContext)); } Loading @@ -47,6 +48,15 @@ public class FeedbackPreferenceController extends AbstractPreferenceController i super.updateState(preference); intent.setPackage(DeviceInfoUtils.getFeedbackReporterPackage(mContext)); preference.setIntent(intent); // In some cases, cannot retrieve the report package from package manager, // For example, launched from lock screen. // Update this preference visibility after updateState. if (isAvailable() && !preference.isVisible()) { preference.setVisible(true); } else if (!isAvailable() && preference.isVisible()){ preference.setVisible(false); } } public String getPreferenceKey() { Loading tests/robotests/src/com/android/settings/deviceinfo/FeedbackPreferenceControllerTest.java +15 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import static org.mockito.Mockito.when; import android.app.Fragment; import android.content.Context; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import com.android.settings.testutils.SettingsRobolectricTestRunner; Loading @@ -38,12 +40,19 @@ public class FeedbackPreferenceControllerTest { private Fragment mFragment; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private Context mContext; @Mock private Preference mPreference; @Mock private PreferenceScreen mScreen; private FeedbackPreferenceController mController; @Before public void setUp() { MockitoAnnotations.initMocks(this); mController = new FeedbackPreferenceController(mFragment, mContext); final String prefKey = mController.getPreferenceKey(); when(mScreen.findPreference(prefKey)).thenReturn(mPreference); } @Test Loading @@ -51,4 +60,10 @@ public class FeedbackPreferenceControllerTest { when(mContext.getResources().getString(anyInt())).thenReturn(""); assertThat(mController.isAvailable()).isFalse(); } @Test public void isVisible_afterUpdateState_shouldBeSameAsIsAvailable() { mController.updateState(mPreference); assertThat(mPreference.isVisible()).isEqualTo(mController.isAvailable()); } } Loading
src/com/android/settings/deviceinfo/FeedbackPreferenceController.java +10 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ public class FeedbackPreferenceController extends AbstractPreferenceController i intent = new Intent("android.intent.action.BUG_REPORT"); } @Override public boolean isAvailable() { return !TextUtils.isEmpty(DeviceInfoUtils.getFeedbackReporterPackage(mContext)); } Loading @@ -47,6 +48,15 @@ public class FeedbackPreferenceController extends AbstractPreferenceController i super.updateState(preference); intent.setPackage(DeviceInfoUtils.getFeedbackReporterPackage(mContext)); preference.setIntent(intent); // In some cases, cannot retrieve the report package from package manager, // For example, launched from lock screen. // Update this preference visibility after updateState. if (isAvailable() && !preference.isVisible()) { preference.setVisible(true); } else if (!isAvailable() && preference.isVisible()){ preference.setVisible(false); } } public String getPreferenceKey() { Loading
tests/robotests/src/com/android/settings/deviceinfo/FeedbackPreferenceControllerTest.java +15 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import static org.mockito.Mockito.when; import android.app.Fragment; import android.content.Context; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import com.android.settings.testutils.SettingsRobolectricTestRunner; Loading @@ -38,12 +40,19 @@ public class FeedbackPreferenceControllerTest { private Fragment mFragment; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private Context mContext; @Mock private Preference mPreference; @Mock private PreferenceScreen mScreen; private FeedbackPreferenceController mController; @Before public void setUp() { MockitoAnnotations.initMocks(this); mController = new FeedbackPreferenceController(mFragment, mContext); final String prefKey = mController.getPreferenceKey(); when(mScreen.findPreference(prefKey)).thenReturn(mPreference); } @Test Loading @@ -51,4 +60,10 @@ public class FeedbackPreferenceControllerTest { when(mContext.getResources().getString(anyInt())).thenReturn(""); assertThat(mController.isAvailable()).isFalse(); } @Test public void isVisible_afterUpdateState_shouldBeSameAsIsAvailable() { mController.updateState(mPreference); assertThat(mPreference.isVisible()).isEqualTo(mController.isAvailable()); } }