libchrome: remove backward compatibility patches on UngessableToken

BUG=b:267117536
TEST=emerge libchrome and used packages

Cq-Depend: chromium:4207534, chromium:4221114
Change-Id: Idc6074df326ff06e4896766d847bb605fdd39844
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/libchrome/+/4206858
Commit-Queue: Cici Ruan <cuicuiruan@google.com>
Reviewed-by: Qijiang YĆ«ki Ishii <fqj@google.com>
Tested-by: Ren-Pei Zeng <kamesan@chromium.org>
diff --git a/libchrome_tools/patches/backward-compatibility-0450-Revert-Rename-UnguessableToken-Deserialize2-to-Deserialize.patch b/libchrome_tools/patches/backward-compatibility-0450-Revert-Rename-UnguessableToken-Deserialize2-to-Deserialize.patch
deleted file mode 100644
index 8ae90c5..0000000
--- a/libchrome_tools/patches/backward-compatibility-0450-Revert-Rename-UnguessableToken-Deserialize2-to-Deserialize.patch
+++ /dev/null
@@ -1,360 +0,0 @@
-From 086cc0ad5c29b6d00498696353e4ae8c5e950e3d Mon Sep 17 00:00:00 2001
-From: Ren-Pei Zeng <kamesan@chromium.org>
-Date: Thu, 2 Feb 2023 18:07:48 +0800
-Subject: [PATCH] Revert "Rename UnguessableToken Deserialize2 to Deserialize"
-
-This reverts commit ef100405bf3afe57fed7c25c998c0cc56ece75e8.
----
- base/android/unguessable_token_android.cc     |  2 +-
- base/json/values_util.cc                      |  2 +-
- base/metrics/field_trial.cc                   |  2 +-
- base/unguessable_token.cc                     |  4 +-
- base/unguessable_token.h                      |  6 +--
- base/unguessable_token_unittest.cc            | 40 +++++++++----------
- ipc/ipc_message_utils.cc                      |  2 +-
- mojo/core/broker_posix.cc                     |  2 +-
- mojo/core/data_pipe_consumer_dispatcher.cc    |  4 +-
- mojo/core/data_pipe_producer_dispatcher.cc    |  4 +-
- mojo/core/ipcz_driver/shared_buffer.cc        |  4 +-
- mojo/core/platform_wrapper_unittest.cc        |  2 +-
- mojo/core/shared_buffer_dispatcher.cc         |  4 +-
- .../base/unguessable_token_mojom_traits.cc    |  2 +-
- .../cpp/platform/platform_handle_internal.h   |  2 +-
- 15 files changed, 41 insertions(+), 41 deletions(-)
-
-diff --git a/base/android/unguessable_token_android.cc b/base/android/unguessable_token_android.cc
-index efff14bdb2..448daee645 100644
---- a/base/android/unguessable_token_android.cc
-+++ b/base/android/unguessable_token_android.cc
-@@ -30,7 +30,7 @@ UnguessableTokenAndroid::FromJavaUnguessableToken(
-       Java_UnguessableToken_getLowForSerialization(env, token));
-   DCHECK(high);
-   DCHECK(low);
--  return base::UnguessableToken::Deserialize(high, low);
-+  return base::UnguessableToken::Deserialize2(high, low);
- }
- 
- ScopedJavaLocalRef<jobject>
-diff --git a/base/json/values_util.cc b/base/json/values_util.cc
-index 8f14256fcd..45035d894f 100644
---- a/base/json/values_util.cc
-+++ b/base/json/values_util.cc
-@@ -113,7 +113,7 @@ absl::optional<UnguessableToken> ValueToUnguessableToken(const Value& value) {
-   if (!HexStringToSpan(value.GetString(), repr.buffer))
-     return absl::nullopt;
-   absl::optional<base::UnguessableToken> token =
--      UnguessableToken::Deserialize(repr.field.high, repr.field.low);
-+      UnguessableToken::Deserialize2(repr.field.high, repr.field.low);
-   if (!token.has_value()) {
-     return absl::nullopt;
-   }
-diff --git a/base/metrics/field_trial.cc b/base/metrics/field_trial.cc
-index 8ebcd47c67..5d06211c71 100644
---- a/base/metrics/field_trial.cc
-+++ b/base/metrics/field_trial.cc
-@@ -203,7 +203,7 @@ bool DeserializeGUIDFromStringPieces(StringPiece first,
-     return false;
- 
-   absl::optional<UnguessableToken> token =
--      UnguessableToken::Deserialize(high, low);
-+      UnguessableToken::Deserialize2(high, low);
-   if (!token.has_value()) {
-     return false;
-   }
-diff --git a/base/unguessable_token.cc b/base/unguessable_token.cc
-index aa7423f88d..db7a361447 100644
---- a/base/unguessable_token.cc
-+++ b/base/unguessable_token.cc
-@@ -33,8 +33,8 @@ const UnguessableToken& UnguessableToken::Null() {
- }
- 
- // static
--absl::optional<UnguessableToken> UnguessableToken::Deserialize(uint64_t high,
--                                                               uint64_t low) {
-+absl::optional<UnguessableToken> UnguessableToken::Deserialize2(uint64_t high,
-+                                                                uint64_t low) {
-   // Receiving a zeroed out UnguessableToken from another process means that it
-   // was never initialized via Create(). Since this method might also be used to
-   // create an UnguessableToken from data on disk, we will handle this case more
-diff --git a/base/unguessable_token.h b/base/unguessable_token.h
-index d1e57a1d51..121f92d07a 100644
---- a/base/unguessable_token.h
-+++ b/base/unguessable_token.h
-@@ -62,8 +62,8 @@ class BASE_EXPORT UnguessableToken {
-   // NOTE: If the returned `absl::optional` does not have a value, it means that
-   // `high` and `low` correspond to an `UnguesssableToken` that was never
-   // initialized via Create(). This is a security issue, and should be handled.
--  static absl::optional<UnguessableToken> Deserialize(uint64_t high,
--                                                      uint64_t low);
-+  static absl::optional<UnguessableToken> Deserialize2(uint64_t high,
-+                                                       uint64_t low);
- 
-   // Creates an empty UnguessableToken.
-   // Assign to it with Create() before using it.
-@@ -107,7 +107,7 @@ class BASE_EXPORT UnguessableToken {
- 
- #if defined(UNIT_TEST)
-   static UnguessableToken CreateForTesting(uint64_t high, uint64_t low) {
--    absl::optional<UnguessableToken> token = Deserialize(high, low);
-+    absl::optional<UnguessableToken> token = Deserialize2(high, low);
-     DCHECK(token.has_value());
-     return token.value();
-   }
-diff --git a/base/unguessable_token_unittest.cc b/base/unguessable_token_unittest.cc
-index 1064a35aa1..ff88f158e7 100644
---- a/base/unguessable_token_unittest.cc
-+++ b/base/unguessable_token_unittest.cc
-@@ -20,7 +20,7 @@ void TestSmallerThanOperator(const UnguessableToken& a,
- }
- 
- TEST(UnguessableTokenTest, VerifyEveryBit) {
--  absl::optional<UnguessableToken> token = UnguessableToken::Deserialize(1, 2);
-+  absl::optional<UnguessableToken> token = UnguessableToken::Deserialize2(1, 2);
-   ASSERT_TRUE(token.has_value());
-   uint64_t high = 1;
-   uint64_t low = 2;
-@@ -28,7 +28,7 @@ TEST(UnguessableTokenTest, VerifyEveryBit) {
-   for (uint64_t bit = 1; bit != 0; bit <<= 1) {
-     uint64_t new_high = high ^ bit;
-     absl::optional<UnguessableToken> new_token =
--        UnguessableToken::Deserialize(new_high, low);
-+        UnguessableToken::Deserialize2(new_high, low);
-     ASSERT_TRUE(new_token.has_value());
-     EXPECT_FALSE(*token == *new_token);
-   }
-@@ -36,7 +36,7 @@ TEST(UnguessableTokenTest, VerifyEveryBit) {
-   for (uint64_t bit = 1; bit != 0; bit <<= 1) {
-     uint64_t new_low = low ^ bit;
-     absl::optional<UnguessableToken> new_token =
--        UnguessableToken::Deserialize(high, new_low);
-+        UnguessableToken::Deserialize2(high, new_low);
-     ASSERT_TRUE(new_token.has_value());
-     EXPECT_FALSE(*token == *new_token);
-   }
-@@ -45,9 +45,9 @@ TEST(UnguessableTokenTest, VerifyEveryBit) {
- TEST(UnguessableTokenTest, VerifyEqualityOperators) {
-   // Deserialize is used for testing purposes.
-   // Use UnguessableToken::Create() in production code instead.
--  UnguessableToken token = UnguessableToken::Deserialize(1, 2).value();
--  UnguessableToken same_token = UnguessableToken::Deserialize(1, 2).value();
--  UnguessableToken diff_token = UnguessableToken::Deserialize(1, 3).value();
-+  UnguessableToken token = UnguessableToken::Deserialize2(1, 2).value();
-+  UnguessableToken same_token = UnguessableToken::Deserialize2(1, 2).value();
-+  UnguessableToken diff_token = UnguessableToken::Deserialize2(1, 3).value();
-   UnguessableToken empty_token;
- 
-   EXPECT_TRUE(token == token);
-@@ -96,7 +96,7 @@ TEST(UnguessableTokenTest, VerifySerialization) {
-   EXPECT_TRUE(low);
- 
-   absl::optional<UnguessableToken> Deserialized =
--      UnguessableToken::Deserialize(high, low);
-+      UnguessableToken::Deserialize2(high, low);
-   ASSERT_TRUE(Deserialized.has_value());
-   EXPECT_EQ(token, *Deserialized);
- }
-@@ -104,7 +104,7 @@ TEST(UnguessableTokenTest, VerifySerialization) {
- // Common case (~88% of the time) - no leading zeroes in high_ nor low_.
- TEST(UnguessableTokenTest, VerifyToString1) {
-   UnguessableToken token =
--      UnguessableToken::Deserialize(0x1234567890ABCDEF, 0xFEDCBA0987654321)
-+      UnguessableToken::Deserialize2(0x1234567890ABCDEF, 0xFEDCBA0987654321)
-           .value();
-   std::string expected = "1234567890ABCDEFFEDCBA0987654321";
- 
-@@ -118,7 +118,7 @@ TEST(UnguessableTokenTest, VerifyToString1) {
- 
- // Less common case - leading zeroes in high_ or low_ (testing with both).
- TEST(UnguessableTokenTest, VerifyToString2) {
--  UnguessableToken token = UnguessableToken::Deserialize(0x123, 0xABC).value();
-+  UnguessableToken token = UnguessableToken::Deserialize2(0x123, 0xABC).value();
-   std::string expected = "00000000000001230000000000000ABC";
- 
-   EXPECT_EQ(expected, token.ToString());
-@@ -131,16 +131,16 @@ TEST(UnguessableTokenTest, VerifyToString2) {
- 
- TEST(UnguessableTokenTest, VerifyToStringUniqueness) {
-   const UnguessableToken token1 =
--      UnguessableToken::Deserialize(0x0000000012345678, 0x0000000123456789)
-+      UnguessableToken::Deserialize2(0x0000000012345678, 0x0000000123456789)
-           .value();
-   const UnguessableToken token2 =
--      UnguessableToken::Deserialize(0x0000000123456781, 0x0000000023456789)
-+      UnguessableToken::Deserialize2(0x0000000123456781, 0x0000000023456789)
-           .value();
-   EXPECT_NE(token1.ToString(), token2.ToString());
- }
- 
- TEST(UnguessableTokenTest, VerifyDeserializeZeroes) {
--  absl::optional<UnguessableToken> token = UnguessableToken::Deserialize(0, 0);
-+  absl::optional<UnguessableToken> token = UnguessableToken::Deserialize2(0, 0);
- 
-   EXPECT_FALSE(token.has_value());
- }
-@@ -150,23 +150,23 @@ TEST(UnguessableTokenTest, VerifySmallerThanOperator) {
-   // Use UnguessableToken::Create() in production code instead.
-   {
-     SCOPED_TRACE("a.low < b.low and a.high == b.high.");
--    TestSmallerThanOperator(UnguessableToken::Deserialize(0, 1).value(),
--                            UnguessableToken::Deserialize(0, 5).value());
-+    TestSmallerThanOperator(UnguessableToken::Deserialize2(0, 1).value(),
-+                            UnguessableToken::Deserialize2(0, 5).value());
-   }
-   {
-     SCOPED_TRACE("a.low == b.low and a.high < b.high.");
--    TestSmallerThanOperator(UnguessableToken::Deserialize(1, 0).value(),
--                            UnguessableToken::Deserialize(5, 0).value());
-+    TestSmallerThanOperator(UnguessableToken::Deserialize2(1, 0).value(),
-+                            UnguessableToken::Deserialize2(5, 0).value());
-   }
-   {
-     SCOPED_TRACE("a.low < b.low and a.high < b.high.");
--    TestSmallerThanOperator(UnguessableToken::Deserialize(1, 1).value(),
--                            UnguessableToken::Deserialize(5, 5).value());
-+    TestSmallerThanOperator(UnguessableToken::Deserialize2(1, 1).value(),
-+                            UnguessableToken::Deserialize2(5, 5).value());
-   }
-   {
-     SCOPED_TRACE("a.low > b.low and a.high < b.high.");
--    TestSmallerThanOperator(UnguessableToken::Deserialize(1, 10).value(),
--                            UnguessableToken::Deserialize(10, 1).value());
-+    TestSmallerThanOperator(UnguessableToken::Deserialize2(1, 10).value(),
-+                            UnguessableToken::Deserialize2(10, 1).value());
-   }
- }
- 
-diff --git a/ipc/ipc_message_utils.cc b/ipc/ipc_message_utils.cc
-index 6c48bf40b7..bce4265cfc 100644
---- a/ipc/ipc_message_utils.cc
-+++ b/ipc/ipc_message_utils.cc
-@@ -1311,7 +1311,7 @@ bool ParamTraits<base::UnguessableToken>::Read(const base::Pickle* m,
-   // deserialized by the traits should always yield a non-empty token.
-   // If deserialization results in an empty token, the data is malformed.
-   absl::optional<base::UnguessableToken> token =
--      base::UnguessableToken::Deserialize(high, low);
-+      base::UnguessableToken::Deserialize2(high, low);
-   if (!token.has_value()) {
-     return false;
-   }
-diff --git a/mojo/core/broker_posix.cc b/mojo/core/broker_posix.cc
-index 96cdf72864..06997066c0 100644
---- a/mojo/core/broker_posix.cc
-+++ b/mojo/core/broker_posix.cc
-@@ -132,7 +132,7 @@ base::WritableSharedMemoryRegion Broker::GetWritableSharedMemoryRegion(
-     if (!GetBrokerMessageData(message.get(), &data))
-       return base::WritableSharedMemoryRegion();
-     absl::optional<base::UnguessableToken> guid =
--        base::UnguessableToken::Deserialize(data->guid_high, data->guid_low);
-+        base::UnguessableToken::Deserialize2(data->guid_high, data->guid_low);
-     if (!guid.has_value()) {
-       return base::WritableSharedMemoryRegion();
-     }
-diff --git a/mojo/core/data_pipe_consumer_dispatcher.cc b/mojo/core/data_pipe_consumer_dispatcher.cc
-index ba0e8eed4c..d035540717 100644
---- a/mojo/core/data_pipe_consumer_dispatcher.cc
-+++ b/mojo/core/data_pipe_consumer_dispatcher.cc
-@@ -391,8 +391,8 @@ DataPipeConsumerDispatcher::Deserialize(const void* data,
-   }
- 
-   absl::optional<base::UnguessableToken> buffer_guid =
--      base::UnguessableToken::Deserialize(state->buffer_guid_high,
--                                          state->buffer_guid_low);
-+      base::UnguessableToken::Deserialize2(state->buffer_guid_high,
-+                                           state->buffer_guid_low);
-   if (!buffer_guid.has_value()) {
-     AssertNotExtractingHandlesFromMessage();
-     return nullptr;
-diff --git a/mojo/core/data_pipe_producer_dispatcher.cc b/mojo/core/data_pipe_producer_dispatcher.cc
-index 1a54b1a0c2..2e8abc1549 100644
---- a/mojo/core/data_pipe_producer_dispatcher.cc
-+++ b/mojo/core/data_pipe_producer_dispatcher.cc
-@@ -352,8 +352,8 @@ DataPipeProducerDispatcher::Deserialize(const void* data,
-   }
- 
-   absl::optional<base::UnguessableToken> buffer_guid =
--      base::UnguessableToken::Deserialize(state->buffer_guid_high,
--                                          state->buffer_guid_low);
-+      base::UnguessableToken::Deserialize2(state->buffer_guid_high,
-+                                           state->buffer_guid_low);
-   if (!buffer_guid.has_value()) {
-     AssertNotExtractingHandlesFromMessage();
-     return nullptr;
-diff --git a/mojo/core/ipcz_driver/shared_buffer.cc b/mojo/core/ipcz_driver/shared_buffer.cc
-index 15155644ce..24267ce627 100644
---- a/mojo/core/ipcz_driver/shared_buffer.cc
-+++ b/mojo/core/ipcz_driver/shared_buffer.cc
-@@ -133,7 +133,7 @@ scoped_refptr<SharedBuffer> SharedBuffer::CreateForMojoWrapper(
-   }
- 
-   absl::optional<base::UnguessableToken> guid =
--      base::UnguessableToken::Deserialize(mojo_guid.high, mojo_guid.low);
-+      base::UnguessableToken::Deserialize2(mojo_guid.high, mojo_guid.low);
-   if (!guid.has_value()) {
-     return nullptr;
-   }
-@@ -251,7 +251,7 @@ scoped_refptr<SharedBuffer> SharedBuffer::Deserialize(
-   }
- 
-   absl::optional<base::UnguessableToken> guid =
--      base::UnguessableToken::Deserialize(header.guid_high, header.guid_low);
-+      base::UnguessableToken::Deserialize2(header.guid_high, header.guid_low);
-   if (!guid.has_value()) {
-     return nullptr;
-   }
-diff --git a/mojo/core/platform_wrapper_unittest.cc b/mojo/core/platform_wrapper_unittest.cc
-index 72ee50cf3d..607814ad78 100644
---- a/mojo/core/platform_wrapper_unittest.cc
-+++ b/mojo/core/platform_wrapper_unittest.cc
-@@ -192,7 +192,7 @@ DEFINE_TEST_CLIENT_TEST_WITH_PIPE(ReadPlatformSharedBuffer,
- 
-   auto mode = base::subtle::PlatformSharedMemoryRegion::Mode::kUnsafe;
-   absl::optional<base::UnguessableToken> guid =
--      base::UnguessableToken::Deserialize(mojo_guid.high, mojo_guid.low);
-+      base::UnguessableToken::Deserialize2(mojo_guid.high, mojo_guid.low);
-   ASSERT_TRUE(guid.has_value());
- #if BUILDFLAG(IS_WIN)
-   ASSERT_EQ(MOJO_PLATFORM_HANDLE_TYPE_WINDOWS_HANDLE, os_buffer.type);
-diff --git a/mojo/core/shared_buffer_dispatcher.cc b/mojo/core/shared_buffer_dispatcher.cc
-index 575a992af5..d13da69161 100644
---- a/mojo/core/shared_buffer_dispatcher.cc
-+++ b/mojo/core/shared_buffer_dispatcher.cc
-@@ -164,8 +164,8 @@ scoped_refptr<SharedBufferDispatcher> SharedBufferDispatcher::Deserialize(
-   handles[0] = std::move(platform_handles[0]);
- 
-   absl::optional<base::UnguessableToken> guid =
--      base::UnguessableToken::Deserialize(serialized_state->guid_high,
--                                          serialized_state->guid_low);
-+      base::UnguessableToken::Deserialize2(serialized_state->guid_high,
-+                                           serialized_state->guid_low);
-   if (!guid.has_value()) {
-     AssertNotExtractingHandlesFromMessage();
-     return nullptr;
-diff --git a/mojo/public/cpp/base/unguessable_token_mojom_traits.cc b/mojo/public/cpp/base/unguessable_token_mojom_traits.cc
-index ba96eeac98..d4e9b6fbef 100644
---- a/mojo/public/cpp/base/unguessable_token_mojom_traits.cc
-+++ b/mojo/public/cpp/base/unguessable_token_mojom_traits.cc
-@@ -18,7 +18,7 @@ bool StructTraits<mojo_base::mojom::UnguessableTokenDataView,
-   // deserialized by the traits should always yield a non-empty token.
-   // If deserialization results in an empty token, the data is malformed.
-   absl::optional<base::UnguessableToken> token =
--      base::UnguessableToken::Deserialize(high, low);
-+      base::UnguessableToken::Deserialize2(high, low);
-   if (!token.has_value()) {
-     return false;
-   }
-diff --git a/mojo/public/cpp/platform/platform_handle_internal.h b/mojo/public/cpp/platform/platform_handle_internal.h
-index 5cc7b44399..89dc0c8d38 100644
---- a/mojo/public/cpp/platform/platform_handle_internal.h
-+++ b/mojo/public/cpp/platform/platform_handle_internal.h
-@@ -24,7 +24,7 @@ class PlatformHandleInternal {
-   }
-   static absl::optional<base::UnguessableToken> UnmarshalUnguessableToken(
-       const MojoSharedBufferGuid* guid) {
--    return base::UnguessableToken::Deserialize(guid->high, guid->low);
-+    return base::UnguessableToken::Deserialize2(guid->high, guid->low);
-   }
- };
- 
--- 
-2.39.1.456.gfc5497dd1b-goog
-
diff --git a/libchrome_tools/patches/backward-compatibility-0500-Restore-old-UngessableToken-Deserialize.patch b/libchrome_tools/patches/backward-compatibility-0500-Restore-old-UngessableToken-Deserialize.patch
deleted file mode 100644
index e93757f..0000000
--- a/libchrome_tools/patches/backward-compatibility-0500-Restore-old-UngessableToken-Deserialize.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 6b47f434f8d3f63f61abc034e11d2fba7fd99906 Mon Sep 17 00:00:00 2001
-From: Grace Cham <hscham@chromium.org>
-Date: Mon, 30 Jan 2023 15:35:07 +0900
-Subject: [PATCH] Revert "Remove the old UnguessableToken::Deserialize"
-
-Clean-up bug: b/267117536
-
-This reverts commit a150dbb23e71f80c06a04707223571b9e68a5fd9.
----
- base/unguessable_token.cc | 11 +++++++++++
- base/unguessable_token.h  | 15 ++++++++++++---
- 2 files changed, 23 insertions(+), 3 deletions(-)
-
-diff --git a/base/unguessable_token.cc b/base/unguessable_token.cc
-index db7a36144729..af8afb24367d 100644
---- a/base/unguessable_token.cc
-+++ b/base/unguessable_token.cc
-@@ -32,6 +32,17 @@ const UnguessableToken& UnguessableToken::Null() {
-   return null_token;
- }
- 
-+// static
-+UnguessableToken UnguessableToken::Deserialize(uint64_t high, uint64_t low) {
-+  // Receiving a zeroed out UnguessableToken from another process means that it
-+  // was never initialized via Create(). The real check for this is in the
-+  // StructTraits in mojo/public/cpp/base/unguessable_token_mojom_traits.cc
-+  // where a zero-ed out token will fail to deserialize. This DCHECK is a
-+  // backup check.
-+  DCHECK(!(high == 0 && low == 0));
-+  return UnguessableToken(Token{high, low});
-+}
-+
- // static
- absl::optional<UnguessableToken> UnguessableToken::Deserialize2(uint64_t high,
-                                                                 uint64_t low) {
-diff --git a/base/unguessable_token.h b/base/unguessable_token.h
-index 121f92d07a60..f35749ddfc22 100644
---- a/base/unguessable_token.h
-+++ b/base/unguessable_token.h
-@@ -56,11 +56,20 @@ class BASE_EXPORT UnguessableToken {
-   // default constructor.
-   static const UnguessableToken& Null();
- 
--  // Return an UnguessableToken built from the high/low bytes provided.
-+  // NOTE: This method is deprecated and will soon be replaced by the one below.
-+  // Return a UnguessableToken built from the high/low bytes provided.
-   // It should only be used in deserialization scenarios.
-   //
--  // NOTE: If the returned `absl::optional` does not have a value, it means that
--  // `high` and `low` correspond to an `UnguesssableToken` that was never
-+  // NOTE: If the deserialized token is empty, it means that it was never
-+  // initialized via Create(). This is a security issue, and should be handled.
-+  static UnguessableToken Deserialize(uint64_t high, uint64_t low);
-+
-+  // Return a UnguessableToken built from the high/low bytes provided.
-+  // It should only be used in deserialization scenarios.
-+  //
-+  // NOTE: Once `Deserialize` above is removed, this will be renamed to that.
-+  //
-+  // NOTE: If the deserialized token is empty, it means that it was never
-   // initialized via Create(). This is a security issue, and should be handled.
-   static absl::optional<UnguessableToken> Deserialize2(uint64_t high,
-                                                        uint64_t low);
--- 
-2.39.1.456.gfc5497dd1b-goog
-