Loading core/api/current.txt +0 −1 Original line number Diff line number Diff line Loading @@ -33914,7 +33914,6 @@ package android.os { @FlaggedApi("android.os.adpf_gpu_report_actual_work_duration") public final class WorkDuration implements android.os.Parcelable { ctor public WorkDuration(); ctor public WorkDuration(long, long, long, long); method public int describeContents(); method public long getActualCpuDurationNanos(); method public long getActualGpuDurationNanos(); core/java/android/os/PerformanceHintManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -204,7 +204,7 @@ public final class PerformanceHintManager { } /** * Updates this session's target duration for each cycle of work. * Updates this session's target total duration for each cycle of work. * * @param targetDurationNanos the new desired duration in nanoseconds */ Loading core/java/android/os/WorkDuration.java +11 −19 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ import java.util.Objects; * in each component, see * {@link PerformanceHintManager.Session#reportActualWorkDuration(WorkDuration)}. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()} and measured in wall time. */ @FlaggedApi(Flags.FLAG_ADPF_GPU_REPORT_ACTUAL_WORK_DURATION) public final class WorkDuration implements Parcelable { Loading @@ -50,17 +50,9 @@ public final class WorkDuration implements Parcelable { public WorkDuration() {} public WorkDuration(long workPeriodStartTimestampNanos, long actualTotalDurationNanos, long actualCpuDurationNanos, long actualGpuDurationNanos) { mWorkPeriodStartTimestampNanos = workPeriodStartTimestampNanos; mActualTotalDurationNanos = actualTotalDurationNanos; mActualCpuDurationNanos = actualCpuDurationNanos; mActualGpuDurationNanos = actualGpuDurationNanos; } /** * Constructor for testing. * * @hide */ public WorkDuration(long workPeriodStartTimestampNanos, Loading @@ -86,7 +78,7 @@ public final class WorkDuration implements Parcelable { /** * Sets the work period start timestamp in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public void setWorkPeriodStartTimestampNanos(long workPeriodStartTimestampNanos) { if (workPeriodStartTimestampNanos <= 0) { Loading @@ -99,7 +91,7 @@ public final class WorkDuration implements Parcelable { /** * Sets the actual total duration in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public void setActualTotalDurationNanos(long actualTotalDurationNanos) { if (actualTotalDurationNanos <= 0) { Loading @@ -111,7 +103,7 @@ public final class WorkDuration implements Parcelable { /** * Sets the actual CPU duration in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public void setActualCpuDurationNanos(long actualCpuDurationNanos) { if (actualCpuDurationNanos <= 0) { Loading @@ -123,7 +115,7 @@ public final class WorkDuration implements Parcelable { /** * Sets the actual GPU duration in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public void setActualGpuDurationNanos(long actualGpuDurationNanos) { if (actualGpuDurationNanos < 0) { Loading @@ -135,7 +127,7 @@ public final class WorkDuration implements Parcelable { /** * Returns the work period start timestamp based in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public long getWorkPeriodStartTimestampNanos() { return mWorkPeriodStartTimestampNanos; Loading @@ -144,7 +136,7 @@ public final class WorkDuration implements Parcelable { /** * Returns the actual total duration in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public long getActualTotalDurationNanos() { return mActualTotalDurationNanos; Loading @@ -153,7 +145,7 @@ public final class WorkDuration implements Parcelable { /** * Returns the actual CPU duration in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public long getActualCpuDurationNanos() { return mActualCpuDurationNanos; Loading @@ -162,7 +154,7 @@ public final class WorkDuration implements Parcelable { /** * Returns the actual GPU duration in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public long getActualGpuDurationNanos() { return mActualGpuDurationNanos; Loading core/tests/coretests/src/android/os/PerformanceHintManagerTest.java +31 −10 Original line number Diff line number Diff line Loading @@ -195,9 +195,30 @@ public class PerformanceHintManagerTest { Session s = createSession(); assumeNotNull(s); s.updateTargetWorkDuration(16); s.reportActualWorkDuration(new WorkDuration(1, 12, 8, 6)); s.reportActualWorkDuration(new WorkDuration(1, 33, 14, 20)); s.reportActualWorkDuration(new WorkDuration(1, 14, 10, 6)); { WorkDuration workDuration = new WorkDuration(); workDuration.setWorkPeriodStartTimestampNanos(1); workDuration.setActualTotalDurationNanos(12); workDuration.setActualCpuDurationNanos(8); workDuration.setActualGpuDurationNanos(6); s.reportActualWorkDuration(workDuration); } { WorkDuration workDuration = new WorkDuration(); workDuration.setWorkPeriodStartTimestampNanos(1); workDuration.setActualTotalDurationNanos(33); workDuration.setActualCpuDurationNanos(14); workDuration.setActualGpuDurationNanos(20); s.reportActualWorkDuration(workDuration); } { WorkDuration workDuration = new WorkDuration(); workDuration.setWorkPeriodStartTimestampNanos(1); workDuration.setActualTotalDurationNanos(14); workDuration.setActualCpuDurationNanos(10); workDuration.setActualGpuDurationNanos(6); s.reportActualWorkDuration(workDuration); } } @Test Loading @@ -206,25 +227,25 @@ public class PerformanceHintManagerTest { assumeNotNull(s); s.updateTargetWorkDuration(16); assertThrows(IllegalArgumentException.class, () -> { s.reportActualWorkDuration(new WorkDuration(-1, 12, 8, 6)); s.reportActualWorkDuration(new WorkDuration(-1, 12, 8, 6, 1)); }); assertThrows(IllegalArgumentException.class, () -> { s.reportActualWorkDuration(new WorkDuration(0, 12, 8, 6)); s.reportActualWorkDuration(new WorkDuration(0, 12, 8, 6, 1)); }); assertThrows(IllegalArgumentException.class, () -> { s.reportActualWorkDuration(new WorkDuration(1, -1, 8, 6)); s.reportActualWorkDuration(new WorkDuration(1, -1, 8, 6, 1)); }); assertThrows(IllegalArgumentException.class, () -> { s.reportActualWorkDuration(new WorkDuration(1, 0, 8, 6)); s.reportActualWorkDuration(new WorkDuration(1, 0, 8, 6, 1)); }); assertThrows(IllegalArgumentException.class, () -> { s.reportActualWorkDuration(new WorkDuration(1, 12, -1, 6)); s.reportActualWorkDuration(new WorkDuration(1, 12, -1, 6, 1)); }); assertThrows(IllegalArgumentException.class, () -> { s.reportActualWorkDuration(new WorkDuration(1, 12, 0, 6)); s.reportActualWorkDuration(new WorkDuration(1, 12, 0, 6, 1)); }); assertThrows(IllegalArgumentException.class, () -> { s.reportActualWorkDuration(new WorkDuration(1, 12, 8, -1)); s.reportActualWorkDuration(new WorkDuration(1, 12, 8, -1, 1)); }); } } core/tests/coretests/src/android/os/WorkDurationUnitTest.java 0 → 100644 +77 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.os; import static org.junit.Assert.assertThrows; import android.platform.test.annotations.IgnoreUnderRavenwood; import android.platform.test.annotations.RequiresFlagsEnabled; import android.platform.test.flag.junit.CheckFlagsRule; import android.platform.test.flag.junit.DeviceFlagsValueProvider; import android.platform.test.ravenwood.RavenwoodRule; import androidx.test.runner.AndroidJUnit4; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.MockitoAnnotations; @RunWith(AndroidJUnit4.class) @IgnoreUnderRavenwood(blockedBy = WorkDuration.class) public class WorkDurationUnitTest { @Rule public final RavenwoodRule mRavenwood = new RavenwoodRule(); // Required for RequiresFlagsEnabled and RequiresFlagsDisabled annotations to take effect. @Rule public final CheckFlagsRule mCheckFlagsRule = RavenwoodRule.isUnderRavenwood() ? null : DeviceFlagsValueProvider.createCheckFlagsRule(); @Before public void setUp() { MockitoAnnotations.initMocks(this); } @Test @RequiresFlagsEnabled(Flags.FLAG_ADPF_GPU_REPORT_ACTUAL_WORK_DURATION) public void testWorkDurationSetters_IllegalArgument() { WorkDuration workDuration = new WorkDuration(); assertThrows(IllegalArgumentException.class, () -> { workDuration.setWorkPeriodStartTimestampNanos(-1); }); assertThrows(IllegalArgumentException.class, () -> { workDuration.setWorkPeriodStartTimestampNanos(0); }); assertThrows(IllegalArgumentException.class, () -> { workDuration.setActualTotalDurationNanos(-1); }); assertThrows(IllegalArgumentException.class, () -> { workDuration.setActualTotalDurationNanos(0); }); assertThrows(IllegalArgumentException.class, () -> { workDuration.setActualCpuDurationNanos(-1); }); assertThrows(IllegalArgumentException.class, () -> { workDuration.setActualCpuDurationNanos(0); }); assertThrows(IllegalArgumentException.class, () -> { workDuration.setActualGpuDurationNanos(-1); }); } } Loading
core/api/current.txt +0 −1 Original line number Diff line number Diff line Loading @@ -33914,7 +33914,6 @@ package android.os { @FlaggedApi("android.os.adpf_gpu_report_actual_work_duration") public final class WorkDuration implements android.os.Parcelable { ctor public WorkDuration(); ctor public WorkDuration(long, long, long, long); method public int describeContents(); method public long getActualCpuDurationNanos(); method public long getActualGpuDurationNanos();
core/java/android/os/PerformanceHintManager.java +1 −1 Original line number Diff line number Diff line Loading @@ -204,7 +204,7 @@ public final class PerformanceHintManager { } /** * Updates this session's target duration for each cycle of work. * Updates this session's target total duration for each cycle of work. * * @param targetDurationNanos the new desired duration in nanoseconds */ Loading
core/java/android/os/WorkDuration.java +11 −19 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ import java.util.Objects; * in each component, see * {@link PerformanceHintManager.Session#reportActualWorkDuration(WorkDuration)}. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()} and measured in wall time. */ @FlaggedApi(Flags.FLAG_ADPF_GPU_REPORT_ACTUAL_WORK_DURATION) public final class WorkDuration implements Parcelable { Loading @@ -50,17 +50,9 @@ public final class WorkDuration implements Parcelable { public WorkDuration() {} public WorkDuration(long workPeriodStartTimestampNanos, long actualTotalDurationNanos, long actualCpuDurationNanos, long actualGpuDurationNanos) { mWorkPeriodStartTimestampNanos = workPeriodStartTimestampNanos; mActualTotalDurationNanos = actualTotalDurationNanos; mActualCpuDurationNanos = actualCpuDurationNanos; mActualGpuDurationNanos = actualGpuDurationNanos; } /** * Constructor for testing. * * @hide */ public WorkDuration(long workPeriodStartTimestampNanos, Loading @@ -86,7 +78,7 @@ public final class WorkDuration implements Parcelable { /** * Sets the work period start timestamp in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public void setWorkPeriodStartTimestampNanos(long workPeriodStartTimestampNanos) { if (workPeriodStartTimestampNanos <= 0) { Loading @@ -99,7 +91,7 @@ public final class WorkDuration implements Parcelable { /** * Sets the actual total duration in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public void setActualTotalDurationNanos(long actualTotalDurationNanos) { if (actualTotalDurationNanos <= 0) { Loading @@ -111,7 +103,7 @@ public final class WorkDuration implements Parcelable { /** * Sets the actual CPU duration in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public void setActualCpuDurationNanos(long actualCpuDurationNanos) { if (actualCpuDurationNanos <= 0) { Loading @@ -123,7 +115,7 @@ public final class WorkDuration implements Parcelable { /** * Sets the actual GPU duration in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public void setActualGpuDurationNanos(long actualGpuDurationNanos) { if (actualGpuDurationNanos < 0) { Loading @@ -135,7 +127,7 @@ public final class WorkDuration implements Parcelable { /** * Returns the work period start timestamp based in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public long getWorkPeriodStartTimestampNanos() { return mWorkPeriodStartTimestampNanos; Loading @@ -144,7 +136,7 @@ public final class WorkDuration implements Parcelable { /** * Returns the actual total duration in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public long getActualTotalDurationNanos() { return mActualTotalDurationNanos; Loading @@ -153,7 +145,7 @@ public final class WorkDuration implements Parcelable { /** * Returns the actual CPU duration in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public long getActualCpuDurationNanos() { return mActualCpuDurationNanos; Loading @@ -162,7 +154,7 @@ public final class WorkDuration implements Parcelable { /** * Returns the actual GPU duration in nanoseconds. * * All timings should be in {@link SystemClock#elapsedRealtimeNanos()}. * All timings should be in {@link SystemClock#uptimeNanos()}. */ public long getActualGpuDurationNanos() { return mActualGpuDurationNanos; Loading
core/tests/coretests/src/android/os/PerformanceHintManagerTest.java +31 −10 Original line number Diff line number Diff line Loading @@ -195,9 +195,30 @@ public class PerformanceHintManagerTest { Session s = createSession(); assumeNotNull(s); s.updateTargetWorkDuration(16); s.reportActualWorkDuration(new WorkDuration(1, 12, 8, 6)); s.reportActualWorkDuration(new WorkDuration(1, 33, 14, 20)); s.reportActualWorkDuration(new WorkDuration(1, 14, 10, 6)); { WorkDuration workDuration = new WorkDuration(); workDuration.setWorkPeriodStartTimestampNanos(1); workDuration.setActualTotalDurationNanos(12); workDuration.setActualCpuDurationNanos(8); workDuration.setActualGpuDurationNanos(6); s.reportActualWorkDuration(workDuration); } { WorkDuration workDuration = new WorkDuration(); workDuration.setWorkPeriodStartTimestampNanos(1); workDuration.setActualTotalDurationNanos(33); workDuration.setActualCpuDurationNanos(14); workDuration.setActualGpuDurationNanos(20); s.reportActualWorkDuration(workDuration); } { WorkDuration workDuration = new WorkDuration(); workDuration.setWorkPeriodStartTimestampNanos(1); workDuration.setActualTotalDurationNanos(14); workDuration.setActualCpuDurationNanos(10); workDuration.setActualGpuDurationNanos(6); s.reportActualWorkDuration(workDuration); } } @Test Loading @@ -206,25 +227,25 @@ public class PerformanceHintManagerTest { assumeNotNull(s); s.updateTargetWorkDuration(16); assertThrows(IllegalArgumentException.class, () -> { s.reportActualWorkDuration(new WorkDuration(-1, 12, 8, 6)); s.reportActualWorkDuration(new WorkDuration(-1, 12, 8, 6, 1)); }); assertThrows(IllegalArgumentException.class, () -> { s.reportActualWorkDuration(new WorkDuration(0, 12, 8, 6)); s.reportActualWorkDuration(new WorkDuration(0, 12, 8, 6, 1)); }); assertThrows(IllegalArgumentException.class, () -> { s.reportActualWorkDuration(new WorkDuration(1, -1, 8, 6)); s.reportActualWorkDuration(new WorkDuration(1, -1, 8, 6, 1)); }); assertThrows(IllegalArgumentException.class, () -> { s.reportActualWorkDuration(new WorkDuration(1, 0, 8, 6)); s.reportActualWorkDuration(new WorkDuration(1, 0, 8, 6, 1)); }); assertThrows(IllegalArgumentException.class, () -> { s.reportActualWorkDuration(new WorkDuration(1, 12, -1, 6)); s.reportActualWorkDuration(new WorkDuration(1, 12, -1, 6, 1)); }); assertThrows(IllegalArgumentException.class, () -> { s.reportActualWorkDuration(new WorkDuration(1, 12, 0, 6)); s.reportActualWorkDuration(new WorkDuration(1, 12, 0, 6, 1)); }); assertThrows(IllegalArgumentException.class, () -> { s.reportActualWorkDuration(new WorkDuration(1, 12, 8, -1)); s.reportActualWorkDuration(new WorkDuration(1, 12, 8, -1, 1)); }); } }
core/tests/coretests/src/android/os/WorkDurationUnitTest.java 0 → 100644 +77 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.os; import static org.junit.Assert.assertThrows; import android.platform.test.annotations.IgnoreUnderRavenwood; import android.platform.test.annotations.RequiresFlagsEnabled; import android.platform.test.flag.junit.CheckFlagsRule; import android.platform.test.flag.junit.DeviceFlagsValueProvider; import android.platform.test.ravenwood.RavenwoodRule; import androidx.test.runner.AndroidJUnit4; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.MockitoAnnotations; @RunWith(AndroidJUnit4.class) @IgnoreUnderRavenwood(blockedBy = WorkDuration.class) public class WorkDurationUnitTest { @Rule public final RavenwoodRule mRavenwood = new RavenwoodRule(); // Required for RequiresFlagsEnabled and RequiresFlagsDisabled annotations to take effect. @Rule public final CheckFlagsRule mCheckFlagsRule = RavenwoodRule.isUnderRavenwood() ? null : DeviceFlagsValueProvider.createCheckFlagsRule(); @Before public void setUp() { MockitoAnnotations.initMocks(this); } @Test @RequiresFlagsEnabled(Flags.FLAG_ADPF_GPU_REPORT_ACTUAL_WORK_DURATION) public void testWorkDurationSetters_IllegalArgument() { WorkDuration workDuration = new WorkDuration(); assertThrows(IllegalArgumentException.class, () -> { workDuration.setWorkPeriodStartTimestampNanos(-1); }); assertThrows(IllegalArgumentException.class, () -> { workDuration.setWorkPeriodStartTimestampNanos(0); }); assertThrows(IllegalArgumentException.class, () -> { workDuration.setActualTotalDurationNanos(-1); }); assertThrows(IllegalArgumentException.class, () -> { workDuration.setActualTotalDurationNanos(0); }); assertThrows(IllegalArgumentException.class, () -> { workDuration.setActualCpuDurationNanos(-1); }); assertThrows(IllegalArgumentException.class, () -> { workDuration.setActualCpuDurationNanos(0); }); assertThrows(IllegalArgumentException.class, () -> { workDuration.setActualGpuDurationNanos(-1); }); } }