Loading src/com/android/settings/DefaultRingtonePreference.java +0 −28 Original line number Diff line number Diff line Loading @@ -19,40 +19,15 @@ package com.android.settings; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.media.RingtoneManager; import android.os.UserHandle; import android.os.UserManager; import android.net.Uri; import android.util.AttributeSet; import android.util.Log; public class DefaultRingtonePreference extends RingtonePreference { private static final String TAG = "DefaultRingtonePreference"; private int mUserId = UserHandle.USER_CURRENT; protected Context mUserContext; public DefaultRingtonePreference(Context context, AttributeSet attrs) { super(context, attrs); mUserContext = getContext(); } public void setUserId(int userId) { mUserId = userId; mUserContext = Utils.createPackageContextAsUser(getContext(), mUserId); } @Override public void performClick() { if (mUserId != UserHandle.USER_CURRENT) { if (Utils.confirmWorkProfileCredentialsIfNecessary(getContext(), mUserId) || Utils.startQuietModeDialogIfNecessary(getContext(), UserManager.get(getContext()), mUserId)) { return; } } super.performClick(); } @Override Loading @@ -64,9 +39,6 @@ public class DefaultRingtonePreference extends RingtonePreference { * doesn't make sense to show a 'Default' item. */ ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, false); if (mUserId != UserHandle.USER_CURRENT) { ringtonePickerIntent.putExtra(Intent.EXTRA_USER_ID, mUserId); } } @Override Loading src/com/android/settings/RingtonePreference.java +13 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.content.res.TypedArray; import android.media.AudioAttributes; import android.media.RingtoneManager; import android.net.Uri; import android.os.UserHandle; import android.provider.Settings.System; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceManager; Loading Loading @@ -54,6 +55,8 @@ public class RingtonePreference extends Preference { private boolean mShowSilent; private int mRequestCode; protected int mUserId; protected Context mUserContext; public RingtonePreference(Context context, AttributeSet attrs) { super(context, attrs); Loading @@ -67,9 +70,19 @@ public class RingtonePreference extends Preference { mShowSilent = a.getBoolean(com.android.internal.R.styleable.RingtonePreference_showSilent, true); setIntent(new Intent(RingtoneManager.ACTION_RINGTONE_PICKER)); setUserId(UserHandle.myUserId()); a.recycle(); } public void setUserId(int userId) { mUserId = userId; mUserContext = Utils.createPackageContextAsUser(getContext(), mUserId); } public int getUserId() { return mUserId; } /** * Returns the sound type(s) that are shown in the picker. * Loading src/com/android/settings/notification/SoundSettings.java +6 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.UserHandle; import android.preference.SeekBarVolumizer; import android.provider.SearchIndexableResource; import android.support.v7.preference.Preference; Loading Loading @@ -85,7 +86,11 @@ public class SoundSettings extends DashboardFragment { if (preference instanceof RingtonePreference) { mRequestPreference = (RingtonePreference) preference; mRequestPreference.onPrepareRingtonePickerIntent(mRequestPreference.getIntent()); startActivityForResult(preference.getIntent(), REQUEST_CODE); startActivityForResultAsUser( mRequestPreference.getIntent(), REQUEST_CODE, null, UserHandle.of(mRequestPreference.getUserId())); return true; } return super.onPreferenceTreeClick(preference); Loading tests/robotests/src/com/android/settings/notification/WorkSoundPreferenceControllerTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.telephony.TelephonyManager; import com.android.settings.DefaultRingtonePreference; import com.android.settings.R; import com.android.settings.RingtonePreference; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; Loading Loading @@ -251,4 +252,26 @@ public class WorkSoundPreferenceControllerTest { verify(mWorkCategory.findPreference(KEY_WORK_ALARM_RINGTONE)) .setSummary(eq(notAvailable)); } @Test public void onResume_shouldSetUserIdToPreference() { final int managedProfileUserId = 10; when(mAudioHelper.getManagedProfileId(any(UserManager.class))) .thenReturn(managedProfileUserId); when(mAudioHelper.isUserUnlocked(any(UserManager.class), anyInt())).thenReturn(true); when(mAudioHelper.isSingleVolume()).thenReturn(false); when(mFragment.getPreferenceScreen()).thenReturn(mScreen); when(mAudioHelper.createPackageContextAsUser(anyInt())).thenReturn(mContext); mController.displayPreference(mScreen); mController.onResume(); verify((RingtonePreference) mWorkCategory.findPreference(KEY_WORK_PHONE_RINGTONE)) .setUserId(managedProfileUserId); verify((RingtonePreference) mWorkCategory.findPreference(KEY_WORK_NOTIFICATION_RINGTONE)) .setUserId(managedProfileUserId); verify((RingtonePreference) mWorkCategory.findPreference(KEY_WORK_ALARM_RINGTONE)) .setUserId(managedProfileUserId); } } Loading
src/com/android/settings/DefaultRingtonePreference.java +0 −28 Original line number Diff line number Diff line Loading @@ -19,40 +19,15 @@ package com.android.settings; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.media.RingtoneManager; import android.os.UserHandle; import android.os.UserManager; import android.net.Uri; import android.util.AttributeSet; import android.util.Log; public class DefaultRingtonePreference extends RingtonePreference { private static final String TAG = "DefaultRingtonePreference"; private int mUserId = UserHandle.USER_CURRENT; protected Context mUserContext; public DefaultRingtonePreference(Context context, AttributeSet attrs) { super(context, attrs); mUserContext = getContext(); } public void setUserId(int userId) { mUserId = userId; mUserContext = Utils.createPackageContextAsUser(getContext(), mUserId); } @Override public void performClick() { if (mUserId != UserHandle.USER_CURRENT) { if (Utils.confirmWorkProfileCredentialsIfNecessary(getContext(), mUserId) || Utils.startQuietModeDialogIfNecessary(getContext(), UserManager.get(getContext()), mUserId)) { return; } } super.performClick(); } @Override Loading @@ -64,9 +39,6 @@ public class DefaultRingtonePreference extends RingtonePreference { * doesn't make sense to show a 'Default' item. */ ringtonePickerIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, false); if (mUserId != UserHandle.USER_CURRENT) { ringtonePickerIntent.putExtra(Intent.EXTRA_USER_ID, mUserId); } } @Override Loading
src/com/android/settings/RingtonePreference.java +13 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.content.res.TypedArray; import android.media.AudioAttributes; import android.media.RingtoneManager; import android.net.Uri; import android.os.UserHandle; import android.provider.Settings.System; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceManager; Loading Loading @@ -54,6 +55,8 @@ public class RingtonePreference extends Preference { private boolean mShowSilent; private int mRequestCode; protected int mUserId; protected Context mUserContext; public RingtonePreference(Context context, AttributeSet attrs) { super(context, attrs); Loading @@ -67,9 +70,19 @@ public class RingtonePreference extends Preference { mShowSilent = a.getBoolean(com.android.internal.R.styleable.RingtonePreference_showSilent, true); setIntent(new Intent(RingtoneManager.ACTION_RINGTONE_PICKER)); setUserId(UserHandle.myUserId()); a.recycle(); } public void setUserId(int userId) { mUserId = userId; mUserContext = Utils.createPackageContextAsUser(getContext(), mUserId); } public int getUserId() { return mUserId; } /** * Returns the sound type(s) that are shown in the picker. * Loading
src/com/android/settings/notification/SoundSettings.java +6 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.UserHandle; import android.preference.SeekBarVolumizer; import android.provider.SearchIndexableResource; import android.support.v7.preference.Preference; Loading Loading @@ -85,7 +86,11 @@ public class SoundSettings extends DashboardFragment { if (preference instanceof RingtonePreference) { mRequestPreference = (RingtonePreference) preference; mRequestPreference.onPrepareRingtonePickerIntent(mRequestPreference.getIntent()); startActivityForResult(preference.getIntent(), REQUEST_CODE); startActivityForResultAsUser( mRequestPreference.getIntent(), REQUEST_CODE, null, UserHandle.of(mRequestPreference.getUserId())); return true; } return super.onPreferenceTreeClick(preference); Loading
tests/robotests/src/com/android/settings/notification/WorkSoundPreferenceControllerTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.telephony.TelephonyManager; import com.android.settings.DefaultRingtonePreference; import com.android.settings.R; import com.android.settings.RingtonePreference; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; Loading Loading @@ -251,4 +252,26 @@ public class WorkSoundPreferenceControllerTest { verify(mWorkCategory.findPreference(KEY_WORK_ALARM_RINGTONE)) .setSummary(eq(notAvailable)); } @Test public void onResume_shouldSetUserIdToPreference() { final int managedProfileUserId = 10; when(mAudioHelper.getManagedProfileId(any(UserManager.class))) .thenReturn(managedProfileUserId); when(mAudioHelper.isUserUnlocked(any(UserManager.class), anyInt())).thenReturn(true); when(mAudioHelper.isSingleVolume()).thenReturn(false); when(mFragment.getPreferenceScreen()).thenReturn(mScreen); when(mAudioHelper.createPackageContextAsUser(anyInt())).thenReturn(mContext); mController.displayPreference(mScreen); mController.onResume(); verify((RingtonePreference) mWorkCategory.findPreference(KEY_WORK_PHONE_RINGTONE)) .setUserId(managedProfileUserId); verify((RingtonePreference) mWorkCategory.findPreference(KEY_WORK_NOTIFICATION_RINGTONE)) .setUserId(managedProfileUserId); verify((RingtonePreference) mWorkCategory.findPreference(KEY_WORK_ALARM_RINGTONE)) .setUserId(managedProfileUserId); } }