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 4dd6bd0d5a97162fdca18567b1b3dcc3a52a0b6e..665d22e3e682adc9a9575ec9285db8071cb8c92e 100644 |
--- a/components/sessions/content/content_serialized_navigation_driver.cc |
+++ b/components/sessions/content/content_serialized_navigation_driver.cc |
@@ -11,6 +11,13 @@ |
namespace sessions { |
+namespace { |
+const int kObsoleteReferrerPolicyAlways = 0; |
+const int kObsoleteReferrerPolicyDefault = 1; |
+const int kObsoleteReferrerPolicyNever = 2; |
+const int kObsoleteReferrerPolicyOrigin = 3; |
Mike West
2015/01/29 12:06:35
\o/
|
+} // namespace |
+ |
// static |
SerializedNavigationDriver* SerializedNavigationDriver::Get() { |
return ContentSerializedNavigationDriver::GetInstance(); |
@@ -33,6 +40,45 @@ int ContentSerializedNavigationDriver::GetDefaultReferrerPolicy() const { |
return blink::WebReferrerPolicyDefault; |
} |
+bool ContentSerializedNavigationDriver::MapReferrerPolicyToOldValues( |
+ int referrer_policy, |
+ int* mapped_referrer_policy) const { |
+ switch (referrer_policy) { |
+ case blink::WebReferrerPolicyAlways: |
+ case blink::WebReferrerPolicyDefault: |
+ // "always" and "default" are the same value in all versions. |
+ *mapped_referrer_policy = referer_policy; |
+ return true; |
+ |
+ case blink::WebReferrerPolicyOrigin: |
+ // "origin" exists in the old encoding. |
+ *mapped_referrer_policy = kObsoleteReferrerPolicyOrigin; |
+ return true; |
+ |
+ default: |
+ // Everything else is mapped to never. |
+ *mapped_referrer_policy = kObsoleteReferrerPolicyNever; |
+ return false; |
+ } |
+} |
+ |
+bool ContentSerializedNavigationDriver::MapReferrerPolicyToNewValues( |
+ int referrer_policy, |
+ int* mapped_referrer_policy) const { |
+ switch (referrer_policy) { |
+ case kObsoleteReferrerPolicyAlways: |
+ case kObsoleteReferrerPolicyDefault: |
+ // "always" and "default" are the same value in all versions. |
+ *mapped_referrer_policy = referrer_policy; |
+ return true; |
+ |
+ default: |
+ // Since we don't know what encoding was used, we map the rest to "never". |
+ *mapped_referrer_policy = blink::WebReferrerPolicyNever; |
+ return false; |
+ } |
+} |
+ |
std::string |
ContentSerializedNavigationDriver::GetSanitizedPageStateForPickle( |
const SerializedNavigationEntry* navigation) const { |