Merge "Dedup *fragments information common to apex and sdk" am: f9e1b913c4

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Scheduling/+/2152639

Change-Id: Idc25a77abcc722b3b96c1c81457a7e01db673843
Signed-off-by: Automerger Merge Worker <[email protected]>
diff --git a/apex/Android.bp b/apex/Android.bp
index a3fc24f..dcacec9 100644
--- a/apex/Android.bp
+++ b/apex/Android.bp
@@ -81,6 +81,7 @@
     systemserverclasspath_fragments: ["com.android.scheduling-systemserverclasspath-fragment"],
     prebuilts: ["current_sdkinfo"],
     manifest: "manifest.json",
+    androidManifest: "AndroidManifest.xml",
     file_contexts: ":com.android.scheduling-file_contexts",
     key: "com.android.scheduling.key",
 }
diff --git a/apex/AndroidManifest.xml b/apex/AndroidManifest.xml
index ec78924..dee0cb0 100644
--- a/apex/AndroidManifest.xml
+++ b/apex/AndroidManifest.xml
@@ -1,6 +1,28 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ -->
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-  package="com.android.scheduling">
-  <!-- APEX does not have classes.dex -->
-  <application android:hasCode="false" />
+          package="com.android.scheduling">
+    <!-- APEX does not have classes.dex -->
+    <application android:hasCode="false">
+        <apex-system-service
+            android:name="com.android.server.scheduling.RebootReadinessManagerService$Lifecycle"
+            android:minSdkVersion="31"
+            android:path="/apex/com.android.scheduling/javalib/service-scheduling.jar"
+        />
+    </application>
 </manifest>
diff --git a/service/java/com/android/server/scheduling/RebootReadinessLogger.java b/service/java/com/android/server/scheduling/RebootReadinessLogger.java
index 61ed254..dad8e10 100644
--- a/service/java/com/android/server/scheduling/RebootReadinessLogger.java
+++ b/service/java/com/android/server/scheduling/RebootReadinessLogger.java
@@ -338,13 +338,17 @@
     }
 
     private void writeRebootStatsToFile(RebootStats rebootStats, AtomicFile rebootStatsFile) {
-        try (FileOutputStream stream = rebootStatsFile.startWrite()) {
-            XmlWriter writer = new XmlWriter(new PrintWriter(stream));
+        FileOutputStream stream = null;
+        try {
+            stream = rebootStatsFile.startWrite();
+            PrintWriter pw = new PrintWriter(stream);
+            XmlWriter writer = new XmlWriter(pw);
             XmlWriter.write(writer, rebootStats);
-            writer.close();
+            pw.flush();
             rebootStatsFile.finishWrite(stream);
         } catch (Exception e) {
             Log.e(TAG, "Could not write reboot readiness stats: " + e);
+            rebootStatsFile.failWrite(stream);
         }
     }
 
diff --git a/service/java/com/android/server/scheduling/RebootReadinessShellCommand.java b/service/java/com/android/server/scheduling/RebootReadinessShellCommand.java
index 1adeca6..c8ccf17 100644
--- a/service/java/com/android/server/scheduling/RebootReadinessShellCommand.java
+++ b/service/java/com/android/server/scheduling/RebootReadinessShellCommand.java
@@ -109,6 +109,7 @@
                             PROPERTY_DISABLE_SUBSYSTEMS_CHECK, "true", false);
                     break;
                 case "disable-interactivity-check":
+                case "--disable-interactivity-check":
                     DeviceConfig.setProperty(DeviceConfig.NAMESPACE_REBOOT_READINESS,
                             PROPERTY_DISABLE_INTERACTIVITY_CHECK, "true", false);
                     break;
@@ -213,7 +214,7 @@
         pw.println("    --interactivity-threshold-ms <INTERACTIVITY-THRESHOLD-MS>:");
         pw.println("        How long the device must not have been interacted with before");
         pw.println("        being deemed ready to reboot.");
-        pw.println("    --disable-interactivity-checks:");
+        pw.println("    --disable-interactivity-check / disable-interactivity-check:");
         pw.println("        Disable interactivity checks.");
         pw.println("    --disable-subsystems-check:");
         pw.println("        Disable subsystems checks:");
diff --git a/tests/Android.bp b/tests/Android.bp
index 36be7c4..13d143a 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -22,4 +22,6 @@
     srcs: ["src/**/*.java"],
     static_libs: ["androidx.test.rules", "truth-prebuilt", "androidx.test.core"],
     test_suites: ["general-tests", "cts", "mts-scheduling"],
+    target_sdk_version: "31",
+    min_sdk_version: "31",
 }
diff --git a/tests/unittests/Android.bp b/tests/unittests/Android.bp
index 5d89778..14b6884 100644
--- a/tests/unittests/Android.bp
+++ b/tests/unittests/Android.bp
@@ -38,7 +38,7 @@
         "libstaticjvmtiagent",
     ],
     compile_multilib: "both",
-    min_sdk_version: "current",
-    target_sdk_version: "current",
+    target_sdk_version: "31",
+    min_sdk_version: "31",
     test_suites: ["general-tests", "mts-scheduling"],
 }