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

Commit 12db316e authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 12406339 from 658459de to 24Q4-release

Change-Id: I01b270ceb3f0850e5043a7401701c117a8766843
parents 2ab50ea8 658459de
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -9762,8 +9762,10 @@
    <string name="launch_by_default">Open by default</string>
    <string name="app_launch_open_domain_urls_title">Open supported links</string>
    <string name="app_launch_open_in_app">In the app</string>
    <string name="app_launch_open_in_browser">In your browser</string>
    <!-- Preference title for Supported links open in this app. [CHAR LIMIT=60] -->
    <string name="app_launch_top_intro_message">Allow web links to open in this app</string>
    <string name="app_launch_top_intro_message">Choose how to open web links for this app</string>
    <!-- Preference title for Links to open in this app. [CHAR LIMIT=60] -->
    <string name="app_launch_links_category">Links to open in this app</string>
+9 −3
Original line number Diff line number Diff line
@@ -19,9 +19,15 @@
    xmlns:settings="http://schemas.android.com/apk/res-auto"
    android:title="@string/launch_by_default">

    <com.android.settingslib.widget.MainSwitchPreference
        android:key="open_by_default_supported_links"
        android:title="@string/app_launch_open_domain_urls_title"/>
    <PreferenceCategory>
        <com.android.settingslib.widget.SelectorWithWidgetPreference
            android:key="app_launch_open_in_app"
            android:title="@string/app_launch_open_in_app"/>

        <com.android.settingslib.widget.SelectorWithWidgetPreference
            android:key="app_launch_open_in_browser"
            android:title="@string/app_launch_open_in_browser"/>
    </PreferenceCategory>

    <PreferenceCategory
        android:layout="@layout/preference_category_no_label"
+36 −21
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static android.content.pm.verify.domain.DomainVerificationUserState.DOMAI
import static android.content.pm.verify.domain.DomainVerificationUserState.DOMAIN_STATE_SELECTED;
import static android.content.pm.verify.domain.DomainVerificationUserState.DOMAIN_STATE_VERIFIED;

import android.annotation.Nullable;
import android.app.Activity;
import android.app.settings.SettingsEnums;
import android.appwidget.AppWidgetManager;
@@ -35,10 +36,9 @@ import android.util.ArraySet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.AlertDialog;
import androidx.preference.Preference;
@@ -51,7 +51,7 @@ import com.android.settings.applications.ClearDefaultsPreference;
import com.android.settings.widget.EntityHeaderController;
import com.android.settingslib.applications.AppUtils;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.MainSwitchPreference;
import com.android.settingslib.widget.SelectorWithWidgetPreference;

import java.util.HashMap;
import java.util.List;
@@ -62,10 +62,11 @@ import java.util.UUID;

