Merge "Make PhoneStatusBarPolicy injectable." into rvc-dev

This commit is contained in:
Dave Mankoff
2020-02-26 18:50:40 +00:00
committed by Android (Google) Code Review
13 changed files with 197 additions and 134 deletions

View File

@@ -122,6 +122,7 @@ import com.android.systemui.statusbar.phone.LockscreenLockIconController;
import com.android.systemui.statusbar.phone.LockscreenWallpaper; import com.android.systemui.statusbar.phone.LockscreenWallpaper;
import com.android.systemui.statusbar.phone.NotificationGroupManager; import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.NotificationShadeWindowController; import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
import com.android.systemui.statusbar.phone.PhoneStatusBarPolicy;
import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.ShadeController; import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBar;
@@ -324,6 +325,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
KeyguardDismissUtil keyguardDismissUtil, KeyguardDismissUtil keyguardDismissUtil,
ExtensionController extensionController, ExtensionController extensionController,
UserInfoControllerImpl userInfoControllerImpl, UserInfoControllerImpl userInfoControllerImpl,
PhoneStatusBarPolicy phoneStatusBarPolicy,
DismissCallbackRegistry dismissCallbackRegistry, DismissCallbackRegistry dismissCallbackRegistry,
StatusBarTouchableRegionManager statusBarTouchableRegionManager, StatusBarTouchableRegionManager statusBarTouchableRegionManager,
/* Car Settings injected components. */ /* Car Settings injected components. */
@@ -407,6 +409,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
keyguardDismissUtil, keyguardDismissUtil,
extensionController, extensionController,
userInfoControllerImpl, userInfoControllerImpl,
phoneStatusBarPolicy,
dismissCallbackRegistry, dismissCallbackRegistry,
statusBarTouchableRegionManager); statusBarTouchableRegionManager);
mUserSwitcherController = userSwitcherController; mUserSwitcherController = userSwitcherController;

View File

@@ -82,6 +82,7 @@ import com.android.systemui.statusbar.phone.LockscreenLockIconController;
import com.android.systemui.statusbar.phone.LockscreenWallpaper; import com.android.systemui.statusbar.phone.LockscreenWallpaper;
import com.android.systemui.statusbar.phone.NotificationGroupManager; import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.NotificationShadeWindowController; import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
import com.android.systemui.statusbar.phone.PhoneStatusBarPolicy;
import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.ShadeController; import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.statusbar.phone.StatusBarIconController;
@@ -197,6 +198,7 @@ public class CarStatusBarModule {
KeyguardDismissUtil keyguardDismissUtil, KeyguardDismissUtil keyguardDismissUtil,
ExtensionController extensionController, ExtensionController extensionController,
UserInfoControllerImpl userInfoControllerImpl, UserInfoControllerImpl userInfoControllerImpl,
PhoneStatusBarPolicy phoneStatusBarPolicy,
DismissCallbackRegistry dismissCallbackRegistry, DismissCallbackRegistry dismissCallbackRegistry,
StatusBarTouchableRegionManager statusBarTouchableRegionManager, StatusBarTouchableRegionManager statusBarTouchableRegionManager,
CarServiceProvider carServiceProvider, CarServiceProvider carServiceProvider,
@@ -278,6 +280,7 @@ public class CarStatusBarModule {
keyguardDismissUtil, keyguardDismissUtil,
extensionController, extensionController,
userInfoControllerImpl, userInfoControllerImpl,
phoneStatusBarPolicy,
dismissCallbackRegistry, dismissCallbackRegistry,
statusBarTouchableRegionManager, statusBarTouchableRegionManager,
carServiceProvider, carServiceProvider,

View File

@@ -164,7 +164,7 @@ public final class Prefs {
get(context).unregisterOnSharedPreferenceChangeListener(listener); get(context).unregisterOnSharedPreferenceChangeListener(listener);
} }
private static SharedPreferences get(Context context) { public static SharedPreferences get(Context context) {
return context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE); return context.getSharedPreferences(context.getPackageName(), Context.MODE_PRIVATE);
} }
} }

View File

