Merge "Fuelgauge handle StatsManager Exception API" into pi-dev am: f142ace1d0

am: bfd8a58e78

Change-Id: I3e1846bd28eeab02ca544a201394db1475bbc073
This commit is contained in:
Bookatz
2018-04-11 11:56:55 -07:00
committed by android-build-merger
4 changed files with 36 additions and 21 deletions

View File

@@ -71,7 +71,11 @@ public class AnomalyConfigJobService extends JobService {
ThreadUtils.postOnBackgroundThread(() -> {
final StatsManager statsManager = getSystemService(StatsManager.class);
checkAnomalyConfig(statsManager);
BatteryTipUtils.uploadAnomalyPendingIntent(this, statsManager);
try {
BatteryTipUtils.uploadAnomalyPendingIntent(this, statsManager);
} catch (StatsManager.StatsUnavailableException e) {
Log.w(TAG, "Failed to uploadAnomalyPendingIntent.", e);
}
jobFinished(params, false /* wantsReschedule */);
});
@@ -96,23 +100,26 @@ public class AnomalyConfigJobService extends JobService {
Log.i(TAG, "CurrentVersion: " + currentVersion + " new version: " + newVersion);
if (newVersion > currentVersion) {
statsManager.removeConfiguration(StatsManagerConfig.ANOMALY_CONFIG_KEY);
try {
statsManager.removeConfig(StatsManagerConfig.ANOMALY_CONFIG_KEY);
} catch (StatsManager.StatsUnavailableException e) {
Log.i(TAG, "When updating anomaly config, failed to first remove the old config "
+ StatsManagerConfig.ANOMALY_CONFIG_KEY, e);
}
if (!TextUtils.isEmpty(rawConfig)) {
try {
final byte[] config = Base64.decode(rawConfig, Base64.DEFAULT);
if (statsManager.addConfiguration(StatsManagerConfig.ANOMALY_CONFIG_KEY,
config)) {
Log.i(TAG, "Upload the anomaly config. configKey: "
+ StatsManagerConfig.ANOMALY_CONFIG_KEY);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt(KEY_ANOMALY_CONFIG_VERSION, newVersion);
editor.commit();
} else {
Log.i(TAG, "Upload the anomaly config failed. configKey: "
+ StatsManagerConfig.ANOMALY_CONFIG_KEY);
}
statsManager.addConfig(StatsManagerConfig.ANOMALY_CONFIG_KEY, config);
Log.i(TAG, "Upload the anomaly config. configKey: "
+ StatsManagerConfig.ANOMALY_CONFIG_KEY);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt(KEY_ANOMALY_CONFIG_VERSION, newVersion);
editor.commit();
} catch (IllegalArgumentException e) {
Log.e(TAG, "Anomaly raw config is in wrong format", e);
} catch (StatsManager.StatsUnavailableException e) {
Log.i(TAG, "Upload of anomaly config failed for configKey "
+ StatsManagerConfig.ANOMALY_CONFIG_KEY, e);
}
}
}

View File

@@ -41,7 +41,11 @@ public class AnomalyConfigReceiver extends BroadcastReceiver {
// Check whether to update the config
AnomalyConfigJobService.scheduleConfigUpdate(context);
BatteryTipUtils.uploadAnomalyPendingIntent(context, statsManager);
try {
BatteryTipUtils.uploadAnomalyPendingIntent(context, statsManager);
} catch (StatsManager.StatsUnavailableException e) {
Log.w(TAG, "Failed to uploadAnomalyPendingIntent.", e);
}
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
AnomalyCleanupJobService.scheduleCleanUp(context);

View File

@@ -110,12 +110,14 @@ public class BatteryTipUtils {
/**
* Upload the {@link PendingIntent} to {@link StatsManager} for anomaly detection
* @throws StatsManager.StatsUnavailableException if failed to communicate with stats service
*/
public static void uploadAnomalyPendingIntent(Context context, StatsManager statsManager) {
public static void uploadAnomalyPendingIntent(Context context, StatsManager statsManager)
throws StatsManager.StatsUnavailableException {
final Intent extraIntent = new Intent(context, AnomalyDetectionReceiver.class);
final PendingIntent pendingIntent = PendingIntent.getBroadcast(context, REQUEST_CODE,
extraIntent, PendingIntent.FLAG_UPDATE_CURRENT);
statsManager.setBroadcastSubscriber(StatsManagerConfig.ANOMALY_CONFIG_KEY,
StatsManagerConfig.SUBSCRIBER_ID, pendingIntent);
statsManager.setBroadcastSubscriber(pendingIntent,
StatsManagerConfig.ANOMALY_CONFIG_KEY, StatsManagerConfig.SUBSCRIBER_ID);
}
}

View File

@@ -104,7 +104,8 @@ public class AnomalyConfigJobServiceTest {
}
@Test
public void checkAnomalyConfig_newConfigExist_removeOldConfig() {
public void checkAnomalyConfig_newConfigExist_removeOldConfig()
throws StatsManager.StatsUnavailableException{
Settings.Global.putInt(application.getContentResolver(),
Settings.Global.ANOMALY_CONFIG_VERSION, ANOMALY_CONFIG_VERSION);
Settings.Global.putString(application.getContentResolver(), Settings.Global.ANOMALY_CONFIG,
@@ -112,11 +113,12 @@ public class AnomalyConfigJobServiceTest {
mJobService.checkAnomalyConfig(mStatsManager);
verify(mStatsManager).removeConfiguration(StatsManagerConfig.ANOMALY_CONFIG_KEY);
verify(mStatsManager).removeConfig(StatsManagerConfig.ANOMALY_CONFIG_KEY);
}
@Test
public void checkAnomalyConfig_newConfigExist_uploadNewConfig() {
public void checkAnomalyConfig_newConfigExist_uploadNewConfig()
throws StatsManager.StatsUnavailableException{
Settings.Global.putInt(application.getContentResolver(),
Settings.Global.ANOMALY_CONFIG_VERSION, ANOMALY_CONFIG_VERSION);
Settings.Global.putString(application.getContentResolver(), Settings.Global.ANOMALY_CONFIG,
@@ -124,7 +126,7 @@ public class AnomalyConfigJobServiceTest {
mJobService.checkAnomalyConfig(mStatsManager);
verify(mStatsManager).addConfiguration(eq(StatsManagerConfig.ANOMALY_CONFIG_KEY), any());
verify(mStatsManager).addConfig(eq(StatsManagerConfig.ANOMALY_CONFIG_KEY), any());
}
}