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

Commit a9fc8ce3 authored by Wilson Wu's avatar Wilson Wu
Browse files

Don't update the same indication

Update the same indication would make TalkBack
announce same messages repeatedly. Only update
the indication if it changes.

Test: Manual
Test: atest SystemUITests:KeyguardIndicationTextViewTest
Bug: 150737351
Change-Id: Ifc7ae496ee9324fe5fb52d7694daf7839166bbd5
parent dc1fe789
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -27,6 +27,8 @@ import android.widget.TextView;
 */
 */
public class KeyguardIndicationTextView extends TextView {
public class KeyguardIndicationTextView extends TextView {


    private CharSequence mText = "";

    public KeyguardIndicationTextView(Context context) {
    public KeyguardIndicationTextView(Context context) {
        super(context);
        super(context);
    }
    }
@@ -53,10 +55,12 @@ public class KeyguardIndicationTextView extends TextView {


        // TODO: Animation, make sure that we will show one indication long enough.
        // TODO: Animation, make sure that we will show one indication long enough.
        if (TextUtils.isEmpty(text)) {
        if (TextUtils.isEmpty(text)) {
            mText = "";
            setVisibility(View.INVISIBLE);
            setVisibility(View.INVISIBLE);
        } else {
        } else if (!TextUtils.equals(text, mText)) {
            mText = text;
            setVisibility(View.VISIBLE);
            setVisibility(View.VISIBLE);
            setText(text);
            setText(mText);
        }
        }
    }
    }


+68 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2020 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.systemui.statusbar.phone;

import static com.google.common.truth.Truth.assertThat;

import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.view.View;

import androidx.test.filters.SmallTest;

import com.android.systemui.SysuiTestCase;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@SmallTest
@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
public class KeyguardIndicationTextViewTest extends SysuiTestCase {

    private KeyguardIndicationTextView mKeyguardIndicationTextView;

    @Before
    public void setup() {
        mKeyguardIndicationTextView = new KeyguardIndicationTextView(mContext);
    }

    @Test
    public void switchIndication_null_hideIndication() {
        mKeyguardIndicationTextView.switchIndication(null /* text */);

        assertThat(mKeyguardIndicationTextView.getVisibility()).isEqualTo(View.INVISIBLE);
        assertThat(mKeyguardIndicationTextView.getText()).isEqualTo("");
    }

    @Test
    public void switchIndication_emptyText_hideIndication() {
        mKeyguardIndicationTextView.switchIndication("" /* text */);

        assertThat(mKeyguardIndicationTextView.getVisibility()).isEqualTo(View.INVISIBLE);
        assertThat(mKeyguardIndicationTextView.getText()).isEqualTo("");
    }

    @Test
    public void switchIndication_newText_updateProperly() {
        mKeyguardIndicationTextView.switchIndication("test_indication" /* text */);

        assertThat(mKeyguardIndicationTextView.getVisibility()).isEqualTo(View.VISIBLE);
        assertThat(mKeyguardIndicationTextView.getText()).isEqualTo("test_indication");
    }
}