19c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt/*
29c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * Copyright (C) 2017 The Android Open Source Project
39c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt *
49c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * Licensed under the Apache License, Version 2.0 (the "License");
59c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * you may not use this file except in compliance with the License.
69c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * You may obtain a copy of the License at
79c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt *
89c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt *      http://www.apache.org/licenses/LICENSE-2.0
99c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt *
109c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * Unless required by applicable law or agreed to in writing, software
119c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * distributed under the License is distributed on an "AS IS" BASIS,
129c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * See the License for the specific language governing permissions and
149c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt * limitations under the License.
159c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt */
169c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
179c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtpackage com.android.settings.accessibility;
189c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
19bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardtimport android.accessibilityservice.AccessibilityServiceInfo;
20bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardtimport android.content.ComponentName;
219c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport android.content.Context;
22875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardtimport android.content.res.Resources;
239c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport android.os.Bundle;
249c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport android.provider.SearchIndexableResource;
259c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport android.provider.Settings;
269c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport android.support.v7.preference.Preference;
27bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardtimport android.text.TextUtils;
289c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport android.view.View;
29bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardtimport android.view.accessibility.AccessibilityManager;
309c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
319c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport com.android.internal.logging.nano.MetricsProto.MetricsEvent;
329c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport com.android.settings.R;
339c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport com.android.settings.SettingsPreferenceFragment;
347ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritzeimport com.android.settings.core.PreferenceController;
359c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport com.android.settings.search.BaseSearchIndexProvider;
369c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport com.android.settings.search.Indexable;
379c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
387ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritzeimport java.util.ArrayList;
399c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport java.util.Arrays;
40875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardtimport java.util.Collections;
419c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtimport java.util.List;
429c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
439c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardtpublic final class MagnificationPreferenceFragment extends SettingsPreferenceFragment implements
449c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        Indexable {
459c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
469c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    // Settings App preference keys
477ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze    private static final String PREFERENCE_TITLE_KEY = "magnification_preference_screen_title";
489c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    private static final String MAGNIFICATION_GESTURES_PREFERENCE_SCREEN_KEY =
499c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            "screen_magnification_gestures_preference_screen";
509c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    private static final String MAGNIFICATION_NAVBAR_PREFERENCE_SCREEN_KEY =
519c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            "screen_magnification_navbar_preference_screen";
529c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
53bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt    // Pseudo ComponentName used to represent navbar magnification in Settings.Secure.
54bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt    private static final String MAGNIFICATION_COMPONENT_ID =
55bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt            "com.android.server.accessibility.MagnificationController";
56bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt
579c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    private Preference mMagnificationGesturesPreference;
589c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    private Preference mMagnificationNavbarPreference;
599c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
609c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    private boolean mLaunchedFromSuw = false;
619c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
629c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    @Override
639c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    public void onCreatePreferences(Bundle bundle, String s) {
649c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        addPreferencesFromResource(R.xml.accessibility_magnification_settings);
659c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        mMagnificationGesturesPreference = findPreference(
669c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                MAGNIFICATION_GESTURES_PREFERENCE_SCREEN_KEY);
679c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        mMagnificationNavbarPreference = findPreference(MAGNIFICATION_NAVBAR_PREFERENCE_SCREEN_KEY);
689c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    }
699c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
709c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    @Override
719c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    public void onViewCreated(View view, Bundle savedInstanceState) {
729c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        super.onViewCreated(view, savedInstanceState);
739c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
749c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        final Bundle args = getArguments();
759c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        if ((args != null) && args.containsKey(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW)) {
769c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            mLaunchedFromSuw = args.getBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW);
779c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        }
789c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    }
799c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
809c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    @Override
819c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    public void onResume() {
829c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        super.onResume();
839c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        getActivity().setTitle(R.string.accessibility_screen_magnification_title);
849c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        updateFeatureSummary(Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED,
859c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                mMagnificationGesturesPreference);
869c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        updateFeatureSummary(Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED,
879c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                mMagnificationNavbarPreference);
889c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    }
899c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
909c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    @Override
919c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    public int getMetricsCategory() {
929c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        return MetricsEvent.ACCESSIBILITY_SCREEN_MAGNIFICATION_SETTINGS;
939c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    }
949c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
959c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    @Override
969c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    public boolean onPreferenceTreeClick(Preference preference) {
979c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        if (mLaunchedFromSuw) {
989c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            // If invoked from SUW, redirect to fragment instrumented for Vision Settings metrics
999c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            preference.setFragment(
1009c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                    ToggleScreenMagnificationPreferenceFragmentForSetupWizard.class.getName());
1019c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        }
1029c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        if (mMagnificationGesturesPreference == preference) {
1039c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            handleMagnificationGesturesPreferenceScreenClick();
1049c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            super.onPreferenceTreeClick(mMagnificationGesturesPreference);
1059c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            return true;
1069c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        } else if (mMagnificationNavbarPreference == preference) {
1079c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            handleMagnificationNavbarPreferenceScreenClick();
1089c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            super.onPreferenceTreeClick(mMagnificationNavbarPreference);
1099c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            return true;
1109c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        }
1119c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        return super.onPreferenceTreeClick(preference);
1129c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    }
1139c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
1149c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    private void updateFeatureSummary(String prefKey, Preference pref) {
1159c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        if (!mLaunchedFromSuw) {
1169c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            final boolean enabled = Settings.Secure.getInt(getContentResolver(), prefKey, 0) == 1;
1179c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            pref.setSummary(enabled ? R.string.accessibility_feature_state_on
1189c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                    : R.string.accessibility_feature_state_off);
1199c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        } else {
1209c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            if (Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED.equals(prefKey)) {
1219c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                pref.setSummary(R.string.accessibility_screen_magnification_short_summary);
1229c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            } else if (Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED.equals(
1239c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                    prefKey)) {
1249c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                pref.setSummary(R.string.accessibility_screen_magnification_navbar_short_summary);
1259c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            }
1269c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        }
1279c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    }
1289c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
1299c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    private void handleMagnificationGesturesPreferenceScreenClick() {
1309c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        Bundle extras = mMagnificationGesturesPreference.getExtras();
131875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt        populateMagnificationGesturesPreferenceExtras(extras, getContext());
1329c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        extras.putBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW, mLaunchedFromSuw);
1339c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    }
1349c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
1359c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    private void handleMagnificationNavbarPreferenceScreenClick() {
1369c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        Bundle extras = mMagnificationNavbarPreference.getExtras();
1379c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY,
1389c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED);
1399c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        extras.putString(AccessibilitySettings.EXTRA_TITLE, getString(
1409c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                R.string.accessibility_screen_magnification_navbar_title));
1419c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        extras.putCharSequence(AccessibilitySettings.EXTRA_SUMMARY,
1429c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                getActivity().getResources().getText(
1439c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                        R.string.accessibility_screen_magnification_navbar_summary));
1449c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        extras.putBoolean(AccessibilitySettings.EXTRA_CHECKED,
1459c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                Settings.Secure.getInt(getContentResolver(),
1469c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                        Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0)
1479c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                        == 1);
1489c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        extras.putBoolean(AccessibilitySettings.EXTRA_LAUNCHED_FROM_SUW, mLaunchedFromSuw);
1499c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    }
1509c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
151bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt    static CharSequence getConfigurationWarningStringForSecureSettingsKey(String key,
152bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt            Context context) {
153bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt        if (!Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED.equals(key)) {
154bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt            return null;
155bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt        }
156bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt        if (Settings.Secure.getInt(context.getContentResolver(),
157bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt                Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, 0) == 0) {
158bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt            return null;
159bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt        }
160bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt        final AccessibilityManager am = (AccessibilityManager) context.getSystemService(
161bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt                Context.ACCESSIBILITY_SERVICE);
162bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt        final String assignedId = Settings.Secure.getString(context.getContentResolver(),
163bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt                Settings.Secure.ACCESSIBILITY_BUTTON_TARGET_COMPONENT);
164bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt        if (!TextUtils.isEmpty(assignedId) && !MAGNIFICATION_COMPONENT_ID.equals(assignedId)) {
165bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt            final ComponentName assignedComponentName = ComponentName.unflattenFromString(
166bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt                    assignedId);
167bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt            final List<AccessibilityServiceInfo> activeServices =
168bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt                    am.getEnabledAccessibilityServiceList(
169bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt                            AccessibilityServiceInfo.FEEDBACK_ALL_MASK);
170bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt            final int serviceCount = activeServices.size();
171bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt            for (int i = 0; i < serviceCount; i++) {
172bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt                final AccessibilityServiceInfo info = activeServices.get(i);
173bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt                if (info.getComponentName().equals(assignedComponentName)) {
174bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt                    final CharSequence assignedServiceName = info.getResolveInfo().loadLabel(
175bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt                            context.getPackageManager());
176bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt                    return context.getString(
177bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt                            R.string.accessibility_screen_magnification_navbar_configuration_warning,
178bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt                            assignedServiceName);
179bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt                }
1809c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            }
1819c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt        }
182bc3827d7172955d58c4569fe003eb0d9ee46db1dCasey Burkhardt        return null;
1839c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    }
1849c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt
185875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt    static void populateMagnificationGesturesPreferenceExtras(Bundle extras, Context context) {
186875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt        extras.putString(AccessibilitySettings.EXTRA_PREFERENCE_KEY,
187875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt                Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED);
188875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt        extras.putString(AccessibilitySettings.EXTRA_TITLE, context.getString(
189875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt                R.string.accessibility_screen_magnification_gestures_title));
190875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt        extras.putCharSequence(AccessibilitySettings.EXTRA_SUMMARY, context.getResources().getText(
191875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt                R.string.accessibility_screen_magnification_summary));
192875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt        extras.putBoolean(AccessibilitySettings.EXTRA_CHECKED,
193875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt                Settings.Secure.getInt(context.getContentResolver(),
194875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt                        Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, 0) == 1);
195875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt        extras.putInt(AccessibilitySettings.EXTRA_VIDEO_RAW_RESOURCE_ID,
196875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt                R.raw.accessibility_screen_magnification);
197875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt    }
198875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt
199875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt    /**
200875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt     * @return {@code true} if this fragment should be shown, {@code false} otherwise. This
201875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt     * fragment is shown in the case that more than one magnification mode is available.
202875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt     */
203875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt    static boolean isApplicable(Resources res) {
204875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt        return res.getBoolean(com.android.internal.R.bool.config_showNavigationBar);
205875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt    }
206875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt
2079c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt    public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
2089c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            new BaseSearchIndexProvider() {
2099c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                @Override
2109c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
2119c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                        boolean enabled) {
212875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt                    if (isApplicable(context.getResources())) {
213875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt                        final SearchIndexableResource sir = new SearchIndexableResource(context);
214875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt                        sir.xmlResId = R.xml.accessibility_magnification_settings;
215875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt                        return Arrays.asList(sir);
216875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt                    } else {
217875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt                        return Collections.emptyList();
218875d3b24715c6e36df0f63985d210a4e6280038aCasey Burkhardt                    }
2199c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt                }
2207ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze
2217ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze                @Override
2227ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze                public List<String> getNonIndexableKeys(Context context) {
2237ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze                    List<String> keys = super.getNonIndexableKeys(context);
2247ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze                    keys.add(PREFERENCE_TITLE_KEY);
2257ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze                    return keys;
2267ae3c078b60eff85718f70fc9fafd6da70f506d1Matthew Fritze                }
2279c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt            };
2289c7143c3e45362e540d1ca99340c65475307455aCasey Burkhardt}
229