Skip to content

Commit

Permalink
[Mono.Android] Fix wrong value for ApplicationExitInfoReason.Other (#…
Browse files Browse the repository at this point in the history
…9003)

Fixes: #9000

Context: 3ca2a07
Context: 379f7cd

The field [`ApplicationExitInfo.REASON_OTHER`][0] was added in API-30,
and in our infinite wisdom we enumified this member in
API-R Developer Preview 2 (3ca2a07) instead of waiting for the final
API contract.

In API-R DP2, `ApplicationExitInfo.REASON_OTHER` had the value 10,
and was enumified as `ApplicationExitInfoReasonType.ReasonUnknown`
with value 10.

`ApplicationExitInfoReasonType` was renamed to
`ApplicationExitInfoReason` in 379f7cd with API-R Developer Preview 4.

The value of `ApplicationExitInfo.REASON_OTHER` [changed to 13][1]
in API-R Developer Preview 3, but we did not notice and did not
update the previous enumification.

This process has been mitigated since, as we no longer enumify
unstable API levels: we wait until Google marks the API as "stable"
before we perform enumification.

Update the enum to the correct value so it will be correct in .NET 9+.

[0]: https://developer.android.com/reference/android/app/ApplicationExitInfo#REASON_OTHER
[1]: https://developer.android.com/sdk/api_diff/r-dp3-incr/changes/android.app.ApplicationExitInfo
  • Loading branch information
