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 475f8ddc8ea0aeff3db81b37737edf7ffb5a23c5..fe7d0c70f304fb78cca72828a42a63e020657476 100644 |
| --- a/components/sessions/content/content_serialized_navigation_driver.cc |
| +++ b/components/sessions/content/content_serialized_navigation_driver.cc |
| @@ -4,28 +4,22 @@ |
| #include "components/sessions/content/content_serialized_navigation_driver.h" |
| +#include <utility> |
| + |
| #include "base/memory/singleton.h" |
| -#include "build/build_config.h" |
| #include "components/sessions/core/serialized_navigation_entry.h" |
| -#include "content/public/common/content_features.h" |
| #include "content/public/common/page_state.h" |
| -#include "content/public/common/referrer.h" |
| -#include "content/public/common/url_constants.h" |
| +#include "third_party/WebKit/public/platform/WebReferrerPolicy.h" |
| namespace sessions { |
| namespace { |
| + |
| 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_piece() == content::kChromeUIHistoryHost || |
| - url.host_piece() == content::kChromeUIUberHost); |
| -} |
| - |
| } // namespace |
| // static |
| @@ -34,6 +28,13 @@ SerializedNavigationDriver* SerializedNavigationDriver::Get() { |
| } |
| // static |
| +void SerializedNavigationDriver::SetSanitizeCallback( |
| + const SanitizeCallback& callback) { |
| + return ContentSerializedNavigationDriver::GetInstance()->set_callback( |
| + callback); |
| +} |
| + |
| +// static |
| ContentSerializedNavigationDriver* |
| ContentSerializedNavigationDriver::GetInstance() { |
| return base::Singleton< |
| @@ -93,74 +94,18 @@ bool ContentSerializedNavigationDriver::MapReferrerPolicyToNewValues( |
| std::string |
| ContentSerializedNavigationDriver::GetSanitizedPageStateForPickle( |
| const SerializedNavigationEntry* navigation) const { |
| - if (!navigation->has_post_data_) { |
| - return navigation->encoded_page_state_; |
| - } |
| - content::PageState page_state = |
| - content::PageState::CreateFromEncodedData( |
| - navigation->encoded_page_state_); |
| + if (!navigation->has_post_data()) |
| + return navigation->encoded_page_state(); |
| + |
| + content::PageState page_state = content::PageState::CreateFromEncodedData( |
| + navigation->encoded_page_state()); |
| return page_state.RemovePasswordData().ToEncodedData(); |
| } |
| void ContentSerializedNavigationDriver::Sanitize( |
| SerializedNavigationEntry* navigation) const { |
| - content::Referrer old_referrer( |
| - navigation->referrer_url_, |
| - static_cast<blink::WebReferrerPolicy>(navigation->referrer_policy_)); |
| - content::Referrer new_referrer = |
| - content::Referrer::SanitizeForRequest(navigation->virtual_url_, |
| - old_referrer); |
| - |
| - // Clear any Uber UI page state so that these pages are reloaded rather than |
| - // 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_.clear(); |
| - } |
| - |
| - // 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. |
| - if (navigation->referrer_url_ != new_referrer.url) { |
| - navigation->referrer_url_ = GURL(); |
| - navigation->referrer_policy_ = GetDefaultReferrerPolicy(); |
| - navigation->encoded_page_state_ = |
| - StripReferrerFromPageState(navigation->encoded_page_state_); |
| - } |
| - |
| -#if defined(OS_ANDROID) |
| - // Rewrite the old new tab and welcome page URLs to the new NTP URL. |
| - if (navigation->virtual_url_.SchemeIs(content::kChromeUIScheme) && |
| - (navigation->virtual_url_.host_piece() == "welcome" || |
| - navigation->virtual_url_.host_piece() == "newtab")) { |
| - navigation->virtual_url_ = GURL("chrome-native://newtab/"); |
| - navigation->original_request_url_ = navigation->virtual_url_; |
| - navigation->encoded_page_state_ = content::PageState::CreateFromURL( |
| - navigation->virtual_url_).ToEncodedData(); |
| - } |
| - |
| - if (base::FeatureList::IsEnabled(features::kNativeAndroidHistoryManager) && |
| - navigation->virtual_url_.SchemeIs(content::kChromeUIScheme) && |
| - (navigation->virtual_url_.host_piece() == content::kChromeUIHistoryHost || |
| - navigation->virtual_url_.host_piece() == |
| - content::kChromeUIHistoryFrameHost)) { |
| - // Rewrite the old history Web UI to the new android native history. |
| - navigation->virtual_url_ = GURL(content::kChromeUINativeHistoryURL); |
| - navigation->original_request_url_ = navigation->virtual_url_; |
| - navigation->encoded_page_state_ = content::PageState::CreateFromURL( |
| - navigation->virtual_url_).ToEncodedData(); |
| - } else if ( |
| - !base::FeatureList::IsEnabled(features::kNativeAndroidHistoryManager) && |
| - navigation->virtual_url_.SchemeIs(content::kChromeNativeUIScheme) && |
| - navigation->virtual_url_.host_piece() == content::kChromeUIHistoryHost) { |
| - // If the android native history UI has been disabled, redirect |
| - // chrome-native://history to the old web UI. |
| - navigation->virtual_url_ = GURL(content::kChromeUIHistoryURL); |
| - navigation->original_request_url_ = navigation->virtual_url_; |
| - navigation->encoded_page_state_.clear(); |
| - } |
| -#endif // defined(OS_ANDROID) |
| + if (callback_) |
|
Dan Beam
2017/03/21 05:47:50
do you need this if?
Lei Zhang
2017/03/21 17:12:51
The alternative is to call SetSanitizeCallback() w
|
| + callback_.Run(navigation); |
| } |
| std::string ContentSerializedNavigationDriver::StripReferrerFromPageState( |