• Ian Hickson's avatar
    Improve network resources doctor check (#120417) · d29668dd
    Ian Hickson authored
    ...and various other minor cleanup:
    
    * Moved "FLUTTER_STORAGE_BASE_URL" into a constant throughout the code. There are other strings that we should do that to but this one was relevant to the code I was changing.
    
    * Fixed the logger's handling of slow warnings. Previously it deleted too much text. Fixed the test for that to actually verify it entirely, too.
    
    * Made the logger delete the slow warning when it's finished.
    
    * Fixed 'Please choose one (To quit, press "q/Q")' message to be the cleaner 'Please choose one (or "q" to quit)'.
    
    * Added a debug toString to ValidationResult for debugging purposes (not used).
    
    * In http_host_validator:
    
      - Shortened constant names to be clearer (e.g. kPubDevHttpHost -> kPubDev).
      - Added GitHub as a tested host since when you run `flutter` we hit that immediately.
      - Renamed the check "Network resources".
      - Updated the `slowWarning` of the check to say which hosts are pending.
      - Removed all timeout logic. Timeouts violate our style guide.
      - Removed `int.parse(... ?? '10')`; passing a constant to `int.parse` is inefficient.
      - Replaced the `_HostValidationResult` class with `String?` for simplicity.
      - Improved the error messages to be more detailed.
      - Removed all checks that dependened on the stringification of exceptions. That's very brittle.
      - Added a warning specifically for HandshakeException that talks about the implications (MITM attacks).
      - Replaced exception-message-parsing logic with just calling `Uri.tryParse` and validating the result.
      - Replaced a lot of list-filtering logic with just a single for loop to check the results.
      - Replaced code that added a constant to a known-empty list with just returning a constant list.
      - Revamped the logic for deciding which hosts to check to just use a single chain of if/else blocks instead of getters, lists literals with `if` expressions, `??`, functions, etc spread over multiple places in the code.
    d29668dd
doctor_validator.dart 9.97 KB