Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa3ed754 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Include slider events from managed profile."

parents 82409585 6c90d8a7
Loading
Loading
Loading
Loading
+22 −3
Original line number Original line Diff line number Diff line
@@ -70,6 +70,8 @@ import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.ArrayList;


import java.util.Deque;
import java.util.Deque;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeUnit;


/**
/**
@@ -225,15 +227,24 @@ public class BrightnessTracker {
     * @return List of recent {@link BrightnessChangeEvent}s
     * @return List of recent {@link BrightnessChangeEvent}s
     */
     */
    public ParceledListSlice<BrightnessChangeEvent> getEvents(int userId, boolean includePackage) {
    public ParceledListSlice<BrightnessChangeEvent> getEvents(int userId, boolean includePackage) {
        // TODO include apps from any managed profiles in the brightness information.
        BrightnessChangeEvent[] events;
        BrightnessChangeEvent[] events;
        synchronized (mEventsLock) {
        synchronized (mEventsLock) {
            events = mEvents.toArray();
            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);
        ArrayList<BrightnessChangeEvent> out = new ArrayList<>(events.length);
        for (int i = 0; i < events.length; ++i) {
        for (int i = 0; i < events.length; ++i) {
            if (events[i].userId == userId) {
            Boolean redact = toRedact.get(events[i].userId);
                if (includePackage) {
            if (redact != null) {
                if (!redact) {
                    out.add(events[i]);
                    out.add(events[i]);
                } else {
                } else {
                    BrightnessChangeEvent event = new BrightnessChangeEvent((events[i]),
                    BrightnessChangeEvent event = new BrightnessChangeEvent((events[i]),
@@ -817,6 +828,14 @@ public class BrightnessTracker {
            return userManager.getUserHandle(userSerialNumber);
            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 {
        public ActivityManager.StackInfo getFocusedStack() throws RemoteException {
            return ActivityManager.getService().getFocusedStackInfo();
            return ActivityManager.getService().getFocusedStackInfo();
        }
        }
+33 −0
Original line number Original line Diff line number Diff line
@@ -338,6 +338,26 @@ public class BrightnessTrackerTest {
        assertFalse(event.isDefaultBrightnessConfig);
        assertFalse(event.isDefaultBrightnessConfig);
        assertEquals(1.0, event.powerBrightnessFactor, FLOAT_DELTA);
        assertEquals(1.0, event.powerBrightnessFactor, FLOAT_DELTA);
        assertFalse(event.isUserSetBrightness);
        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
    @Test
@@ -597,6 +617,7 @@ public class BrightnessTrackerTest {
        Handler mHandler;
        Handler mHandler;
        boolean mIdleScheduled;
        boolean mIdleScheduled;
        boolean mInteractive = true;
        boolean mInteractive = true;
        int[] mProfiles;


        public TestInjector(Handler handler) {
        public TestInjector(Handler handler) {
            mHandler = handler;
            mHandler = handler;
@@ -681,6 +702,15 @@ public class BrightnessTrackerTest {
            return userSerialNumber - 10;
            return userSerialNumber - 10;
        }
        }


        @Override
        public int[] getProfileIds(UserManager userManager, int userId) {
            if (mProfiles != null) {
                return mProfiles;
            } else {
                return new int[]{userId};
            }
        }

        @Override
        @Override
        public ActivityManager.StackInfo getFocusedStack() throws RemoteException {
        public ActivityManager.StackInfo getFocusedStack() throws RemoteException {
            ActivityManager.StackInfo focusedStack = new ActivityManager.StackInfo();
            ActivityManager.StackInfo focusedStack = new ActivityManager.StackInfo();
@@ -689,15 +719,18 @@ public class BrightnessTrackerTest {
            return focusedStack;
            return focusedStack;
        }
        }


        @Override
        public void scheduleIdleJob(Context context) {
        public void scheduleIdleJob(Context context) {
            // Don't actually schedule jobs during unit tests.
            // Don't actually schedule jobs during unit tests.
            mIdleScheduled = true;
            mIdleScheduled = true;
        }
        }


        @Override
        public void cancelIdleJob(Context context) {
        public void cancelIdleJob(Context context) {
            mIdleScheduled = false;
            mIdleScheduled = false;
        }
        }


        @Override
        public boolean isInteractive(Context context) {
        public boolean isInteractive(Context context) {
            return mInteractive;
            return mInteractive;
        }
        }