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

Commit 0ace23b7 authored by cocod's avatar cocod
Browse files

When focusing on time complication, TalkBack didn't announce AM or PM

In clock time complication, call getBestDateTimePattern to get
a pattern for 12h/24h mode of current time. Then set it as content
description of TextClock.

Fixes: 380220673
Test: Talkback on under various language settings
Flag: EXEMPT bugfix
Change-Id: I02a283f30b22888bebc5f5e174dcdadd64a8233e
parent 68673d19
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.view.View;
import android.widget.TextClock;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
@@ -41,6 +41,8 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import java.util.Locale;

@SmallTest
@RunWith(AndroidJUnit4.class)
public class DreamClockTimeComplicationTest extends SysuiTestCase {
@@ -68,7 +70,7 @@ public class DreamClockTimeComplicationTest extends SysuiTestCase {
    private ComplicationViewModel mComplicationViewModel;

    @Mock
    private View mView;
    private TextClock mView;

    @Mock
    private ComplicationLayoutParams mLayoutParams;
@@ -86,6 +88,7 @@ public class DreamClockTimeComplicationTest extends SysuiTestCase {
        MockitoAnnotations.initMocks(this);
        when(mComponentFactory.create()).thenReturn(mComponent);
        when(mComponent.getViewHolder()).thenReturn(mDreamClockTimeViewHolder);
        when(mView.getTextLocale()).thenReturn(Locale.US);
        mMonitor = SelfExecutingMonitor.createInstance();
    }

+12 −3
Original line number Diff line number Diff line
@@ -16,10 +16,13 @@

package com.android.systemui.complication;

import static android.text.format.DateFormat.getBestDateTimePattern;

import static com.android.systemui.complication.dagger.DreamClockTimeComplicationComponent.DreamClockTimeComplicationModule.DREAM_CLOCK_TIME_COMPLICATION_VIEW;
import static com.android.systemui.complication.dagger.RegisteredComplicationsModule.DREAM_CLOCK_TIME_COMPLICATION_LAYOUT_PARAMS;

import android.view.View;
import android.widget.TextClock;

import com.android.internal.logging.UiEventLogger;
import com.android.systemui.CoreStartable;
@@ -92,18 +95,24 @@ public class DreamClockTimeComplication implements Complication {
     * {@link ViewHolder} to contain value/logic associated with {@link DreamClockTimeComplication}.
     */
    public static class DreamClockTimeViewHolder implements ViewHolder {
        private final View mView;
        private final TextClock mView;
        private final ComplicationLayoutParams mLayoutParams;

        @Inject
        DreamClockTimeViewHolder(
                @Named(DREAM_CLOCK_TIME_COMPLICATION_VIEW) View view,
                @Named(DREAM_CLOCK_TIME_COMPLICATION_VIEW) TextClock view,
                @Named(DREAM_CLOCK_TIME_COMPLICATION_LAYOUT_PARAMS)
                        ComplicationLayoutParams layoutParams,
                DreamClockTimeViewController viewController) {
            mView = view;
            mLayoutParams = layoutParams;
            viewController.init();

            // Support localized AM/PM marker for 12h mode in content description.
            String formatSkeleton = view.is24HourModeEnabled() ? "Hm" : "hm";
            String pattern = getBestDateTimePattern(view.getTextLocale(), formatSkeleton);
            view.setContentDescriptionFormat12Hour(pattern);
            view.setContentDescriptionFormat24Hour(pattern);
        }

        @Override
@@ -122,7 +131,7 @@ public class DreamClockTimeComplication implements Complication {

        @Inject
        DreamClockTimeViewController(
                @Named(DREAM_CLOCK_TIME_COMPLICATION_VIEW) View view,
                @Named(DREAM_CLOCK_TIME_COMPLICATION_VIEW) TextClock view,
                UiEventLogger uiEventLogger) {
            super(view);

+1 −2
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@
package com.android.systemui.complication.dagger

import android.view.LayoutInflater
import android.view.View
import android.widget.TextClock
import com.android.internal.util.Preconditions
import com.android.systemui.Flags
@@ -64,7 +63,7 @@ interface DreamClockTimeComplicationComponent {
            @Provides
            @DreamClockTimeComplicationScope
            @Named(DREAM_CLOCK_TIME_COMPLICATION_VIEW)
            fun provideComplicationView(layoutInflater: LayoutInflater): View {
            fun provideComplicationView(layoutInflater: LayoutInflater): TextClock {
                val view =
                    Preconditions.checkNotNull(
                        layoutInflater.inflate(