Loading apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java +4 −3 Original line number Diff line number Diff line Loading @@ -463,9 +463,6 @@ public class AppStandbyController implements AppStandbyInternal { userFileExists = mAppIdleHistory.userFileExists(UserHandle.USER_SYSTEM); } // Offload to handler thread to avoid boottime impact. mHandler.post(this::loadHeadlessSystemAppCache); if (mPendingInitializeDefaults || !userFileExists) { initializeDefaultsForSystemApps(UserHandle.USER_SYSTEM); } Loading @@ -475,6 +472,10 @@ public class AppStandbyController implements AppStandbyInternal { } } else if (phase == PHASE_BOOT_COMPLETED) { setChargingState(mInjector.isCharging()); // Offload to handler thread after boot completed to avoid boot time impact. This means // that headless system apps may be put in a lower bucket until boot has completed. mHandler.post(this::loadHeadlessSystemAppCache); } } Loading apex/media/framework/java/android/media/MediaParser.java +1 −0 Original line number Diff line number Diff line Loading @@ -1227,6 +1227,7 @@ public final class MediaParser { throw new ParsingException(e); } if (result == Extractor.RESULT_END_OF_INPUT) { mExtractorInput = null; return false; } if (result == Extractor.RESULT_SEEK) { Loading cmds/statsd/src/anomaly/AlarmTracker.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -60,11 +60,11 @@ void AlarmTracker::addSubscription(const Subscription& subscription) { } int64_t AlarmTracker::findNextAlarmSec(int64_t currentTimeSec) { if (currentTimeSec <= mAlarmSec) { if (currentTimeSec < mAlarmSec) { return mAlarmSec; } int64_t periodsForward = ((currentTimeSec - mAlarmSec) * MS_PER_SEC - 1) / mAlarmConfig.period_millis() + 1; ((currentTimeSec - mAlarmSec) * MS_PER_SEC) / mAlarmConfig.period_millis() + 1; return mAlarmSec + periodsForward * mAlarmConfig.period_millis() / MS_PER_SEC; } Loading cmds/statsd/src/atoms.proto +4 −0 Original line number Diff line number Diff line Loading @@ -4948,6 +4948,8 @@ message BlobCommitted { ERROR_DURING_COMMIT = 2; // Commit Failed: Digest of the data did not match Blob digest DIGEST_MISMATCH = 3; // Commit Failed: Allowed count limit exceeded COUNT_LIMIT_EXCEEDED = 4; } optional Result result = 4; } Loading Loading @@ -4980,6 +4982,8 @@ message BlobLeased{ LEASE_EXPIRY_INVALID = 4; // Lease Failed: Leasee has exceeded the total data lease limit DATA_SIZE_LIMIT_EXCEEDED = 5; // Leasee Failed: Allowed count limit exceeded COUNT_LIMIT_EXCEEDED = 6; } optional Result result = 4; } Loading cmds/statsd/tests/anomaly/AlarmTracker_test.cpp +27 −3 Original line number Diff line number Diff line Loading @@ -43,23 +43,47 @@ TEST(AlarmTrackerTest, TestTriggerTimestamp) { alarm.set_offset_millis(15 * MS_PER_SEC); alarm.set_period_millis(60 * 60 * MS_PER_SEC); // 1hr int64_t startMillis = 100000000 * MS_PER_SEC; int64_t nextAlarmTime = startMillis / MS_PER_SEC + 15; AlarmTracker tracker(startMillis, startMillis, alarm, kConfigKey, subscriberAlarmMonitor); EXPECT_EQ(tracker.mAlarmSec, (int64_t)(startMillis / MS_PER_SEC + 15)); EXPECT_EQ(tracker.mAlarmSec, nextAlarmTime); uint64_t currentTimeSec = startMillis / MS_PER_SEC + 10; std::unordered_set<sp<const InternalAlarm>, SpHash<InternalAlarm>> firedAlarmSet = subscriberAlarmMonitor->popSoonerThan(static_cast<uint32_t>(currentTimeSec)); EXPECT_TRUE(firedAlarmSet.empty()); tracker.informAlarmsFired(currentTimeSec * NS_PER_SEC, firedAlarmSet); EXPECT_EQ(tracker.mAlarmSec, (int64_t)(startMillis / MS_PER_SEC + 15)); EXPECT_EQ(tracker.mAlarmSec, nextAlarmTime); EXPECT_EQ(tracker.getAlarmTimestampSec(), nextAlarmTime); currentTimeSec = startMillis / MS_PER_SEC + 7000; nextAlarmTime = startMillis / MS_PER_SEC + 15 + 2 * 60 * 60; firedAlarmSet = subscriberAlarmMonitor->popSoonerThan(static_cast<uint32_t>(currentTimeSec)); ASSERT_EQ(firedAlarmSet.size(), 1u); tracker.informAlarmsFired(currentTimeSec * NS_PER_SEC, firedAlarmSet); EXPECT_TRUE(firedAlarmSet.empty()); EXPECT_EQ(tracker.mAlarmSec, (int64_t)(startMillis / MS_PER_SEC + 15 + 2 * 60 * 60)); EXPECT_EQ(tracker.mAlarmSec, nextAlarmTime); EXPECT_EQ(tracker.getAlarmTimestampSec(), nextAlarmTime); // Alarm fires exactly on time. currentTimeSec = startMillis / MS_PER_SEC + 15 + 2 * 60 * 60; nextAlarmTime = startMillis / MS_PER_SEC + 15 + 3 * 60 * 60; firedAlarmSet = subscriberAlarmMonitor->popSoonerThan(static_cast<uint32_t>(currentTimeSec)); ASSERT_EQ(firedAlarmSet.size(), 1u); tracker.informAlarmsFired(currentTimeSec * NS_PER_SEC, firedAlarmSet); EXPECT_TRUE(firedAlarmSet.empty()); EXPECT_EQ(tracker.mAlarmSec, nextAlarmTime); EXPECT_EQ(tracker.getAlarmTimestampSec(), nextAlarmTime); // Alarm fires exactly 1 period late. currentTimeSec = startMillis / MS_PER_SEC + 15 + 4 * 60 * 60; nextAlarmTime = startMillis / MS_PER_SEC + 15 + 5 * 60 * 60; firedAlarmSet = subscriberAlarmMonitor->popSoonerThan(static_cast<uint32_t>(currentTimeSec)); ASSERT_EQ(firedAlarmSet.size(), 1u); tracker.informAlarmsFired(currentTimeSec * NS_PER_SEC, firedAlarmSet); EXPECT_TRUE(firedAlarmSet.empty()); EXPECT_EQ(tracker.mAlarmSec, nextAlarmTime); EXPECT_EQ(tracker.getAlarmTimestampSec(), nextAlarmTime); } } // namespace statsd Loading Loading
apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java +4 −3 Original line number Diff line number Diff line Loading @@ -463,9 +463,6 @@ public class AppStandbyController implements AppStandbyInternal { userFileExists = mAppIdleHistory.userFileExists(UserHandle.USER_SYSTEM); } // Offload to handler thread to avoid boottime impact. mHandler.post(this::loadHeadlessSystemAppCache); if (mPendingInitializeDefaults || !userFileExists) { initializeDefaultsForSystemApps(UserHandle.USER_SYSTEM); } Loading @@ -475,6 +472,10 @@ public class AppStandbyController implements AppStandbyInternal { } } else if (phase == PHASE_BOOT_COMPLETED) { setChargingState(mInjector.isCharging()); // Offload to handler thread after boot completed to avoid boot time impact. This means // that headless system apps may be put in a lower bucket until boot has completed. mHandler.post(this::loadHeadlessSystemAppCache); } } Loading
apex/media/framework/java/android/media/MediaParser.java +1 −0 Original line number Diff line number Diff line Loading @@ -1227,6 +1227,7 @@ public final class MediaParser { throw new ParsingException(e); } if (result == Extractor.RESULT_END_OF_INPUT) { mExtractorInput = null; return false; } if (result == Extractor.RESULT_SEEK) { Loading
cmds/statsd/src/anomaly/AlarmTracker.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -60,11 +60,11 @@ void AlarmTracker::addSubscription(const Subscription& subscription) { } int64_t AlarmTracker::findNextAlarmSec(int64_t currentTimeSec) { if (currentTimeSec <= mAlarmSec) { if (currentTimeSec < mAlarmSec) { return mAlarmSec; } int64_t periodsForward = ((currentTimeSec - mAlarmSec) * MS_PER_SEC - 1) / mAlarmConfig.period_millis() + 1; ((currentTimeSec - mAlarmSec) * MS_PER_SEC) / mAlarmConfig.period_millis() + 1; return mAlarmSec + periodsForward * mAlarmConfig.period_millis() / MS_PER_SEC; } Loading
cmds/statsd/src/atoms.proto +4 −0 Original line number Diff line number Diff line Loading @@ -4948,6 +4948,8 @@ message BlobCommitted { ERROR_DURING_COMMIT = 2; // Commit Failed: Digest of the data did not match Blob digest DIGEST_MISMATCH = 3; // Commit Failed: Allowed count limit exceeded COUNT_LIMIT_EXCEEDED = 4; } optional Result result = 4; } Loading Loading @@ -4980,6 +4982,8 @@ message BlobLeased{ LEASE_EXPIRY_INVALID = 4; // Lease Failed: Leasee has exceeded the total data lease limit DATA_SIZE_LIMIT_EXCEEDED = 5; // Leasee Failed: Allowed count limit exceeded COUNT_LIMIT_EXCEEDED = 6; } optional Result result = 4; } Loading
cmds/statsd/tests/anomaly/AlarmTracker_test.cpp +27 −3 Original line number Diff line number Diff line Loading @@ -43,23 +43,47 @@ TEST(AlarmTrackerTest, TestTriggerTimestamp) { alarm.set_offset_millis(15 * MS_PER_SEC); alarm.set_period_millis(60 * 60 * MS_PER_SEC); // 1hr int64_t startMillis = 100000000 * MS_PER_SEC; int64_t nextAlarmTime = startMillis / MS_PER_SEC + 15; AlarmTracker tracker(startMillis, startMillis, alarm, kConfigKey, subscriberAlarmMonitor); EXPECT_EQ(tracker.mAlarmSec, (int64_t)(startMillis / MS_PER_SEC + 15)); EXPECT_EQ(tracker.mAlarmSec, nextAlarmTime); uint64_t currentTimeSec = startMillis / MS_PER_SEC + 10; std::unordered_set<sp<const InternalAlarm>, SpHash<InternalAlarm>> firedAlarmSet = subscriberAlarmMonitor->popSoonerThan(static_cast<uint32_t>(currentTimeSec)); EXPECT_TRUE(firedAlarmSet.empty()); tracker.informAlarmsFired(currentTimeSec * NS_PER_SEC, firedAlarmSet); EXPECT_EQ(tracker.mAlarmSec, (int64_t)(startMillis / MS_PER_SEC + 15)); EXPECT_EQ(tracker.mAlarmSec, nextAlarmTime); EXPECT_EQ(tracker.getAlarmTimestampSec(), nextAlarmTime); currentTimeSec = startMillis / MS_PER_SEC + 7000; nextAlarmTime = startMillis / MS_PER_SEC + 15 + 2 * 60 * 60; firedAlarmSet = subscriberAlarmMonitor->popSoonerThan(static_cast<uint32_t>(currentTimeSec)); ASSERT_EQ(firedAlarmSet.size(), 1u); tracker.informAlarmsFired(currentTimeSec * NS_PER_SEC, firedAlarmSet); EXPECT_TRUE(firedAlarmSet.empty()); EXPECT_EQ(tracker.mAlarmSec, (int64_t)(startMillis / MS_PER_SEC + 15 + 2 * 60 * 60)); EXPECT_EQ(tracker.mAlarmSec, nextAlarmTime); EXPECT_EQ(tracker.getAlarmTimestampSec(), nextAlarmTime); // Alarm fires exactly on time. currentTimeSec = startMillis / MS_PER_SEC + 15 + 2 * 60 * 60; nextAlarmTime = startMillis / MS_PER_SEC + 15 + 3 * 60 * 60; firedAlarmSet = subscriberAlarmMonitor->popSoonerThan(static_cast<uint32_t>(currentTimeSec)); ASSERT_EQ(firedAlarmSet.size(), 1u); tracker.informAlarmsFired(currentTimeSec * NS_PER_SEC, firedAlarmSet); EXPECT_TRUE(firedAlarmSet.empty()); EXPECT_EQ(tracker.mAlarmSec, nextAlarmTime); EXPECT_EQ(tracker.getAlarmTimestampSec(), nextAlarmTime); // Alarm fires exactly 1 period late. currentTimeSec = startMillis / MS_PER_SEC + 15 + 4 * 60 * 60; nextAlarmTime = startMillis / MS_PER_SEC + 15 + 5 * 60 * 60; firedAlarmSet = subscriberAlarmMonitor->popSoonerThan(static_cast<uint32_t>(currentTimeSec)); ASSERT_EQ(firedAlarmSet.size(), 1u); tracker.informAlarmsFired(currentTimeSec * NS_PER_SEC, firedAlarmSet); EXPECT_TRUE(firedAlarmSet.empty()); EXPECT_EQ(tracker.mAlarmSec, nextAlarmTime); EXPECT_EQ(tracker.getAlarmTimestampSec(), nextAlarmTime); } } // namespace statsd Loading