/** The page of the Open by default */
public class AppLaunchSettings extends AppInfoBase implements
        Preference.OnPreferenceChangeListener, OnCheckedChangeListener {
        Preference.OnPreferenceChangeListener, SelectorWithWidgetPreference.OnClickListener {
    private static final String TAG = "AppLaunchSettings";
    // Preference keys
    private static final String MAIN_SWITCH_PREF_KEY = "open_by_default_supported_links";
    private static final String OPEN_IN_APP_PREF_KEY = "app_launch_open_in_app";
    private static final String OPEN_IN_BROWSER_PREF_KEY = "app_launch_open_in_browser";
    private static final String VERIFIED_LINKS_PREF_KEY = "open_by_default_verified_links";
    private static final String ADD_LINK_PREF_KEY = "open_by_default_add_link";
    private static final String CLEAR_DEFAULTS_PREF_KEY = "app_launch_clear_defaults";
@@ -86,7 +87,10 @@ public class AppLaunchSettings extends AppInfoBase implements
    public static final String APP_PACKAGE_KEY = "app_package";

    private ClearDefaultsPreference mClearDefaultsPreference;
    private MainSwitchPreference mMainSwitchPreference;
    @Nullable
    private SelectorWithWidgetPreference mOpenInAppSelector;
    @Nullable
    private SelectorWithWidgetPreference mOpenInBrowserSelector;
    private Preference mAddLinkPreference;
    private PreferenceCategory mMainPreferenceCategory;
    private PreferenceCategory mSelectedLinksPreferenceCategory;
@@ -168,20 +172,20 @@ public class AppLaunchSettings extends AppInfoBase implements
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        IntentPickerUtils.logd("onSwitchChanged: isChecked=" + isChecked);
        if (mMainSwitchPreference != null) { //mMainSwitchPreference synced with Switch
            mMainSwitchPreference.setChecked(isChecked);
        }
    public void onRadioButtonClicked(@NonNull SelectorWithWidgetPreference selected) {
        final boolean openSupportedLinks = selected.getKey().equals(OPEN_IN_APP_PREF_KEY);
        IntentPickerUtils.logd("onRadioButtonClicked: openInApp =" + openSupportedLinks);
        setOpenByDefaultPreference(openSupportedLinks /* openInApp */);

        if (mMainPreferenceCategory != null) {
            mMainPreferenceCategory.setVisible(isChecked);
            mMainPreferenceCategory.setVisible(openSupportedLinks);
        }
        if (mDomainVerificationManager != null) {
            try {
                mDomainVerificationManager.setDomainVerificationLinkHandlingAllowed(mPackageName,
                        isChecked);
                        openSupportedLinks);
            } catch (PackageManager.NameNotFoundException e) {
                Log.w(TAG, "onSwitchChanged: " + e.getMessage());
                Log.w(TAG, "onRadioButtonClicked: " + e.getMessage());
            }
        }
    }
@@ -224,7 +228,8 @@ public class AppLaunchSettings extends AppInfoBase implements
    }

    private void initMainSwitchAndCategories() {
        mMainSwitchPreference = (MainSwitchPreference) findPreference(MAIN_SWITCH_PREF_KEY);
        mOpenInAppSelector = findPreference(OPEN_IN_APP_PREF_KEY);
        mOpenInBrowserSelector = findPreference(OPEN_IN_BROWSER_PREF_KEY);
        mMainPreferenceCategory = findPreference(MAIN_PREF_CATEGORY_KEY);
        mSelectedLinksPreferenceCategory = findPreference(SELECTED_LINKS_CATEGORY_KEY);
        // Initialize the "Other Default Category" section
@@ -235,14 +240,15 @@ public class AppLaunchSettings extends AppInfoBase implements
        final DomainVerificationUserState userState =
                IntentPickerUtils.getDomainVerificationUserState(mDomainVerificationManager,
                        mPackageName);
        if (userState == null) {
        if (userState == null || mOpenInAppSelector == null || mOpenInBrowserSelector == null) {
            disabledPreference();
            return false;
        }

        IntentPickerUtils.logd("isLinkHandlingAllowed() : " + userState.isLinkHandlingAllowed());
        mMainSwitchPreference.updateStatus(userState.isLinkHandlingAllowed());
        mMainSwitchPreference.addOnSwitchChangeListener(this);
        setOpenByDefaultPreference(userState.isLinkHandlingAllowed());
        mOpenInAppSelector.setOnClickListener(this);
        mOpenInBrowserSelector.setOnClickListener(this);
        mMainPreferenceCategory.setVisible(userState.isLinkHandlingAllowed());
        return true;
    }
@@ -260,6 +266,12 @@ public class AppLaunchSettings extends AppInfoBase implements
        verifiedLinksPreference.setEnabled(verifiedLinksNo > 0);
    }

    private void setOpenByDefaultPreference(boolean openInApp) {
        if (mOpenInBrowserSelector == null || mOpenInAppSelector == null) return;
        mOpenInAppSelector.setChecked(openInApp);
        mOpenInBrowserSelector.setChecked(!openInApp);
    }

    private void showVerifiedLinksDialog() {
        final int linksNo = getLinksNumber(DOMAIN_STATE_VERIFIED);
        if (linksNo == 0) {
@@ -360,9 +372,12 @@ public class AppLaunchSettings extends AppInfoBase implements
    }

    private void disabledPreference() {
        mMainSwitchPreference.updateStatus(false);
        mMainSwitchPreference.setSelectable(false);
        mMainSwitchPreference.setEnabled(false);
        if (mOpenInAppSelector == null ||mOpenInBrowserSelector == null) return;
        setOpenByDefaultPreference(false /* openInApp */);
        mOpenInAppSelector.setSelectable(false);
        mOpenInAppSelector.setEnabled(false);
        mOpenInBrowserSelector.setSelectable(false);
        mOpenInBrowserSelector.setEnabled(false);
        mMainPreferenceCategory.setVisible(false);
    }

+21 −1
Original line number Diff line number Diff line
@@ -28,6 +28,10 @@ import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.Flags;

import androidx.fragment.app.FragmentActivity;
import androidx.preference.PreferenceManager;
@@ -56,6 +60,8 @@ import java.util.List;
@RunWith(RobolectricTestRunner.class)
public class AccessibilityButtonFragmentTest {

    @Rule
    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
    @Rule
    public MockitoRule mMockitoRule = MockitoJUnit.rule();
    @Spy
@@ -84,6 +90,7 @@ public class AccessibilityButtonFragmentTest {
    }

    @Test
    @DisableFlags(Flags.FLAG_A11Y_STANDALONE_GESTURE_ENABLED)
    public void onCreate_navigationGestureEnabled_setCorrectTitle() {
        when(mResources.getInteger(com.android.internal.R.integer.config_navBarInteractionMode))
                .thenReturn(NAV_BAR_MODE_GESTURAL);
@@ -96,7 +103,20 @@ public class AccessibilityButtonFragmentTest {
    }

    @Test
    public void onCreate_navigationGestureDisabled_setCorrectTitle() {
    @EnableFlags(Flags.FLAG_A11Y_STANDALONE_GESTURE_ENABLED)
    public void onCreate_navigationGestureEnabled_gestureFlag_setCorrectTitle() {
        when(mResources.getInteger(com.android.internal.R.integer.config_navBarInteractionMode))
                .thenReturn(NAV_BAR_MODE_GESTURAL);

        mFragment.onAttach(mContext);
        mFragment.onCreate(Bundle.EMPTY);

        assertThat(mFragment.getActivity().getTitle().toString()).isEqualTo(
                mContext.getString(R.string.accessibility_button_title));
    }

    @Test
    public void onCreate_navigationBarEnabled_setCorrectTitle() {
        when(mResources.getInteger(com.android.internal.R.integer.config_navBarInteractionMode))
                .thenReturn(NAV_BAR_MODE_2BUTTON);

+17 −0
Original line number Diff line number Diff line
@@ -30,6 +30,10 @@ import static org.mockito.Mockito.when;
import android.content.ContentResolver;
import android.content.Context;
import android.content.res.Resources;
import android.platform.test.annotations.DisableFlags;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.provider.Flags;
import android.provider.Settings;

import androidx.preference.ListPreference;
@@ -48,6 +52,8 @@ import org.robolectric.RobolectricTestRunner;
@RunWith(RobolectricTestRunner.class)
public class AccessibilityButtonGesturePreferenceControllerTest {

    @Rule
    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
    @Rule
    public final MockitoRule mockito = MockitoJUnit.rule();

@@ -67,6 +73,7 @@ public class AccessibilityButtonGesturePreferenceControllerTest {
    }

    @Test
    @DisableFlags(Flags.FLAG_A11Y_STANDALONE_GESTURE_ENABLED)
    public void getAvailabilityStatus_navigationGestureEnabled_returnAvailable() {
        when(mResources.getInteger(com.android.internal.R.integer.config_navBarInteractionMode))
                .thenReturn(NAV_BAR_MODE_GESTURAL);
@@ -74,6 +81,16 @@ public class AccessibilityButtonGesturePreferenceControllerTest {
        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
    }

    @Test
    @EnableFlags(Flags.FLAG_A11Y_STANDALONE_GESTURE_ENABLED)
    public void
            getAvailabilityStatus_navigationGestureEnabled_gestureFlag_conditionallyUnavailable() {
        when(mResources.getInteger(com.android.internal.R.integer.config_navBarInteractionMode))
                .thenReturn(NAV_BAR_MODE_GESTURAL);

        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
    }

    @Test
    public void getAvailabilityStatus_navigationGestureDisabled_returnConditionallyUnavailable() {
        when(mResources.getInteger(com.android.internal.R.integer.config_navBarInteractionMode))
Loading