Index: chrome/browser/resources/settings/route.js |
diff --git a/chrome/browser/resources/settings/route.js b/chrome/browser/resources/settings/route.js |
index 81e872d68458129929b598406914dce4bf599215..06b30fee2e792b675668a77c5082feedfa3c7631 100644 |
--- a/chrome/browser/resources/settings/route.js |
+++ b/chrome/browser/resources/settings/route.js |
@@ -253,6 +253,9 @@ cr.define('settings', function() { |
*/ |
var currentQueryParameters_ = new URLSearchParams(); |
+ /** @private {boolean} */ |
+ var lastRouteChangeWasPopstate_ = false; |
+ |
/** @private */ |
var initializeRouteFromUrlCalled_ = false; |
@@ -277,11 +280,13 @@ cr.define('settings', function() { |
* Helper function to set the current route and notify all observers. |
* @param {!settings.Route} route |
* @param {!URLSearchParams} queryParameters |
+ * @param {boolean} isPopstate |
*/ |
- var setCurrentRoute = function(route, queryParameters) { |
+ var setCurrentRoute = function(route, queryParameters, isPopstate) { |
var oldRoute = currentRoute_; |
currentRoute_ = route; |
currentQueryParameters_ = queryParameters; |
+ lastRouteChangeWasPopstate_ = isPopstate; |
for (var observer of routeObservers_) |
observer.currentRouteChanged(currentRoute_, oldRoute); |
}; |
@@ -294,6 +299,11 @@ cr.define('settings', function() { |
return new URLSearchParams(currentQueryParameters_); // Defensive copy. |
}; |
+ /** @return {boolean} */ |
+ var lastRouteChangeWasPopstate = function() { |
+ return lastRouteChangeWasPopstate_; |
+ }; |
+ |
/** |
* Navigates to a canonical route and pushes a new history entry. |
* @param {!settings.Route} route |
@@ -312,7 +322,7 @@ cr.define('settings', function() { |
// History serializes the state, so we don't push the actual route object. |
window.history.pushState(currentRoute_.path, '', url); |
- setCurrentRoute(route, params); |
+ setCurrentRoute(route, params, false); |
}; |
/** |
@@ -334,7 +344,7 @@ cr.define('settings', function() { |
window.addEventListener('popstate', function(event) { |
// On pop state, do not push the state onto the window.history again. |
setCurrentRoute(getRouteForPath(window.location.pathname) || Route.BASIC, |
- new URLSearchParams(window.location.search)); |
+ new URLSearchParams(window.location.search), true); |
}); |
return { |
@@ -344,6 +354,7 @@ cr.define('settings', function() { |
initializeRouteFromUrl: initializeRouteFromUrl, |
getCurrentRoute: getCurrentRoute, |
getQueryParameters: getQueryParameters, |
+ lastRouteChangeWasPopstate: lastRouteChangeWasPopstate, |
navigateTo: navigateTo, |
navigateToPreviousRoute: navigateToPreviousRoute, |
}; |