@@ -20,6 +20,7 @@ import static com.android.systemui.Dependency.TIME_TICK_HANDLER_NAME;
import android.app.INotificationManager; import android.app.INotificationManager;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences;
import android.hardware.display.AmbientDisplayConfiguration; import android.hardware.display.AmbientDisplayConfiguration;
import android.hardware.display.NightDisplayListener; import android.hardware.display.NightDisplayListener;
import android.os.Handler; import android.os.Handler;
@@ -34,6 +35,7 @@ import com.android.internal.logging.MetricsLogger;
import com.android.internal.util.NotificationMessagingUtil; import com.android.internal.util.NotificationMessagingUtil;
import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.ViewMediatorCallback; import com.android.keyguard.ViewMediatorCallback;
import com.android.systemui.Prefs;
import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Background;
import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.doze.AlwaysOnDisplayPolicy; import com.android.systemui.doze.AlwaysOnDisplayPolicy;
@@ -77,6 +79,13 @@ public class DependencyProvider {
return new Handler(thread.getLooper()); return new Handler(thread.getLooper());
} }
/** */
@Provides
@Main
public SharedPreferences provideSharePreferences(Context context) {
return Prefs.get(context);
}
/** */ /** */
@Provides @Provides
public AmbientDisplayConfiguration provideAmbientDispalyConfiguration(Context context) { public AmbientDisplayConfiguration provideAmbientDispalyConfiguration(Context context) {

View File

@@ -209,6 +209,7 @@ public class SystemServicesModule {
@Provides @Provides
@Singleton @Singleton
@Nullable
static TelecomManager provideTelecomManager(Context context) { static TelecomManager provideTelecomManager(Context context) {
return context.getSystemService(TelecomManager.class); return context.getSystemService(TelecomManager.class);
} }

View File

@@ -206,7 +206,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
ConfigurationController configurationController, ActivityStarter activityStarter, ConfigurationController configurationController, ActivityStarter activityStarter,
KeyguardStateController keyguardStateController, UserManager userManager, KeyguardStateController keyguardStateController, UserManager userManager,
TrustManager trustManager, IActivityManager iActivityManager, TrustManager trustManager, IActivityManager iActivityManager,
TelecomManager telecomManager, MetricsLogger metricsLogger, @Nullable TelecomManager telecomManager, MetricsLogger metricsLogger,
BlurUtils blurUtils, SysuiColorExtractor colorExtractor, BlurUtils blurUtils, SysuiColorExtractor colorExtractor,
IStatusBarService statusBarService, IStatusBarService statusBarService,
NotificationShadeWindowController notificationShadeWindowController, NotificationShadeWindowController notificationShadeWindowController,
@@ -568,7 +568,9 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
@Override @Override
public void onPress() { public void onPress() {
mMetricsLogger.action(MetricsEvent.ACTION_EMERGENCY_DIALER_FROM_POWER_MENU); mMetricsLogger.action(MetricsEvent.ACTION_EMERGENCY_DIALER_FROM_POWER_MENU);
Intent intent = mTelecomManager.createLaunchEmergencyDialerIntent(null /* number */); if (mTelecomManager != null) {
Intent intent = mTelecomManager.createLaunchEmergencyDialerIntent(
null /* number */);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
| Intent.FLAG_ACTIVITY_CLEAR_TOP); | Intent.FLAG_ACTIVITY_CLEAR_TOP);
@@ -577,6 +579,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
mContext.startActivityAsUser(intent, UserHandle.CURRENT); mContext.startActivityAsUser(intent, UserHandle.CURRENT);
} }
} }
}
private final class RestartAction extends SinglePressAction implements LongPressAction { private final class RestartAction extends SinglePressAction implements LongPressAction {
private RestartAction() { private RestartAction() {

View File

@@ -53,6 +53,7 @@ import com.android.systemui.Prefs;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.SysUIToast; import com.android.systemui.SysUIToast;
import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.qs.DetailAdapter; import com.android.systemui.plugins.qs.DetailAdapter;
import com.android.systemui.plugins.qs.QSTile.BooleanState; import com.android.systemui.plugins.qs.QSTile.BooleanState;
@@ -79,6 +80,7 @@ public class DndTile extends QSTileImpl<BooleanState> {
private final ZenModeController mController; private final ZenModeController mController;
private final DndDetailAdapter mDetailAdapter; private final DndDetailAdapter mDetailAdapter;
private final ActivityStarter mActivityStarter; private final ActivityStarter mActivityStarter;
private final SharedPreferences mSharedPreferences;
private final BroadcastDispatcher mBroadcastDispatcher; private final BroadcastDispatcher mBroadcastDispatcher;
private boolean mListening; private boolean mListening;
@@ -87,10 +89,12 @@ public class DndTile extends QSTileImpl<BooleanState> {
@Inject @Inject
public DndTile(QSHost host, ZenModeController zenModeController, public DndTile(QSHost host, ZenModeController zenModeController,
ActivityStarter activityStarter, BroadcastDispatcher broadcastDispatcher) { ActivityStarter activityStarter, BroadcastDispatcher broadcastDispatcher,
@Main SharedPreferences sharedPreferences) {
super(host); super(host);
mController = zenModeController; mController = zenModeController;
mActivityStarter = activityStarter; mActivityStarter = activityStarter;
mSharedPreferences = sharedPreferences;
mDetailAdapter = new DndDetailAdapter(); mDetailAdapter = new DndDetailAdapter();
mBroadcastDispatcher = broadcastDispatcher; mBroadcastDispatcher = broadcastDispatcher;
broadcastDispatcher.registerReceiver(mReceiver, new IntentFilter(ACTION_SET_VISIBLE)); broadcastDispatcher.registerReceiver(mReceiver, new IntentFilter(ACTION_SET_VISIBLE));
@@ -111,16 +115,16 @@ public class DndTile extends QSTileImpl<BooleanState> {
Prefs.putBoolean(context, Prefs.Key.DND_TILE_VISIBLE, visible); Prefs.putBoolean(context, Prefs.Key.DND_TILE_VISIBLE, visible);
} }
public static boolean isVisible(Context context) { public static boolean isVisible(SharedPreferences prefs) {
return Prefs.getBoolean(context, Prefs.Key.DND_TILE_VISIBLE, false /* defaultValue */); return prefs.getBoolean(Prefs.Key.DND_TILE_VISIBLE, false /* defaultValue */);
} }
public static void setCombinedIcon(Context context, boolean combined) { public static void setCombinedIcon(Context context, boolean combined) {
Prefs.putBoolean(context, Prefs.Key.DND_TILE_COMBINED_ICON, combined); Prefs.putBoolean(context, Prefs.Key.DND_TILE_COMBINED_ICON, combined);
} }
public static boolean isCombinedIcon(Context context) { public static boolean isCombinedIcon(SharedPreferences sharedPreferences) {
return Prefs.getBoolean(context, Prefs.Key.DND_TILE_COMBINED_ICON, return sharedPreferences.getBoolean(Prefs.Key.DND_TILE_COMBINED_ICON,
false /* defaultValue */); false /* defaultValue */);
} }
@@ -301,7 +305,7 @@ public class DndTile extends QSTileImpl<BooleanState> {
@Override @Override
public boolean isAvailable() { public boolean isAvailable() {
return isVisible(mContext); return isVisible(mSharedPreferences);
} }
private final OnSharedPreferenceChangeListener mPrefListener private final OnSharedPreferenceChangeListener mPrefListener

View File

@@ -16,9 +16,9 @@
package com.android.systemui.qs.tiles; package com.android.systemui.qs.tiles;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.Resources;
import android.provider.Settings; import android.provider.Settings;
import android.service.quicksettings.Tile; import android.service.quicksettings.Tile;
import android.widget.Switch; import android.widget.Switch;
@@ -81,11 +81,11 @@ public class RotationLockTile extends QSTileImpl<BooleanState> {
} }
public static boolean isCurrentOrientationLockPortrait(RotationLockController controller, public static boolean isCurrentOrientationLockPortrait(RotationLockController controller,
Context context) { Resources resources) {
int lockOrientation = controller.getRotationLockOrientation(); int lockOrientation = controller.getRotationLockOrientation();
if (lockOrientation == Configuration.ORIENTATION_UNDEFINED) { if (lockOrientation == Configuration.ORIENTATION_UNDEFINED) {
// Freely rotating device; use current rotation // Freely rotating device; use current rotation
return context.getResources().getConfiguration().orientation return resources.getConfiguration().orientation
!= Configuration.ORIENTATION_LANDSCAPE; != Configuration.ORIENTATION_LANDSCAPE;
} else { } else {
return lockOrientation != Configuration.ORIENTATION_LANDSCAPE; return lockOrientation != Configuration.ORIENTATION_LANDSCAPE;

View File

@@ -16,15 +16,18 @@
package com.android.systemui.statusbar.phone; package com.android.systemui.statusbar.phone;
import android.app.ActivityManager; import android.annotation.Nullable;
import android.app.ActivityTaskManager; import android.app.ActivityTaskManager;
import android.app.AlarmManager; import android.app.AlarmManager;
import android.app.AlarmManager.AlarmClockInfo; import android.app.AlarmManager.AlarmClockInfo;
import android.app.IActivityManager;
import android.app.SynchronousUserSwitchObserver; import android.app.SynchronousUserSwitchObserver;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.media.AudioManager; import android.media.AudioManager;
import android.os.Handler; import android.os.Handler;
import android.os.RemoteException; import android.os.RemoteException;
@@ -33,13 +36,13 @@ import android.os.UserManager;
import android.provider.Settings.Global; import android.provider.Settings.Global;
import android.service.notification.ZenModeConfig; import android.service.notification.ZenModeConfig;
import android.telecom.TelecomManager; import android.telecom.TelecomManager;
import android.telephony.TelephonyManager;
import android.text.format.DateFormat; import android.text.format.DateFormat;
import android.util.Log; import android.util.Log;
import com.android.systemui.Dependency;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.qualifiers.DisplayId;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dagger.qualifiers.UiBackground; import com.android.systemui.dagger.qualifiers.UiBackground;
import com.android.systemui.qs.tiles.DndTile; import com.android.systemui.qs.tiles.DndTile;
import com.android.systemui.qs.tiles.RotationLockTile; import com.android.systemui.qs.tiles.RotationLockTile;
@@ -61,10 +64,13 @@ import com.android.systemui.statusbar.policy.RotationLockController.RotationLock
import com.android.systemui.statusbar.policy.SensorPrivacyController; import com.android.systemui.statusbar.policy.SensorPrivacyController;
import com.android.systemui.statusbar.policy.UserInfoController; import com.android.systemui.statusbar.policy.UserInfoController;
import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.statusbar.policy.ZenModeController;
import com.android.systemui.util.time.DateFormatUtil;
import java.util.Locale; import java.util.Locale;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import javax.inject.Inject;
/** /**
* This class contains all of the policy about which icons are installed in the status bar at boot * This class contains all of the policy about which icons are installed in the status bar at boot
* time. It goes through the normal API for icons, even though it probably strictly doesn't need to. * time. It goes through the normal API for icons, even though it probably strictly doesn't need to.
@@ -82,7 +88,7 @@ public class PhoneStatusBarPolicy
private static final String TAG = "PhoneStatusBarPolicy"; private static final String TAG = "PhoneStatusBarPolicy";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
public static final int LOCATION_STATUS_ICON_ID = static final int LOCATION_STATUS_ICON_ID =
com.android.internal.R.drawable.perm_group_location; com.android.internal.R.drawable.perm_group_location;
private final String mSlotCast; private final String mSlotCast;
@@ -97,20 +103,26 @@ public class PhoneStatusBarPolicy
private final String mSlotHeadset; private final String mSlotHeadset;
private final String mSlotDataSaver; private final String mSlotDataSaver;
private final String mSlotLocation; private final String mSlotLocation;
private final String mSlotMicrophone;
private final String mSlotCamera;
private final String mSlotSensorsOff; private final String mSlotSensorsOff;
private final String mSlotScreenRecord; private final String mSlotScreenRecord;
private final int mDisplayId;
private final SharedPreferences mSharedPreferences;
private final DateFormatUtil mDateFormatUtil;
private final TelecomManager mTelecomManager;
private final AudioManager mAudioManager;
private final Context mContext;
private final Handler mHandler = new Handler(); private final Handler mHandler = new Handler();
private final CastController mCast; private final CastController mCast;
private final HotspotController mHotspot; private final HotspotController mHotspot;
private final NextAlarmController mNextAlarmController; private final NextAlarmController mNextAlarmController;
private final AlarmManager mAlarmManager; private final AlarmManager mAlarmManager;
private final UserInfoController mUserInfoController; private final UserInfoController mUserInfoController;
private final IActivityManager mIActivityManager;
private final UserManager mUserManager; private final UserManager mUserManager;
private final StatusBarIconController mIconController; private final StatusBarIconController mIconController;
private final CommandQueue mCommandQueue;
private final BroadcastDispatcher mBroadcastDispatcher;
private final Resources mResources;
private final RotationLockController mRotationLockController; private final RotationLockController mRotationLockController;
private final DataSaverController mDataSaver; private final DataSaverController mDataSaver;
private final ZenModeController mZenController; private final ZenModeController mZenController;
@@ -121,10 +133,6 @@ public class PhoneStatusBarPolicy
private final SensorPrivacyController mSensorPrivacyController; private final SensorPrivacyController mSensorPrivacyController;
private final RecordingController mRecordingController; private final RecordingController mRecordingController;
// Assume it's all good unless we hear otherwise. We don't always seem
// to get broadcasts that it *is* there.
int mSimState = TelephonyManager.SIM_STATE_READY;
private boolean mZenVisible; private boolean mZenVisible;
private boolean mVolumeVisible; private boolean mVolumeVisible;
private boolean mCurrentUserSetup; private boolean mCurrentUserSetup;
@@ -134,47 +142,70 @@ public class PhoneStatusBarPolicy
private BluetoothController mBluetooth; private BluetoothController mBluetooth;
private AlarmManager.AlarmClockInfo mNextAlarm; private AlarmManager.AlarmClockInfo mNextAlarm;
public PhoneStatusBarPolicy(Context context, StatusBarIconController iconController, @Inject
public PhoneStatusBarPolicy(StatusBarIconController iconController,
CommandQueue commandQueue, BroadcastDispatcher broadcastDispatcher, CommandQueue commandQueue, BroadcastDispatcher broadcastDispatcher,
@UiBackground Executor uiBgExecutor) { @UiBackground Executor uiBgExecutor, @Main Resources resources,
mContext = context; CastController castController, HotspotController hotspotController,
BluetoothController bluetoothController, NextAlarmController nextAlarmController,
UserInfoController userInfoController, RotationLockController rotationLockController,
DataSaverController dataSaverController, ZenModeController zenModeController,
DeviceProvisionedController deviceProvisionedController,
KeyguardStateController keyguardStateController,
LocationController locationController,
SensorPrivacyController sensorPrivacyController, IActivityManager iActivityManager,
AlarmManager alarmManager, UserManager userManager, AudioManager audioManager,
RecordingController recordingController,
@Nullable TelecomManager telecomManager, @DisplayId int displayId,
@Main SharedPreferences sharedPreferences, DateFormatUtil dateFormatUtil) {
mIconController = iconController; mIconController = iconController;
mCast = Dependency.get(CastController.class); mCommandQueue = commandQueue;
mHotspot = Dependency.get(HotspotController.class); mBroadcastDispatcher = broadcastDispatcher;
mBluetooth = Dependency.get(BluetoothController.class); mResources = resources;
mNextAlarmController = Dependency.get(NextAlarmController.class); mCast = castController;
mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); mHotspot = hotspotController;
mUserInfoController = Dependency.get(UserInfoController.class); mBluetooth = bluetoothController;
mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); mNextAlarmController = nextAlarmController;
mRotationLockController = Dependency.get(RotationLockController.class); mAlarmManager = alarmManager;
mDataSaver = Dependency.get(DataSaverController.class); mUserInfoController = userInfoController;
mZenController = Dependency.get(ZenModeController.class); mIActivityManager = iActivityManager;
mProvisionedController = Dependency.get(DeviceProvisionedController.class); mUserManager = userManager;
mKeyguardStateController = Dependency.get(KeyguardStateController.class); mRotationLockController = rotationLockController;
mLocationController = Dependency.get(LocationController.class); mDataSaver = dataSaverController;
mSensorPrivacyController = Dependency.get(SensorPrivacyController.class); mZenController = zenModeController;
mRecordingController = Dependency.get(RecordingController.class); mProvisionedController = deviceProvisionedController;
mKeyguardStateController = keyguardStateController;
mLocationController = locationController;
mSensorPrivacyController = sensorPrivacyController;
mRecordingController = recordingController;
mUiBgExecutor = uiBgExecutor; mUiBgExecutor = uiBgExecutor;
mAudioManager = audioManager;
mTelecomManager = telecomManager;
mSlotCast = context.getString(com.android.internal.R.string.status_bar_cast); mSlotCast = resources.getString(com.android.internal.R.string.status_bar_cast);
mSlotHotspot = context.getString(com.android.internal.R.string.status_bar_hotspot); mSlotHotspot = resources.getString(com.android.internal.R.string.status_bar_hotspot);
mSlotBluetooth = context.getString(com.android.internal.R.string.status_bar_bluetooth); mSlotBluetooth = resources.getString(com.android.internal.R.string.status_bar_bluetooth);
mSlotTty = context.getString(com.android.internal.R.string.status_bar_tty); mSlotTty = resources.getString(com.android.internal.R.string.status_bar_tty);
mSlotZen = context.getString(com.android.internal.R.string.status_bar_zen); mSlotZen = resources.getString(com.android.internal.R.string.status_bar_zen);
mSlotVolume = context.getString(com.android.internal.R.string.status_bar_volume); mSlotVolume = resources.getString(com.android.internal.R.string.status_bar_volume);
mSlotAlarmClock = context.getString(com.android.internal.R.string.status_bar_alarm_clock); mSlotAlarmClock = resources.getString(com.android.internal.R.string.status_bar_alarm_clock);
mSlotManagedProfile = context.getString( mSlotManagedProfile = resources.getString(
com.android.internal.R.string.status_bar_managed_profile); com.android.internal.R.string.status_bar_managed_profile);
mSlotRotate = context.getString(com.android.internal.R.string.status_bar_rotate); mSlotRotate = resources.getString(com.android.internal.R.string.status_bar_rotate);
mSlotHeadset = context.getString(com.android.internal.R.string.status_bar_headset); mSlotHeadset = resources.getString(com.android.internal.R.string.status_bar_headset);
mSlotDataSaver = context.getString(com.android.internal.R.string.status_bar_data_saver); mSlotDataSaver = resources.getString(com.android.internal.R.string.status_bar_data_saver);
mSlotLocation = context.getString(com.android.internal.R.string.status_bar_location); mSlotLocation = resources.getString(com.android.internal.R.string.status_bar_location);
mSlotMicrophone = context.getString(com.android.internal.R.string.status_bar_microphone); mSlotSensorsOff = resources.getString(com.android.internal.R.string.status_bar_sensors_off);
mSlotCamera = context.getString(com.android.internal.R.string.status_bar_camera); mSlotScreenRecord = resources.getString(
mSlotSensorsOff = context.getString(com.android.internal.R.string.status_bar_sensors_off);
mSlotScreenRecord = context.getString(
com.android.internal.R.string.status_bar_screen_record); com.android.internal.R.string.status_bar_screen_record);
mDisplayId = displayId;
mSharedPreferences = sharedPreferences;
mDateFormatUtil = dateFormatUtil;
}
/** Initialize the object after construction. */
public void init() {
// listen for broadcasts // listen for broadcasts
IntentFilter filter = new IntentFilter(); IntentFilter filter = new IntentFilter();
filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION);
@@ -185,11 +216,11 @@ public class PhoneStatusBarPolicy
filter.addAction(Intent.ACTION_MANAGED_PROFILE_AVAILABLE); filter.addAction(Intent.ACTION_MANAGED_PROFILE_AVAILABLE);
filter.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE); filter.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE);
filter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED); filter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED);
broadcastDispatcher.registerReceiverWithHandler(mIntentReceiver, filter, mHandler); mBroadcastDispatcher.registerReceiverWithHandler(mIntentReceiver, filter, mHandler);
// listen for user / profile change. // listen for user / profile change.
try { try {
ActivityManager.getService().registerUserSwitchObserver(mUserSwitchListener, TAG); mIActivityManager.registerUserSwitchObserver(mUserSwitchListener, TAG);
} catch (RemoteException e) { } catch (RemoteException e) {
// Ignore // Ignore
} }
@@ -219,26 +250,26 @@ public class PhoneStatusBarPolicy
// hotspot // hotspot
mIconController.setIcon(mSlotHotspot, R.drawable.stat_sys_hotspot, mIconController.setIcon(mSlotHotspot, R.drawable.stat_sys_hotspot,
mContext.getString(R.string.accessibility_status_bar_hotspot)); mResources.getString(R.string.accessibility_status_bar_hotspot));
mIconController.setIconVisibility(mSlotHotspot, mHotspot.isHotspotEnabled()); mIconController.setIconVisibility(mSlotHotspot, mHotspot.isHotspotEnabled());
// managed profile // managed profile
mIconController.setIcon(mSlotManagedProfile, R.drawable.stat_sys_managed_profile_status, mIconController.setIcon(mSlotManagedProfile, R.drawable.stat_sys_managed_profile_status,
mContext.getString(R.string.accessibility_managed_profile)); mResources.getString(R.string.accessibility_managed_profile));
mIconController.setIconVisibility(mSlotManagedProfile, mManagedProfileIconVisible); mIconController.setIconVisibility(mSlotManagedProfile, mManagedProfileIconVisible);
// data saver // data saver
mIconController.setIcon(mSlotDataSaver, R.drawable.stat_sys_data_saver, mIconController.setIcon(mSlotDataSaver, R.drawable.stat_sys_data_saver,
context.getString(R.string.accessibility_data_saver_on)); mResources.getString(R.string.accessibility_data_saver_on));
mIconController.setIconVisibility(mSlotDataSaver, false); mIconController.setIconVisibility(mSlotDataSaver, false);
mIconController.setIcon(mSlotLocation, LOCATION_STATUS_ICON_ID, mIconController.setIcon(mSlotLocation, LOCATION_STATUS_ICON_ID,
mContext.getString(R.string.accessibility_location_active)); mResources.getString(R.string.accessibility_location_active));
mIconController.setIconVisibility(mSlotLocation, false); mIconController.setIconVisibility(mSlotLocation, false);
// sensors off // sensors off
mIconController.setIcon(mSlotSensorsOff, R.drawable.stat_sys_sensors_off, mIconController.setIcon(mSlotSensorsOff, R.drawable.stat_sys_sensors_off,
mContext.getString(R.string.accessibility_sensors_off_active)); mResources.getString(R.string.accessibility_sensors_off_active));
mIconController.setIconVisibility(mSlotSensorsOff, mIconController.setIconVisibility(mSlotSensorsOff,
mSensorPrivacyController.isSensorPrivacyEnabled()); mSensorPrivacyController.isSensorPrivacyEnabled());
@@ -259,7 +290,7 @@ public class PhoneStatusBarPolicy
mLocationController.addCallback(this); mLocationController.addCallback(this);
mRecordingController.addCallback(this); mRecordingController.addCallback(this);
commandQueue.addCallback(this); mCommandQueue.addCallback(this);
} }
@Override @Override
@@ -284,51 +315,17 @@ public class PhoneStatusBarPolicy
private String buildAlarmContentDescription() { private String buildAlarmContentDescription() {
if (mNextAlarm == null) { if (mNextAlarm == null) {
return mContext.getString(R.string.status_bar_alarm); return mResources.getString(R.string.status_bar_alarm);
}
return formatNextAlarm(mNextAlarm, mContext);
} }
private static String formatNextAlarm(AlarmManager.AlarmClockInfo info, Context context) { String skeleton = mDateFormatUtil.is24HourFormat() ? "EHm" : "Ehma";
if (info == null) {
return "";
}
String skeleton = DateFormat.is24HourFormat(
context, ActivityManager.getCurrentUser()) ? "EHm" : "Ehma";
String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton); String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton);
String dateString = DateFormat.format(pattern, info.getTriggerTime()).toString(); String dateString = DateFormat.format(pattern, mNextAlarm.getTriggerTime()).toString();
return context.getString(R.string.accessibility_quick_settings_alarm, dateString); return mResources.getString(R.string.accessibility_quick_settings_alarm, dateString);
}
private final void updateSimState(Intent intent) {
String stateExtra = intent.getStringExtra(Intent.EXTRA_SIM_STATE);
if (Intent.SIM_STATE_ABSENT.equals(stateExtra)) {
mSimState = TelephonyManager.SIM_STATE_READY;
} else if (Intent.SIM_STATE_CARD_IO_ERROR.equals(stateExtra)) {
mSimState = TelephonyManager.SIM_STATE_CARD_IO_ERROR;
} else if (Intent.SIM_STATE_CARD_RESTRICTED.equals(stateExtra)) {
mSimState = TelephonyManager.SIM_STATE_CARD_RESTRICTED;
} else if (Intent.SIM_STATE_READY.equals(stateExtra)) {
mSimState = TelephonyManager.SIM_STATE_READY;
} else if (Intent.SIM_STATE_LOCKED.equals(stateExtra)) {
final String lockedReason =
intent.getStringExtra(Intent.EXTRA_SIM_LOCKED_REASON);
if (Intent.SIM_LOCKED_ON_PIN.equals(lockedReason)) {
mSimState = TelephonyManager.SIM_STATE_PIN_REQUIRED;
} else if (Intent.SIM_LOCKED_ON_PUK.equals(lockedReason)) {
mSimState = TelephonyManager.SIM_STATE_PUK_REQUIRED;
} else {
mSimState = TelephonyManager.SIM_STATE_NETWORK_LOCKED;
}
} else {
mSimState = TelephonyManager.SIM_STATE_UNKNOWN;
}
} }
private final void updateVolumeZen() { private final void updateVolumeZen() {
AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
boolean zenVisible = false; boolean zenVisible = false;
int zenIconId = 0; int zenIconId = 0;
String zenDescription = null; String zenDescription = null;
@@ -338,29 +335,29 @@ public class PhoneStatusBarPolicy
String volumeDescription = null; String volumeDescription = null;
int zen = mZenController.getZen(); int zen = mZenController.getZen();
if (DndTile.isVisible(mContext) || DndTile.isCombinedIcon(mContext)) { if (DndTile.isVisible(mSharedPreferences) || DndTile.isCombinedIcon(mSharedPreferences)) {
zenVisible = zen != Global.ZEN_MODE_OFF; zenVisible = zen != Global.ZEN_MODE_OFF;
zenIconId = R.drawable.stat_sys_dnd; zenIconId = R.drawable.stat_sys_dnd;
zenDescription = mContext.getString(R.string.quick_settings_dnd_label); zenDescription = mResources.getString(R.string.quick_settings_dnd_label);
} else if (zen == Global.ZEN_MODE_NO_INTERRUPTIONS) { } else if (zen == Global.ZEN_MODE_NO_INTERRUPTIONS) {
zenVisible = true; zenVisible = true;
zenIconId = R.drawable.stat_sys_dnd; zenIconId = R.drawable.stat_sys_dnd;
zenDescription = mContext.getString(R.string.interruption_level_none); zenDescription = mResources.getString(R.string.interruption_level_none);
} else if (zen == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS) { } else if (zen == Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS) {
zenVisible = true; zenVisible = true;
zenIconId = R.drawable.stat_sys_dnd; zenIconId = R.drawable.stat_sys_dnd;
zenDescription = mContext.getString(R.string.interruption_level_priority); zenDescription = mResources.getString(R.string.interruption_level_priority);
} }
if (!ZenModeConfig.isZenOverridingRinger(zen, mZenController.getConsolidatedPolicy())) { if (!ZenModeConfig.isZenOverridingRinger(zen, mZenController.getConsolidatedPolicy())) {
if (audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE) { if (mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE) {
volumeVisible = true; volumeVisible = true;
volumeIconId = R.drawable.stat_sys_ringer_vibrate; volumeIconId = R.drawable.stat_sys_ringer_vibrate;
volumeDescription = mContext.getString(R.string.accessibility_ringer_vibrate); volumeDescription = mResources.getString(R.string.accessibility_ringer_vibrate);
} else if (audioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT) { } else if (mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT) {
volumeVisible = true; volumeVisible = true;
volumeIconId = R.drawable.stat_sys_ringer_silent; volumeIconId = R.drawable.stat_sys_ringer_silent;
volumeDescription = mContext.getString(R.string.accessibility_ringer_silent); volumeDescription = mResources.getString(R.string.accessibility_ringer_silent);
} }
} }
@@ -395,13 +392,13 @@ public class PhoneStatusBarPolicy
private final void updateBluetooth() { private final void updateBluetooth() {
int iconId = R.drawable.stat_sys_data_bluetooth_connected; int iconId = R.drawable.stat_sys_data_bluetooth_connected;
String contentDescription = String contentDescription =
mContext.getString(R.string.accessibility_quick_settings_bluetooth_on); mResources.getString(R.string.accessibility_quick_settings_bluetooth_on);
boolean bluetoothVisible = false; boolean bluetoothVisible = false;
if (mBluetooth != null) { if (mBluetooth != null) {
if (mBluetooth.isBluetoothConnected() if (mBluetooth.isBluetoothConnected()
&& (mBluetooth.isBluetoothAudioActive() && (mBluetooth.isBluetoothAudioActive()
|| !mBluetooth.isBluetoothAudioProfileOnly())) { || !mBluetooth.isBluetoothAudioProfileOnly())) {
contentDescription = mContext.getString( contentDescription = mResources.getString(
R.string.accessibility_bluetooth_connected); R.string.accessibility_bluetooth_connected);
bluetoothVisible = mBluetooth.isBluetoothEnabled(); bluetoothVisible = mBluetooth.isBluetoothEnabled();
} }
@@ -412,12 +409,10 @@ public class PhoneStatusBarPolicy
} }
private final void updateTTY() { private final void updateTTY() {
TelecomManager telecomManager = if (mTelecomManager == null) {
(TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE);
if (telecomManager == null) {
updateTTY(TelecomManager.TTY_MODE_OFF); updateTTY(TelecomManager.TTY_MODE_OFF);
} else { } else {
updateTTY(telecomManager.getCurrentTtyMode()); updateTTY(mTelecomManager.getCurrentTtyMode());
} }
} }
@@ -430,7 +425,7 @@ public class PhoneStatusBarPolicy
// TTY is on // TTY is on
if (DEBUG) Log.v(TAG, "updateTTY: set TTY on"); if (DEBUG) Log.v(TAG, "updateTTY: set TTY on");
mIconController.setIcon(mSlotTty, R.drawable.stat_sys_tty_mode, mIconController.setIcon(mSlotTty, R.drawable.stat_sys_tty_mode,
mContext.getString(R.string.accessibility_tty_enabled)); mResources.getString(R.string.accessibility_tty_enabled));
mIconController.setIconVisibility(mSlotTty, true); mIconController.setIconVisibility(mSlotTty, true);
} else { } else {
// TTY is off // TTY is off
@@ -452,7 +447,7 @@ public class PhoneStatusBarPolicy
mHandler.removeCallbacks(mRemoveCastIconRunnable); mHandler.removeCallbacks(mRemoveCastIconRunnable);
if (isCasting && !mRecordingController.isRecording()) { // screen record has its own icon if (isCasting && !mRecordingController.isRecording()) { // screen record has its own icon
mIconController.setIcon(mSlotCast, R.drawable.stat_sys_cast, mIconController.setIcon(mSlotCast, R.drawable.stat_sys_cast,
mContext.getString(R.string.accessibility_casting)); mResources.getString(R.string.accessibility_casting));
mIconController.setIconVisibility(mSlotCast, true); mIconController.setIconVisibility(mSlotCast, true);
} else { } else {
// don't turn off the screen-record icon for a few seconds, just to make sure the user // don't turn off the screen-record icon for a few seconds, just to make sure the user
@@ -478,7 +473,7 @@ public class PhoneStatusBarPolicy
showIcon = true; showIcon = true;
mIconController.setIcon(mSlotManagedProfile, mIconController.setIcon(mSlotManagedProfile,
R.drawable.stat_sys_managed_profile_status, R.drawable.stat_sys_managed_profile_status,
mContext.getString(R.string.accessibility_managed_profile)); mResources.getString(R.string.accessibility_managed_profile));
} else { } else {
showIcon = false; showIcon = false;
} }
@@ -545,7 +540,7 @@ public class PhoneStatusBarPolicy
@Override @Override
public void appTransitionStarting(int displayId, long startTime, long duration, public void appTransitionStarting(int displayId, long startTime, long duration,
boolean forced) { boolean forced) {
if (mContext.getDisplayId() == displayId) { if (mDisplayId == displayId) {
updateManagedProfile(); updateManagedProfile();
} }
} }
@@ -567,14 +562,14 @@ public class PhoneStatusBarPolicy
@Override @Override
public void onRotationLockStateChanged(boolean rotationLocked, boolean affordanceVisible) { public void onRotationLockStateChanged(boolean rotationLocked, boolean affordanceVisible) {
boolean portrait = RotationLockTile.isCurrentOrientationLockPortrait( boolean portrait = RotationLockTile.isCurrentOrientationLockPortrait(
mRotationLockController, mContext); mRotationLockController, mResources);
if (rotationLocked) { if (rotationLocked) {
if (portrait) { if (portrait) {
mIconController.setIcon(mSlotRotate, R.drawable.stat_sys_rotate_portrait, mIconController.setIcon(mSlotRotate, R.drawable.stat_sys_rotate_portrait,
mContext.getString(R.string.accessibility_rotation_lock_on_portrait)); mResources.getString(R.string.accessibility_rotation_lock_on_portrait));
} else { } else {
mIconController.setIcon(mSlotRotate, R.drawable.stat_sys_rotate_landscape, mIconController.setIcon(mSlotRotate, R.drawable.stat_sys_rotate_landscape,
mContext.getString(R.string.accessibility_rotation_lock_on_landscape)); mResources.getString(R.string.accessibility_rotation_lock_on_landscape));
} }
mIconController.setIconVisibility(mSlotRotate, true); mIconController.setIconVisibility(mSlotRotate, true);
} else { } else {
@@ -586,7 +581,7 @@ public class PhoneStatusBarPolicy
boolean connected = intent.getIntExtra("state", 0) != 0; boolean connected = intent.getIntExtra("state", 0) != 0;
boolean hasMic = intent.getIntExtra("microphone", 0) != 0; boolean hasMic = intent.getIntExtra("microphone", 0) != 0;
if (connected) { if (connected) {
String contentDescription = mContext.getString(hasMic String contentDescription = mResources.getString(hasMic
? R.string.accessibility_status_bar_headset ? R.string.accessibility_status_bar_headset
: R.string.accessibility_status_bar_headphones); : R.string.accessibility_status_bar_headphones);
mIconController.setIcon(mSlotHeadset, hasMic ? R.drawable.stat_sys_headset_mic mIconController.setIcon(mSlotHeadset, hasMic ? R.drawable.stat_sys_headset_mic
@@ -630,7 +625,6 @@ public class PhoneStatusBarPolicy
if (intent.getBooleanExtra(Intent.EXTRA_REBROADCAST_ON_UNLOCK, false)) { if (intent.getBooleanExtra(Intent.EXTRA_REBROADCAST_ON_UNLOCK, false)) {
break; break;
} }
updateSimState(intent);
break; break;
case TelecomManager.ACTION_CURRENT_TTY_MODE_CHANGED: case TelecomManager.ACTION_CURRENT_TTY_MODE_CHANGED:
updateTTY(intent.getIntExtra(TelecomManager.EXTRA_CURRENT_TTY_MODE, updateTTY(intent.getIntExtra(TelecomManager.EXTRA_CURRENT_TTY_MODE,

View File

@@ -676,6 +676,7 @@ public class StatusBar extends SystemUI implements DemoMode,
KeyguardDismissUtil keyguardDismissUtil, KeyguardDismissUtil keyguardDismissUtil,
ExtensionController extensionController, ExtensionController extensionController,
UserInfoControllerImpl userInfoControllerImpl, UserInfoControllerImpl userInfoControllerImpl,
PhoneStatusBarPolicy phoneStatusBarPolicy,
DismissCallbackRegistry dismissCallbackRegistry, DismissCallbackRegistry dismissCallbackRegistry,
StatusBarTouchableRegionManager statusBarTouchableRegionManager) { StatusBarTouchableRegionManager statusBarTouchableRegionManager) {
super(context); super(context);
@@ -751,6 +752,7 @@ public class StatusBar extends SystemUI implements DemoMode,
mKeyguardDismissUtil = keyguardDismissUtil; mKeyguardDismissUtil = keyguardDismissUtil;
mExtensionController = extensionController; mExtensionController = extensionController;
mUserInfoControllerImpl = userInfoControllerImpl; mUserInfoControllerImpl = userInfoControllerImpl;
mIconPolicy = phoneStatusBarPolicy;
mDismissCallbackRegistry = dismissCallbackRegistry; mDismissCallbackRegistry = dismissCallbackRegistry;
mBubbleExpandListener = mBubbleExpandListener =
@@ -875,8 +877,7 @@ public class StatusBar extends SystemUI implements DemoMode,
// end old BaseStatusBar.start(). // end old BaseStatusBar.start().
// Lastly, call to the icon policy to install/update all the icons. // Lastly, call to the icon policy to install/update all the icons.
mIconPolicy = new PhoneStatusBarPolicy(mContext, mIconController, mCommandQueue, mIconPolicy.init();
mBroadcastDispatcher, mUiBgExecutor);
mSignalPolicy = new StatusBarSignalPolicy(mContext, mIconController); mSignalPolicy = new StatusBarSignalPolicy(mContext, mIconController);
mKeyguardStateController.addCallback(this); mKeyguardStateController.addCallback(this);

View File

@@ -79,6 +79,7 @@ import com.android.systemui.statusbar.phone.LockscreenLockIconController;
import com.android.systemui.statusbar.phone.LockscreenWallpaper; import com.android.systemui.statusbar.phone.LockscreenWallpaper;
import com.android.systemui.statusbar.phone.NotificationGroupManager; import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.NotificationShadeWindowController; import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
import com.android.systemui.statusbar.phone.PhoneStatusBarPolicy;
import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.ShadeController; import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBar;
@@ -193,6 +194,7 @@ public interface StatusBarPhoneModule {
KeyguardDismissUtil keyguardDismissUtil, KeyguardDismissUtil keyguardDismissUtil,
ExtensionController extensionController, ExtensionController extensionController,
UserInfoControllerImpl userInfoControllerImpl, UserInfoControllerImpl userInfoControllerImpl,
PhoneStatusBarPolicy phoneStatusBarPolicy,
DismissCallbackRegistry dismissCallbackRegistry, DismissCallbackRegistry dismissCallbackRegistry,
StatusBarTouchableRegionManager statusBarTouchableRegionManager) { StatusBarTouchableRegionManager statusBarTouchableRegionManager) {
return new StatusBar( return new StatusBar(
@@ -269,6 +271,7 @@ public interface StatusBarPhoneModule {
keyguardDismissUtil, keyguardDismissUtil,
extensionController, extensionController,
userInfoControllerImpl, userInfoControllerImpl,
phoneStatusBarPolicy,
dismissCallbackRegistry, dismissCallbackRegistry,
statusBarTouchableRegionManager); statusBarTouchableRegionManager);
} }

View File

@@ -0,0 +1,40 @@
/*
* Copyright (C) 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.systemui.util.time;
import android.app.ActivityManager;
import android.content.Context;
import android.text.format.DateFormat;
import javax.inject.Inject;
/**
* Instantiable wrapper around {@link DateFormat}.
*/
public class DateFormatUtil {
private final Context mContext;
@Inject
public DateFormatUtil(Context context) {
mContext = context;
}
/** Returns true if the phone is in 24 hour format. */
public boolean is24HourFormat() {
return DateFormat.is24HourFormat(mContext, ActivityManager.getCurrentUser());
}
}

View File

@@ -247,6 +247,7 @@ public class StatusBarTest extends SysuiTestCase {
@Mock private KeyguardDismissUtil mKeyguardDismissUtil; @Mock private KeyguardDismissUtil mKeyguardDismissUtil;
@Mock private ExtensionController mExtensionController; @Mock private ExtensionController mExtensionController;
@Mock private UserInfoControllerImpl mUserInfoControllerImpl; @Mock private UserInfoControllerImpl mUserInfoControllerImpl;
@Mock private PhoneStatusBarPolicy mPhoneStatusBarPolicy;
private ShadeController mShadeController; private ShadeController mShadeController;
private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock()); private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
private InitController mInitController = new InitController(); private InitController mInitController = new InitController();
@@ -400,6 +401,7 @@ public class StatusBarTest extends SysuiTestCase {
mKeyguardDismissUtil, mKeyguardDismissUtil,
mExtensionController, mExtensionController,
mUserInfoControllerImpl, mUserInfoControllerImpl,
mPhoneStatusBarPolicy,
mDismissCallbackRegistry, mDismissCallbackRegistry,
mStatusBarTouchableRegionManager); mStatusBarTouchableRegionManager);