Merge "Pick up the apexBootImage pinner service files when the boot image is apex.art."

This commit is contained in:
Nicolas Geoffray
2019-02-21 17:24:00 +00:00
committed by Gerrit Code Review
3 changed files with 17 additions and 3 deletions

View File

@@ -3195,6 +3195,10 @@
<!-- True if home app should be pinned via Pinner Service -->
<bool name="config_pinnerHomeApp">false</bool>
<!-- List of files pinned by the Pinner Service with the apex boot image b/119800099 -->
<string-array translatable="false" name="config_apexBootImagePinnerServiceFiles">
</string-array>
<!-- Number of days preloaded file cache should be preserved on a device before it can be
deleted -->
<integer name="config_keepPreloadsMinDays">7</integer>

View File

@@ -2904,6 +2904,7 @@
<java-symbol type="array" name="config_defaultPinnerServiceFiles" />
<java-symbol type="bool" name="config_pinnerCameraApp" />
<java-symbol type="bool" name="config_pinnerHomeApp" />
<java-symbol type="array" name="config_apexBootImagePinnerServiceFiles" />
<java-symbol type="string" name="config_doubleTouchGestureEnableFile" />

View File

@@ -42,6 +42,7 @@ import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.MediaStore;
@@ -232,9 +233,17 @@ public final class PinnerService extends SystemService {
* Handler for on start pinning message
*/
private void handlePinOnStart() {
// Files to pin come from the overlay and can be specified per-device config
String[] filesToPin = mContext.getResources().getStringArray(
com.android.internal.R.array.config_defaultPinnerServiceFiles);
final String bootImage = SystemProperties.get("dalvik.vm.boot-image", "");
String[] filesToPin = null;
if (bootImage.endsWith("apex.art")) {
// Use the files listed for that specific boot image
filesToPin = mContext.getResources().getStringArray(
com.android.internal.R.array.config_apexBootImagePinnerServiceFiles);
} else {
// Files to pin come from the overlay and can be specified per-device config
filesToPin = mContext.getResources().getStringArray(
com.android.internal.R.array.config_defaultPinnerServiceFiles);
}
// Continue trying to pin each file even if we fail to pin some of them
for (String fileToPin : filesToPin) {
PinnedFile pf = pinFile(fileToPin,