Skip to content

Instantly share code, notes, and snippets.

@usutani
Last active July 24, 2021 23:31
Show Gist options
  • Save usutani/d80b391c54221c179cbae961c6d47925 to your computer and use it in GitHub Desktop.
Save usutani/d80b391c54221c179cbae961c6d47925 to your computer and use it in GitHub Desktop.
@startuml visit
hide footbox
note over Session: new
create Navigator
Session -> Navigator: new
create History
Session -> History: new
create PageView
Session -> PageView: new
create BrowserAdapter
Session -> BrowserAdapter: new
note over Session: visit
Session -> Navigator: proposeVisit
Navigator -> Session: delegate
Session -> BrowserAdapter: visitProposedToLocation
BrowserAdapter -> Navigator: startVisit
create Visit
Navigator -> Visit: currentVisit = new
Navigator -> Visit: start
Visit -> Navigator: delegate
Navigator -> Session: delegate
Session -> BrowserAdapter: visitStarted
BrowserAdapter -> Visit: issueRequest
create FetchRequest
Visit -> FetchRequest: request = new
Visit -> FetchRequest: perform
FetchRequest -> FetchRequest: allowRequestToBeIntercepted
FetchRequest -> Visit: requestStarted
Visit -> Visit: startRequest
Visit -> Navigator: delegate
Navigator -> Session: delegate
Session -> BrowserAdapter: visitRequestStarted
BrowserAdapter -> BrowserAdapter: showProgressBar
note over FetchRequest: fetch
FetchRequest -> FetchRequest: receive
create FetchResponse
FetchRequest -> FetchResponse: new
FetchRequest -> Visit: requestSucceededWithResponse
Visit -> FetchResponse: responseHTML
Visit -> FetchResponse: redirected
Visit -> FetchResponse: location
Visit -> Visit: recordResponse
Visit -> BrowserAdapter: visitRequestFailedWithStatusCode
BrowserAdapter -> Visit: loadResponse
Visit -> Visit: render
Visit -> Visit: cancelRender
note over Visit: this.frame = requestAnimationFrame(() => resolve())
Visit -> Visit: callback
Visit -> Visit: cacheSnapshot
Visit -> Navigator: delegate
Navigator -> Session: delegate
Session -> PageView: cacheSnapshot
PageView -> Session: viewWillCacheSnapshot
Session -> Session: notifyApplicationBeforeCachingSnapshot
Visit -> Navigator: delegate
Navigator -> Session: delegate
Session -> PageView: renderPromise
Visit -> Navigator: delegate
Navigator -> Session: delegate
Session -> PageView: renderPage
create PageRenderer
PageView -> PageRenderer: new
PageView -> PageView: render
PageView -> PageView: ...
Visit -> Navigator: delegate
Navigator -> Session: delegate
Session -> BrowserAdapter: visitRendered
Visit -> Visit: complete
Visit -> Navigator: delegate
Navigator -> Session: delegate
Session -> BrowserAdapter: visitCompleted
BrowserAdapter -> Visit: followRedirect
Visit -> Navigator: delegate
Navigator -> Session: visitCompleted
Session -> Session: notifyApplicationAfterPageLoad
note over Visit: delete this.frame
Visit -> Visit: performScroll
FetchRequest -> Visit: requestFinished
Visit -> Visit: finishRequest
Visit -> Navigator: delegate
Navigator -> Session: delegate
Session -> BrowserAdapter: visitRequestFinished
BrowserAdapter -> BrowserAdapter: hideProgressBar
@enduml
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment