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

Commit b9c1632a authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix the action bar shows up problem" into main

parents 0f97d4fb 8803ae78
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -152,7 +152,7 @@
            android:name=".SettingsApplication"
            android:label="@string/settings_label"
            android:icon="@drawable/ic_launcher_settings"
            android:theme="@style/Theme.Settings.NoActionBar"
            android:theme="@style/Theme.Settings"
            android:hardwareAccelerated="true"
            android:requiredForAllUsers="true"
            android:supportsRtl="true"
+13 −14
Original line number Diff line number Diff line
@@ -1387,21 +1387,20 @@ public final class Utils extends com.android.settingslib.Utils {
     * @param activity the Activity need to setup the edge to edge feature.
     */
    public static void setupEdgeToEdge(@NonNull FragmentActivity activity) {
        if (com.android.window.flags.Flags.enforceEdgeToEdge()) {
        ViewCompat.setOnApplyWindowInsetsListener(activity.findViewById(android.R.id.content),
                (v, windowInsets) -> {
                    Insets insets = windowInsets.getInsets(
                                WindowInsetsCompat.Type.systemBars()
                                        | WindowInsetsCompat.Type.ime());
                            WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.ime());
                    int statusBarHeight = activity.getWindow().getDecorView().getRootWindowInsets()
                            .getInsets(WindowInsetsCompat.Type.statusBars()).top;
                    // Apply the insets paddings to the view.
                        v.setPadding(insets.left, insets.top, insets.right, insets.bottom);
                    v.setPadding(insets.left, statusBarHeight, insets.right, insets.bottom);

                    // Return CONSUMED if you don't want the window insets to keep being
                    // passed down to descendant views.
                    return WindowInsetsCompat.CONSUMED;
                });
    }
    }

    private static FaceManager.RemovalCallback faceManagerRemovalCallback(int userId) {
        return new FaceManager.RemovalCallback() {
+19 −1
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import com.android.settings.Utils;
import com.android.settings.core.CategoryMixin.CategoryHandler;
import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType;
import com.android.window.flags.Flags;

import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.appbar.CollapsingToolbarLayout;
@@ -92,8 +93,11 @@ public class SettingsBaseActivity extends FragmentActivity implements CategoryHa
            Log.w(TAG, "Devices lock task mode pinned.");
            finish();
        }
        Utils.setupEdgeToEdge(this);
        final long startTime = System.currentTimeMillis();
        if (Flags.enforceEdgeToEdge()) {
            Utils.setupEdgeToEdge(this);
            hideInternalActionBar();
        }
        getLifecycle().addObserver(new HideNonSystemOverlayMixin(this));
        TextAppearanceConfig.setShouldLoadFontSynchronously(true);

@@ -291,4 +295,18 @@ public class SettingsBaseActivity extends FragmentActivity implements CategoryHa
        }
        return intent.getIntExtra(EXTRA_PAGE_TRANSITION_TYPE, TransitionType.TRANSITION_NONE);
    }

    /**
     * This internal ActionBar will be appeared automatically when the
     * Utils.setupEdgeToEdge is invoked.
     *
     * @see Utils.setupEdgeToEdge
     */
    private void hideInternalActionBar() {
        final View actionBarContainer =
                findViewById(com.android.internal.R.id.action_bar_container);
        if (actionBarContainer != null) {
            actionBarContainer.setVisibility(View.GONE);
        }
    }
}
+0 −10
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.ActionBar;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
@@ -115,15 +114,6 @@ public class SettingsActivityTest {
        assertThat(((ListenerFragment) fragments.get(1)).mOnActivityResultCalled).isTrue();
    }

    @Test
    public void getActionBar_hasNoActionBar() {
        final SettingsActivity activity = Robolectric.buildActivity(SettingsActivity.class).get();

        final ActionBar actionBar = activity.getActionBar();

        assertThat(actionBar).isNull();
    }

    public static class ListenerFragment extends Fragment implements OnActivityResultListener {

        private boolean mOnActivityResultCalled;
+15 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.ActionBar;
import android.app.admin.DevicePolicyManager;
import android.app.admin.DevicePolicyResourcesManager;
import android.content.ComponentName;
@@ -55,9 +56,11 @@ import android.os.storage.StorageManager;
import android.os.storage.VolumeInfo;
import android.util.IconDrawableFactory;
import android.widget.EditText;
import android.widget.ScrollView;
import android.widget.TextView;

import androidx.core.graphics.drawable.IconCompat;
import androidx.fragment.app.FragmentActivity;

import com.android.internal.widget.LockPatternUtils;
import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
@@ -68,6 +71,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
@@ -266,6 +270,17 @@ public class UtilsTest {
        Utils.setActionBarShadowAnimation(null, null, null);
    }

    @Test
    public void setActionBarShadowAnimation_shouldSetElevationToZero() {
        final FragmentActivity activity = Robolectric.setupActivity(FragmentActivity.class);
        final ActionBar actionBar = activity.getActionBar();

        Utils.setActionBarShadowAnimation(activity, activity.getLifecycle(),
                new ScrollView(mContext));

        assertThat(actionBar.getElevation()).isEqualTo(0.f);
    }

    @Test
    public void isSettingsIntelligence_IsSI_returnTrue() {
        final String siPackageName = mContext.getString(