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..951ec051cef545c93da4685f8b9c906aff4e9ff3 100644 |
--- a/components/sessions/content/content_serialized_navigation_driver.cc |
+++ b/components/sessions/content/content_serialized_navigation_driver.cc |
@@ -33,6 +33,41 @@ int ContentSerializedNavigationDriver::GetDefaultReferrerPolicy() const { |
return blink::WebReferrerPolicyDefault; |
} |
+bool ContentSerializedNavigationDriver::MapReferrerPolicyToOldValues( |
+ int referrer_policy, |
+ int* mapped_referrer_policy) const { |
+ // "always" and "default" are the same value in all versions. |
+ if (referrer_policy == blink::WebReferrerPolicyAlways || |
Andrew T Wilson (Slow)
2015/01/29 11:02:13
This is fine, but I wonder if a case statement wou
|
+ referrer_policy == blink::WebReferrerPolicyDefault) { |
+ *mapped_referrer_policy = referrer_policy; |
+ return true; |
+ } |
+ |
+ // "origin" exists in the old encoding. |
+ if (referrer_policy == blink::WebReferrerPolicyOrigin) { |
+ *mapped_referrer_policy = 3; |
+ return true; |
+ } |
+ |
+ // Everything else is mapped to never. |
+ *mapped_referrer_policy = 2; |
+ return false; |
+} |
+ |
+bool ContentSerializedNavigationDriver::MapReferrerPolicyToNewValues( |
+ int referrer_policy, |
+ int* mapped_referrer_policy) const { |
+ // "always" and "default" are the same value in all versions. |
+ if (referrer_policy == 0 || referrer_policy == 1) { |
+ *mapped_referrer_policy = referrer_policy; |
+ return true; |
+ } |
+ |
+ // 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 { |