mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
[web] Use 'Uri' instead of 'dart:html' to extract pathname (#127983)
- Use `Uri.parse()` to extract pathname. - Remove unused code from `utils.dart`. - Add test for URL encoding. (need to wait for https://github.com/flutter/flutter/pull/126851 to make it into Google3)
This commit is contained in:
parent
9753223932
commit
d87656559c
@ -2,28 +2,14 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dart:html';
|
||||
|
||||
final AnchorElement _urlParsingNode = AnchorElement();
|
||||
|
||||
/// Extracts the pathname part of a full [url].
|
||||
///
|
||||
/// Example: for the url `http://example.com/foo`, the extracted pathname will
|
||||
/// be `/foo`.
|
||||
String extractPathname(String url) {
|
||||
_urlParsingNode.href = url; // ignore: unsafe_html, node is never exposed to the user
|
||||
final String pathname = _urlParsingNode.pathname ?? '';
|
||||
return (pathname.isEmpty || pathname[0] == '/') ? pathname : '/$pathname';
|
||||
return ensureLeadingSlash(Uri.parse(url).path);
|
||||
}
|
||||
|
||||
// The <base> element in the document.
|
||||
final Element? _baseElement = document.querySelector('base');
|
||||
|
||||
/// Returns the `href` attribute of the <base> element in the document.
|
||||
///
|
||||
/// Returns null if the element isn't found.
|
||||
String? getBaseElementHrefFromDom() => _baseElement?.getAttribute('href');
|
||||
|
||||
/// Checks that [baseHref] is set.
|
||||
///
|
||||
/// Throws an exception otherwise.
|
||||
|
@ -9,10 +9,9 @@ dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
|
||||
js: 0.6.7
|
||||
|
||||
characters: 1.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
collection: 1.17.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
js: 0.6.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
material_color_utilities: 0.5.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
meta: 1.9.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.1.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
@ -33,5 +33,9 @@ void main() {
|
||||
expect(extractPathname('https://example.com/foo'), '/foo');
|
||||
expect(extractPathname('https://example.com/foo#bar'), '/foo');
|
||||
expect(extractPathname('https://example.com/foo/#bar'), '/foo/');
|
||||
|
||||
// URL encoding.
|
||||
expect(extractPathname('/foo bar'), '/foo%20bar');
|
||||
expect(extractPathname('https://example.com/foo bar'), '/foo%20bar');
|
||||
});
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user