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:
Treehugger Robot
2023-07-06 18:38:41 +00:00
committed by Automerger Merge Worker
2 changed files with 13 additions and 1 deletions

View File

@@ -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

View File

@@ -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