[web] Fix url strategy null safety (#79888)
This commit is contained in:
parent
eb9a2f0ca5
commit
458f6f4513
@ -90,12 +90,12 @@ abstract class JsUrlStrategy {
|
||||
/// Push a new history entry.
|
||||
///
|
||||
/// See: https://developer.mozilla.org/en-US/docs/Web/API/History/pushState
|
||||
external void pushState(Object state, String title, String url);
|
||||
external void pushState(Object? state, String title, String url);
|
||||
|
||||
/// Replace the currently active history entry.
|
||||
///
|
||||
/// See: https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState
|
||||
external void replaceState(Object state, String title, String url);
|
||||
external void replaceState(Object? state, String title, String url);
|
||||
|
||||
/// Moves forwards or backwards through the history stack.
|
||||
///
|
||||
|
@ -48,12 +48,12 @@ abstract class UrlStrategy {
|
||||
/// Push a new history entry.
|
||||
///
|
||||
/// See: https://developer.mozilla.org/en-US/docs/Web/API/History/pushState
|
||||
void pushState(Object state, String title, String url);
|
||||
void pushState(Object? state, String title, String url);
|
||||
|
||||
/// Replace the currently active history entry.
|
||||
///
|
||||
/// See: https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState
|
||||
void replaceState(Object state, String title, String url);
|
||||
void replaceState(Object? state, String title, String url);
|
||||
|
||||
/// Moves forwards or backwards through the history stack.
|
||||
///
|
||||
@ -129,12 +129,12 @@ class HashUrlStrategy extends UrlStrategy {
|
||||
}
|
||||
|
||||
@override
|
||||
void pushState(Object state, String title, String url) {
|
||||
void pushState(Object? state, String title, String url) {
|
||||
_platformLocation.pushState(state, title, prepareExternalUrl(url));
|
||||
}
|
||||
|
||||
@override
|
||||
void replaceState(Object state, String title, String url) {
|
||||
void replaceState(Object? state, String title, String url) {
|
||||
_platformLocation.replaceState(state, title, prepareExternalUrl(url));
|
||||
}
|
||||
|
||||
@ -245,12 +245,12 @@ abstract class PlatformLocation {
|
||||
/// Adds a new entry to the browser history stack.
|
||||
///
|
||||
/// See: https://developer.mozilla.org/en-US/docs/Web/API/History/pushState
|
||||
void pushState(Object state, String title, String url);
|
||||
void pushState(Object? state, String title, String url);
|
||||
|
||||
/// Replaces the current entry in the browser history stack.
|
||||
///
|
||||
/// See: https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState
|
||||
void replaceState(Object state, String title, String url);
|
||||
void replaceState(Object? state, String title, String url);
|
||||
|
||||
/// Moves forwards or backwards through the history stack.
|
||||
///
|
||||
@ -310,12 +310,12 @@ class BrowserPlatformLocation extends PlatformLocation {
|
||||
Object? get state => _history.state;
|
||||
|
||||
@override
|
||||
void pushState(Object state, String title, String url) {
|
||||
void pushState(Object? state, String title, String url) {
|
||||
_history.pushState(state, title, url);
|
||||
}
|
||||
|
||||
@override
|
||||
void replaceState(Object state, String title, String url) {
|
||||
void replaceState(Object? state, String title, String url) {
|
||||
_history.replaceState(state, title, url);
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,12 @@ void main() {
|
||||
location = TestPlatformLocation();
|
||||
});
|
||||
|
||||
test('allows null state', () {
|
||||
final HashUrlStrategy strategy = HashUrlStrategy(location);
|
||||
expect(() => strategy.pushState(null, '', '/'), returnsNormally);
|
||||
expect(() => strategy.replaceState(null, '', '/'), returnsNormally);
|
||||
});
|
||||
|
||||
test('leading slash is optional', () {
|
||||
final HashUrlStrategy strategy = HashUrlStrategy(location);
|
||||
|
||||
@ -48,6 +54,13 @@ void main() {
|
||||
location = TestPlatformLocation();
|
||||
});
|
||||
|
||||
test('allows null state', () {
|
||||
location.baseHref = '/';
|
||||
final PathUrlStrategy strategy = PathUrlStrategy(location);
|
||||
expect(() => strategy.pushState(null, '', '/'), returnsNormally);
|
||||
expect(() => strategy.replaceState(null, '', '/'), returnsNormally);
|
||||
});
|
||||
|
||||
test('validates base href', () {
|
||||
location.baseHref = '/';
|
||||
expect(
|
||||
@ -159,14 +172,10 @@ class TestPlatformLocation extends PlatformLocation {
|
||||
}
|
||||
|
||||
@override
|
||||
void pushState(dynamic state, String title, String url) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
void pushState(Object? state, String title, String url) {}
|
||||
|
||||
@override
|
||||
void replaceState(dynamic state, String title, String url) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
void replaceState(Object? state, String title, String url) {}
|
||||
|
||||
@override
|
||||
void go(int count) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user