Loading packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java +26 −12 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ import androidx.slice.builders.ListBuilder.RowBuilder; import androidx.slice.builders.SliceAction; import com.android.internal.annotations.VisibleForTesting; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.systemui.R; import com.android.systemui.statusbar.policy.NextAlarmController; import com.android.systemui.statusbar.policy.NextAlarmControllerImpl; Loading @@ -49,6 +51,7 @@ import com.android.systemui.statusbar.policy.ZenModeControllerImpl; import java.util.Date; import java.util.Locale; import java.util.TimeZone; import java.util.concurrent.TimeUnit; /** Loading Loading @@ -100,18 +103,25 @@ public class KeyguardSliceProvider extends SliceProvider implements @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if (Intent.ACTION_TIME_TICK.equals(action) || Intent.ACTION_DATE_CHANGED.equals(action) || Intent.ACTION_TIME_CHANGED.equals(action) || Intent.ACTION_TIMEZONE_CHANGED.equals(action) || Intent.ACTION_LOCALE_CHANGED.equals(action)) { if (Intent.ACTION_LOCALE_CHANGED.equals(action) || Intent.ACTION_TIMEZONE_CHANGED.equals(action)) { // need to get a fresh date format if (Intent.ACTION_DATE_CHANGED.equals(action)) { mHandler.post(KeyguardSliceProvider.this::updateClock); } else if (Intent.ACTION_LOCALE_CHANGED.equals(action)) { mHandler.post(KeyguardSliceProvider.this::cleanDateFormat); } } }; @VisibleForTesting final KeyguardUpdateMonitorCallback mKeyguardUpdateMonitorCallback = new KeyguardUpdateMonitorCallback() { @Override public void onTimeChanged() { mHandler.post(KeyguardSliceProvider.this::updateClock); } @Override public void onTimeZoneChanged(TimeZone timeZone) { mHandler.post(KeyguardSliceProvider.this::cleanDateFormat); } }; Loading Loading @@ -250,11 +260,10 @@ public class KeyguardSliceProvider extends SliceProvider implements IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_DATE_CHANGED); filter.addAction(Intent.ACTION_TIME_CHANGED); filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); filter.addAction(Intent.ACTION_LOCALE_CHANGED); getContext().registerReceiver(mIntentReceiver, filter, null /* permission*/, null /* scheduler */); getKeyguardUpdateMonitor().registerCallback(mKeyguardUpdateMonitorCallback); mRegistered = true; } Loading Loading @@ -300,4 +309,9 @@ public class KeyguardSliceProvider extends SliceProvider implements } updateNextAlarm(); } @VisibleForTesting protected KeyguardUpdateMonitor getKeyguardUpdateMonitor() { return KeyguardUpdateMonitor.getInstance(getContext()); } } packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +10 −18 Original line number Diff line number Diff line Loading @@ -19,10 +19,7 @@ package com.android.systemui.statusbar; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.app.admin.DevicePolicyManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.res.ColorStateList; import android.content.res.Resources; import android.graphics.Color; Loading @@ -35,7 +32,6 @@ import android.os.Handler; import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.os.UserManager; import android.text.TextUtils; import android.text.format.Formatter; Loading Loading @@ -152,10 +148,7 @@ public class KeyguardIndicationController implements StateListener { private void registerCallbacks(KeyguardUpdateMonitor monitor) { monitor.registerCallback(getKeyguardCallback()); mContext.registerReceiverAsUser(mTickReceiver, UserHandle.SYSTEM, new IntentFilter(Intent.ACTION_TIME_TICK), null, Dependency.get(Dependency.TIME_TICK_HANDLER)); KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mTickReceiver); Dependency.get(StatusBarStateController.class).addCallback(this); } Loading @@ -166,7 +159,7 @@ public class KeyguardIndicationController implements StateListener { * //TODO: This can probably be converted to a fragment and not have to be manually recreated */ public void destroy() { mContext.unregisterReceiver(mTickReceiver); KeyguardUpdateMonitor.getInstance(mContext).removeCallback(mTickReceiver); Dependency.get(StatusBarStateController.class).removeCallback(this); } Loading Loading @@ -477,14 +470,13 @@ public class KeyguardIndicationController implements StateListener { mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; } private final BroadcastReceiver mTickReceiver = new BroadcastReceiver() { private final KeyguardUpdateMonitorCallback mTickReceiver = new KeyguardUpdateMonitorCallback() { @Override public void onReceive(Context context, Intent intent) { mHandler.post(() -> { public void onTimeChanged() { if (mVisible) { updateIndication(false); updateIndication(false /* animate */); } }); } }; Loading packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java +9 −3 Original line number Diff line number Diff line Loading @@ -19,13 +19,13 @@ package com.android.systemui.keyguard; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import android.app.AlarmManager; import android.content.ContentResolver; import android.content.Intent; import android.net.Uri; import android.provider.Settings; import android.support.test.filters.SmallTest; Loading @@ -40,6 +40,7 @@ import androidx.slice.SliceSpecs; import androidx.slice.builders.ListBuilder; import androidx.slice.core.SliceQuery; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.SysuiTestCase; import org.junit.Assert; Loading Loading @@ -91,7 +92,7 @@ public class KeyguardSliceProviderTest extends SysuiTestCase { @Test public void cleansDateFormat() { mProvider.mIntentReceiver.onReceive(getContext(), new Intent(Intent.ACTION_TIMEZONE_CHANGED)); mProvider.mKeyguardUpdateMonitorCallback.onTimeZoneChanged(null); TestableLooper.get(this).processAllMessages(); Assert.assertEquals("Date format should have been cleaned.", 1 /* expected */, mProvider.mCleanDateFormatInvokations); Loading @@ -99,7 +100,7 @@ public class KeyguardSliceProviderTest extends SysuiTestCase { @Test public void updatesClock() { mProvider.mIntentReceiver.onReceive(getContext(), new Intent(Intent.ACTION_TIME_TICK)); mProvider.mKeyguardUpdateMonitorCallback.onTimeChanged(); TestableLooper.get(this).processAllMessages(); verify(mContentResolver).notifyChange(eq(mProvider.getUri()), eq(null)); } Loading Loading @@ -170,6 +171,11 @@ public class KeyguardSliceProviderTest extends SysuiTestCase { mCleanDateFormatInvokations++; } @Override public KeyguardUpdateMonitor getKeyguardUpdateMonitor() { return mock(KeyguardUpdateMonitor.class); } @Override protected String getFormattedDate() { return super.getFormattedDate() + mCounter++; Loading Loading
packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java +26 −12 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ import androidx.slice.builders.ListBuilder.RowBuilder; import androidx.slice.builders.SliceAction; import com.android.internal.annotations.VisibleForTesting; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.systemui.R; import com.android.systemui.statusbar.policy.NextAlarmController; import com.android.systemui.statusbar.policy.NextAlarmControllerImpl; Loading @@ -49,6 +51,7 @@ import com.android.systemui.statusbar.policy.ZenModeControllerImpl; import java.util.Date; import java.util.Locale; import java.util.TimeZone; import java.util.concurrent.TimeUnit; /** Loading Loading @@ -100,18 +103,25 @@ public class KeyguardSliceProvider extends SliceProvider implements @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if (Intent.ACTION_TIME_TICK.equals(action) || Intent.ACTION_DATE_CHANGED.equals(action) || Intent.ACTION_TIME_CHANGED.equals(action) || Intent.ACTION_TIMEZONE_CHANGED.equals(action) || Intent.ACTION_LOCALE_CHANGED.equals(action)) { if (Intent.ACTION_LOCALE_CHANGED.equals(action) || Intent.ACTION_TIMEZONE_CHANGED.equals(action)) { // need to get a fresh date format if (Intent.ACTION_DATE_CHANGED.equals(action)) { mHandler.post(KeyguardSliceProvider.this::updateClock); } else if (Intent.ACTION_LOCALE_CHANGED.equals(action)) { mHandler.post(KeyguardSliceProvider.this::cleanDateFormat); } } }; @VisibleForTesting final KeyguardUpdateMonitorCallback mKeyguardUpdateMonitorCallback = new KeyguardUpdateMonitorCallback() { @Override public void onTimeChanged() { mHandler.post(KeyguardSliceProvider.this::updateClock); } @Override public void onTimeZoneChanged(TimeZone timeZone) { mHandler.post(KeyguardSliceProvider.this::cleanDateFormat); } }; Loading Loading @@ -250,11 +260,10 @@ public class KeyguardSliceProvider extends SliceProvider implements IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_DATE_CHANGED); filter.addAction(Intent.ACTION_TIME_CHANGED); filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); filter.addAction(Intent.ACTION_LOCALE_CHANGED); getContext().registerReceiver(mIntentReceiver, filter, null /* permission*/, null /* scheduler */); getKeyguardUpdateMonitor().registerCallback(mKeyguardUpdateMonitorCallback); mRegistered = true; } Loading Loading @@ -300,4 +309,9 @@ public class KeyguardSliceProvider extends SliceProvider implements } updateNextAlarm(); } @VisibleForTesting protected KeyguardUpdateMonitor getKeyguardUpdateMonitor() { return KeyguardUpdateMonitor.getInstance(getContext()); } }
packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +10 −18 Original line number Diff line number Diff line Loading @@ -19,10 +19,7 @@ package com.android.systemui.statusbar; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.app.admin.DevicePolicyManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.res.ColorStateList; import android.content.res.Resources; import android.graphics.Color; Loading @@ -35,7 +32,6 @@ import android.os.Handler; import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.os.UserManager; import android.text.TextUtils; import android.text.format.Formatter; Loading Loading @@ -152,10 +148,7 @@ public class KeyguardIndicationController implements StateListener { private void registerCallbacks(KeyguardUpdateMonitor monitor) { monitor.registerCallback(getKeyguardCallback()); mContext.registerReceiverAsUser(mTickReceiver, UserHandle.SYSTEM, new IntentFilter(Intent.ACTION_TIME_TICK), null, Dependency.get(Dependency.TIME_TICK_HANDLER)); KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mTickReceiver); Dependency.get(StatusBarStateController.class).addCallback(this); } Loading @@ -166,7 +159,7 @@ public class KeyguardIndicationController implements StateListener { * //TODO: This can probably be converted to a fragment and not have to be manually recreated */ public void destroy() { mContext.unregisterReceiver(mTickReceiver); KeyguardUpdateMonitor.getInstance(mContext).removeCallback(mTickReceiver); Dependency.get(StatusBarStateController.class).removeCallback(this); } Loading Loading @@ -477,14 +470,13 @@ public class KeyguardIndicationController implements StateListener { mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; } private final BroadcastReceiver mTickReceiver = new BroadcastReceiver() { private final KeyguardUpdateMonitorCallback mTickReceiver = new KeyguardUpdateMonitorCallback() { @Override public void onReceive(Context context, Intent intent) { mHandler.post(() -> { public void onTimeChanged() { if (mVisible) { updateIndication(false); updateIndication(false /* animate */); } }); } }; Loading
packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java +9 −3 Original line number Diff line number Diff line Loading @@ -19,13 +19,13 @@ package com.android.systemui.keyguard; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import android.app.AlarmManager; import android.content.ContentResolver; import android.content.Intent; import android.net.Uri; import android.provider.Settings; import android.support.test.filters.SmallTest; Loading @@ -40,6 +40,7 @@ import androidx.slice.SliceSpecs; import androidx.slice.builders.ListBuilder; import androidx.slice.core.SliceQuery; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.SysuiTestCase; import org.junit.Assert; Loading Loading @@ -91,7 +92,7 @@ public class KeyguardSliceProviderTest extends SysuiTestCase { @Test public void cleansDateFormat() { mProvider.mIntentReceiver.onReceive(getContext(), new Intent(Intent.ACTION_TIMEZONE_CHANGED)); mProvider.mKeyguardUpdateMonitorCallback.onTimeZoneChanged(null); TestableLooper.get(this).processAllMessages(); Assert.assertEquals("Date format should have been cleaned.", 1 /* expected */, mProvider.mCleanDateFormatInvokations); Loading @@ -99,7 +100,7 @@ public class KeyguardSliceProviderTest extends SysuiTestCase { @Test public void updatesClock() { mProvider.mIntentReceiver.onReceive(getContext(), new Intent(Intent.ACTION_TIME_TICK)); mProvider.mKeyguardUpdateMonitorCallback.onTimeChanged(); TestableLooper.get(this).processAllMessages(); verify(mContentResolver).notifyChange(eq(mProvider.getUri()), eq(null)); } Loading Loading @@ -170,6 +171,11 @@ public class KeyguardSliceProviderTest extends SysuiTestCase { mCleanDateFormatInvokations++; } @Override public KeyguardUpdateMonitor getKeyguardUpdateMonitor() { return mock(KeyguardUpdateMonitor.class); } @Override protected String getFormattedDate() { return super.getFormattedDate() + mCounter++; Loading