Fix double up arrow in LocalSystemUpdater

bug: 79701781
Test: m -j && emulator
Change-Id: I39bc1eb79410e5163194c330a8ecd19df5ae4b82
diff --git a/src/com/android/car/systemupdater/SystemUpdaterActivity.java b/src/com/android/car/systemupdater/SystemUpdaterActivity.java
index 13f6fcc..c53ea18 100644
--- a/src/com/android/car/systemupdater/SystemUpdaterActivity.java
+++ b/src/com/android/car/systemupdater/SystemUpdaterActivity.java
@@ -20,6 +20,7 @@
 import android.Manifest;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
+import android.view.MenuItem;
 
 import androidx.appcompat.app.AppCompatActivity;
 import androidx.appcompat.widget.Toolbar;
@@ -34,6 +35,7 @@
 public class SystemUpdaterActivity extends AppCompatActivity
         implements DeviceListFragment.SystemUpdater {
 
+    private static final String FRAGMENT_TAG = "FRAGMENT_TAG";
     private static final int STORAGE_PERMISSIONS_REQUEST_CODE = 0;
     private static final String[] REQUIRED_STORAGE_PERMISSIONS = new String[]{
             Manifest.permission.READ_EXTERNAL_STORAGE,
@@ -59,18 +61,31 @@
             if (intentExtras != null && intentExtras.getBoolean(EXTRA_RESUME_UPDATE)) {
                 UpdateLayoutFragment fragment = UpdateLayoutFragment.newResumedInstance();
                 getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.device_container, fragment)
+                        .replace(R.id.device_container, fragment, FRAGMENT_TAG)
                         .commitNow();
             } else {
                 DeviceListFragment fragment = new DeviceListFragment();
                 getSupportFragmentManager().beginTransaction()
-                        .replace(R.id.device_container, fragment)
+                        .replace(R.id.device_container, fragment, FRAGMENT_TAG)
                         .commitNow();
             }
         }
     }
 
     @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            UpFragment upFragment =
+                    (UpFragment) getSupportFragmentManager().findFragmentByTag(FRAGMENT_TAG);
+            if (!upFragment.goUp()) {
+                onBackPressed();
+            }
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    @Override
     public void onRequestPermissionsResult(int requestCode, String permissions[],
             int[] grantResults) {
         super.onRequestPermissionsResult(requestCode, permissions, grantResults);
@@ -90,7 +105,7 @@
     public void applyUpdate(File file) {
         UpdateLayoutFragment fragment = UpdateLayoutFragment.getInstance(file);
         getSupportFragmentManager().beginTransaction()
-                .replace(R.id.device_container, fragment)
+                .replace(R.id.device_container, fragment, FRAGMENT_TAG)
                 .addToBackStack(null)
                 .commit();
     }