Merge "Fix "Send feedback about this device" option is missing issue." into pi-dev
am: 2d230e1431
Change-Id: Ic35475537f0764b442142b32fc4d29e7771890cd
This commit is contained in:
@@ -38,6 +38,7 @@ public class FeedbackPreferenceController extends AbstractPreferenceController i
|
|||||||
intent = new Intent("android.intent.action.BUG_REPORT");
|
intent = new Intent("android.intent.action.BUG_REPORT");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean isAvailable() {
|
public boolean isAvailable() {
|
||||||
return !TextUtils.isEmpty(DeviceInfoUtils.getFeedbackReporterPackage(mContext));
|
return !TextUtils.isEmpty(DeviceInfoUtils.getFeedbackReporterPackage(mContext));
|
||||||
}
|
}
|
||||||
@@ -47,6 +48,15 @@ public class FeedbackPreferenceController extends AbstractPreferenceController i
|
|||||||
super.updateState(preference);
|
super.updateState(preference);
|
||||||
intent.setPackage(DeviceInfoUtils.getFeedbackReporterPackage(mContext));
|
intent.setPackage(DeviceInfoUtils.getFeedbackReporterPackage(mContext));
|
||||||
preference.setIntent(intent);
|
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() {
|
public String getPreferenceKey() {
|
||||||
|
@@ -21,6 +21,8 @@ import static org.mockito.Mockito.when;
|
|||||||
|
|
||||||
import android.app.Fragment;
|
import android.app.Fragment;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.support.v7.preference.Preference;
|
||||||
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
|
||||||
@@ -38,12 +40,19 @@ public class FeedbackPreferenceControllerTest {
|
|||||||
private Fragment mFragment;
|
private Fragment mFragment;
|
||||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
@Mock
|
||||||
|
private Preference mPreference;
|
||||||
|
@Mock
|
||||||
|
private PreferenceScreen mScreen;
|
||||||
|
|
||||||
private FeedbackPreferenceController mController;
|
private FeedbackPreferenceController mController;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mController = new FeedbackPreferenceController(mFragment, mContext);
|
mController = new FeedbackPreferenceController(mFragment, mContext);
|
||||||
|
final String prefKey = mController.getPreferenceKey();
|
||||||
|
when(mScreen.findPreference(prefKey)).thenReturn(mPreference);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -51,4 +60,10 @@ public class FeedbackPreferenceControllerTest {
|
|||||||
when(mContext.getResources().getString(anyInt())).thenReturn("");
|
when(mContext.getResources().getString(anyInt())).thenReturn("");
|
||||||
assertThat(mController.isAvailable()).isFalse();
|
assertThat(mController.isAvailable()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isVisible_afterUpdateState_shouldBeSameAsIsAvailable() {
|
||||||
|
mController.updateState(mPreference);
|
||||||
|
assertThat(mPreference.isVisible()).isEqualTo(mController.isAvailable());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user