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

Commit b706d4e9 authored by Salvador Martinez's avatar Salvador Martinez
Browse files

Fixed Sound Settings summary text

The summary for Sound settings was not
descriptive enough when the volume was set
to 0% so additional strings were added. Now
it will change let you know the status
of the ringer and vibration settings when
at 0% volume. Espresso tests added to test
that text is properly updated in each of
these states.

Test: make SettingsTests
Bug: 31099179
Change-Id: Id49e2d0c4b7ac0f17efcdaf31de48d5eb678ca46
parent 1721e451
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -5927,10 +5927,16 @@
    <!-- Sounds and Notification -->
    <!-- Sound: Dashboard summary indicating the volume of ringtong. example: Ring volume at 20%.
    <!-- Sound: Dashboard summary indicating the volume of ringtone. example: Ring volume at 20%.
    [CHAR LIMIT=100] -->
    <string name="sound_settings_summary">Ring volume at <xliff:g id="percentage" example="2%">%1$s</xliff:g></string>
    <!-- Sound: Dashboard summary indicating the volume of ringtone when at 0% with vibrate enabled. [CHAR LIMIT=100] -->
    <string name="sound_settings_summary_vibrate">Ringer set to vibrate</string>
    <!-- Sound: Dashboard summary indicating the volume of ringtone when at 0% with vibrate disabled [CHAR LIMIT=100] -->
    <string name="sound_settings_summary_silent">Ringer set to silent</string>
    <!-- Sound: Dashboard summary example used in Setup Wizard preview screen. [CHAR LIMIT=100] -->
    <string name="sound_settings_example_summary">Ring volume at 80%</string>
+15 −4
Original line number Diff line number Diff line
@@ -594,10 +594,21 @@ public class SoundSettings extends SettingsPreferenceFragment implements Indexab

        @Override
        public void onReceive(Context context, Intent intent) {
            String percent =  NumberFormat.getPercentInstance().format(
                    (double) mAudioManager.getStreamVolume(AudioManager.STREAM_RING) / maxVolume);
            mSummaryLoader.setSummary(this,
                    mContext.getString(R.string.sound_settings_summary, percent));
            final int ringerMode = mAudioManager.getRingerMode();
            int resId;
            String percent = "";
            if (ringerMode == mAudioManager.RINGER_MODE_SILENT) {
                resId = R.string.sound_settings_summary_silent;
            } else if (ringerMode == mAudioManager.RINGER_MODE_VIBRATE){
                resId = R.string.sound_settings_summary_vibrate;
            }
            else {
                percent =  NumberFormat.getPercentInstance().format(
                        (double) mAudioManager.getStreamVolume(
                                AudioManager.STREAM_RING) / maxVolume);
                resId = R.string.sound_settings_summary;
            }
            mSummaryLoader.setSummary(this, mContext.getString(resId, percent));
        }
    }

+6 −1
Original line number Diff line number Diff line
@@ -7,10 +7,15 @@ LOCAL_CERTIFICATE := platform

LOCAL_JAVA_LIBRARIES := android.test.runner bouncycastle

LOCAL_STATIC_ANDROID_LIBRARIES := \
    android-support-v4

LOCAL_STATIC_JAVA_LIBRARIES := \
    android-support-test \
    mockito-target \
    espresso-core
    espresso-core \
    espresso-contrib \
    espresso-intents

# Include all test java files.
LOCAL_SRC_FILES := $(call all-java-files-under, src)
+83 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.settings.notification;

import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.ViewMatchers.hasDescendant;
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.containsString;

import android.content.Context;
import android.media.AudioManager;
import android.support.test.espresso.contrib.RecyclerViewActions;
import android.support.test.filters.SmallTest;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import com.android.settings.R;
import com.android.settings.Settings;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
@SmallTest
public class SoundSettingsIntegrationTest {

    private AudioManager mAudioManager;
    private final String TRUNCATED_SUMMARY = "Ring volume at";

    @Rule
    public ActivityTestRule<Settings> mActivityRule =
            new ActivityTestRule<>(Settings.class, true);

    @Test
    public void soundPreferenceShowsCorrectSummaryOnSilentMode() {
        mAudioManager = (AudioManager) mActivityRule.getActivity().getApplicationContext()
                .getSystemService(Context.AUDIO_SERVICE);
        mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
        onView(withId(R.id.dashboard_container))
                .perform(RecyclerViewActions.scrollTo(
                        hasDescendant(withText(R.string.sound_settings))));
        onView(withText(R.string.sound_settings_summary_silent)).check(matches(isDisplayed()));
    }

    @Test
    public void soundPreferenceShowsCorrectSummaryOnVibrateMode() {
        mAudioManager = (AudioManager) mActivityRule.getActivity().getApplicationContext()
                .getSystemService(Context.AUDIO_SERVICE);
        mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
        onView(withId(R.id.dashboard_container)).perform(RecyclerViewActions
                .scrollTo(hasDescendant(withText(R.string.sound_settings))));
        onView(withText(R.string.sound_settings_summary_vibrate)).check(matches(isDisplayed()));
    }

    @Test
    public void soundPreferenceShowsCorrectSummaryOnMaxVolume() {
        mAudioManager = (AudioManager) mActivityRule.getActivity().getApplicationContext()
                .getSystemService(Context.AUDIO_SERVICE);
        mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
        mAudioManager.setStreamVolume(AudioManager.STREAM_RING,
                mAudioManager.getStreamMaxVolume(AudioManager.STREAM_RING), 0);
        onView(withId(R.id.dashboard_container))
                .perform(RecyclerViewActions.scrollTo(
                        hasDescendant(withText(R.string.sound_settings))));
        onView(withText(containsString(TRUNCATED_SUMMARY))).check(matches(isDisplayed()));
    }
}
 No newline at end of file