Merge "Include slider events from managed profile."
This commit is contained in:
committed by
Android (Google) Code Review
commit
fa3ed75406
@@ -70,6 +70,8 @@ import java.util.ArrayDeque;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import java.util.Deque;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
@@ -225,15 +227,24 @@ public class BrightnessTracker {
|
||||
* @return List of recent {@link BrightnessChangeEvent}s
|
||||
*/
|
||||
public ParceledListSlice<BrightnessChangeEvent> getEvents(int userId, boolean includePackage) {
|
||||
// TODO include apps from any managed profiles in the brightness information.
|
||||
BrightnessChangeEvent[] events;
|
||||
synchronized (mEventsLock) {
|
||||
events = mEvents.toArray();
|
||||
}
|
||||
int[] profiles = mInjector.getProfileIds(mUserManager, userId);
|
||||
Map<Integer, Boolean> toRedact = new HashMap<>();
|
||||
for (int i = 0; i < profiles.length; ++i) {
|
||||
int profileId = profiles[i];
|
||||
// Include slider interactions when a managed profile app is in the
|
||||
// foreground but always redact the package name.
|
||||
boolean redact = (!includePackage) || profileId != userId;
|
||||
toRedact.put(profiles[i], redact);
|
||||
}
|
||||
ArrayList<BrightnessChangeEvent> out = new ArrayList<>(events.length);
|
||||
for (int i = 0; i < events.length; ++i) {
|
||||
if (events[i].userId == userId) {
|
||||
if (includePackage) {
|
||||
Boolean redact = toRedact.get(events[i].userId);
|
||||
if (redact != null) {
|
||||
if (!redact) {
|
||||
out.add(events[i]);
|
||||
} else {
|
||||
BrightnessChangeEvent event = new BrightnessChangeEvent((events[i]),
|
||||
@@ -817,6 +828,14 @@ public class BrightnessTracker {
|
||||
return userManager.getUserHandle(userSerialNumber);
|
||||
}
|
||||
|
||||
public int[] getProfileIds(UserManager userManager, int userId) {
|
||||
if (userManager != null) {
|
||||
return userManager.getProfileIds(userId, false);
|
||||
} else {
|
||||
return new int[]{userId};
|
||||
}
|
||||
}
|
||||
|
||||
public ActivityManager.StackInfo getFocusedStack() throws RemoteException {
|
||||
return ActivityManager.getService().getFocusedStackInfo();
|
||||
}
|
||||
|
||||
@@ -338,6 +338,26 @@ public class BrightnessTrackerTest {
|
||||
assertFalse(event.isDefaultBrightnessConfig);
|
||||
assertEquals(1.0, event.powerBrightnessFactor, FLOAT_DELTA);
|
||||
assertFalse(event.isUserSetBrightness);
|
||||
|
||||
// Pretend user 1 is a profile of user 0.
|
||||
mInjector.mProfiles = new int[]{0, 1};
|
||||
events = tracker.getEvents(0, true).getList();
|
||||
// Both events should now be returned.
|
||||
assertEquals(2, events.size());
|
||||
BrightnessChangeEvent userZeroEvent;
|
||||
BrightnessChangeEvent userOneEvent;
|
||||
if (events.get(0).userId == 0) {
|
||||
userZeroEvent = events.get(0);
|
||||
userOneEvent = events.get(1);
|
||||
} else {
|
||||
userZeroEvent = events.get(1);
|
||||
userOneEvent = events.get(0);
|
||||
}
|
||||
assertEquals(0, userZeroEvent.userId);
|
||||
assertEquals("com.example.app", userZeroEvent.packageName);
|
||||
assertEquals(1, userOneEvent.userId);
|
||||
// Events from user 1 should have the package name redacted
|
||||
assertNull(userOneEvent.packageName);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -597,6 +617,7 @@ public class BrightnessTrackerTest {
|
||||
Handler mHandler;
|
||||
boolean mIdleScheduled;
|
||||
boolean mInteractive = true;
|
||||
int[] mProfiles;
|
||||
|
||||
public TestInjector(Handler handler) {
|
||||
mHandler = handler;
|
||||
@@ -681,6 +702,15 @@ public class BrightnessTrackerTest {
|
||||
return userSerialNumber - 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getProfileIds(UserManager userManager, int userId) {
|
||||
if (mProfiles != null) {
|
||||
return mProfiles;
|
||||
} else {
|
||||
return new int[]{userId};
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActivityManager.StackInfo getFocusedStack() throws RemoteException {
|
||||
ActivityManager.StackInfo focusedStack = new ActivityManager.StackInfo();
|
||||
@@ -689,15 +719,18 @@ public class BrightnessTrackerTest {
|
||||
return focusedStack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void scheduleIdleJob(Context context) {
|
||||
// Don't actually schedule jobs during unit tests.
|
||||
mIdleScheduled = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelIdleJob(Context context) {
|
||||
mIdleScheduled = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInteractive(Context context) {
|
||||
return mInteractive;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user