diff options
| author | 2024-01-12 16:41:21 +0000 | |
|---|---|---|
| committer | 2024-01-12 16:41:21 +0000 | |
| commit | 5931ddad2bc6a15f2e987d59d664e7b584b202df (patch) | |
| tree | b29a50ec11c00d67363b77aefbe02b40d6bfeb55 | |
| parent | 2aab446bf8cdc6e14463767c3150090a1ae56568 (diff) | |
| parent | 90163f8cb9f2235d941a8f6e73ee82d64d610a62 (diff) | |
Merge "Address API council feedback." into main
| -rw-r--r-- | core/api/current.txt | 1 | ||||
| -rw-r--r-- | core/java/android/os/PerformanceHintManager.java | 2 | ||||
| -rw-r--r-- | core/java/android/os/WorkDuration.java | 30 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/os/PerformanceHintManagerTest.java | 41 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/os/WorkDurationUnitTest.java | 77 |
5 files changed, 120 insertions, 31 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index 90546d82eae6..ac7e6cc2e065 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -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(); diff --git a/core/java/android/os/PerformanceHintManager.java b/core/java/android/os/PerformanceHintManager.java index 37bde3db5e14..746278fc296c 100644 --- a/core/java/android/os/PerformanceHintManager.java +++ b/core/java/android/os/PerformanceHintManager.java @@ -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 */ diff --git a/core/java/android/os/WorkDuration.java b/core/java/android/os/WorkDuration.java index 4fdc34fb60d1..2ebcd830be29 100644 --- a/core/java/android/os/WorkDuration.java +++ b/core/java/android/os/WorkDuration.java @@ -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 { @@ -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, @@ -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) { @@ -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) { @@ -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) { @@ -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) { @@ -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; @@ -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; @@ -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; @@ -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; diff --git a/core/tests/coretests/src/android/os/PerformanceHintManagerTest.java b/core/tests/coretests/src/android/os/PerformanceHintManagerTest.java index 12a28446b0e1..a28bb69244eb 100644 --- a/core/tests/coretests/src/android/os/PerformanceHintManagerTest.java +++ b/core/tests/coretests/src/android/os/PerformanceHintManagerTest.java @@ -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 @@ -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)); }); } } diff --git a/core/tests/coretests/src/android/os/WorkDurationUnitTest.java b/core/tests/coretests/src/android/os/WorkDurationUnitTest.java new file mode 100644 index 000000000000..c70da6e94385 --- /dev/null +++ b/core/tests/coretests/src/android/os/WorkDurationUnitTest.java @@ -0,0 +1,77 @@ +/* + * 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); + }); + } +} |