| // Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| /// Returns [url] modified if necessary so that, if the current page is served | |
| /// over `https`, then the URL is converted to `https` (or `wss`). | |
| String fixProtocol(String url, {required String windowLocationProtocol}) { | |
| var uri = Uri.parse(url); | |
| if (windowLocationProtocol == 'https:' && | |
| // Chrome allows mixed content on localhost. It is not safe to assume the | |
| // server is also listening on https. | |
| uri.host != 'localhost') { | |
| if (uri.scheme == 'http') { | |
| uri = uri.replace(scheme: 'https'); | |
| } else if (uri.scheme == 'ws') { | |
| uri = uri.replace(scheme: 'wss'); | |
| } | |
| } | |
| return uri.toString(); | |
| } |