Merge "Check system user is running process for dream logic." into tm-qpr-dev
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user