From f6ac7fb4eb38f49b18c8464834daa75f94a54210 Mon Sep 17 00:00:00 2001 From: Jonathan Scott Date: Mon, 11 Dec 2023 05:31:26 -0800 Subject: =?UTF-8?q?Copybara=20=E2=9D=A4=EF=B8=8F:=20Add=20ability=20to=20d?= =?UTF-8?q?efine=20a=20ChangeId.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CL: cl/589793644 PiperOrigin-RevId: 589793644 Change-Id: Ib8bfd78405082c335da4b0978819184eec07e0f4 --- .../versions/annotations/BreakingReason.kt | 8 ++++++ .../onboarding/versions/annotations/ChangeId.kt | 29 ++++++++++++++++++++++ .../versions/annotations/ChangeRadius.kt | 21 ++++++++++++++++ .../versions/annotations/ExpeditedReason.kt | 10 ++++++++ 4 files changed, 68 insertions(+) create mode 100644 src/com/android/onboarding/versions/annotations/BreakingReason.kt create mode 100644 src/com/android/onboarding/versions/annotations/ChangeId.kt create mode 100644 src/com/android/onboarding/versions/annotations/ChangeRadius.kt create mode 100644 src/com/android/onboarding/versions/annotations/ExpeditedReason.kt diff --git a/src/com/android/onboarding/versions/annotations/BreakingReason.kt b/src/com/android/onboarding/versions/annotations/BreakingReason.kt new file mode 100644 index 0000000..6f6cbaa --- /dev/null +++ b/src/com/android/onboarding/versions/annotations/BreakingReason.kt @@ -0,0 +1,8 @@ +package com.android.onboarding.versions.annotations + +/** Reasons that a change may break existing callers. */ +enum class BreakingReason { + + /** The change introduces a new return value to an existing API. */ + NEW_RETURN_VALUE +} diff --git a/src/com/android/onboarding/versions/annotations/ChangeId.kt b/src/com/android/onboarding/versions/annotations/ChangeId.kt new file mode 100644 index 0000000..b114197 --- /dev/null +++ b/src/com/android/onboarding/versions/annotations/ChangeId.kt @@ -0,0 +1,29 @@ +package com.android.onboarding.versions.annotations + +/** + * Marker for a change made to an Onboarding component. + * + * All changes in Onboarding must be marked by a [ChangeId] and fully flagged. + * + * The value should be the ID of a Buganizer issue related to the change. + * + * @param owner A username who is responsible for this change + * @param breaking Reasons that this change will cause breakages in current callers. Empty if none. + * @param changeRadius The radius of impact of this change. See [ChangeRadius] docs for details. + * @param dependsOn Another Change ID that must be enabled for this change to work. [DEFAULT] for + * none. + * @param expedited A reason that this change may skip the usual rollout process. + * [ExpeditedReason.NOT_EXPEDITED] if none. + */ +@Target(AnnotationTarget.FIELD) +annotation class ChangeId( + val owner: String, + val breaking: Array, + val changeRadius: ChangeRadius, + val dependsOn: Long = DEFAULT, + val expedited: ExpeditedReason = ExpeditedReason.NOT_EXPEDITED +) { + companion object { + private const val DEFAULT = -1L + } +} diff --git a/src/com/android/onboarding/versions/annotations/ChangeRadius.kt b/src/com/android/onboarding/versions/annotations/ChangeRadius.kt new file mode 100644 index 0000000..19ffe79 --- /dev/null +++ b/src/com/android/onboarding/versions/annotations/ChangeRadius.kt @@ -0,0 +1,21 @@ +package com.android.onboarding.versions.annotations + +/** The radius of effect of a given change. */ +enum class ChangeRadius { + /** + * The change only applies to a single component at a time. + * + * For example, a change to functionality which shows a loading screen in the current process + * might be SINGLE_COMPONENT - as long as it doesn't make calls to other components. + */ + SINGLE_COMPONENT, + + /** + * The change involves multiple components. + * + * For example, any change to an API which one component exposes to another (via activity starts, + * broadcasts, services, etc.) is intrinsically MULTI_COMPONENT. + */ + // Multi-component changes are not currently supported + // MULTI_COMPONENT +} diff --git a/src/com/android/onboarding/versions/annotations/ExpeditedReason.kt b/src/com/android/onboarding/versions/annotations/ExpeditedReason.kt new file mode 100644 index 0000000..2e9169b --- /dev/null +++ b/src/com/android/onboarding/versions/annotations/ExpeditedReason.kt @@ -0,0 +1,10 @@ +package com.android.onboarding.versions.annotations + +/** The reason why this change can follow the expedited release process. */ +enum class ExpeditedReason { + /** The change will not follow the expedited release process. */ + NOT_EXPEDITED, + + /** DO NOT USE - only available for use by tests until we have a real non-NOT_EXPEDITED reason. */ + TMP +} -- cgit v1.2.3