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

Commit 35f1e055 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Show RingtonePickerActivity in work user instead" into oc-dev

parents 93799e87 007dc1ab
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);
    }

}