Details
-
New Feature
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.2.12-core
-
None
-
All
Description
Add Window abstraction to Trinidad. Currently, Trinidad knows nothing of the separate browser Windows that make up a browser session. This causes weird problems. For example, the state management token cache is shared across all of the active windows with a simple LRU. If the user opens up two windows and operates on one window long enough, he will cause the token state for the original window to be purged. When the user switches back to the original window and POSTs back, the token won't be found, Trinidad will assume that this is because the session expired, and the user will be given an error.
Adding the concept of a Window and a Window lifecyle opens up the following capabilities:
1) Correct handling of per-window UI state by segregating tokens by window
2) Early clean-up of UI state by aggressively purging state for closed windows
3) Applications can manager per-window state by listening for window lifecycle events
4) Sessions can be cleaned up earlier by terminating the session when the last window in the session is closed
5) A window scope can be implemented to ease using per-window state with EL
6) A window manager implementation can hide the details of handling control-N in the browser