Merge "Add device build information in the backup stage" into udc-dev am: 1d818600a4

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/23240826

Change-Id: I3c91272947fa868bb2ae858115bf0af6440b2b97
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
YK Hung
2023-05-16 06:06:17 +00:00
committed by Automerger Merge Worker
4 changed files with 82 additions and 12 deletions

View File

@@ -25,6 +25,7 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.os.Build;
import android.os.IDeviceIdleController;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
@@ -36,6 +37,7 @@ import android.util.Log;
import androidx.annotation.VisibleForTesting;
import com.android.settings.fuelgauge.BatteryOptimizeHistoricalLogEntry.Action;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.fuelgauge.PowerAllowlistBackend;
import java.io.IOException;
@@ -56,6 +58,13 @@ public final class BatteryBackupHelper implements BackupHelper {
static final String DELIMITER = ",";
static final String DELIMITER_MODE = ":";
static final String KEY_OPTIMIZATION_LIST = "optimization_mode_list";
static final String KEY_BUILD_BRAND = "device_build_brand";
static final String KEY_BUILD_PRODUCT = "device_build_product";
static final String KEY_BUILD_MANUFACTURER = "device_build_manufacture";
static final String KEY_BUILD_FINGERPRINT = "device_build_fingerprint";
// Customized fields for device extra information.
static final String KEY_BUILD_METADATA_1 = "device_build_metadata_1";
static final String KEY_BUILD_METADATA_2 = "device_build_metadata_2";
@VisibleForTesting
ArraySet<ApplicationInfo> mTestApplicationInfoList = null;
@@ -83,9 +92,21 @@ public final class BatteryBackupHelper implements BackupHelper {
return;
}
final List<String> allowlistedApps = getFullPowerList();
if (allowlistedApps != null) {
backupOptimizationMode(data, allowlistedApps);
if (allowlistedApps == null) {
return;
}
writeBackupData(data, KEY_BUILD_BRAND, Build.BRAND);
writeBackupData(data, KEY_BUILD_PRODUCT, Build.PRODUCT);
writeBackupData(data, KEY_BUILD_MANUFACTURER, Build.MANUFACTURER);
writeBackupData(data, KEY_BUILD_FINGERPRINT, Build.FINGERPRINT);
// Add customized device build metadata fields.
PowerUsageFeatureProvider provider = FeatureFactory.getFactory(mContext)
.getPowerUsageFeatureProvider(mContext);
writeBackupData(data, KEY_BUILD_METADATA_1, provider.getBuildMetadata1(mContext));
writeBackupData(data, KEY_BUILD_METADATA_2, provider.getBuildMetadata2(mContext));
backupOptimizationMode(data, allowlistedApps);
}
@Override
@@ -301,6 +322,9 @@ public final class BatteryBackupHelper implements BackupHelper {
private static void writeBackupData(
BackupDataOutput data, String dataKey, String dataContent) {
if (dataContent == null || dataContent.isEmpty()) {
return;
}
final byte[] dataContentBytes = dataContent.getBytes();
try {
data.writeEntityHeader(dataKey, dataContentBytes.length);
@@ -308,5 +332,6 @@ public final class BatteryBackupHelper implements BackupHelper {
} catch (IOException e) {
Log.e(TAG, "writeBackupData() is failed for " + dataKey, e);
}
Log.d(TAG, String.format("%s:%s", dataKey, dataContent));
}
}

View File

@@ -166,4 +166,14 @@ public interface PowerUsageFeatureProvider {
* Returns {@link Set} for ignoring task root class names for screen on time
*/
Set<String> getIgnoreScreenOnTimeTaskRootSet();
/**
* Returns the customized device build information for data backup
*/
String getBuildMetadata1(Context context);
/**
* Returns the customized device build information for data backup
*/
String getBuildMetadata2(Context context);
}

View File

@@ -188,4 +188,14 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider
public Set<String> getIgnoreScreenOnTimeTaskRootSet() {
return new ArraySet<>();
}
@Override
public String getBuildMetadata1(Context context) {
return null;
}
@Override
public String getBuildMetadata2(Context context) {
return null;
}
}