Loading AndroidManifest.xml +1 −1 Original line number Diff line number Diff line Loading @@ -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" Loading src/com/android/settings/Utils.java +13 −14 Original line number Diff line number Diff line Loading @@ -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() { Loading src/com/android/settings/core/SettingsBaseActivity.java +19 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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); } } } tests/robotests/src/com/android/settings/SettingsActivityTest.java +0 −10 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading tests/robotests/src/com/android/settings/UtilsTest.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading Loading @@ -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( Loading Loading
AndroidManifest.xml +1 −1 Original line number Diff line number Diff line Loading @@ -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" Loading
src/com/android/settings/Utils.java +13 −14 Original line number Diff line number Diff line Loading @@ -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() { Loading
src/com/android/settings/core/SettingsBaseActivity.java +19 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading Loading @@ -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); } } }
tests/robotests/src/com/android/settings/SettingsActivityTest.java +0 −10 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading
tests/robotests/src/com/android/settings/UtilsTest.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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; Loading Loading @@ -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( Loading