Index: mojo/public/cpp/bindings/lib/hash_util.h |
diff --git a/mojo/public/cpp/bindings/lib/hash_util.h b/mojo/public/cpp/bindings/lib/hash_util.h |
index c37599c4ce2a59295c728c24dd3e399248f3a075..93280d69daf2f4842e74302f0cc7af7480530c2c 100644 |
--- a/mojo/public/cpp/bindings/lib/hash_util.h |
+++ b/mojo/public/cpp/bindings/lib/hash_util.h |
@@ -10,6 +10,7 @@ |
#include <type_traits> |
#include <vector> |
+#include "base/optional.h" |
#include "mojo/public/cpp/bindings/lib/template_util.h" |
namespace mojo { |
@@ -63,6 +64,16 @@ struct HashTraits<std::vector<T>, false> { |
}; |
template <typename T> |
+struct HashTraits<base::Optional<std::vector<T>>, false> { |
+ static size_t Hash(size_t seed, const base::Optional<std::vector<T>>& value) { |
+ if (!value) |
+ return HashCombine(seed, 0); |
+ |
+ return Hash(seed, *value); |
+ } |
+}; |
+ |
+template <typename T> |
size_t Hash(size_t seed, const T& value) { |
return HashTraits<T>::Hash(seed, value); |
} |