jpobst committed Jun 7, 2024
1 parent d2869b8 commit ac3b405
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 7 deletions.
6 changes: 3 additions & 3 deletions src/Mono.Android/PublicAPI/API-34/PublicAPI.Shipped.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4273,7 +4273,7 @@ Android.App.ApplicationExitInfoReason.ExitSelf = 1 -> Android.App.ApplicationExi
Android.App.ApplicationExitInfoReason.Freezer = 14 -> Android.App.ApplicationExitInfoReason
Android.App.ApplicationExitInfoReason.InitializationFailure = 7 -> Android.App.ApplicationExitInfoReason
Android.App.ApplicationExitInfoReason.LowMemory = 3 -> Android.App.ApplicationExitInfoReason
Android.App.ApplicationExitInfoReason.Other = 10 -> Android.App.ApplicationExitInfoReason
Android.App.ApplicationExitInfoReason.Other = 13 -> Android.App.ApplicationExitInfoReason
Android.App.ApplicationExitInfoReason.PackageStateChange = 15 -> Android.App.ApplicationExitInfoReason
Android.App.ApplicationExitInfoReason.PackageUpdated = 16 -> Android.App.ApplicationExitInfoReason
Android.App.ApplicationExitInfoReason.PermissionChange = 8 -> Android.App.ApplicationExitInfoReason
Expand Down Expand Up @@ -41910,13 +41910,13 @@ const Android.App.ApplicationExitInfo.ReasonExitSelf = Android.App.ApplicationEx
const Android.App.ApplicationExitInfo.ReasonFreezer = Android.App.ApplicationExitInfoReason.Freezer -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonInitializationFailure = Android.App.ApplicationExitInfoReason.InitializationFailure -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonLowMemory = Android.App.ApplicationExitInfoReason.LowMemory -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonOther = (Android.App.ApplicationExitInfoReason)13 -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonOther = Android.App.ApplicationExitInfoReason.Other -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonPackageStateChange = Android.App.ApplicationExitInfoReason.PackageStateChange -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonPackageUpdated = Android.App.ApplicationExitInfoReason.PackageUpdated -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonPermissionChange = Android.App.ApplicationExitInfoReason.PermissionChange -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonSignaled = Android.App.ApplicationExitInfoReason.Signaled -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonUnknown = Android.App.ApplicationExitInfoReason.Unknown -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonUserRequested = Android.App.ApplicationExitInfoReason.Other -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonUserRequested = Android.App.ApplicationExitInfoReason.UserRequested -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonUserStopped = Android.App.ApplicationExitInfoReason.UserStopped -> Android.App.ApplicationExitInfoReason
const Android.App.AppOpsManager.ModeAllowed = Android.App.AppOpsManagerMode.Allowed -> Android.App.AppOpsManagerMode
const Android.App.AppOpsManager.ModeDefault = Android.App.AppOpsManagerMode.Default -> Android.App.AppOpsManagerMode
Expand Down
6 changes: 3 additions & 3 deletions src/Mono.Android/PublicAPI/API-35/PublicAPI.Shipped.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4274,7 +4274,7 @@ Android.App.ApplicationExitInfoReason.ExitSelf = 1 -> Android.App.ApplicationExi
Android.App.ApplicationExitInfoReason.Freezer = 14 -> Android.App.ApplicationExitInfoReason
Android.App.ApplicationExitInfoReason.InitializationFailure = 7 -> Android.App.ApplicationExitInfoReason
Android.App.ApplicationExitInfoReason.LowMemory = 3 -> Android.App.ApplicationExitInfoReason
Android.App.ApplicationExitInfoReason.Other = 10 -> Android.App.ApplicationExitInfoReason
Android.App.ApplicationExitInfoReason.Other = 13 -> Android.App.ApplicationExitInfoReason
Android.App.ApplicationExitInfoReason.PackageStateChange = 15 -> Android.App.ApplicationExitInfoReason
Android.App.ApplicationExitInfoReason.PackageUpdated = 16 -> Android.App.ApplicationExitInfoReason
Android.App.ApplicationExitInfoReason.PermissionChange = 8 -> Android.App.ApplicationExitInfoReason
Expand Down Expand Up @@ -41911,13 +41911,13 @@ const Android.App.ApplicationExitInfo.ReasonExitSelf = Android.App.ApplicationEx
const Android.App.ApplicationExitInfo.ReasonFreezer = Android.App.ApplicationExitInfoReason.Freezer -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonInitializationFailure = Android.App.ApplicationExitInfoReason.InitializationFailure -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonLowMemory = Android.App.ApplicationExitInfoReason.LowMemory -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonOther = (Android.App.ApplicationExitInfoReason)13 -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonOther = Android.App.ApplicationExitInfoReason.Other -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonPackageStateChange = Android.App.ApplicationExitInfoReason.PackageStateChange -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonPackageUpdated = Android.App.ApplicationExitInfoReason.PackageUpdated -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonPermissionChange = Android.App.ApplicationExitInfoReason.PermissionChange -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonSignaled = Android.App.ApplicationExitInfoReason.Signaled -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonUnknown = Android.App.ApplicationExitInfoReason.Unknown -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonUserRequested = Android.App.ApplicationExitInfoReason.Other -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonUserRequested = Android.App.ApplicationExitInfoReason.UserRequested -> Android.App.ApplicationExitInfoReason
const Android.App.ApplicationExitInfo.ReasonUserStopped = Android.App.ApplicationExitInfoReason.UserStopped -> Android.App.ApplicationExitInfoReason
const Android.App.AppOpsManager.ModeAllowed = Android.App.AppOpsManagerMode.Allowed -> Android.App.AppOpsManagerMode
const Android.App.AppOpsManager.ModeDefault = Android.App.AppOpsManagerMode.Default -> Android.App.AppOpsManagerMode
Expand Down
2 changes: 1 addition & 1 deletion src/Mono.Android/map.csv
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,7 @@ E,30,android/app/ApplicationExitInfo.REASON_EXIT_SELF,1,Android.App.ApplicationE
E,33,android/app/ApplicationExitInfo.REASON_FREEZER,14,Android.App.ApplicationExitInfoReason,Freezer,remove,
E,30,android/app/ApplicationExitInfo.REASON_INITIALIZATION_FAILURE,7,Android.App.ApplicationExitInfoReason,InitializationFailure,remove,
E,30,android/app/ApplicationExitInfo.REASON_LOW_MEMORY,3,Android.App.ApplicationExitInfoReason,LowMemory,remove,
E,30,android/app/ApplicationExitInfo.REASON_OTHER,10,Android.App.ApplicationExitInfoReason,Other,remove,
E,30,android/app/ApplicationExitInfo.REASON_OTHER,13,Android.App.ApplicationExitInfoReason,Other,remove,
E,34,android/app/ApplicationExitInfo.REASON_PACKAGE_STATE_CHANGE,15,Android.App.ApplicationExitInfoReason,PackageStateChange,remove,
E,34,android/app/ApplicationExitInfo.REASON_PACKAGE_UPDATED,16,Android.App.ApplicationExitInfoReason,PackageUpdated,remove,
E,30,android/app/ApplicationExitInfo.REASON_PERMISSION_CHANGE,8,Android.App.ApplicationExitInfoReason,PermissionChange,remove,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
Compat issues with assembly Mono.Android:
CannotAddAbstractMembers : Member 'public void Android.Net.Wifi.WifiManager.WpsCallback.OnFailed(Android.Net.Wifi.WpsFailureReason)' is abstract in the implementation but is missing in the contract.
EnumValuesMustMatch : Enum value 'Android.App.ApplicationExitInfoReason Android.App.ApplicationExitInfoReason.Other' is (System.Int32)13 in the implementation but (System.Int32)10 in the contract.

0 comments on commit ac3b405

Please sign in to comment.