[TCSACR-655] Expose Session API to public#7705
Conversation
There was a problem hiding this comment.
Code Review
This pull request exposes the Session class and its events as public APIs by removing the [EditorBrowsable(EditorBrowsableState.Never)] attribute and adding <since_tizen>10.1</since_tizen> tags to several members. The feedback recommends adding the missing <since_tizen>10.1</since_tizen> XML documentation tags to the Session class and its events (AddUserWait, RemoveUserWait, SwitchUserWait, and SwitchUserCompleted). Additionally, it suggests removing the [EditorBrowsable(EditorBrowsableState.Never)] attribute from the SubsessionEventArgs classes to ensure they are visible in IDE IntelliSense now that they are publicly exposed.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Public API ChangedPlease follow the ACR process for the changed API below. Added: 15, Removed: 0, Changed: 0Added+ /// <since_tizen>none</since_tizen
+ Tizen.System.Session
+ /// <since_tizen>10.1</since_tizen
+ static System.Int32 Tizen.System.Session::MaxUserLength
+ /// <since_tizen>10.1</since_tizen
+ static System.String Tizen.System.Session::EmptyUser
+ /// <since_tizen>10.1</since_tizen
+ System.Int32 Tizen.System.Session::SessionUID()
+ /// <since_tizen>10.1</since_tizen
+ System.Collections.Generic.IReadOnlyList`1<System.String> Tizen.System.Session::GetUsers()
+ /// <since_tizen>10.1</since_tizen
+ System.String Tizen.System.Session::GetCurrentUser()
+ /// <since_tizen>10.1</since_tizen
+ System.Threading.Tasks.Task Tizen.System.Session::SubsessionAddUserAsync(System.String)
+ /// <since_tizen>10.1</since_tizen
+ System.Threading.Tasks.Task Tizen.System.Session::SubsessionRemoveUserAsync(System.String)
+ /// <since_tizen>10.1</since_tizen
+ System.Threading.Tasks.Task Tizen.System.Session::SubsessionSwitchUserAsync(System.String)
+ /// <since_tizen>10.1</since_tizen
+ System.Void Tizen.System.Session::SubsessionEventMarkAsDone(Tizen.System.SubsessionEventArgs)
+ /// <since_tizen>10.1</since_tizen
+ static Tizen.System.Session Tizen.System.Session::GetInstance(System.Int32)
+ /// <since_tizen>none</since_tizen
+ System.EventHandler`1<Tizen.System.AddUserEventArgs> Tizen.System.Session::AddUserWait
+ /// <since_tizen>none</since_tizen
+ System.EventHandler`1<Tizen.System.RemoveUserEventArgs> Tizen.System.Session::RemoveUserWait
+ /// <since_tizen>none</since_tizen
+ System.EventHandler`1<Tizen.System.SwitchUserCompletionEventArgs> Tizen.System.Session::SwitchUserCompleted
+ /// <since_tizen>none</since_tizen
+ System.EventHandler`1<Tizen.System.SwitchUserWaitEventArgs> Tizen.System.Session::SwitchUserWait
Internal API ChangedAdded: 0, Removed: 15, Changed: 6Removed- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- Tizen.System.Session
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- static System.Int32 Tizen.System.Session::MaxUserLength
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- static System.String Tizen.System.Session::EmptyUser
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Int32 Tizen.System.Session::SessionUID()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Collections.Generic.IReadOnlyList`1<System.String> Tizen.System.Session::GetUsers()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.String Tizen.System.Session::GetCurrentUser()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Threading.Tasks.Task Tizen.System.Session::SubsessionAddUserAsync(System.String)
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Threading.Tasks.Task Tizen.System.Session::SubsessionRemoveUserAsync(System.String)
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Threading.Tasks.Task Tizen.System.Session::SubsessionSwitchUserAsync(System.String)
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Void Tizen.System.Session::SubsessionEventMarkAsDone(Tizen.System.SubsessionEventArgs)
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- static Tizen.System.Session Tizen.System.Session::GetInstance(System.Int32)
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.EventHandler`1<Tizen.System.AddUserEventArgs> Tizen.System.Session::AddUserWait
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.EventHandler`1<Tizen.System.RemoveUserEventArgs> Tizen.System.Session::RemoveUserWait
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.EventHandler`1<Tizen.System.SwitchUserCompletionEventArgs> Tizen.System.Session::SwitchUserCompleted
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.EventHandler`1<Tizen.System.SwitchUserWaitEventArgs> Tizen.System.Session::SwitchUserWait
Changed- /// <since_tizen>none</since_tizen
+ /// <since_tizen>10.1</since_tizen
[EditorBrowsable(EditorBrowsableState.Never)]
Tizen.System.AddUserEventArgs
- /// <since_tizen>none</since_tizen
+ /// <since_tizen>10.1</since_tizen
[EditorBrowsable(EditorBrowsableState.Never)]
Tizen.System.RemoveUserEventArgs
- /// <since_tizen>none</since_tizen
+ /// <since_tizen>10.1</since_tizen
[EditorBrowsable(EditorBrowsableState.Never)]
Tizen.System.SubsessionEventArgs
- /// <since_tizen>none</since_tizen
+ /// <since_tizen>10.1</since_tizen
[EditorBrowsable(EditorBrowsableState.Never)]
Tizen.System.SwitchUserCompletionEventArgs
- /// <since_tizen>none</since_tizen
+ /// <since_tizen>10.1</since_tizen
[EditorBrowsable(EditorBrowsableState.Never)]
Tizen.System.SwitchUserEventArgs
- /// <since_tizen>none</since_tizen
+ /// <since_tizen>10.1</since_tizen
[EditorBrowsable(EditorBrowsableState.Never)]
Tizen.System.SwitchUserWaitEventArgs
|
|
🤖 [AI Review] Automated review by AI assistant |
e5dc104 to
0a5c2a5
Compare
|
Addressed comments, |
Public API ChangedPlease follow the ACR process for the changed API below. Added: 24, Removed: 0, Changed: 0Added+ /// <since_tizen>10.1</since_tizen
+ Tizen.System.AddUserEventArgs
+ /// <since_tizen>10.1</since_tizen
+ System.String Tizen.System.AddUserEventArgs::UserName()
+ /// <since_tizen>10.1</since_tizen
+ Tizen.System.RemoveUserEventArgs
+ /// <since_tizen>10.1</since_tizen
+ System.String Tizen.System.RemoveUserEventArgs::UserName()
+ /// <since_tizen>10.1</since_tizen
+ Tizen.System.Session
+ /// <since_tizen>10.1</since_tizen
+ static System.Int32 Tizen.System.Session::MaxUserLength
+ /// <since_tizen>10.1</since_tizen
+ static System.String Tizen.System.Session::EmptyUser
+ /// <since_tizen>10.1</since_tizen
+ System.Int32 Tizen.System.Session::SessionUID()
+ /// <since_tizen>10.1</since_tizen
+ System.Collections.Generic.IReadOnlyList`1<System.String> Tizen.System.Session::GetUsers()
+ /// <since_tizen>10.1</since_tizen
+ System.String Tizen.System.Session::GetCurrentUser()
+ /// <since_tizen>10.1</since_tizen
+ System.Void Tizen.System.Session::SubsessionEventMarkAsDone(Tizen.System.SubsessionEventArgs)
+ /// <since_tizen>10.1</since_tizen
+ static Tizen.System.Session Tizen.System.Session::GetInstance(System.Int32)
+ /// <since_tizen>10.1</since_tizen
+ System.EventHandler`1<Tizen.System.AddUserEventArgs> Tizen.System.Session::AddUserWait
+ /// <since_tizen>10.1</since_tizen
+ System.EventHandler`1<Tizen.System.RemoveUserEventArgs> Tizen.System.Session::RemoveUserWait
+ /// <since_tizen>10.1</since_tizen
+ System.EventHandler`1<Tizen.System.SwitchUserCompletionEventArgs> Tizen.System.Session::SwitchUserCompleted
+ /// <since_tizen>10.1</since_tizen
+ System.EventHandler`1<Tizen.System.SwitchUserWaitEventArgs> Tizen.System.Session::SwitchUserWait
+ /// <since_tizen>10.1</since_tizen
+ Tizen.System.SubsessionEventArgs
+ /// <since_tizen>10.1</since_tizen
+ System.Int32 Tizen.System.SubsessionEventArgs::SessionUID()
+ /// <since_tizen>10.1</since_tizen
+ Tizen.System.SwitchUserCompletionEventArgs
+ /// <since_tizen>10.1</since_tizen
+ Tizen.System.SwitchUserEventArgs
+ /// <since_tizen>10.1</since_tizen
+ System.Int64 Tizen.System.SwitchUserEventArgs::SwitchID()
+ /// <since_tizen>10.1</since_tizen
+ System.String Tizen.System.SwitchUserEventArgs::UserNameNext()
+ /// <since_tizen>10.1</since_tizen
+ System.String Tizen.System.SwitchUserEventArgs::UserNamePrev()
+ /// <since_tizen>10.1</since_tizen
+ Tizen.System.SwitchUserWaitEventArgs
Internal API ChangedAdded: 0, Removed: 24, Changed: 0Removed- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- Tizen.System.AddUserEventArgs
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.String Tizen.System.AddUserEventArgs::UserName()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- Tizen.System.RemoveUserEventArgs
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.String Tizen.System.RemoveUserEventArgs::UserName()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- Tizen.System.Session
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- static System.Int32 Tizen.System.Session::MaxUserLength
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- static System.String Tizen.System.Session::EmptyUser
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Int32 Tizen.System.Session::SessionUID()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Collections.Generic.IReadOnlyList`1<System.String> Tizen.System.Session::GetUsers()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.String Tizen.System.Session::GetCurrentUser()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Void Tizen.System.Session::SubsessionEventMarkAsDone(Tizen.System.SubsessionEventArgs)
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- static Tizen.System.Session Tizen.System.Session::GetInstance(System.Int32)
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.EventHandler`1<Tizen.System.AddUserEventArgs> Tizen.System.Session::AddUserWait
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.EventHandler`1<Tizen.System.RemoveUserEventArgs> Tizen.System.Session::RemoveUserWait
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.EventHandler`1<Tizen.System.SwitchUserCompletionEventArgs> Tizen.System.Session::SwitchUserCompleted
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.EventHandler`1<Tizen.System.SwitchUserWaitEventArgs> Tizen.System.Session::SwitchUserWait
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- Tizen.System.SubsessionEventArgs
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Int32 Tizen.System.SubsessionEventArgs::SessionUID()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- Tizen.System.SwitchUserCompletionEventArgs
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- Tizen.System.SwitchUserEventArgs
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Int64 Tizen.System.SwitchUserEventArgs::SwitchID()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.String Tizen.System.SwitchUserEventArgs::UserNameNext()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.String Tizen.System.SwitchUserEventArgs::UserNamePrev()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- Tizen.System.SwitchUserWaitEventArgs
|
| /// <exception cref="UnauthorizedAccessException">Not permitted</exception> | ||
| /// <exception cref="NotSupportedException">Not supported</exception> | ||
| [EditorBrowsable(EditorBrowsableState.Never)] | ||
| /// <since_tizen>10.1</since_tizen> |
There was a problem hiding this comment.
🤖 [AI Review]
🔴 Critical: GetUsers() is now part of the public API surface (the [EditorBrowsable(...Never)] attribute was removed), but its XML doc is missing a <returns> tag for its non-void return value.
| /// <since_tizen>10.1</since_tizen> | |
| /// <returns>A read-only list of all subsession user IDs for this session.</returns> | |
| /// <since_tizen>10.1</since_tizen> |
| /// <exception cref="UnauthorizedAccessException">Not permitted</exception> | ||
| /// <exception cref="NotSupportedException">Not supported</exception> | ||
| [EditorBrowsable(EditorBrowsableState.Never)] | ||
| /// <since_tizen>10.1</since_tizen> |
There was a problem hiding this comment.
🤖 [AI Review]
🔴 Critical: GetCurrentUser() is now part of the public API surface (the [EditorBrowsable(...Never)] attribute was removed), but its XML doc is missing a <returns> tag for its non-void return value.
| /// <since_tizen>10.1</since_tizen> | |
| /// <returns>The currently active subsession user ID, or "" (EmptyUser) when no subsession is enabled.</returns> | |
| /// <since_tizen>10.1</since_tizen> |
|
🤖 [AI Review]
See inline for details. Automated review by AI assistant — final merge decision rests with human reviewers. |
|
Addressed comments. |
Public API ChangedPlease follow the ACR process for the changed API below. Added: 24, Removed: 0, Changed: 0Added+ /// <since_tizen>10.1</since_tizen
+ Tizen.System.AddUserEventArgs
+ /// <since_tizen>10.1</since_tizen
+ System.String Tizen.System.AddUserEventArgs::UserName()
+ /// <since_tizen>10.1</since_tizen
+ Tizen.System.RemoveUserEventArgs
+ /// <since_tizen>10.1</since_tizen
+ System.String Tizen.System.RemoveUserEventArgs::UserName()
+ /// <since_tizen>10.1</since_tizen
+ Tizen.System.Session
+ /// <since_tizen>10.1</since_tizen
+ static System.Int32 Tizen.System.Session::MaxUserLength
+ /// <since_tizen>10.1</since_tizen
+ static System.String Tizen.System.Session::EmptyUser
+ /// <since_tizen>10.1</since_tizen
+ System.Int32 Tizen.System.Session::SessionUID()
+ /// <since_tizen>10.1</since_tizen
+ System.Collections.Generic.IReadOnlyList`1<System.String> Tizen.System.Session::GetUsers()
+ /// <since_tizen>10.1</since_tizen
+ System.String Tizen.System.Session::GetCurrentUser()
+ /// <since_tizen>10.1</since_tizen
+ System.Void Tizen.System.Session::SubsessionEventMarkAsDone(Tizen.System.SubsessionEventArgs)
+ /// <since_tizen>10.1</since_tizen
+ static Tizen.System.Session Tizen.System.Session::GetInstance(System.Int32)
+ /// <since_tizen>10.1</since_tizen
+ System.EventHandler`1<Tizen.System.AddUserEventArgs> Tizen.System.Session::AddUserWait
+ /// <since_tizen>10.1</since_tizen
+ System.EventHandler`1<Tizen.System.RemoveUserEventArgs> Tizen.System.Session::RemoveUserWait
+ /// <since_tizen>10.1</since_tizen
+ System.EventHandler`1<Tizen.System.SwitchUserCompletionEventArgs> Tizen.System.Session::SwitchUserCompleted
+ /// <since_tizen>10.1</since_tizen
+ System.EventHandler`1<Tizen.System.SwitchUserWaitEventArgs> Tizen.System.Session::SwitchUserWait
+ /// <since_tizen>10.1</since_tizen
+ Tizen.System.SubsessionEventArgs
+ /// <since_tizen>10.1</since_tizen
+ System.Int32 Tizen.System.SubsessionEventArgs::SessionUID()
+ /// <since_tizen>10.1</since_tizen
+ Tizen.System.SwitchUserCompletionEventArgs
+ /// <since_tizen>10.1</since_tizen
+ Tizen.System.SwitchUserEventArgs
+ /// <since_tizen>10.1</since_tizen
+ System.Int64 Tizen.System.SwitchUserEventArgs::SwitchID()
+ /// <since_tizen>10.1</since_tizen
+ System.String Tizen.System.SwitchUserEventArgs::UserNameNext()
+ /// <since_tizen>10.1</since_tizen
+ System.String Tizen.System.SwitchUserEventArgs::UserNamePrev()
+ /// <since_tizen>10.1</since_tizen
+ Tizen.System.SwitchUserWaitEventArgs
Internal API ChangedAdded: 0, Removed: 24, Changed: 0Removed- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- Tizen.System.AddUserEventArgs
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.String Tizen.System.AddUserEventArgs::UserName()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- Tizen.System.RemoveUserEventArgs
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.String Tizen.System.RemoveUserEventArgs::UserName()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- Tizen.System.Session
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- static System.Int32 Tizen.System.Session::MaxUserLength
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- static System.String Tizen.System.Session::EmptyUser
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Int32 Tizen.System.Session::SessionUID()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Collections.Generic.IReadOnlyList`1<System.String> Tizen.System.Session::GetUsers()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.String Tizen.System.Session::GetCurrentUser()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Void Tizen.System.Session::SubsessionEventMarkAsDone(Tizen.System.SubsessionEventArgs)
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- static Tizen.System.Session Tizen.System.Session::GetInstance(System.Int32)
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.EventHandler`1<Tizen.System.AddUserEventArgs> Tizen.System.Session::AddUserWait
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.EventHandler`1<Tizen.System.RemoveUserEventArgs> Tizen.System.Session::RemoveUserWait
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.EventHandler`1<Tizen.System.SwitchUserCompletionEventArgs> Tizen.System.Session::SwitchUserCompleted
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.EventHandler`1<Tizen.System.SwitchUserWaitEventArgs> Tizen.System.Session::SwitchUserWait
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- Tizen.System.SubsessionEventArgs
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Int32 Tizen.System.SubsessionEventArgs::SessionUID()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- Tizen.System.SwitchUserCompletionEventArgs
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- Tizen.System.SwitchUserEventArgs
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.Int64 Tizen.System.SwitchUserEventArgs::SwitchID()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.String Tizen.System.SwitchUserEventArgs::UserNameNext()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- System.String Tizen.System.SwitchUserEventArgs::UserNamePrev()
- /// <since_tizen>none</since_tizen
- [EditorBrowsable(EditorBrowsableState.Never)]
- Tizen.System.SwitchUserWaitEventArgs
|
|
🤖 [AI Review] Reviewed — no findings. (delta commit Scope checked:
No 🔴 critical issues, no 🟡 suggestions to flag. Automated review — final merge decision rests with human reviewers. |
Expose the Session API (currently platform-only) to public. See TCSACR-655, and ACR-1952 for the native side.