Those browser events probably need to be a sub event of 'on start of layout'? They're separated out so they run every tick and the Else will not work correctly.
I think "is downloading upgrade" is required every tick.
With that you get the percentage of downloaded data.
If I put in "start layout" would be checked only once, it would not help.
The "else" will always be correct until the download is complete.