Add device build information in the backup stage
Insert the device build information in the battery optimization mode backup stage, such that we can use it to decide whether we should restore the data in the targeted device or not Bug: 192523697 Test: make test RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.fuelgauge.* Change-Id: I3ab76e013ea9aca4d336a62e0c7cb6882c5b5085
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user