angular/packages/router/test
Andrew Scott ad61bf6184 refactor(router): Remove internal state tracking for browserUrlTree (#48065)
The browserUrlTree is only used to support the onSameUrlNavigation: 'ignore' logic. We can achieve this functionality without having this state tracked inside the Router. Instead, we can re-examine what ignore means: We don't want to rerun the matching logic, guards, or resolvers when we already know that nothing is changing.
Outside of the "navigated", there are two things that constitute a "change":

1. The browser URL might change. Because of skipLocationChange, the browser URL might not always match the internal state of the Router (we can navigate to a path but skip updating the browser URL). If we're navigating to a place that would change the browser URL, we should process the navigation. Theoretically, all we need to really do is update the browser URL instead of processing the whole navigation w/ guards, redirects, and resolvers. But this doesn't matter that much because the default value for runGuardsAndResolvers will skip all of this anyways.
2. The internal state of the Router might change. That is, we're navigating to a new path and may or may not be updating the updating the browser URL.

If either of the above are true, we process the navigation. If both are false, we aren't changing anything so we can safely ignore the navigation request (as long as onSameUrlNavigation === 'ignore').

Why is this change important?

* Simplification of Router internals. The Router has a lot of special case handling and one-offs to handle a limited set of scenarios. Removing these when possible makes the code easier to follow

PR Close #48065
2023-09-19 16:50:56 +02:00
..
directives refactor(router): Ensure data is bound to components in change detection following navigation (#49741) 2023-04-12 09:33:11 -07:00
operators refactor(router): Remove RouterTestingModule in favor of RouterModule.forRoot (#49427) 2023-04-04 15:12:33 -07:00
utils build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
apply_redirects.spec.ts fix(router): Route matching should only happen once when navigating (#49163) 2023-03-29 14:40:41 -07:00
bootstrap.spec.ts feat(router): Add feature to support the View Transitions API (#51314) 2023-09-11 10:36:10 -07:00
BUILD.bazel fix(router): Ensure title observable gets latest values (#51561) 2023-08-31 16:42:44 +00:00
computed_state_restoration.spec.ts fix(router): Remove deprecated Router properties (#51502) 2023-08-29 19:47:58 +00:00
config.spec.ts refactor(router): code cleaning (#48259) 2022-12-09 09:59:20 -08:00
create_router_state.spec.ts fix(router): Route matching should only happen once when navigating (#49163) 2023-03-29 14:40:41 -07:00
create_url_tree.spec.ts fix(router): Apply named outlets to children empty paths not appearing in the URL (#51292) 2023-08-10 09:18:30 -07:00
default_export_component.ts feat(router): auto-unwrap default exports when lazy loading (#47586) 2022-10-04 14:40:58 -07:00
default_export_routes.ts feat(router): auto-unwrap default exports when lazy loading (#47586) 2022-10-04 14:40:58 -07:00
helpers.ts refactor(router): Remove legacy url creation code (#49360) 2023-03-22 16:37:01 +01:00
integration.spec.ts refactor(router): Remove internal state tracking for browserUrlTree (#48065) 2023-09-19 16:50:56 +02:00
page_title_strategy_spec.ts build: align with internal tsconfig options (#51728) 2023-09-12 11:39:42 -07:00
recognize.spec.ts fix(router): Route matching should only happen once when navigating (#49163) 2023-03-29 14:40:41 -07:00
regression_integration.spec.ts refactor(router): Remove RouterTestingModule in favor of RouterModule.forRoot (#49427) 2023-04-04 15:12:33 -07:00
router.spec.ts refactor(router): Remove RouterTestingModule in favor of RouterModule.forRoot (#49427) 2023-04-04 15:12:33 -07:00
router_link_spec.ts refactor(router): use transform to coerce input values (#50589) 2023-06-06 14:15:50 -07:00
router_preloader.spec.ts fix(router): Ensure Router preloading works with lazy component and static children (#49571) 2023-03-24 10:41:10 -07:00
router_scroller.spec.ts Revert "refactor(router): Remove zone code from router scroller (#49238)" (#49311) 2023-03-03 18:31:04 +00:00
router_state.spec.ts refactor(router): code cleaning (#48259) 2022-12-09 09:59:20 -08:00
shared.spec.ts fix(router): fix error when calling ParamMap.get function (#31599) 2020-06-25 11:57:24 -07:00
standalone.spec.ts refactor(router): Remove RouterTestingModule in favor of RouterModule.forRoot (#49427) 2023-04-04 15:12:33 -07:00
url_serializer.spec.ts build: align with internal tsconfig options (#51728) 2023-09-12 11:39:42 -07:00
url_tree.spec.ts refactor(router): run spell check on router package (#50445) 2023-05-24 13:56:56 +00:00