diff --git a/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java b/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java index bb952285ad5..03b69a5b4ee 100644 --- a/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java +++ b/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java @@ -21,6 +21,7 @@ import static com.android.settings.bluetooth.Utils.getLocalBtManager; import android.app.Activity; import android.app.Fragment; import android.content.Context; +import android.content.Intent; import android.content.pm.UserInfo; import android.os.Bundle; import android.os.UserManager; @@ -126,6 +127,16 @@ public class MyDeviceInfoFragment extends DashboardFragment { return controllers; } + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + final BuildNumberPreferenceController buildNumberPreferenceController = + getPreferenceController(BuildNumberPreferenceController.class); + if (buildNumberPreferenceController.onActivityResult(requestCode, resultCode, data)) { + return; + } + super.onActivityResult(requestCode, resultCode, data); + } + private void initHeader() { // TODO: Migrate into its own controller. final LayoutPreference headerPreference = diff --git a/tests/robotests/src/com/android/settings/deviceinfo/MyDeviceInfoFragmentTest.java b/tests/robotests/src/com/android/settings/deviceinfo/MyDeviceInfoFragmentTest.java index 36f0662c2a8..8b21b74d78c 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/MyDeviceInfoFragmentTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/MyDeviceInfoFragmentTest.java @@ -21,15 +21,18 @@ import static com.android.settings.SettingsActivity.EXTRA_FRAGMENT_ARG_KEY; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.Activity; import android.content.Context; +import android.content.Intent; import android.os.Bundle; import android.support.v7.preference.PreferenceScreen; import android.telephony.TelephonyManager; +import android.util.ArrayMap; import com.android.settings.deviceinfo.aboutphone.MyDeviceInfoFragment; import com.android.settings.TestConfig; @@ -39,6 +42,7 @@ import com.android.settings.testutils.shadow.SettingsShadowResources; import com.android.settings.testutils.shadow.SettingsShadowSystemProperties; import com.android.settings.testutils.shadow.ShadowConnectivityManager; import com.android.settings.testutils.shadow.ShadowUserManager; +import com.android.settingslib.core.AbstractPreferenceController; import org.junit.Before; import org.junit.Test; @@ -48,6 +52,11 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplication; +import org.robolectric.util.ReflectionHelpers; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; @RunWith(SettingsRobolectricTestRunner.class) @Config( @@ -97,4 +106,23 @@ public class MyDeviceInfoFragmentTest { verify(mScreen).setInitialExpandedChildrenCount(Integer.MAX_VALUE); } + + @Test + public void onActivityResult_shouldCallBuildNumberPreferenceController() { + final BuildNumberPreferenceController controller = + mock(BuildNumberPreferenceController.class); + final Map> preferenceControllers = + new ArrayMap<>(); + final List controllerList = new ArrayList<>(); + controllerList.add(controller); + preferenceControllers.put(BuildNumberPreferenceController.class, controllerList); + ReflectionHelpers.setField(mSettings, "mPreferenceControllers", preferenceControllers); + + final int requestCode = 1; + final int resultCode = 2; + final Intent data = new Intent(); + mSettings.onActivityResult(requestCode, resultCode, data); + + verify(controller).onActivityResult(requestCode, resultCode, data); + } }