Merge "Remove ContentResolver binder call from UI thread" into udc-qpr-dev am: 8cc0555408
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23899866 Change-Id: I5153f62f247b440943486880888f0ebd21791f72 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -50,6 +50,7 @@ import com.android.keyguard.KeyguardUpdateMonitor;
|
|||||||
import com.android.keyguard.KeyguardUpdateMonitorCallback;
|
import com.android.keyguard.KeyguardUpdateMonitorCallback;
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.SystemUIAppComponentFactoryBase;
|
import com.android.systemui.SystemUIAppComponentFactoryBase;
|
||||||
|
import com.android.systemui.dagger.qualifiers.Background;
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||||
import com.android.systemui.settings.UserTracker;
|
import com.android.systemui.settings.UserTracker;
|
||||||
import com.android.systemui.statusbar.NotificationMediaManager;
|
import com.android.systemui.statusbar.NotificationMediaManager;
|
||||||
@@ -151,6 +152,9 @@ public class KeyguardSliceProvider extends SliceProvider implements
|
|||||||
private SystemUIAppComponentFactoryBase.ContextAvailableCallback mContextAvailableCallback;
|
private SystemUIAppComponentFactoryBase.ContextAvailableCallback mContextAvailableCallback;
|
||||||
@Inject
|
@Inject
|
||||||
WakeLockLogger mWakeLockLogger;
|
WakeLockLogger mWakeLockLogger;
|
||||||
|
@Inject
|
||||||
|
@Background
|
||||||
|
Handler mBgHandler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Receiver responsible for time ticking and updating the date format.
|
* Receiver responsible for time ticking and updating the date format.
|
||||||
@@ -502,7 +506,7 @@ public class KeyguardSliceProvider extends SliceProvider implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void notifyChange() {
|
protected void notifyChange() {
|
||||||
mContentResolver.notifyChange(mSliceUri, null /* observer */);
|
mBgHandler.post(() -> mContentResolver.notifyChange(mSliceUri, null /* observer */));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ package com.android.systemui.keyguard;
|
|||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyString;
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
|
import static org.mockito.Mockito.clearInvocations;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.reset;
|
import static org.mockito.Mockito.reset;
|
||||||
@@ -31,6 +32,7 @@ import android.content.ContentResolver;
|
|||||||
import android.media.MediaMetadata;
|
import android.media.MediaMetadata;
|
||||||
import android.media.session.PlaybackState;
|
import android.media.session.PlaybackState;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import android.os.Handler;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.testing.AndroidTestingRunner;
|
import android.testing.AndroidTestingRunner;
|
||||||
import android.testing.TestableLooper;
|
import android.testing.TestableLooper;
|
||||||
@@ -166,6 +168,7 @@ public class KeyguardSliceProviderTest extends SysuiTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updatesClock() {
|
public void updatesClock() {
|
||||||
|
clearInvocations(mContentResolver);
|
||||||
mProvider.mKeyguardUpdateMonitorCallback.onTimeChanged();
|
mProvider.mKeyguardUpdateMonitorCallback.onTimeChanged();
|
||||||
TestableLooper.get(this).processAllMessages();
|
TestableLooper.get(this).processAllMessages();
|
||||||
verify(mContentResolver).notifyChange(eq(mProvider.getUri()), eq(null));
|
verify(mContentResolver).notifyChange(eq(mProvider.getUri()), eq(null));
|
||||||
@@ -217,11 +220,13 @@ public class KeyguardSliceProviderTest extends SysuiTestCase {
|
|||||||
reset(mContentResolver);
|
reset(mContentResolver);
|
||||||
mProvider.onPrimaryMetadataOrStateChanged(mock(MediaMetadata.class),
|
mProvider.onPrimaryMetadataOrStateChanged(mock(MediaMetadata.class),
|
||||||
PlaybackState.STATE_PLAYING);
|
PlaybackState.STATE_PLAYING);
|
||||||
|
TestableLooper.get(this).processAllMessages();
|
||||||
verify(mContentResolver).notifyChange(eq(mProvider.getUri()), eq(null));
|
verify(mContentResolver).notifyChange(eq(mProvider.getUri()), eq(null));
|
||||||
|
|
||||||
// Hides after waking up
|
// Hides after waking up
|
||||||
reset(mContentResolver);
|
reset(mContentResolver);
|
||||||
mProvider.onDozingChanged(false);
|
mProvider.onDozingChanged(false);
|
||||||
|
TestableLooper.get(this).processAllMessages();
|
||||||
verify(mContentResolver).notifyChange(eq(mProvider.getUri()), eq(null));
|
verify(mContentResolver).notifyChange(eq(mProvider.getUri()), eq(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,6 +236,7 @@ public class KeyguardSliceProviderTest extends SysuiTestCase {
|
|||||||
mProvider.onPrimaryMetadataOrStateChanged(mock(MediaMetadata.class),
|
mProvider.onPrimaryMetadataOrStateChanged(mock(MediaMetadata.class),
|
||||||
PlaybackState.STATE_PLAYING);
|
PlaybackState.STATE_PLAYING);
|
||||||
reset(mContentResolver);
|
reset(mContentResolver);
|
||||||
|
TestableLooper.get(this).processAllMessages();
|
||||||
// Show media when dozing
|
// Show media when dozing
|
||||||
mProvider.onDozingChanged(true);
|
mProvider.onDozingChanged(true);
|
||||||
verify(mContentResolver).notifyChange(eq(mProvider.getUri()), eq(null));
|
verify(mContentResolver).notifyChange(eq(mProvider.getUri()), eq(null));
|
||||||
@@ -272,6 +278,8 @@ public class KeyguardSliceProviderTest extends SysuiTestCase {
|
|||||||
mMediaManager = KeyguardSliceProviderTest.this.mNotificationMediaManager;
|
mMediaManager = KeyguardSliceProviderTest.this.mNotificationMediaManager;
|
||||||
mKeyguardUpdateMonitor = KeyguardSliceProviderTest.this.mKeyguardUpdateMonitor;
|
mKeyguardUpdateMonitor = KeyguardSliceProviderTest.this.mKeyguardUpdateMonitor;
|
||||||
mUserTracker = KeyguardSliceProviderTest.this.mUserTracker;
|
mUserTracker = KeyguardSliceProviderTest.this.mUserTracker;
|
||||||
|
mBgHandler =
|
||||||
|
new Handler(TestableLooper.get(KeyguardSliceProviderTest.this).getLooper());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user