Index: mojo/common/common_custom_types_struct_traits.h |
diff --git a/mojo/common/common_custom_types_struct_traits.h b/mojo/common/common_custom_types_struct_traits.h |
index 5244cf7a2a6108280136a03f9a3bc385c49a5cb2..be4c6a6b8ec301639c079c72e5ba2555dcd3c67c 100644 |
--- a/mojo/common/common_custom_types_struct_traits.h |
+++ b/mojo/common/common_custom_types_struct_traits.h |
@@ -5,6 +5,7 @@ |
#ifndef MOJO_COMMON_COMMON_CUSTOM_TYPES_STRUCT_TRAITS_H_ |
#define MOJO_COMMON_COMMON_CUSTOM_TYPES_STRUCT_TRAITS_H_ |
+#include "base/nonce_token.h" |
#include "base/version.h" |
#include "mojo/common/common_custom_types.mojom-shared.h" |
@@ -24,6 +25,35 @@ struct StructTraits<mojo::common::mojom::VersionDataView, base::Version> { |
}; |
template <> |
+struct StructTraits<mojo::common::mojom::NonceTokenDataView, base::NonceToken> { |
+ static uint64_t high(const base::NonceToken& token) { |
+ CHECK(token); |
+ uint64_t high, low; |
+ token.Serialize(&high, &low); |
+ return high; |
+ } |
+ |
+ static uint64_t low(const base::NonceToken& token) { |
+ CHECK(token); |
+ uint64_t high, low; |
+ token.Serialize(&high, &low); |
+ return low; |
+ } |
+ |
+ static bool Read(mojo::common::mojom::NonceTokenDataView data, |
+ base::NonceToken* out) { |
+ uint64_t high = data.high(); |
+ uint64_t low = data.low(); |
+ |
+ if (base::NonceToken::IsZeroData(high, low)) |
+ return false; |
+ |
+ *out = base::NonceToken::Deserialize(high, low); |
+ return true; |
+ } |
+}; |
+ |
+template <> |
struct StructTraits<mojo::common::mojom::TimeDeltaDataView, base::TimeDelta> { |
static int64_t microseconds(const base::TimeDelta& delta) { |
return delta.InMicroseconds(); |