Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5b67fa63 authored by Tony Mak's avatar Tony Mak Committed by android-build-merger
Browse files

Merge "Show RingtonePickerActivity in work user instead" into oc-dev am: 35f1e055

am: 8e413e2a

Change-Id: I3d4874feb410c5ece7a44f04dca23f4ea7546fdd
parents c7b2bc65 8e413e2a
Loading
Loading
Loading
Loading
+0 −28
Original line number Diff line number Diff line
@@ -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
@@ -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
+13 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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);
@@ -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.
     *
+6 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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);
+23 −0
Original line number Diff line number Diff line
@@ -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;

@@ -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);
    }

}