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 {
/// 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) {
......
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