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

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

Merge "Keep history of standby bucket changes."

parents ce8f9b9f bfc4bf5f
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -106,6 +106,12 @@ public final class UsageEvents implements Parcelable {
         */
        public static final int NOTIFICATION_SEEN = 10;

        /**
         * An event type denoting a change in App Standby Bucket.
         * @hide
         */
        public static final int STANDBY_BUCKET_CHANGED = 11;

        /** @hide */
        public static final int FLAG_IS_PACKAGE_INSTANT_APP = 1 << 0;

@@ -170,6 +176,13 @@ public final class UsageEvents implements Parcelable {
         */
        public String[] mContentAnnotations;

        /**
         * The app standby bucket assigned.
         * Only present for {@link #STANDBY_BUCKET_CHANGED} event types
         * {@hide}
         */
        public int mBucket;

        /** @hide */
        @EventFlags
        public int mFlags;
@@ -189,6 +202,7 @@ public final class UsageEvents implements Parcelable {
            mContentType = orig.mContentType;
            mContentAnnotations = orig.mContentAnnotations;
            mFlags = orig.mFlags;
            mBucket = orig.mBucket;
        }

        /**
@@ -399,6 +413,9 @@ public final class UsageEvents implements Parcelable {
                p.writeString(event.mContentType);
                p.writeStringArray(event.mContentAnnotations);
                break;
            case Event.STANDBY_BUCKET_CHANGED:
                p.writeInt(event.mBucket);
                break;
        }
    }

@@ -442,6 +459,9 @@ public final class UsageEvents implements Parcelable {
                eventOut.mContentType = p.readString();
                eventOut.mContentAnnotations = p.createStringArray();
                break;
            case Event.STANDBY_BUCKET_CHANGED:
                eventOut.mBucket = p.readInt();
                break;
        }
    }

+12 −1
Original line number Diff line number Diff line
@@ -92,6 +92,17 @@ class IntervalStats {
        return false;
    }

    /**
     * Returns whether the event type is one caused by user visible
     * interaction. Excludes those that are internally generated.
     * @param eventType
     * @return
     */
    private boolean isUserVisibleEvent(int eventType) {
        return eventType != UsageEvents.Event.SYSTEM_INTERACTION
                && eventType != UsageEvents.Event.STANDBY_BUCKET_CHANGED;
    }

    void update(String packageName, long timeStamp, int eventType) {
        UsageStats usageStats = getOrCreateUsageStats(packageName);

@@ -109,7 +120,7 @@ class IntervalStats {
            usageStats.mLastEvent = eventType;
        }

        if (eventType != UsageEvents.Event.SYSTEM_INTERACTION) {
        if (isUserVisibleEvent(eventType)) {
            usageStats.mLastTimeUsed = timeStamp;
        }
        usageStats.mEndTimeStamp = timeStamp;
+21 −0
Original line number Diff line number Diff line
@@ -115,6 +115,26 @@ public class UsageStatsService extends SystemService implements

    AppStandbyController mAppStandby;

    private UsageStatsManagerInternal.AppIdleStateChangeListener mStandbyChangeListener =
            new UsageStatsManagerInternal.AppIdleStateChangeListener() {
                @Override
                public void onAppIdleStateChanged(String packageName, int userId, boolean idle,
                        int bucket) {
                    Event event = new Event();
                    event.mEventType = Event.STANDBY_BUCKET_CHANGED;
                    event.mBucket = bucket;
                    event.mPackage = packageName;
                    // This will later be converted to system time.
                    event.mTimeStamp = SystemClock.elapsedRealtime();
                    mHandler.obtainMessage(MSG_REPORT_EVENT, userId, 0, event).sendToTarget();
                }

                @Override
                public void onParoleStateChanged(boolean isParoleOn) {

                }
            };

    public UsageStatsService(Context context) {
        super(context);
    }
@@ -129,6 +149,7 @@ public class UsageStatsService extends SystemService implements

        mAppStandby = new AppStandbyController(getContext(), BackgroundThread.get().getLooper());

        mAppStandby.addListener(mStandbyChangeListener);
        File systemDataDir = new File(Environment.getDataDirectory(), "system");
        mUsageStatsDir = new File(systemDataDir, "usagestats");
        mUsageStatsDir.mkdirs();
+8 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ final class UsageStatsXmlV1 {
    private static final String LAST_EVENT_ATTR = "lastEvent";
    private static final String TYPE_ATTR = "type";
    private static final String SHORTCUT_ID_ATTR = "shortcutId";
    private static final String STANDBY_BUCKET_ATTR = "standbyBucket";

    // Time attributes stored as an offset of the beginTime.
    private static final String LAST_TIME_ACTIVE_ATTR = "lastTimeActive";
@@ -173,6 +174,9 @@ final class UsageStatsXmlV1 {
                final String id = XmlUtils.readStringAttribute(parser, SHORTCUT_ID_ATTR);
                event.mShortcutId = (id != null) ? id.intern() : null;
                break;
            case UsageEvents.Event.STANDBY_BUCKET_CHANGED:
                event.mBucket = XmlUtils.readIntAttribute(parser, STANDBY_BUCKET_ATTR, 0);
                break;
        }

        if (statsOut.events == null) {
@@ -276,6 +280,10 @@ final class UsageStatsXmlV1 {
                    XmlUtils.writeStringAttribute(xml, SHORTCUT_ID_ATTR, event.mShortcutId);
                }
                break;
            case UsageEvents.Event.STANDBY_BUCKET_CHANGED:
                if (event.mBucket != 0) {
                    XmlUtils.writeIntAttribute(xml, STANDBY_BUCKET_ATTR, event.mBucket);
                }
        }

        xml.endTag(null, EVENT_TAG);
+5 −0
Original line number Diff line number Diff line
@@ -599,6 +599,9 @@ class UserUsageStatsService {
            if (event.mShortcutId != null) {
                pw.printPair("shortcutId", event.mShortcutId);
            }
            if (event.mEventType == UsageEvents.Event.STANDBY_BUCKET_CHANGED) {
                pw.printPair("standbyBucket", event.mBucket);
            }
            pw.printHexPair("flags", event.mFlags);
            pw.println();
        }
@@ -645,6 +648,8 @@ class UserUsageStatsService {
                return "CHOOSER_ACTION";
            case UsageEvents.Event.NOTIFICATION_SEEN:
                return "NOTIFICATION_SEEN";
            case UsageEvents.Event.STANDBY_BUCKET_CHANGED:
                return "STANDBY_BUCKET_CHANGED";
            default:
                return "UNKNOWN";
        }