From 7a927aa5e36dc57b3f23fd6274058d780c655669 Mon Sep 17 00:00:00 2001 From: Chun-Heng Tai Date: Fri, 12 Feb 2021 11:45:15 -0800 Subject: [PATCH 1/2] Fixes hot restart correctly reset the browser history --- lib/web_ui/lib/src/engine.dart | 1 + lib/web_ui/lib/src/engine/window.dart | 5 ++--- lib/web_ui/test/engine/history_test.dart | 4 ++-- lib/web_ui/test/engine/navigation_test.dart | 2 +- lib/web_ui/test/window_test.dart | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/web_ui/lib/src/engine.dart b/lib/web_ui/lib/src/engine.dart index 926394bd58c37..df75914399930 100644 --- a/lib/web_ui/lib/src/engine.dart +++ b/lib/web_ui/lib/src/engine.dart @@ -203,6 +203,7 @@ void initializeEngine() { // This extension does not need to clean-up Dart statics. Those are cleaned // up by the compiler. developer.registerExtension('ext.flutter.disassemble', (_, __) { + window.resetHistory(); for (ui.VoidCallback listener in _hotRestartListeners) { listener(); } diff --git a/lib/web_ui/lib/src/engine/window.dart b/lib/web_ui/lib/src/engine/window.dart index 8c7e7c53630ae..fed04a5797c9c 100644 --- a/lib/web_ui/lib/src/engine/window.dart +++ b/lib/web_ui/lib/src/engine/window.dart @@ -86,12 +86,11 @@ class EngineFlutterWindow extends ui.SingletonFlutterWindow { } } - @visibleForTesting - Future debugResetHistory() async { + Future resetHistory() async { await _browserHistory?.tearDown(); _browserHistory = null; - // Reset the globals too. + _usingRouter = false; _isUrlStrategySet = false; _customUrlStrategy = null; } diff --git a/lib/web_ui/test/engine/history_test.dart b/lib/web_ui/test/engine/history_test.dart index ff2f7674d4a88..037d7fd2cc48c 100644 --- a/lib/web_ui/test/engine/history_test.dart +++ b/lib/web_ui/test/engine/history_test.dart @@ -48,7 +48,7 @@ void testMain() { tearDown(() async { spy.tearDown(); - await window.debugResetHistory(); + await window.resetHistory(); }); test('basic setup works', () async { @@ -262,7 +262,7 @@ void testMain() { tearDown(() async { spy.tearDown(); - await window.debugResetHistory(); + await window.resetHistory(); }); test('basic setup works', () async { diff --git a/lib/web_ui/test/engine/navigation_test.dart b/lib/web_ui/test/engine/navigation_test.dart index 99bae818f54a7..bfd81176080b1 100644 --- a/lib/web_ui/test/engine/navigation_test.dart +++ b/lib/web_ui/test/engine/navigation_test.dart @@ -28,7 +28,7 @@ void testMain() { tearDown(() async { _strategy = null; - await engine.window.debugResetHistory(); + await engine.window.resetHistory(); }); test('Tracks pushed, replaced and popped routes', () async { diff --git a/lib/web_ui/test/window_test.dart b/lib/web_ui/test/window_test.dart index 676bc1a315023..3d49ec25002e0 100644 --- a/lib/web_ui/test/window_test.dart +++ b/lib/web_ui/test/window_test.dart @@ -33,7 +33,7 @@ void testMain() { }); tearDown(() async { - await window.debugResetHistory(); + await window.resetHistory(); window = null; }); From 9bcbf7f4c66ed332b38912bd10bac22dda32bde5 Mon Sep 17 00:00:00 2001 From: Chun-Heng Tai Date: Tue, 16 Feb 2021 10:44:42 -0800 Subject: [PATCH 2/2] addressing review comment --- lib/web_ui/lib/src/engine.dart | 1 - lib/web_ui/lib/src/engine/window.dart | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/web_ui/lib/src/engine.dart b/lib/web_ui/lib/src/engine.dart index df75914399930..926394bd58c37 100644 --- a/lib/web_ui/lib/src/engine.dart +++ b/lib/web_ui/lib/src/engine.dart @@ -203,7 +203,6 @@ void initializeEngine() { // This extension does not need to clean-up Dart statics. Those are cleaned // up by the compiler. developer.registerExtension('ext.flutter.disassemble', (_, __) { - window.resetHistory(); for (ui.VoidCallback listener in _hotRestartListeners) { listener(); } diff --git a/lib/web_ui/lib/src/engine/window.dart b/lib/web_ui/lib/src/engine/window.dart index fed04a5797c9c..c6fee6697e4ca 100644 --- a/lib/web_ui/lib/src/engine/window.dart +++ b/lib/web_ui/lib/src/engine/window.dart @@ -32,6 +32,9 @@ class EngineFlutterWindow extends ui.SingletonFlutterWindow { _browserHistory = MultiEntriesBrowserHistory(urlStrategy: _customUrlStrategy); } + registerHotRestartListener(() { + window.resetHistory(); + }); } final Object _windowId;