Fix the action bar shows up problem

- Hide the internal action bar.
- Refine the Utils.setupEdgeToEdge API.
- Rollback the testcases.

Bug: 328622648
Fixes: 331308440
Test: atest com.android.settings.UtilsTest SettingsActivityTest
Change-Id: I7dfbc93def3e772b57bf06b8276315cee7402a9c
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 194d017..923f5ae 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -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"
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 6a20d75..923c788 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -1385,20 +1385,19 @@
      * @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());
-                        // Apply the insets paddings to the view.
-                        v.setPadding(insets.left, insets.top, insets.right, insets.bottom);
+        ViewCompat.setOnApplyWindowInsetsListener(activity.findViewById(android.R.id.content),
+                (v, windowInsets) -> {
+                    Insets insets = windowInsets.getInsets(
+                            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, 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;
-                    });
-        }
+                    // 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) {
diff --git a/src/com/android/settings/core/SettingsBaseActivity.java b/src/com/android/settings/core/SettingsBaseActivity.java
index c282498..c9530ab 100644
--- a/src/com/android/settings/core/SettingsBaseActivity.java
+++ b/src/com/android/settings/core/SettingsBaseActivity.java
@@ -46,6 +46,7 @@
 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 @@
             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 @@
         }
         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);
+        }
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/SettingsActivityTest.java b/tests/robotests/src/com/android/settings/SettingsActivityTest.java
index a879695..89f8449 100644
--- a/tests/robotests/src/com/android/settings/SettingsActivityTest.java
+++ b/tests/robotests/src/com/android/settings/SettingsActivityTest.java
@@ -27,7 +27,6 @@
 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 @@
         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;
diff --git a/tests/robotests/src/com/android/settings/UtilsTest.java b/tests/robotests/src/com/android/settings/UtilsTest.java
index a4b0105..0c555da 100644
--- a/tests/robotests/src/com/android/settings/UtilsTest.java
+++ b/tests/robotests/src/com/android/settings/UtilsTest.java
@@ -30,6 +30,7 @@
 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.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.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;
@@ -267,6 +271,17 @@
     }
 
     @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(
                 R.string.config_settingsintelligence_package_name);