Unverified Commit 458f6f45 authored by Mouad Debbar's avatar Mouad Debbar Committed by GitHub

[web] Fix url strategy null safety (#79888)

parent eb9a2f0c
...@@ -90,12 +90,12 @@ abstract class JsUrlStrategy { ...@@ -90,12 +90,12 @@ abstract class JsUrlStrategy {
/// Push a new history entry. /// Push a new history entry.
/// ///
/// See: https://developer.mozilla.org/en-US/docs/Web/API/History/pushState /// 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. /// Replace the currently active history entry.
/// ///
/// See: https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState /// 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. /// Moves forwards or backwards through the history stack.
/// ///
......
...@@ -48,12 +48,12 @@ abstract class UrlStrategy { ...@@ -48,12 +48,12 @@ abstract class UrlStrategy {
/// Push a new history entry. /// Push a new history entry.
/// ///
/// See: https://developer.mozilla.org/en-US/docs/Web/API/History/pushState /// 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. /// Replace the currently active history entry.
/// ///
/// See: https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState /// 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. /// Moves forwards or backwards through the history stack.
/// ///
...@@ -129,12 +129,12 @@ class HashUrlStrategy extends UrlStrategy { ...@@ -129,12 +129,12 @@ class HashUrlStrategy extends UrlStrategy {
} }
@override @override
void pushState(Object state, String title, String url) { void pushState(Object? state, String title, String url) {
_platformLocation.pushState(state, title, prepareExternalUrl(url)); _platformLocation.pushState(state, title, prepareExternalUrl(url));
} }
@override @override
void replaceState(Object state, String title, String url) { void replaceState(Object? state, String title, String url) {
_platformLocation.replaceState(state, title, prepareExternalUrl(url)); _platformLocation.replaceState(state, title, prepareExternalUrl(url));
} }
...@@ -245,12 +245,12 @@ abstract class PlatformLocation { ...@@ -245,12 +245,12 @@ abstract class PlatformLocation {
/// Adds a new entry to the browser history stack. /// Adds a new entry to the browser history stack.
/// ///
/// See: https://developer.mozilla.org/en-US/docs/Web/API/History/pushState /// 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. /// Replaces the current entry in the browser history stack.
/// ///
/// See: https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState /// 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. /// Moves forwards or backwards through the history stack.
/// ///
...@@ -310,12 +310,12 @@ class BrowserPlatformLocation extends PlatformLocation { ...@@ -310,12 +310,12 @@ class BrowserPlatformLocation extends PlatformLocation {
Object? get state => _history.state; Object? get state => _history.state;
@override @override
void pushState(Object state, String title, String url) { void pushState(Object? state, String title, String url) {
_history.pushState(state, title, url); _history.pushState(state, title, url);
} }
@override @override
void replaceState(Object state, String title, String url) { void replaceState(Object? state, String title, String url) {
_history.replaceState(state, title, url); _history.replaceState(state, title, url);
} }
......
...@@ -17,6 +17,12 @@ void main() { ...@@ -17,6 +17,12 @@ void main() {
location = TestPlatformLocation(); 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', () { test('leading slash is optional', () {
final HashUrlStrategy strategy = HashUrlStrategy(location); final HashUrlStrategy strategy = HashUrlStrategy(location);
...@@ -48,6 +54,13 @@ void main() { ...@@ -48,6 +54,13 @@ void main() {
location = TestPlatformLocation(); 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', () { test('validates base href', () {
location.baseHref = '/'; location.baseHref = '/';
expect( expect(
...@@ -159,14 +172,10 @@ class TestPlatformLocation extends PlatformLocation { ...@@ -159,14 +172,10 @@ class TestPlatformLocation extends PlatformLocation {
} }
@override @override
void pushState(dynamic state, String title, String url) { void pushState(Object? state, String title, String url) {}
throw UnimplementedError();
}
@override @override
void replaceState(dynamic state, String title, String url) { void replaceState(Object? state, String title, String url) {}
throw UnimplementedError();
}
@override @override
void go(int count) { void go(int count) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment