Chromium Code Reviews| 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. |