Loading packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java +11 −1 Original line number Diff line number Diff line Loading @@ -351,7 +351,17 @@ public class DreamBackend { if (cn != null && cn.indexOf('/') < 0) { cn = resolveInfo.serviceInfo.packageName + "/" + cn; } return cn == null ? null : ComponentName.unflattenFromString(cn); // Ensure that the component is from the same package as the dream service. If not, // treat the component as invalid and return null instead. final ComponentName result = cn != null ? ComponentName.unflattenFromString(cn) : null; if (result != null && !result.getPackageName().equals(resolveInfo.serviceInfo.packageName)) { Log.w(TAG, "Inconsistent package name in component: " + result.getPackageName() + ", should be: " + resolveInfo.serviceInfo.packageName); return null; } return result; } private static void logd(String msg, Object... args) { Loading packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java +13 −3 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import com.android.systemui.R; import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.shared.system.SysUiStatsLog; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.ViewController; Loading Loading @@ -221,6 +222,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mSecurityViewFlipperController.reloadColors(); } }; private final DeviceProvisionedController mDeviceProvisionedController; private KeyguardSecurityContainerController(KeyguardSecurityContainer view, AdminSecondaryLockScreenController.Factory adminSecondaryLockScreenControllerFactory, Loading @@ -233,6 +235,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard SecurityCallback securityCallback, KeyguardSecurityViewFlipperController securityViewFlipperController, ConfigurationController configurationController, DeviceProvisionedController deviceProvisionedController, FalsingCollector falsingCollector) { super(view); mLockPatternUtils = lockPatternUtils; Loading @@ -247,6 +250,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mKeyguardSecurityCallback); mConfigurationController = configurationController; mLastOrientation = getResources().getConfiguration().orientation; mDeviceProvisionedController = deviceProvisionedController; mFalsingCollector = falsingCollector; } Loading Loading @@ -426,8 +430,11 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard case SimPuk: // Shortcut for SIM PIN/PUK to go to directly to user's security screen or home SecurityMode securityMode = mSecurityModel.getSecurityMode(targetUserId); if (securityMode == SecurityMode.None && mLockPatternUtils.isLockScreenDisabled( KeyguardUpdateMonitor.getCurrentUser())) { boolean isLockscreenDisabled = mLockPatternUtils.isLockScreenDisabled( KeyguardUpdateMonitor.getCurrentUser()) || !mDeviceProvisionedController.isUserSetup(targetUserId); if (securityMode == SecurityMode.None && isLockscreenDisabled) { finish = true; eventSubtype = BOUNCER_DISMISS_SIM; uiEvent = BouncerUiEvent.BOUNCER_DISMISS_SIM; Loading Loading @@ -625,6 +632,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard private final KeyguardStateController mKeyguardStateController; private final KeyguardSecurityViewFlipperController mSecurityViewFlipperController; private final ConfigurationController mConfigurationController; private final DeviceProvisionedController mDeviceProvisionedController; private final FalsingCollector mFalsingCollector; @Inject Loading @@ -639,6 +647,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard KeyguardStateController keyguardStateController, KeyguardSecurityViewFlipperController securityViewFlipperController, ConfigurationController configurationController, DeviceProvisionedController deviceProvisionedController, FalsingCollector falsingCollector) { mView = view; mAdminSecondaryLockScreenControllerFactory = adminSecondaryLockScreenControllerFactory; Loading @@ -650,6 +659,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mKeyguardStateController = keyguardStateController; mSecurityViewFlipperController = securityViewFlipperController; mConfigurationController = configurationController; mDeviceProvisionedController = deviceProvisionedController; mFalsingCollector = falsingCollector; } Loading @@ -659,7 +669,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mAdminSecondaryLockScreenControllerFactory, mLockPatternUtils, mKeyguardUpdateMonitor, mKeyguardSecurityModel, mMetricsLogger, mUiEventLogger, mKeyguardStateController, securityCallback, mSecurityViewFlipperController, mConfigurationController, mFalsingCollector); mConfigurationController, mDeviceProvisionedController, mFalsingCollector); } } Loading packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java +28 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import javax.inject.Inject; Loading Loading @@ -144,6 +145,10 @@ public class AppOpsControllerImpl extends BroadcastReceiver implements AppOpsCon protected void setListening(boolean listening) { mListening = listening; if (listening) { // System UI could be restarted while ops are active, so fetch the currently active ops // once System UI starts listening again. fetchCurrentActiveOps(); mAppOps.startWatchingActive(OPS, this); mAppOps.startWatchingNoted(OPS, this); mAudioManager.registerAudioRecordingCallback(mAudioRecordingCallback, mBGHandler); Loading Loading @@ -176,6 +181,29 @@ public class AppOpsControllerImpl extends BroadcastReceiver implements AppOpsCon } } private void fetchCurrentActiveOps() { List<AppOpsManager.PackageOps> packageOps = mAppOps.getPackagesForOps(OPS); for (AppOpsManager.PackageOps op : packageOps) { for (AppOpsManager.OpEntry entry : op.getOps()) { for (Map.Entry<String, AppOpsManager.AttributedOpEntry> attributedOpEntry : entry.getAttributedOpEntries().entrySet()) { if (attributedOpEntry.getValue().isRunning()) { onOpActiveChanged( entry.getOpStr(), op.getUid(), op.getPackageName(), /* attributionTag= */ attributedOpEntry.getKey(), /* active= */ true, // AppOpsManager doesn't have a way to fetch attribution flags or // chain ID given an op entry, so default them to none. AppOpsManager.ATTRIBUTION_FLAGS_NONE, AppOpsManager.ATTRIBUTION_CHAIN_ID_NONE); } } } } } /** * Adds a callback that will get notifified when an AppOp of the type the controller tracks * changes Loading packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt +3 −2 Original line number Diff line number Diff line Loading @@ -93,8 +93,9 @@ class SystemStatusAnimationScheduler @Inject constructor( } fun onStatusEvent(event: StatusEvent) { // Ignore any updates until the system is up and running if (isTooEarly() || !isImmersiveIndicatorEnabled()) { // Ignore any updates until the system is up and running. However, for important events that // request to be force visible (like privacy), ignore whether it's too early. if ((isTooEarly() && !event.forceVisible) || !isImmersiveIndicatorEnabled()) { return } Loading packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.java +2 −1 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.KeyguardStateController; import org.junit.Before; Loading Loading @@ -143,7 +144,7 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { mView, mAdminSecondaryLockScreenControllerFactory, mLockPatternUtils, mKeyguardUpdateMonitor, mKeyguardSecurityModel, mMetricsLogger, mUiEventLogger, mKeyguardStateController, mKeyguardSecurityViewFlipperController, mConfigurationController, mFalsingCollector) mConfigurationController, mock(DeviceProvisionedController.class)), mFalsingCollector) .create(mSecurityCallback); } Loading Loading
packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java +11 −1 Original line number Diff line number Diff line Loading @@ -351,7 +351,17 @@ public class DreamBackend { if (cn != null && cn.indexOf('/') < 0) { cn = resolveInfo.serviceInfo.packageName + "/" + cn; } return cn == null ? null : ComponentName.unflattenFromString(cn); // Ensure that the component is from the same package as the dream service. If not, // treat the component as invalid and return null instead. final ComponentName result = cn != null ? ComponentName.unflattenFromString(cn) : null; if (result != null && !result.getPackageName().equals(resolveInfo.serviceInfo.packageName)) { Log.w(TAG, "Inconsistent package name in component: " + result.getPackageName() + ", should be: " + resolveInfo.serviceInfo.packageName); return null; } return result; } private static void logd(String msg, Object... args) { Loading
packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java +13 −3 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import com.android.systemui.R; import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.shared.system.SysUiStatsLog; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.ViewController; Loading Loading @@ -221,6 +222,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mSecurityViewFlipperController.reloadColors(); } }; private final DeviceProvisionedController mDeviceProvisionedController; private KeyguardSecurityContainerController(KeyguardSecurityContainer view, AdminSecondaryLockScreenController.Factory adminSecondaryLockScreenControllerFactory, Loading @@ -233,6 +235,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard SecurityCallback securityCallback, KeyguardSecurityViewFlipperController securityViewFlipperController, ConfigurationController configurationController, DeviceProvisionedController deviceProvisionedController, FalsingCollector falsingCollector) { super(view); mLockPatternUtils = lockPatternUtils; Loading @@ -247,6 +250,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mKeyguardSecurityCallback); mConfigurationController = configurationController; mLastOrientation = getResources().getConfiguration().orientation; mDeviceProvisionedController = deviceProvisionedController; mFalsingCollector = falsingCollector; } Loading Loading @@ -426,8 +430,11 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard case SimPuk: // Shortcut for SIM PIN/PUK to go to directly to user's security screen or home SecurityMode securityMode = mSecurityModel.getSecurityMode(targetUserId); if (securityMode == SecurityMode.None && mLockPatternUtils.isLockScreenDisabled( KeyguardUpdateMonitor.getCurrentUser())) { boolean isLockscreenDisabled = mLockPatternUtils.isLockScreenDisabled( KeyguardUpdateMonitor.getCurrentUser()) || !mDeviceProvisionedController.isUserSetup(targetUserId); if (securityMode == SecurityMode.None && isLockscreenDisabled) { finish = true; eventSubtype = BOUNCER_DISMISS_SIM; uiEvent = BouncerUiEvent.BOUNCER_DISMISS_SIM; Loading Loading @@ -625,6 +632,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard private final KeyguardStateController mKeyguardStateController; private final KeyguardSecurityViewFlipperController mSecurityViewFlipperController; private final ConfigurationController mConfigurationController; private final DeviceProvisionedController mDeviceProvisionedController; private final FalsingCollector mFalsingCollector; @Inject Loading @@ -639,6 +647,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard KeyguardStateController keyguardStateController, KeyguardSecurityViewFlipperController securityViewFlipperController, ConfigurationController configurationController, DeviceProvisionedController deviceProvisionedController, FalsingCollector falsingCollector) { mView = view; mAdminSecondaryLockScreenControllerFactory = adminSecondaryLockScreenControllerFactory; Loading @@ -650,6 +659,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mKeyguardStateController = keyguardStateController; mSecurityViewFlipperController = securityViewFlipperController; mConfigurationController = configurationController; mDeviceProvisionedController = deviceProvisionedController; mFalsingCollector = falsingCollector; } Loading @@ -659,7 +669,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mAdminSecondaryLockScreenControllerFactory, mLockPatternUtils, mKeyguardUpdateMonitor, mKeyguardSecurityModel, mMetricsLogger, mUiEventLogger, mKeyguardStateController, securityCallback, mSecurityViewFlipperController, mConfigurationController, mFalsingCollector); mConfigurationController, mDeviceProvisionedController, mFalsingCollector); } } Loading
packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java +28 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import javax.inject.Inject; Loading Loading @@ -144,6 +145,10 @@ public class AppOpsControllerImpl extends BroadcastReceiver implements AppOpsCon protected void setListening(boolean listening) { mListening = listening; if (listening) { // System UI could be restarted while ops are active, so fetch the currently active ops // once System UI starts listening again. fetchCurrentActiveOps(); mAppOps.startWatchingActive(OPS, this); mAppOps.startWatchingNoted(OPS, this); mAudioManager.registerAudioRecordingCallback(mAudioRecordingCallback, mBGHandler); Loading Loading @@ -176,6 +181,29 @@ public class AppOpsControllerImpl extends BroadcastReceiver implements AppOpsCon } } private void fetchCurrentActiveOps() { List<AppOpsManager.PackageOps> packageOps = mAppOps.getPackagesForOps(OPS); for (AppOpsManager.PackageOps op : packageOps) { for (AppOpsManager.OpEntry entry : op.getOps()) { for (Map.Entry<String, AppOpsManager.AttributedOpEntry> attributedOpEntry : entry.getAttributedOpEntries().entrySet()) { if (attributedOpEntry.getValue().isRunning()) { onOpActiveChanged( entry.getOpStr(), op.getUid(), op.getPackageName(), /* attributionTag= */ attributedOpEntry.getKey(), /* active= */ true, // AppOpsManager doesn't have a way to fetch attribution flags or // chain ID given an op entry, so default them to none. AppOpsManager.ATTRIBUTION_FLAGS_NONE, AppOpsManager.ATTRIBUTION_CHAIN_ID_NONE); } } } } } /** * Adds a callback that will get notifified when an AppOp of the type the controller tracks * changes Loading
packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt +3 −2 Original line number Diff line number Diff line Loading @@ -93,8 +93,9 @@ class SystemStatusAnimationScheduler @Inject constructor( } fun onStatusEvent(event: StatusEvent) { // Ignore any updates until the system is up and running if (isTooEarly() || !isImmersiveIndicatorEnabled()) { // Ignore any updates until the system is up and running. However, for important events that // request to be force visible (like privacy), ignore whether it's too early. if ((isTooEarly() && !event.forceVisible) || !isImmersiveIndicatorEnabled()) { return } Loading
packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.java +2 −1 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.KeyguardStateController; import org.junit.Before; Loading Loading @@ -143,7 +144,7 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { mView, mAdminSecondaryLockScreenControllerFactory, mLockPatternUtils, mKeyguardUpdateMonitor, mKeyguardSecurityModel, mMetricsLogger, mUiEventLogger, mKeyguardStateController, mKeyguardSecurityViewFlipperController, mConfigurationController, mFalsingCollector) mConfigurationController, mock(DeviceProvisionedController.class)), mFalsingCollector) .create(mSecurityCallback); } Loading