Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f142ace1 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fuelgauge handle StatsManager Exception API" into pi-dev

parents a9fea259 e832c153
Loading
Loading
Loading
Loading
+20 −13
Original line number Diff line number Diff line
@@ -71,7 +71,11 @@ public class AnomalyConfigJobService extends JobService {
        ThreadUtils.postOnBackgroundThread(() -> {
            final StatsManager statsManager = getSystemService(StatsManager.class);
            checkAnomalyConfig(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)) {
                    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();
                    } else {
                        Log.i(TAG, "Upload the anomaly config failed. configKey: "
                                + StatsManagerConfig.ANOMALY_CONFIG_KEY);
                    }
                } 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);
                }
            }
        }
+5 −1
Original line number Diff line number Diff line
@@ -41,7 +41,11 @@ public class AnomalyConfigReceiver extends BroadcastReceiver {
            // Check whether to update the config
            AnomalyConfigJobService.scheduleConfigUpdate(context);

            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);
+5 −3
Original line number Diff line number Diff line
@@ -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);
    }
}
+6 −4
Original line number Diff line number Diff line
@@ -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());
    }

}