Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3872)

Unified Diff: components/sessions/content/content_serialized_navigation_driver.cc

Issue 2355543003: Invalidate the page state when restoring WebUIs (Closed)
Patch Set: address comments Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/webui/md_history_ui.cc ('k') | content/public/common/url_constants.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/sessions/content/content_serialized_navigation_driver.cc
diff --git a/components/sessions/content/content_serialized_navigation_driver.cc b/components/sessions/content/content_serialized_navigation_driver.cc
index a3305a8695311157429112f3677d91fa124daac5..42515cb6a0169d03b5fad7f0a70887bfe8b17132 100644
--- a/components/sessions/content/content_serialized_navigation_driver.cc
+++ b/components/sessions/content/content_serialized_navigation_driver.cc
@@ -18,6 +18,13 @@ const int kObsoleteReferrerPolicyAlways = 0;
const int kObsoleteReferrerPolicyDefault = 1;
const int kObsoleteReferrerPolicyNever = 2;
const int kObsoleteReferrerPolicyOrigin = 3;
+
+bool IsUberOrUberReplacementURL(const GURL& url) {
+ return url.SchemeIs(content::kChromeUIScheme) &&
+ (url.host() == content::kChromeUIHistoryHost ||
+ url.host() == content::kChromeUIUberHost);
+}
+
} // namespace
// static
@@ -103,6 +110,14 @@ void ContentSerializedNavigationDriver::Sanitize(
content::Referrer::SanitizeForRequest(navigation->virtual_url_,
old_referrer);
+ // Clear any WebUI page state so that WebUI pages reloaded rather than
Charlie Reis 2016/09/23 06:33:53 nit: are reloaded nit: Update stale references to
+ // restored from page state. This fixes session restore when WebUI URLs
+ // change.
+ if (IsUberOrUberReplacementURL(navigation->virtual_url_) &&
+ IsUberOrUberReplacementURL(navigation->original_request_url_)) {
+ navigation->encoded_page_state_ = std::string();
+ }
+
// No need to compare the policy, as it doesn't change during
// sanitization. If there has been a change, the referrer needs to be
// stripped from the page state as well.
« no previous file with comments | « chrome/browser/ui/webui/md_history_ui.cc ('k') | content/public/common/url_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698