url_pattern_set_mojom_traits.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef EXTENSIONS_COMMON_MOJOM_URL_PATTERN_SET_MOJOM_TRAITS_H_
  5. #define EXTENSIONS_COMMON_MOJOM_URL_PATTERN_SET_MOJOM_TRAITS_H_
  6. #include "extensions/common/mojom/url_pattern_set.mojom-shared.h"
  7. #include "extensions/common/url_pattern.h"
  8. #include "extensions/common/url_pattern_set.h"
  9. #include "mojo/public/cpp/bindings/struct_traits.h"
  10. namespace mojo {
  11. template <>
  12. struct StructTraits<extensions::mojom::URLPatternDataView, URLPattern> {
  13. static int32_t valid_schemes(const URLPattern& pattern) {
  14. return pattern.valid_schemes();
  15. }
  16. static const std::string& pattern(const URLPattern& pattern) {
  17. return pattern.GetAsString();
  18. }
  19. static bool Read(extensions::mojom::URLPatternDataView data, URLPattern* out);
  20. };
  21. template <>
  22. struct StructTraits<extensions::mojom::URLPatternSetDataView,
  23. extensions::URLPatternSet> {
  24. static const std::set<URLPattern>& patterns(
  25. const extensions::URLPatternSet& set) {
  26. return set.patterns();
  27. }
  28. static bool Read(extensions::mojom::URLPatternSetDataView data,
  29. extensions::URLPatternSet* out);
  30. };
  31. } // namespace mojo
  32. #endif // EXTENSIONS_COMMON_MOJOM_URL_PATTERN_SET_MOJOM_TRAITS_H_