Merge "Check system user is running process for dream logic." into tm-qpr-dev

This commit is contained in:
Bryce Lee
2023-02-22 00:49:47 +00:00
committed by Android (Google) Code Review
4 changed files with 24 additions and 31 deletions

View File

@@ -29,7 +29,7 @@ import com.android.systemui.dreams.DreamOverlayNotificationCountProvider;
import com.android.systemui.dreams.DreamOverlayService; import com.android.systemui.dreams.DreamOverlayService;
import com.android.systemui.dreams.complication.dagger.RegisteredComplicationsModule; import com.android.systemui.dreams.complication.dagger.RegisteredComplicationsModule;
import com.android.systemui.dreams.touch.scrim.dagger.ScrimModule; import com.android.systemui.dreams.touch.scrim.dagger.ScrimModule;
import com.android.systemui.process.condition.UserProcessCondition; import com.android.systemui.process.condition.SystemProcessCondition;
import com.android.systemui.shared.condition.Condition; import com.android.systemui.shared.condition.Condition;
import com.android.systemui.shared.condition.Monitor; import com.android.systemui.shared.condition.Monitor;
@@ -126,7 +126,7 @@ public interface DreamModule {
@Binds @Binds
@IntoSet @IntoSet
@Named(DREAM_PRETEXT_CONDITIONS) @Named(DREAM_PRETEXT_CONDITIONS)
Condition bindsUserProcessCondition(UserProcessCondition condition); Condition bindSystemProcessCondition(SystemProcessCondition condition);
/** */ /** */
@Provides @Provides

View File

@@ -26,7 +26,10 @@ public class ProcessWrapper {
@Inject @Inject
public ProcessWrapper() {} public ProcessWrapper() {}
public int getUserHandleIdentifier() { /**
return android.os.Process.myUserHandle().getIdentifier(); * Returns {@code true} if System User is running the current process.
*/
public boolean isSystemUser() {
return android.os.Process.myUserHandle().isSystem();
} }
} }

View File

@@ -17,29 +17,26 @@
package com.android.systemui.process.condition; package com.android.systemui.process.condition;
import com.android.systemui.process.ProcessWrapper; import com.android.systemui.process.ProcessWrapper;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shared.condition.Condition; import com.android.systemui.shared.condition.Condition;
import javax.inject.Inject; import javax.inject.Inject;
/** /**
* {@link UserProcessCondition} provides a signal when the process handle belongs to the current * {@link SystemProcessCondition} checks to make sure the current process is being ran by the
* user. * System User.
*/ */
public class UserProcessCondition extends Condition { public class SystemProcessCondition extends Condition {
private final ProcessWrapper mProcessWrapper; private final ProcessWrapper mProcessWrapper;
private final UserTracker mUserTracker;
@Inject @Inject
public UserProcessCondition(ProcessWrapper processWrapper, UserTracker userTracker) { public SystemProcessCondition(ProcessWrapper processWrapper) {
super();
mProcessWrapper = processWrapper; mProcessWrapper = processWrapper;
mUserTracker = userTracker;
} }
@Override @Override
protected void start() { protected void start() {
updateCondition(mUserTracker.getUserId() updateCondition(mProcessWrapper.isSystemUser());
== mProcessWrapper.getUserHandleIdentifier());
} }
@Override @Override

View File

@@ -26,7 +26,6 @@ import androidx.test.filters.SmallTest;
import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCase;
import com.android.systemui.process.ProcessWrapper; import com.android.systemui.process.ProcessWrapper;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shared.condition.Condition; import com.android.systemui.shared.condition.Condition;
import com.android.systemui.shared.condition.Monitor; import com.android.systemui.shared.condition.Monitor;
import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.concurrency.FakeExecutor;
@@ -41,10 +40,7 @@ import org.mockito.MockitoAnnotations;
@RunWith(AndroidTestingRunner.class) @RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper @TestableLooper.RunWithLooper
@SmallTest @SmallTest
public class UserProcessConditionTest extends SysuiTestCase { public class SystemProcessConditionTest extends SysuiTestCase {
@Mock
UserTracker mUserTracker;
@Mock @Mock
ProcessWrapper mProcessWrapper; ProcessWrapper mProcessWrapper;
@@ -59,15 +55,14 @@ public class UserProcessConditionTest extends SysuiTestCase {
} }
/** /**
* Verifies condition reports false when tracker reports a different user id than the * Verifies condition reports false when tracker reports the process is being ran by the
* identifier from the process handle. * system user.
*/ */
@Test @Test
public void testConditionFailsWithDifferentIds() { public void testConditionFailsWithNonSystemProcess() {
final Condition condition = new UserProcessCondition(mProcessWrapper, mUserTracker); final Condition condition = new SystemProcessCondition(mProcessWrapper);
when(mProcessWrapper.getUserHandleIdentifier()).thenReturn(0); when(mProcessWrapper.isSystemUser()).thenReturn(false);
when(mUserTracker.getUserId()).thenReturn(1);
final Monitor monitor = new Monitor(mExecutor); final Monitor monitor = new Monitor(mExecutor);
@@ -81,15 +76,14 @@ public class UserProcessConditionTest extends SysuiTestCase {
} }
/** /**
* Verifies condition reports false when tracker reports a different user id than the * Verifies condition reports true when tracker reports the process is being ran by the
* identifier from the process handle. * system user.
*/ */
@Test @Test
public void testConditionSucceedsWithSameIds() { public void testConditionSucceedsWithSystemProcess() {
final Condition condition = new UserProcessCondition(mProcessWrapper, mUserTracker); final Condition condition = new SystemProcessCondition(mProcessWrapper);
when(mProcessWrapper.getUserHandleIdentifier()).thenReturn(0); when(mProcessWrapper.isSystemUser()).thenReturn(true);
when(mUserTracker.getUserId()).thenReturn(0);
final Monitor monitor = new Monitor(mExecutor); final Monitor monitor = new Monitor(mExecutor);
@@ -101,5 +95,4 @@ public class UserProcessConditionTest extends SysuiTestCase {
verify(mCallback).onConditionsChanged(true); verify(mCallback).onConditionsChanged(true);
} }
} }