diff --git a/quic/core/crypto/quic_random.cc b/quic/core/crypto/quic_random.cc
index 56657b5..d3190c6 100644
--- a/quic/core/crypto/quic_random.cc
+++ b/quic/core/crypto/quic_random.cc
@@ -19,17 +19,22 @@
 // xoshiro256++ 1.0 based on code in the public domain from
 // <http://prng.di.unimi.it/xoshiro256plusplus.c>.
 
+inline uint64_t Xoshiro256InitializeRngStateMember() {
+  uint64_t result;
+  RAND_bytes(reinterpret_cast<uint8_t*>(&result), sizeof(result));
+  return result;
+}
+
 inline uint64_t Xoshiro256PlusPlusRotLeft(uint64_t x, int k) {
   return (x << k) | (x >> (64 - k));
 }
 
 uint64_t Xoshiro256PlusPlus() {
-  static thread_local uint64_t rng_state[4];
-  static thread_local bool rng_state_initialized = false;
-  if (QUIC_PREDICT_FALSE(!rng_state_initialized)) {
-    RAND_bytes(reinterpret_cast<uint8_t*>(&rng_state), sizeof(rng_state));
-    rng_state_initialized = true;
-  }
+  static thread_local uint64_t rng_state[4] = {
+      Xoshiro256InitializeRngStateMember(),
+      Xoshiro256InitializeRngStateMember(),
+      Xoshiro256InitializeRngStateMember(),
+      Xoshiro256InitializeRngStateMember()};
   const uint64_t result =
       Xoshiro256PlusPlusRotLeft(rng_state[0] + rng_state[3], 23) + rng_state[0];
   const uint64_t t = rng_state[1] << 17;
diff --git a/quic/core/crypto/quic_random_test.cc b/quic/core/crypto/quic_random_test.cc
index 67963ce..ab27918 100644
--- a/quic/core/crypto/quic_random_test.cc
+++ b/quic/core/crypto/quic_random_test.cc
@@ -30,8 +30,7 @@
   EXPECT_NE(value1, value2);
 }
 
-// TODO(b/194177024): re-enable this test.
-TEST_F(QuicRandomTest, QUIC_TEST_DISABLED_IN_CHROME(InsecureRandBytes)) {
+TEST_F(QuicRandomTest, InsecureRandBytes) {
   unsigned char buf1[16];
   unsigned char buf2[16];
   memset(buf1, 0xaf, sizeof(buf1));
@@ -43,8 +42,7 @@
   EXPECT_NE(0, memcmp(buf1, buf2, sizeof(buf1)));
 }
 
-// TODO(b/194177024): re-enable this test.
-TEST_F(QuicRandomTest, QUIC_TEST_DISABLED_IN_CHROME(InsecureRandUint64)) {
+TEST_F(QuicRandomTest, InsecureRandUint64) {
   QuicRandom* rng = QuicRandom::GetInstance();
   uint64_t value1 = rng->InsecureRandUint64();
   uint64_t value2 = rng->InsecureRandUint64();
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index 9aa3c2c..301639b 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -7026,8 +7026,7 @@
               IsError(QUIC_PUBLIC_RESET));
 }
 
-// TODO(b/194177024): re-enable this test.
-TEST_P(QuicConnectionTest, QUIC_TEST_DISABLED_IN_CHROME(IetfStatelessReset)) {
+TEST_P(QuicConnectionTest, IetfStatelessReset) {
   if (!GetParam().version.HasIetfInvariantHeader()) {
     return;
   }
@@ -12028,9 +12027,7 @@
   EXPECT_EQ(2u, writer_->packets_write_attempts());
 }
 
-// TODO(b/194177024): re-enable this test.
-TEST_P(QuicConnectionTest,
-       QUIC_TEST_DISABLED_IN_CHROME(PathValidationReceivesStatelessReset)) {
+TEST_P(QuicConnectionTest, PathValidationReceivesStatelessReset) {
   if (!VersionHasIetfQuicFrames(connection_.version().transport_version) ||
       !connection_.use_path_validator()) {
     return;
diff --git a/quic/core/quic_framer_test.cc b/quic/core/quic_framer_test.cc
index 6237bc6..f36bf5c 100644
--- a/quic/core/quic_framer_test.cc
+++ b/quic/core/quic_framer_test.cc
@@ -9237,9 +9237,7 @@
   }
 }
 
-// TODO(b/194177024): re-enable this test.
-TEST_P(QuicFramerTest,
-       QUIC_TEST_DISABLED_IN_CHROME(BuildIetfStatelessResetPacket)) {
+TEST_P(QuicFramerTest, BuildIetfStatelessResetPacket) {
   if (GetQuicRestartFlag(quic_fix_stateless_reset2)) {
     // clang-format off
     unsigned char packet[] = {
diff --git a/quic/core/quic_time_wait_list_manager_test.cc b/quic/core/quic_time_wait_list_manager_test.cc
index c31d289..f47bdf2 100644
--- a/quic/core/quic_time_wait_list_manager_test.cc
+++ b/quic/core/quic_time_wait_list_manager_test.cc
@@ -358,9 +358,7 @@
   ProcessPacket(connection_id_);
 }
 
-// TODO(b/194177024): re-enable this test.
-TEST_F(QuicTimeWaitListManagerTest,
-       QUIC_TEST_DISABLED_IN_CHROME(SendPublicReset)) {
+TEST_F(QuicTimeWaitListManagerTest, SendPublicReset) {
   EXPECT_CALL(visitor_, OnConnectionAddedToTimeWaitList(connection_id_));
   AddConnectionId(connection_id_,
                   QuicTimeWaitListManager::SEND_STATELESS_RESET);
