Merge "Remove context from powerUsageFeatureProvider" into main

This commit is contained in:
Chaohui Wang
2023-07-14 08:36:27 +00:00
committed by Android (Google) Code Review
22 changed files with 49 additions and 53 deletions

View File

@@ -32,12 +32,12 @@ public class AutoRestrictionPreferenceController extends BasePreferenceControlle
private static final String KEY_SMART_BATTERY = "auto_restriction"; private static final String KEY_SMART_BATTERY = "auto_restriction";
private static final int ON = 1; private static final int ON = 1;
private static final int OFF = 0; private static final int OFF = 0;
private PowerUsageFeatureProvider mPowerUsageFeatureProvider; private final PowerUsageFeatureProvider mPowerUsageFeatureProvider;
public AutoRestrictionPreferenceController(Context context) { public AutoRestrictionPreferenceController(Context context) {
super(context, KEY_SMART_BATTERY); super(context, KEY_SMART_BATTERY);
mPowerUsageFeatureProvider = FeatureFactory.getFactory( mPowerUsageFeatureProvider =
context).getPowerUsageFeatureProvider(context); FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
} }
@Override @Override

View File

@@ -111,8 +111,8 @@ public final class BatteryBackupHelper implements BackupHelper {
writeBackupData(data, KEY_BUILD_MANUFACTURER, Build.MANUFACTURER); writeBackupData(data, KEY_BUILD_MANUFACTURER, Build.MANUFACTURER);
writeBackupData(data, KEY_BUILD_FINGERPRINT, Build.FINGERPRINT); writeBackupData(data, KEY_BUILD_FINGERPRINT, Build.FINGERPRINT);
// Add customized device build metadata fields. // Add customized device build metadata fields.
final PowerUsageFeatureProvider provider = FeatureFactory.getFactory(mContext) final PowerUsageFeatureProvider provider =
.getPowerUsageFeatureProvider(mContext); FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
writeBackupData(data, KEY_BUILD_METADATA_1, provider.getBuildMetadata1(mContext)); writeBackupData(data, KEY_BUILD_METADATA_1, provider.getBuildMetadata1(mContext));
writeBackupData(data, KEY_BUILD_METADATA_2, provider.getBuildMetadata2(mContext)); writeBackupData(data, KEY_BUILD_METADATA_2, provider.getBuildMetadata2(mContext));
@@ -260,8 +260,8 @@ public final class BatteryBackupHelper implements BackupHelper {
if (mOptimizationModeBytes == null || mOptimizationModeBytes.length == 0) { if (mOptimizationModeBytes == null || mOptimizationModeBytes.length == 0) {
return; return;
} }
final PowerUsageFeatureProvider provider = FeatureFactory.getFactory(mContext) final PowerUsageFeatureProvider provider =
.getPowerUsageFeatureProvider(mContext); FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
if (!provider.isValidToRestoreOptimizationMode(mDeviceBuildInfoMap)) { if (!provider.isValidToRestoreOptimizationMode(mDeviceBuildInfoMap)) {
return; return;
} }

View File

@@ -104,8 +104,8 @@ public class BatteryInfo {
// Add projection if we have an estimate. // Add projection if we have an estimate.
if (remainingTimeUs != 0) { if (remainingTimeUs != 0) {
PowerUsageFeatureProvider provider = FeatureFactory.getFactory(context) PowerUsageFeatureProvider provider =
.getPowerUsageFeatureProvider(context); FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
if (!mCharging && provider.isEnhancedBatteryPredictionEnabled(context)) { if (!mCharging && provider.isEnhancedBatteryPredictionEnabled(context)) {
points = provider.getEnhancedBatteryPredictionCurve(context, startTime); points = provider.getEnhancedBatteryPredictionCurve(context, startTime);
} else { } else {
@@ -201,7 +201,7 @@ public class BatteryInfo {
final long startTime = System.currentTimeMillis(); final long startTime = System.currentTimeMillis();
PowerUsageFeatureProvider provider = PowerUsageFeatureProvider provider =
FeatureFactory.getFactory(context).getPowerUsageFeatureProvider(context); FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
final long elapsedRealtimeUs = final long elapsedRealtimeUs =
PowerUtil.convertMsToUs(SystemClock.elapsedRealtime()); PowerUtil.convertMsToUs(SystemClock.elapsedRealtime());
@@ -211,8 +211,7 @@ public class BatteryInfo {
final boolean discharging = final boolean discharging =
batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) == 0; batteryBroadcast.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) == 0;
if (discharging && provider != null if (discharging && provider.isEnhancedBatteryPredictionEnabled(context)) {
&& provider.isEnhancedBatteryPredictionEnabled(context)) {
Estimate estimate = provider.getEnhancedBatteryPrediction(context); Estimate estimate = provider.getEnhancedBatteryPrediction(context);
if (estimate != null) { if (estimate != null) {
Estimate.storeCachedEstimate(context, estimate); Estimate.storeCachedEstimate(context, estimate);

View File

@@ -135,8 +135,8 @@ public class BatteryUtils {
mContext = context; mContext = context;
mPackageManager = context.getPackageManager(); mPackageManager = context.getPackageManager();
mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
mPowerUsageFeatureProvider = FeatureFactory.getFactory(context) mPowerUsageFeatureProvider =
.getPowerUsageFeatureProvider(context); FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
} }
public long getProcessTimeMs(@StatusType int type, @Nullable BatteryStats.Uid uid, public long getProcessTimeMs(@StatusType int type, @Nullable BatteryStats.Uid uid,
@@ -626,8 +626,8 @@ public class BatteryUtils {
if (Settings.Global.getInt(context.getContentResolver(), if (Settings.Global.getInt(context.getContentResolver(),
SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS, 0) == 1) { SETTINGS_GLOBAL_DOCK_DEFENDER_BYPASS, 0) == 1) {
return DockDefenderMode.TEMPORARILY_BYPASSED; return DockDefenderMode.TEMPORARILY_BYPASSED;
} else if (batteryInfo.isBatteryDefender && FeatureFactory.getFactory(context) } else if (batteryInfo.isBatteryDefender && FeatureFactory.getFeatureFactory()
.getPowerUsageFeatureProvider(context) .getPowerUsageFeatureProvider()
.isExtraDefend()) { .isExtraDefend()) {
return DockDefenderMode.ACTIVE; return DockDefenderMode.ACTIVE;
} else if (!batteryInfo.isBatteryDefender) { } else if (!batteryInfo.isBatteryDefender) {

View File

@@ -48,7 +48,7 @@ public class DebugEstimatesLoader extends AsyncLoaderCompat<List<BatteryInfo>> {
public List<BatteryInfo> loadInBackground() { public List<BatteryInfo> loadInBackground() {
Context context = getContext(); Context context = getContext();
PowerUsageFeatureProvider powerUsageFeatureProvider = PowerUsageFeatureProvider powerUsageFeatureProvider =
FeatureFactory.getFactory(context).getPowerUsageFeatureProvider(context); FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
// get stuff we'll need for both BatteryInfo // get stuff we'll need for both BatteryInfo
final long elapsedRealtimeUs = PowerUtil.convertMsToUs( final long elapsedRealtimeUs = PowerUtil.convertMsToUs(

View File

@@ -37,12 +37,12 @@ public class SmartBatteryPreferenceController extends BasePreferenceController i
private static final String KEY_SMART_BATTERY = "smart_battery"; private static final String KEY_SMART_BATTERY = "smart_battery";
private static final int ON = 1; private static final int ON = 1;
private static final int OFF = 0; private static final int OFF = 0;
private PowerUsageFeatureProvider mPowerUsageFeatureProvider; private final PowerUsageFeatureProvider mPowerUsageFeatureProvider;
public SmartBatteryPreferenceController(Context context) { public SmartBatteryPreferenceController(Context context) {
super(context, KEY_SMART_BATTERY); super(context, KEY_SMART_BATTERY);
mPowerUsageFeatureProvider = FeatureFactory.getFactory(context) mPowerUsageFeatureProvider =
.getPowerUsageFeatureProvider(context); FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
} }
@Override @Override

View File

@@ -98,10 +98,10 @@ public class AnomalyDetectionJobService extends JobService {
final UserManager userManager = getSystemService(UserManager.class); final UserManager userManager = getSystemService(UserManager.class);
final PowerAllowlistBackend powerAllowlistBackend = final PowerAllowlistBackend powerAllowlistBackend =
PowerAllowlistBackend.getInstance(context); PowerAllowlistBackend.getInstance(context);
final PowerUsageFeatureProvider powerUsageFeatureProvider = FeatureFactory final PowerUsageFeatureProvider powerUsageFeatureProvider =
.getFactory(this).getPowerUsageFeatureProvider(this); FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
final MetricsFeatureProvider metricsFeatureProvider = FeatureFactory final MetricsFeatureProvider metricsFeatureProvider =
.getFactory(this).getMetricsFeatureProvider(); FeatureFactory.getFeatureFactory().getMetricsFeatureProvider();
for (JobWorkItem item = dequeueWork(params); item != null; item = dequeueWork(params)) { for (JobWorkItem item = dequeueWork(params); item != null; item = dequeueWork(params)) {
saveAnomalyToDatabase(context, userManager, saveAnomalyToDatabase(context, userManager,

View File

@@ -38,7 +38,7 @@ public class BatteryDefenderDetector implements BatteryTipDetector {
@Override @Override
public BatteryTip detect() { public BatteryTip detect() {
final boolean isBasicBatteryDefend = mBatteryInfo.isBatteryDefender final boolean isBasicBatteryDefend = mBatteryInfo.isBatteryDefender
&& !FeatureFactory.getFactory(mContext).getPowerUsageFeatureProvider(mContext) && !FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider()
.isExtraDefend(); .isExtraDefend();
final int state = isBasicBatteryDefend final int state = isBasicBatteryDefend
? BatteryTip.StateType.NEW : BatteryTip.StateType.INVISIBLE; ? BatteryTip.StateType.NEW : BatteryTip.StateType.INVISIBLE;

View File

@@ -109,8 +109,8 @@ public class BatteryDefenderTip extends BatteryTip {
private void resumeCharging(Context context) { private void resumeCharging(Context context) {
final Intent intent = final Intent intent =
FeatureFactory.getFactory(context) FeatureFactory.getFeatureFactory()
.getPowerUsageFeatureProvider(context) .getPowerUsageFeatureProvider()
.getResumeChargeIntent(false); .getResumeChargeIntent(false);
if (intent != null) { if (intent != null) {
context.sendBroadcast(intent); context.sendBroadcast(intent);

View File

@@ -153,8 +153,8 @@ public class DockDefenderTip extends BatteryTip {
private void resumeCharging(Context context) { private void resumeCharging(Context context) {
final Intent intent = final Intent intent =
FeatureFactory.getFactory(context) FeatureFactory.getFeatureFactory()
.getPowerUsageFeatureProvider(context) .getPowerUsageFeatureProvider()
.getResumeChargeIntent(true); .getResumeChargeIntent(true);
if (intent != null) { if (intent != null) {
context.sendBroadcast(intent); context.sendBroadcast(intent);

View File

@@ -53,7 +53,7 @@ public class BatteryDiffData {
if (!isAccumulated) { if (!isAccumulated) {
final PowerUsageFeatureProvider featureProvider = final PowerUsageFeatureProvider featureProvider =
FeatureFactory.getFactory(context).getPowerUsageFeatureProvider(context); FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
purgeBatteryDiffData(featureProvider); purgeBatteryDiffData(featureProvider);
combineBatteryDiffEntry( combineBatteryDiffEntry(
context, featureProvider, systemAppsPackageNames, systemAppsUids); context, featureProvider, systemAppsPackageNames, systemAppsUids);

View File

@@ -64,8 +64,8 @@ public final class BatteryUsageBroadcastReceiver extends BroadcastReceiver {
final String action = intent.getAction(); final String action = intent.getAction();
Log.d(TAG, "onReceive:" + action); Log.d(TAG, "onReceive:" + action);
DatabaseUtils.recordDateTime(context, action); DatabaseUtils.recordDateTime(context, action);
final String fullChargeIntentAction = FeatureFactory.getFactory(context) final String fullChargeIntentAction = FeatureFactory.getFeatureFactory()
.getPowerUsageFeatureProvider(context) .getPowerUsageFeatureProvider()
.getFullChargeIntentAction(); .getFullChargeIntentAction();
switch (action) { switch (action) {
case Intent.ACTION_BATTERY_LEVEL_CHANGED: case Intent.ACTION_BATTERY_LEVEL_CHANGED:
@@ -107,8 +107,8 @@ public final class BatteryUsageBroadcastReceiver extends BroadcastReceiver {
} }
final boolean delayHourlyJobWhenBooting = final boolean delayHourlyJobWhenBooting =
FeatureFactory.getFactory(context) FeatureFactory.getFeatureFactory()
.getPowerUsageFeatureProvider(context) .getPowerUsageFeatureProvider()
.delayHourlyJobWhenBooting(); .delayHourlyJobWhenBooting();
final long broadcastDelay = sBroadcastDelayFromBoot - SystemClock.elapsedRealtime(); final long broadcastDelay = sBroadcastDelayFromBoot - SystemClock.elapsedRealtime();
// If current boot time is smaller than expected delay, cancel sending the broadcast. // If current boot time is smaller than expected delay, cancel sending the broadcast.

View File

@@ -91,8 +91,8 @@ public final class BootBroadcastReceiver extends BroadcastReceiver {
private long getRescheduleTimeForBootAction(Context context) { private long getRescheduleTimeForBootAction(Context context) {
final boolean delayHourlyJobWhenBooting = final boolean delayHourlyJobWhenBooting =
FeatureFactory.getFactory(context) FeatureFactory.getFeatureFactory()
.getPowerUsageFeatureProvider(context) .getPowerUsageFeatureProvider()
.delayHourlyJobWhenBooting(); .delayHourlyJobWhenBooting();
return delayHourlyJobWhenBooting return delayHourlyJobWhenBooting
? RESCHEDULE_FOR_BOOT_ACTION_WITH_DELAY ? RESCHEDULE_FOR_BOOT_ACTION_WITH_DELAY

View File

@@ -321,8 +321,8 @@ public final class DataProcessor {
long numEventsFetched = 0; long numEventsFetched = 0;
long numAllEventsFetched = 0; long numAllEventsFetched = 0;
final Set<String> ignoreScreenOnTimeTaskRootSet = final Set<String> ignoreScreenOnTimeTaskRootSet =
FeatureFactory.getFactory(context) FeatureFactory.getFeatureFactory()
.getPowerUsageFeatureProvider(context) .getPowerUsageFeatureProvider()
.getIgnoreScreenOnTimeTaskRootSet(); .getIgnoreScreenOnTimeTaskRootSet();
for (final long userId : usageEventsMap.keySet()) { for (final long userId : usageEventsMap.keySet()) {
final UsageEvents usageEvents = usageEventsMap.get(userId); final UsageEvents usageEvents = usageEventsMap.get(userId);

View File

@@ -97,8 +97,8 @@ public final class PeriodicJobManager {
static long getTriggerAtMillis(Context context, Clock clock, final boolean fromBoot) { static long getTriggerAtMillis(Context context, Clock clock, final boolean fromBoot) {
long currentTimeMillis = clock.millis(); long currentTimeMillis = clock.millis();
final boolean delayHourlyJobWhenBooting = final boolean delayHourlyJobWhenBooting =
FeatureFactory.getFactory(context) FeatureFactory.getFeatureFactory()
.getPowerUsageFeatureProvider(context) .getPowerUsageFeatureProvider()
.delayHourlyJobWhenBooting(); .delayHourlyJobWhenBooting();
// Rounds to the previous nearest time slot and shifts to the next one. // Rounds to the previous nearest time slot and shifts to the next one.
long timeSlotUnit = Duration.ofMinutes(DATA_FETCH_INTERVAL_MINUTE).toMillis(); long timeSlotUnit = Duration.ofMinutes(DATA_FETCH_INTERVAL_MINUTE).toMillis();

View File

@@ -246,9 +246,7 @@ public class PowerUsageSummary extends PowerUsageBase implements
@VisibleForTesting @VisibleForTesting
void initFeatureProvider() { void initFeatureProvider() {
final Context context = getContext(); mPowerFeatureProvider = FeatureFactory.getFeatureFactory().getPowerUsageFeatureProvider();
mPowerFeatureProvider = FeatureFactory.getFactory(context)
.getPowerUsageFeatureProvider(context);
} }
@VisibleForTesting @VisibleForTesting

View File

@@ -68,7 +68,7 @@ abstract class FeatureFactory {
abstract val metricsFeatureProvider: MetricsFeatureProvider abstract val metricsFeatureProvider: MetricsFeatureProvider
abstract fun getPowerUsageFeatureProvider(context: Context): PowerUsageFeatureProvider abstract val powerUsageFeatureProvider: PowerUsageFeatureProvider
/** /**
* Retrieves implementation for Battery Status feature. * Retrieves implementation for Battery Status feature.

View File

@@ -79,8 +79,6 @@ open class FeatureFactoryImpl : FeatureFactory() {
) )
} }
private val powerUsageFeatureProvider by lazy { PowerUsageFeatureProviderImpl(appContext) }
private val userFeatureProvider by lazy { UserFeatureProviderImpl(appContext) } private val userFeatureProvider by lazy { UserFeatureProviderImpl(appContext) }
private val contextualCardFeatureProvider by lazy { private val contextualCardFeatureProvider by lazy {
@@ -92,7 +90,7 @@ open class FeatureFactoryImpl : FeatureFactory() {
override val metricsFeatureProvider by lazy { SettingsMetricsFeatureProvider() } override val metricsFeatureProvider by lazy { SettingsMetricsFeatureProvider() }
override fun getPowerUsageFeatureProvider(context: Context) = powerUsageFeatureProvider override val powerUsageFeatureProvider by lazy { PowerUsageFeatureProviderImpl(appContext) }
override val batteryStatusFeatureProvider by lazy { override val batteryStatusFeatureProvider by lazy {
BatteryStatusFeatureProviderImpl(appContext) BatteryStatusFeatureProviderImpl(appContext)

View File

@@ -57,7 +57,7 @@ public class BatteryInfoLoaderTest {
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application);
FakeFeatureFactory.setupForTest().getPowerUsageFeatureProvider(mContext); FakeFeatureFactory.setupForTest().getPowerUsageFeatureProvider();
doReturn(mContext).when(mContext).getApplicationContext(); doReturn(mContext).when(mContext).getApplicationContext();
when(mContext.getSystemService(eq(Context.BATTERY_STATS_SERVICE))) when(mContext.getSystemService(eq(Context.BATTERY_STATS_SERVICE)))

View File

@@ -162,8 +162,9 @@ public class FakeFeatureFactory extends FeatureFactory {
return batterySettingsFeatureProvider; return batterySettingsFeatureProvider;
} }
@NotNull
@Override @Override
public PowerUsageFeatureProvider getPowerUsageFeatureProvider(Context context) { public PowerUsageFeatureProvider getPowerUsageFeatureProvider() {
return powerUsageFeatureProvider; return powerUsageFeatureProvider;
} }

View File

@@ -67,9 +67,8 @@ class FakeFeatureFactory : FeatureFactory() {
override val metricsFeatureProvider = mockMetricsFeatureProvider override val metricsFeatureProvider = mockMetricsFeatureProvider
override fun getPowerUsageFeatureProvider(context: Context): PowerUsageFeatureProvider { override val powerUsageFeatureProvider: PowerUsageFeatureProvider
TODO("Not yet implemented") get() = TODO("Not yet implemented")
}
override val batteryStatusFeatureProvider: BatteryStatusFeatureProvider override val batteryStatusFeatureProvider: BatteryStatusFeatureProvider
get() = TODO("Not yet implemented") get() = TODO("Not yet implemented")

View File

@@ -161,8 +161,9 @@ public class FakeFeatureFactory extends FeatureFactory {
return batterySettingsFeatureProvider; return batterySettingsFeatureProvider;
} }
@NotNull
@Override @Override
public PowerUsageFeatureProvider getPowerUsageFeatureProvider(Context context) { public PowerUsageFeatureProvider getPowerUsageFeatureProvider() {
return powerUsageFeatureProvider; return powerUsageFeatureProvider;
} }