Update Check on Startup ┌────────────────────┐ ┌───────────────┐ ┌────────┐ ┌────────────┐ ┌──────────────┐ ┌──────────┐ ┌──────────────────┐ ┌─────────┐ │DefaultUpdateService│ │CheckForUpdates│ │UpToDate│ │ProtocolUtil│ │AvailableSites│ │UpdateSite│ │PromptUserToUpdate│ │UpdaterUI│ └─────────┬──────────┘ └───────┬───────┘ └───┬────┘ └─────┬──────┘ └──────┬───────┘ └────┬─────┘ └────────┬─────────┘ └────┬────┘ │ run │ │ │ │ │ │ │ │ ───────────────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ check ┌┴┐ │ │ │ │ │ │ │────────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ │ │ │ │ neverRemind │ │ │ │ │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ CHECK_TURNED_OFF │ │ │ │ │ │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ │ │ │ │ shouldRemindLater │ │ │ │ │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ REMIND_LATER │ │ │ │ │ │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ │ │ │ │ canWrite │ │ │ │ │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ READ_ONLY │ │ │ │ │ │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ │ │ │ │ isProtectedLocation │ │ │ │ │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ PROTECTED_LOCATION │ │ │ │ │ │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ │ │ │ │ isDeveloper │ │ │ │ │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ DEVELOPER │ │ │ │ │ │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ │ │ │ │ haveNetworkConnection │ │ │ │ │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ OFFLINE │ │ │ │ │ │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ create ┌───────────────┐ │ │ │ │ │ │ │ │ │ ──────────────────>│FilesCollection│ │ │ │ │ │ │ │ │ │ └───────┬───────┘ │ │ │ │ │ │ │ │ │ read │ │ │ │ │ │ │ │ │ │ ──────────────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ checkHTTPSSupport │ │ │ │ │ │ │ │ │ ────────────────────────────────────────────────────> │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ hasUpdateSiteURLUpdates │ │ │ │ │ │ │ │ │ ─────────────────────────────────────────────────────────────────────────────> │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ UPDATEABLE │ │ │ │ │ │ │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ isLastModified │ │ │ │ │ │ │ │ ─────────────────────────────────────────────────────────────────────────────────────────────────────> │ │ │ │ │ │ │ │ │ │ │ │ │ │ UPDATEABLE │ │ │ │ │ │ │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ │ │ │ │ │ │ │ │ │ └┬┘ │ │ │ │ │ │ │ │ UP_TO_DATE │ │ │ │ │ │ │ │ │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ run│ │ │ │ │ │ │────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────> │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ run │ │ │ │ │ │ │ │ │ ───────────────────────>│ ┌─────────┴──────────┐ ┌───────┴───────┐ ┌───┴────┐ ┌───────┴───────┐ ┌─────┴──────┐ ┌──────┴───────┐ ┌────┴─────┐ ┌────────┴─────────┐ ┌────┴────┐ │DefaultUpdateService│ │CheckForUpdates│ │UpToDate│ │FilesCollection│ │ProtocolUtil│ │AvailableSites│ │UpdateSite│ │PromptUserToUpdate│ │UpdaterUI│ └────────────────────┘ └───────────────┘ └────────┘ └───────────────┘ └────────────┘ └──────────────┘ └──────────┘ └──────────────────┘ └─────────┘