diff options
| author | 2018-05-04 17:42:33 -0700 | |
|---|---|---|
| committer | 2018-05-07 11:33:50 -0700 | |
| commit | 9fedb89f66c6fe5a3019529e68beb495b45d03ab (patch) | |
| tree | ff0b050e8998264ba622b64f2b8d27fb3d6c7eaa | |
| parent | dd0f6709f8efd51ddd77d93653e4d254404e5e5b (diff) | |
Update date during time tick event
Remove extra broadcast action and use existing doze_time_tick alarm to
update slice.
Change-Id: If167c8d81e5f5a67050d7904ce2497c1bdb70e9a
Fixes: 77988364
Test: atest packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewTest.java
Test: atest packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewTest.java
Test: atest packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java
7 files changed, 95 insertions, 32 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java index 30a17a129e41..f066e3401752 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java @@ -57,6 +57,7 @@ import java.util.function.Consumer; import androidx.slice.Slice; import androidx.slice.SliceItem; +import androidx.slice.SliceManager; import androidx.slice.core.SliceQuery; import androidx.slice.widget.ListContent; import androidx.slice.widget.RowContent; @@ -390,6 +391,11 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe } } + public void refresh() { + Slice slice = SliceManager.getInstance(getContext()).bindSlice(mKeyguardSliceUri); + onChanged(slice); + } + public static class Row extends LinearLayout { /** diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java index 454528e4f5f6..f6b5d69b99d3 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java @@ -287,7 +287,12 @@ public class KeyguardStatusView extends GridLayout implements } } - public void refreshTime() { + public void dozeTimeTick() { + refreshTime(); + mKeyguardSlice.refresh(); + } + + private void refreshTime() { mClockView.refresh(); } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java index f867b342c8de..c5e66f9f4f99 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java @@ -79,7 +79,6 @@ public class KeyguardSliceProvider extends SliceProvider implements private DateFormat mDateFormat; private String mLastText; private boolean mRegistered; - private boolean mRegisteredEveryMinute; private String mNextAlarm; private NextAlarmController mNextAlarmController; protected AlarmManager mAlarmManager; @@ -175,7 +174,7 @@ public class KeyguardSliceProvider extends SliceProvider implements mZenModeController = new ZenModeControllerImpl(getContext(), mHandler); mZenModeController.addCallback(this); mDatePattern = getContext().getString(R.string.system_ui_aod_date_pattern); - registerClockUpdate(false /* everyMinute */); + registerClockUpdate(); updateClock(); return true; } @@ -214,22 +213,13 @@ public class KeyguardSliceProvider extends SliceProvider implements /** * Registers a broadcast receiver for clock updates, include date, time zone and manually * changing the date/time via the settings app. - * - * @param everyMinute {@code true} if you also want updates every minute. */ - protected void registerClockUpdate(boolean everyMinute) { + private void registerClockUpdate() { if (mRegistered) { - if (mRegisteredEveryMinute == everyMinute) { - return; - } else { - unregisterClockUpdate(); - } + return; } IntentFilter filter = new IntentFilter(); - if (everyMinute) { - filter.addAction(Intent.ACTION_TIME_TICK); - } filter.addAction(Intent.ACTION_DATE_CHANGED); filter.addAction(Intent.ACTION_TIME_CHANGED); filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); @@ -237,15 +227,6 @@ public class KeyguardSliceProvider extends SliceProvider implements getContext().registerReceiver(mIntentReceiver, filter, null /* permission*/, null /* scheduler */); mRegistered = true; - mRegisteredEveryMinute = everyMinute; - } - - protected void unregisterClockUpdate() { - if (!mRegistered) { - return; - } - getContext().unregisterReceiver(mIntentReceiver); - mRegistered = false; } @VisibleForTesting diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index b650944403cb..b475b64eb201 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -2267,7 +2267,7 @@ public class NotificationPanelView extends PanelView implements } public void onScreenTurningOn() { - mKeyguardStatusView.refreshTime(); + mKeyguardStatusView.dozeTimeTick(); } @Override @@ -2690,7 +2690,7 @@ public class NotificationPanelView extends PanelView implements } public void dozeTimeTick() { - mKeyguardStatusView.refreshTime(); + mKeyguardStatusView.dozeTimeTick(); mKeyguardBottomArea.dozeTimeTick(); if (mDarkAmount > 0) { positionClockAndNotifications(); diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewTest.java index 210764adb4a6..17a4fbc4c1f6 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSliceViewTest.java @@ -90,6 +90,17 @@ public class KeyguardSliceViewTest extends SysuiTestCase { } @Test + public void refresh_replacesSliceContentAndNotifiesListener() { + AtomicBoolean notified = new AtomicBoolean(); + mKeyguardSliceView.setContentChangeListener((hasHeader)-> { + notified.set(true); + }); + mKeyguardSliceView.refresh(); + Assert.assertTrue("Listener should be notified about slice changes.", + notified.get()); + } + + @Test public void getTextColor_whiteTextWhenAOD() { // Set text color to red since the default is white and test would always pass mKeyguardSliceView.setTextColor(Color.RED); diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewTest.java new file mode 100644 index 000000000000..1d8de2fbbcca --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewTest.java @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2018 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.keyguard; + +import static org.mockito.Mockito.verify; + +import android.test.suitebuilder.annotation.SmallTest; +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper.RunWithLooper; +import android.view.LayoutInflater; +import android.widget.TextClock; + +import com.android.systemui.SysuiTestCase; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; + +@SmallTest +@RunWithLooper(setAsMainLooper = true) +@RunWith(AndroidTestingRunner.class) +public class KeyguardStatusViewTest extends SysuiTestCase { + + @Mock + KeyguardSliceView mKeyguardSlice; + @Mock + TextClock mClockView; + @InjectMocks + KeyguardStatusView mKeyguardStatusView; + + @Before + public void setUp() { + LayoutInflater layoutInflater = LayoutInflater.from(getContext()); + mKeyguardStatusView = + (KeyguardStatusView) layoutInflater.inflate(R.layout.keyguard_status_view, null); + org.mockito.MockitoAnnotations.initMocks(this); + } + + @Test + public void dozeTimeTick_updatesSlice() { + mKeyguardStatusView.dozeTimeTick(); + verify(mKeyguardSlice).refresh(); + } + + @Test + public void dozeTimeTick_updatesClock() { + mKeyguardStatusView.dozeTimeTick(); + verify(mClockView).refresh(); + } + +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java index a45e6900ece4..46e2bfbb1431 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java @@ -85,13 +85,6 @@ public class KeyguardSliceProviderTest extends SysuiTestCase { } @Test - public void unregisterClockUpdate() { - mProvider.unregisterClockUpdate(); - Assert.assertFalse("Clock updates should have been unregistered.", - mProvider.isRegistered()); - } - - @Test public void returnsValidSlice() { Slice slice = mProvider.onBindSlice(mProvider.getUri()); SliceItem text = SliceQuery.find(slice, android.app.slice.SliceItem.FORMAT_TEXT, |