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

Commit e5cdb3a9 authored by Jason Hsu's avatar Jason Hsu Committed by Android (Google) Code Review
Browse files

Merge "Fix the NPE error when get the service summary."

parents f7d30b1f 13b6850c
Loading
Loading
Loading
Loading
+11 −14
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ import com.android.internal.content.PackageMonitor;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.accessibility.AccessibilityUtil.AccessibilityServiceFragmentType;
import com.android.settings.accessibility.AccessibilityUtil.State;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.display.DarkUIPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider;
@@ -75,6 +74,8 @@ public class AccessibilitySettings extends DashboardFragment {
    // Index of the first preference in a preference category.
    private static final int FIRST_PREFERENCE_IN_CATEGORY_INDEX = -1;

    private static final String EMPTY_STRING = "";

    // Preference categories
    private static final String CATEGORY_SCREEN_READER = "screen_reader_category";
    private static final String CATEGORY_AUDIO_AND_CAPTIONS = "audio_and_captions_category";
@@ -255,22 +256,22 @@ public class AccessibilitySettings extends DashboardFragment {
    }

    public static CharSequence getServiceSummary(Context context, AccessibilityServiceInfo info,
            @State int state) {
            boolean serviceEnabled) {
        final CharSequence serviceSummary = info.loadSummary(context.getPackageManager());
        if (state == State.UNKNOWN) {
            return serviceSummary;
        final int fragmentType = AccessibilityUtil.getAccessibilityServiceFragmentType(info);

        if (fragmentType == AccessibilityServiceFragmentType.INVISIBLE) {
            return TextUtils.isEmpty(serviceSummary) ? EMPTY_STRING : serviceSummary;
        }

        final String serviceState = (state == State.ON)
        final String serviceState = serviceEnabled
                ? context.getString(R.string.accessibility_summary_state_enabled)
                : context.getString(R.string.accessibility_summary_state_disabled);
        final String stateSummaryCombo = context.getString(
                R.string.preference_summary_default_combination,
                serviceState, serviceSummary);

        return (TextUtils.isEmpty(serviceSummary))
                ? serviceState
                : stateSummaryCombo;
        return (TextUtils.isEmpty(serviceSummary)) ? serviceState : stateSummaryCombo;

    }

@@ -377,18 +378,13 @@ public class AccessibilitySettings extends DashboardFragment {
                description = getString(R.string.accessibility_service_default_description);
            }

            final int fragmentType = AccessibilityUtil.getAccessibilityServiceFragmentType(info);
            if (serviceEnabled && info.crashed) {
                // Update the summaries for services that have crashed.
                preference.setSummary(R.string.accessibility_summary_state_stopped);
                description = getString(R.string.accessibility_description_state_stopped);
            } else {
                int serviceState = serviceEnabled ? State.ON : State.OFF;
                if (fragmentType == AccessibilityServiceFragmentType.INVISIBLE) {
                    serviceState = State.UNKNOWN;
                }
                final CharSequence serviceSummary = getServiceSummary(getContext(), info,
                        serviceState);
                        serviceEnabled);
                preference.setSummary(serviceSummary);
            }

@@ -408,6 +404,7 @@ public class AccessibilitySettings extends DashboardFragment {
                preference.setEnabled(true);
            }

            final int fragmentType = AccessibilityUtil.getAccessibilityServiceFragmentType(info);
            switch (fragmentType) {
                case AccessibilityServiceFragmentType.LEGACY:
                    preference.setFragment(
+2 −8
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.settings.accessibility;

import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
import static com.android.settings.accessibility.AccessibilityUtil.State.UNKNOWN;

import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.ComponentName;
@@ -27,7 +26,6 @@ import android.content.Context;
import android.provider.Settings;
import android.view.accessibility.AccessibilityManager;

import com.android.settings.accessibility.AccessibilityUtil.AccessibilityServiceFragmentType;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.accessibility.AccessibilityUtils;

@@ -59,13 +57,9 @@ public class AccessibilitySlicePreferenceController extends TogglePreferenceCont
    @Override
    public CharSequence getSummary() {
        final AccessibilityServiceInfo serviceInfo = getAccessibilityServiceInfo();
        int serviceState = isChecked() ? ON : OFF;
        if (AccessibilityUtil.getAccessibilityServiceFragmentType(serviceInfo)
                == AccessibilityServiceFragmentType.INVISIBLE) {
            serviceState = UNKNOWN;
        }

        return serviceInfo == null ? EMPTY_STRING : AccessibilitySettings.getServiceSummary(
                mContext, serviceInfo, serviceState);
                mContext, serviceInfo, isChecked());
    }

    @Override
+0 −1
Original line number Diff line number Diff line
@@ -98,7 +98,6 @@ final class AccessibilityUtil {
    /** Denotes the accessibility enabled status */
    @Retention(RetentionPolicy.SOURCE)
    public @interface State {
        int UNKNOWN = -1;
        int OFF = 0;
        int ON = 1;
    }
+2 −3
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package com.android.settings.accessibility;

import static com.android.settings.accessibility.AccessibilityUtil.State.OFF;
import static com.android.settings.accessibility.AccessibilityUtil.State.ON;
import static com.android.settings.accessibility.AccessibilityUtil.State.UNKNOWN;

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

@@ -77,7 +76,7 @@ public class AccessibilityShortcutPreferenceControllerTest {
        mController.setChecked(true);

        assertThat(Settings.Secure.getIntForUser(mContext.getContentResolver(),
                Settings.Secure.ACCESSIBILITY_SHORTCUT_ON_LOCK_SCREEN, UNKNOWN,
                Settings.Secure.ACCESSIBILITY_SHORTCUT_ON_LOCK_SCREEN, OFF,
                UserHandle.USER_CURRENT)).isEqualTo(ON);
    }

@@ -86,7 +85,7 @@ public class AccessibilityShortcutPreferenceControllerTest {
        mController.setChecked(false);

        assertThat(Settings.Secure.getIntForUser(mContext.getContentResolver(),
                Settings.Secure.ACCESSIBILITY_SHORTCUT_ON_LOCK_SCREEN, UNKNOWN,
                Settings.Secure.ACCESSIBILITY_SHORTCUT_ON_LOCK_SCREEN, ON,
                UserHandle.USER_CURRENT)).isEqualTo(OFF);
    }
}